@bdelab/roav-ran 2.0.0-beta.1 → 2.0.1

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,11 +1,11 @@
1
- ;!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},n=(new Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="72c6aafb-fce0-4022-a19f-4af1aec744c2",e._sentryDebugIdIdentifier="sentry-dbid-72c6aafb-fce0-4022-a19f-4af1aec744c2")}catch(e){}}();import"./_sentry-release-injection-file.53f8c7e5.js";import e from"path";var n="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function t(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function i(e){if(e.__esModule)return e;var n=e.default;if("function"==typeof n){var t=function e(){return this instanceof e?Reflect.construct(n,arguments,this.constructor):n.apply(this,arguments)};t.prototype=n.prototype}else t={};return Object.defineProperty(t,"__esModule",{value:!0}),Object.keys(e).forEach((function(n){var i=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,i.get?i:{enumerable:!0,get:function(){return e[n]}})})),t}var s,a={exports:{}};
1
+ ;!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},n=(new Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="b41f047b-9216-4dbe-a2f1-f640c4e70eba",e._sentryDebugIdIdentifier="sentry-dbid-b41f047b-9216-4dbe-a2f1-f640c4e70eba")}catch(e){}}();import"./_sentry-release-injection-file.dab36931.js";import e from"path";var n="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function t(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function i(e){if(e.__esModule)return e;var n=e.default;if("function"==typeof n){var t=function e(){return this instanceof e?Reflect.construct(n,arguments,this.constructor):n.apply(this,arguments)};t.prototype=n.prototype}else t={};return Object.defineProperty(t,"__esModule",{value:!0}),Object.keys(e).forEach((function(n){var i=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,i.get?i:{enumerable:!0,get:function(){return e[n]}})})),t}var s,a={exports:{}};
2
2
  /*! store2 - v2.14.3 - 2024-02-14
3
- * Copyright (c) 2024 Nathan Bubna; Licensed MIT */s=a,function(e,n){var t={version:"2.14.3",areas:{},apis:{},nsdelim:".",inherit:function(e,n){for(var t in e)n.hasOwnProperty(t)||Object.defineProperty(n,t,Object.getOwnPropertyDescriptor(e,t));return n},stringify:function(e,n){return void 0===e||"function"==typeof e?e+"":JSON.stringify(e,n||t.replace)},parse:function(e,n){try{return JSON.parse(e,n||t.revive)}catch(n){return e}},fn:function(e,n){for(var i in t.storeAPI[e]=n,t.apis)t.apis[i][e]=n},get:function(e,n){return e.getItem(n)},set:function(e,n,t){e.setItem(n,t)},remove:function(e,n){e.removeItem(n)},key:function(e,n){return e.key(n)},length:function(e){return e.length},clear:function(e){e.clear()},Store:function(e,n,i){var s=t.inherit(t.storeAPI,(function(e,n,t){return 0===arguments.length?s.getAll():"function"==typeof n?s.transact(e,n,t):void 0!==n?s.set(e,n,t):"string"==typeof e||"number"==typeof e?s.get(e):"function"==typeof e?s.each(e):e?s.setAll(e,n):s.clear()}));s._id=e;try{var a="__store2_test";n.setItem(a,"ok"),s._area=n,n.removeItem(a)}catch(e){s._area=t.storage("fake")}return s._ns=i||"",t.areas[e]||(t.areas[e]=s._area),t.apis[s._ns+s._id]||(t.apis[s._ns+s._id]=s),s},storeAPI:{area:function(e,n){var i=this[e];return i&&i.area||(i=t.Store(e,n,this._ns),this[e]||(this[e]=i)),i},namespace:function(e,n,i){if(i=i||this._delim||t.nsdelim,!e)return this._ns?this._ns.substring(0,this._ns.length-i.length):"";var s=e,a=this[s];if(!(a&&a.namespace||((a=t.Store(this._id,this._area,this._ns+s+i))._delim=i,this[s]||(this[s]=a),n)))for(var o in t.areas)a.area(o,t.areas[o]);return a},isFake:function(e){return e?(this._real=this._area,this._area=t.storage("fake")):!1===e&&(this._area=this._real||this._area),"fake"===this._area.name},toString:function(){return"store"+(this._ns?"."+this.namespace():"")+"["+this._id+"]"},has:function(e){return this._area.has?this._area.has(this._in(e)):!!(this._in(e)in this._area)},size:function(){return this.keys().length},each:function(e,n){for(var i=0,s=t.length(this._area);i<s;i++){var a=this._out(t.key(this._area,i));if(void 0!==a&&!1===e.call(this,a,this.get(a),n))break;s>t.length(this._area)&&(s--,i--)}return n||this},keys:function(e){return this.each((function(e,n,t){t.push(e)}),e||[])},get:function(e,n){var i,s=t.get(this._area,this._in(e));return"function"==typeof n&&(i=n,n=null),null!==s?t.parse(s,i):null!=n?n:s},getAll:function(e){return this.each((function(e,n,t){t[e]=n}),e||{})},transact:function(e,n,t){var i=this.get(e,t),s=n(i);return this.set(e,void 0===s?i:s),this},set:function(e,n,i){var s,a=this.get(e);return null!=a&&!1===i?n:("function"==typeof i&&(s=i,i=void 0),t.set(this._area,this._in(e),t.stringify(n,s),i)||a)},setAll:function(e,n){var t,i;for(var s in e)i=e[s],this.set(s,i,n)!==i&&(t=!0);return t},add:function(e,n,i){var s=this.get(e);if(s instanceof Array)n=s.concat(n);else if(null!==s){var a=typeof s;if(a===typeof n&&"object"===a){for(var o in n)s[o]=n[o];n=s}else n=s+n}return t.set(this._area,this._in(e),t.stringify(n,i)),n},remove:function(e,n){var i=this.get(e,n);return t.remove(this._area,this._in(e)),i},clear:function(){return this._ns?this.each((function(e){t.remove(this._area,this._in(e))}),1):t.clear(this._area),this},clearAll:function(){var e=this._area;for(var n in t.areas)t.areas.hasOwnProperty(n)&&(this._area=t.areas[n],this.clear());return this._area=e,this},_in:function(e){return"string"!=typeof e&&(e=t.stringify(e)),this._ns?this._ns+e:e},_out:function(e){return this._ns?e&&0===e.indexOf(this._ns)?e.substring(this._ns.length):void 0:e}},storage:function(e){return t.inherit(t.storageAPI,{items:{},name:e})},storageAPI:{length:0,has:function(e){return this.items.hasOwnProperty(e)},key:function(e){var n=0;for(var t in this.items)if(this.has(t)&&e===n++)return t},setItem:function(e,n){this.has(e)||this.length++,this.items[e]=n},removeItem:function(e){this.has(e)&&(delete this.items[e],this.length--)},getItem:function(e){return this.has(e)?this.items[e]:null},clear:function(){for(var e in this.items)this.removeItem(e)}}},i=t.Store("local",function(){try{return localStorage}catch(e){}}());i.local=i,i._=t,i.area("session",function(){try{return sessionStorage}catch(e){}}()),i.area("page",t.storage("page")),"function"==typeof n&&void 0!==n.amd?n("store2",[],(function(){return i})):s.exports?s.exports=i:(e.store&&(t.conflict=e.store),e.store=i)}(n,n&&n.define);var o=t(a.exports);function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}function c(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}function l(e){var n=function(e,n){if("object"!=r(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var i=t.call(e,n||"default");if("object"!=r(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===n?String:Number)(e)}(e,"string");return"symbol"==r(n)?n:n+""}function p(e,n){for(var t=0;t<n.length;t++){var i=n[t];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,l(i.key),i)}}function u(e,n,t){return n&&p(e.prototype,n),t&&p(e,t),Object.defineProperty(e,"prototype",{writable:!1}),e}function d(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function g(e,n){return g=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,n){return e.__proto__=n,e},g(e,n)}function m(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(n&&n.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),n&&g(e,n)}function v(e,n){if(n&&("object"===r(n)||"function"==typeof n))return n;if(void 0!==n)throw new TypeError("Derived constructors may only return object or undefined");return d(e)}function h(e){return h=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},h(e)}function f(e,n,t){return(n=l(n))in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function x(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,i=new Array(n);t<n;t++)i[t]=e[t];return i}function b(e){return function(e){if(Array.isArray(e))return e}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,n){if(e){if("string"==typeof e)return x(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?x(e,n):void 0}}(e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function y(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,i)}return t}function w(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?y(Object(t),!0).forEach((function(n){f(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):y(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}var k={type:"logger",log:function(e){this.output("log",e)},warn:function(e){this.output("warn",e)},error:function(e){this.output("error",e)},output:function(e,n){console&&console[e]&&console[e].apply(console,n)}},S=new(function(){function e(n){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};c(this,e),this.init(n,t)}return u(e,[{key:"init",value:function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.prefix=n.prefix||"i18next:",this.logger=e||k,this.options=n,this.debug=n.debug}},{key:"setDebug",value:function(e){this.debug=e}},{key:"log",value:function(){for(var e=arguments.length,n=new Array(e),t=0;t<e;t++)n[t]=arguments[t];return this.forward(n,"log","",!0)}},{key:"warn",value:function(){for(var e=arguments.length,n=new Array(e),t=0;t<e;t++)n[t]=arguments[t];return this.forward(n,"warn","",!0)}},{key:"error",value:function(){for(var e=arguments.length,n=new Array(e),t=0;t<e;t++)n[t]=arguments[t];return this.forward(n,"error","")}},{key:"deprecate",value:function(){for(var e=arguments.length,n=new Array(e),t=0;t<e;t++)n[t]=arguments[t];return this.forward(n,"warn","WARNING DEPRECATED: ",!0)}},{key:"forward",value:function(e,n,t,i){return i&&!this.debug?null:("string"==typeof e[0]&&(e[0]="".concat(t).concat(this.prefix," ").concat(e[0])),this.logger[n](e))}},{key:"create",value:function(n){return new e(this.logger,w(w({},{prefix:"".concat(this.prefix,":").concat(n,":")}),this.options))}},{key:"clone",value:function(n){return(n=n||this.options).prefix=n.prefix||this.prefix,new e(this.logger,n)}}]),e}()),j=function(){function e(){c(this,e),this.observers={}}return u(e,[{key:"on",value:function(e,n){var t=this;return e.split(" ").forEach((function(e){t.observers[e]=t.observers[e]||[],t.observers[e].push(n)})),this}},{key:"off",value:function(e,n){this.observers[e]&&(n?this.observers[e]=this.observers[e].filter((function(e){return e!==n})):delete this.observers[e])}},{key:"emit",value:function(e){for(var n=arguments.length,t=new Array(n>1?n-1:0),i=1;i<n;i++)t[i-1]=arguments[i];this.observers[e]&&[].concat(this.observers[e]).forEach((function(e){e.apply(void 0,t)}));this.observers["*"]&&[].concat(this.observers["*"]).forEach((function(n){n.apply(n,[e].concat(t))}))}}]),e}();function _(){var e,n,t=new Promise((function(t,i){e=t,n=i}));return t.resolve=e,t.reject=n,t}function C(e){return null==e?"":""+e}function A(e,n,t){function i(e){return e&&e.indexOf("###")>-1?e.replace(/###/g,"."):e}function s(){return!e||"string"==typeof e}for(var a="string"!=typeof n?[].concat(n):n.split(".");a.length>1;){if(s())return{};var o=i(a.shift());!e[o]&&t&&(e[o]=new t),e=Object.prototype.hasOwnProperty.call(e,o)?e[o]:{}}return s()?{}:{obj:e,k:i(a.shift())}}function E(e,n,t){var i=A(e,n,Object);i.obj[i.k]=t}function R(e,n){var t=A(e,n),i=t.obj,s=t.k;if(i)return i[s]}function L(e,n,t){for(var i in n)"__proto__"!==i&&"constructor"!==i&&(i in e?"string"==typeof e[i]||e[i]instanceof String||"string"==typeof n[i]||n[i]instanceof String?t&&(e[i]=n[i]):L(e[i],n[i],t):e[i]=n[i]);return e}function M(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}var I={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#x2F;"};function D(e){return"string"==typeof e?e.replace(/[&<>"'\/]/g,(function(e){return I[e]})):e}var O="undefined"!=typeof window&&window.navigator&&void 0===window.navigator.userAgentData&&window.navigator.userAgent&&window.navigator.userAgent.indexOf("MSIE")>-1,T=[" ",",","?","!",";"];function P(e,n){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:".";if(e){if(e[n])return e[n];for(var i=n.split(t),s=e,a=0;a<i.length;++a){if(!s)return;if("string"==typeof s[i[a]]&&a+1<i.length)return;if(void 0===s[i[a]]){for(var o=2,r=i.slice(a,a+o).join(t),c=s[r];void 0===c&&i.length>a+o;)o++,c=s[r=i.slice(a,a+o).join(t)];if(void 0===c)return;if(null===c)return null;if(n.endsWith(r)){if("string"==typeof c)return c;if(r&&"string"==typeof c[r])return c[r]}var l=i.slice(a+o).join(t);return l?P(c,l,t):void 0}s=s[i[a]]}return s}}function F(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,i)}return t}function N(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?F(Object(t),!0).forEach((function(n){f(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):F(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function q(e){var n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var t,i=h(e);if(n){var s=h(this).constructor;t=Reflect.construct(i,arguments,s)}else t=i.apply(this,arguments);return v(this,t)}}var z=function(e){m(t,j);var n=q(t);function t(e){var i,s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{ns:["translation"],defaultNS:"translation"};return c(this,t),i=n.call(this),O&&j.call(d(i)),i.data=e||{},i.options=s,void 0===i.options.keySeparator&&(i.options.keySeparator="."),void 0===i.options.ignoreJSONStructure&&(i.options.ignoreJSONStructure=!0),i}return u(t,[{key:"addNamespaces",value:function(e){this.options.ns.indexOf(e)<0&&this.options.ns.push(e)}},{key:"removeNamespaces",value:function(e){var n=this.options.ns.indexOf(e);n>-1&&this.options.ns.splice(n,1)}},{key:"getResource",value:function(e,n,t){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},s=void 0!==i.keySeparator?i.keySeparator:this.options.keySeparator,a=void 0!==i.ignoreJSONStructure?i.ignoreJSONStructure:this.options.ignoreJSONStructure,o=[e,n];t&&"string"!=typeof t&&(o=o.concat(t)),t&&"string"==typeof t&&(o=o.concat(s?t.split(s):t)),e.indexOf(".")>-1&&(o=e.split("."));var r=R(this.data,o);return r||!a||"string"!=typeof t?r:P(this.data&&this.data[e]&&this.data[e][n],t,s)}},{key:"addResource",value:function(e,n,t,i){var s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{silent:!1},a=void 0!==s.keySeparator?s.keySeparator:this.options.keySeparator,o=[e,n];t&&(o=o.concat(a?t.split(a):t)),e.indexOf(".")>-1&&(i=n,n=(o=e.split("."))[1]),this.addNamespaces(n),E(this.data,o,i),s.silent||this.emit("added",e,n,t,i)}},{key:"addResources",value:function(e,n,t){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{silent:!1};for(var s in t)"string"!=typeof t[s]&&"[object Array]"!==Object.prototype.toString.apply(t[s])||this.addResource(e,n,s,t[s],{silent:!0});i.silent||this.emit("added",e,n,t)}},{key:"addResourceBundle",value:function(e,n,t,i,s){var a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{silent:!1},o=[e,n];e.indexOf(".")>-1&&(i=t,t=n,n=(o=e.split("."))[1]),this.addNamespaces(n);var r=R(this.data,o)||{};i?L(r,t,s):r=N(N({},r),t),E(this.data,o,r),a.silent||this.emit("added",e,n,t)}},{key:"removeResourceBundle",value:function(e,n){this.hasResourceBundle(e,n)&&delete this.data[e][n],this.removeNamespaces(n),this.emit("removed",e,n)}},{key:"hasResourceBundle",value:function(e,n){return void 0!==this.getResource(e,n)}},{key:"getResourceBundle",value:function(e,n){return n||(n=this.options.defaultNS),"v1"===this.options.compatibilityAPI?N(N({},{}),this.getResource(e,n)):this.getResource(e,n)}},{key:"getDataByLanguage",value:function(e){return this.data[e]}},{key:"hasLanguageSomeTranslations",value:function(e){var n=this.getDataByLanguage(e);return!!(n&&Object.keys(n)||[]).find((function(e){return n[e]&&Object.keys(n[e]).length>0}))}},{key:"toJSON",value:function(){return this.data}}]),t}(),V={processors:{},addPostProcessor:function(e){this.processors[e.name]=e},handle:function(e,n,t,i,s){var a=this;return e.forEach((function(e){a.processors[e]&&(n=a.processors[e].process(n,t,i,s))})),n}};function B(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,i)}return t}function U(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?B(Object(t),!0).forEach((function(n){f(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):B(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function H(e){var n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var t,i=h(e);if(n){var s=h(this).constructor;t=Reflect.construct(i,arguments,s)}else t=i.apply(this,arguments);return v(this,t)}}var W={},$=function(e){m(t,j);var n=H(t);function t(e){var i,s,a,o,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return c(this,t),i=n.call(this),O&&j.call(d(i)),s=["resourceStore","languageUtils","pluralResolver","interpolator","backendConnector","i18nFormat","utils"],a=e,o=d(i),s.forEach((function(e){a[e]&&(o[e]=a[e])})),i.options=r,void 0===i.options.keySeparator&&(i.options.keySeparator="."),i.logger=S.create("translator"),i}return u(t,[{key:"changeLanguage",value:function(e){e&&(this.language=e)}},{key:"exists",value:function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{interpolation:{}};if(null==e)return!1;var t=this.resolve(e,n);return t&&void 0!==t.res}},{key:"extractFromKey",value:function(e,n){var t=void 0!==n.nsSeparator?n.nsSeparator:this.options.nsSeparator;void 0===t&&(t=":");var i=void 0!==n.keySeparator?n.keySeparator:this.options.keySeparator,s=n.ns||this.options.defaultNS||[],a=t&&e.indexOf(t)>-1,o=!(this.options.userDefinedKeySeparator||n.keySeparator||this.options.userDefinedNsSeparator||n.nsSeparator||function(e,n,t){n=n||"",t=t||"";var i=T.filter((function(e){return n.indexOf(e)<0&&t.indexOf(e)<0}));if(0===i.length)return!0;var s=new RegExp("(".concat(i.map((function(e){return"?"===e?"\\?":e})).join("|"),")")),a=!s.test(e);if(!a){var o=e.indexOf(t);o>0&&!s.test(e.substring(0,o))&&(a=!0)}return a}(e,t,i));if(a&&!o){var r=e.match(this.interpolator.nestingRegexp);if(r&&r.length>0)return{key:e,namespaces:s};var c=e.split(t);(t!==i||t===i&&this.options.ns.indexOf(c[0])>-1)&&(s=c.shift()),e=c.join(i)}return"string"==typeof s&&(s=[s]),{key:e,namespaces:s}}},{key:"translate",value:function(e,n,i){var s=this;if("object"!==r(n)&&this.options.overloadTranslationOptionHandler&&(n=this.options.overloadTranslationOptionHandler(arguments)),"object"===r(n)&&(n=U({},n)),n||(n={}),null==e)return"";Array.isArray(e)||(e=[String(e)]);var a=void 0!==n.returnDetails?n.returnDetails:this.options.returnDetails,o=void 0!==n.keySeparator?n.keySeparator:this.options.keySeparator,c=this.extractFromKey(e[e.length-1],n),l=c.key,p=c.namespaces,u=p[p.length-1],d=n.lng||this.language,g=n.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if(d&&"cimode"===d.toLowerCase()){if(g){var m=n.nsSeparator||this.options.nsSeparator;return a?{res:"".concat(u).concat(m).concat(l),usedKey:l,exactUsedKey:l,usedLng:d,usedNS:u}:"".concat(u).concat(m).concat(l)}return a?{res:l,usedKey:l,exactUsedKey:l,usedLng:d,usedNS:u}:l}var v=this.resolve(e,n),h=v&&v.res,f=v&&v.usedKey||l,x=v&&v.exactUsedKey||l,b=Object.prototype.toString.apply(h),y=void 0!==n.joinArrays?n.joinArrays:this.options.joinArrays,w=!this.i18nFormat||this.i18nFormat.handleAsObject;if(w&&h&&("string"!=typeof h&&"boolean"!=typeof h&&"number"!=typeof h)&&["[object Number]","[object Function]","[object RegExp]"].indexOf(b)<0&&("string"!=typeof y||"[object Array]"!==b)){if(!n.returnObjects&&!this.options.returnObjects){this.options.returnedObjectHandler||this.logger.warn("accessing an object - but returnObjects options is not enabled!");var k=this.options.returnedObjectHandler?this.options.returnedObjectHandler(f,h,U(U({},n),{},{ns:p})):"key '".concat(l," (").concat(this.language,")' returned an object instead of string.");return a?(v.res=k,v):k}if(o){var S="[object Array]"===b,j=S?[]:{},_=S?x:f;for(var C in h)if(Object.prototype.hasOwnProperty.call(h,C)){var A="".concat(_).concat(o).concat(C);j[C]=this.translate(A,U(U({},n),{joinArrays:!1,ns:p})),j[C]===A&&(j[C]=h[C])}h=j}}else if(w&&"string"==typeof y&&"[object Array]"===b)(h=h.join(y))&&(h=this.extendTranslation(h,e,n,i));else{var E=!1,R=!1,L=void 0!==n.count&&"string"!=typeof n.count,M=t.hasDefaultValue(n),I=L?this.pluralResolver.getSuffix(d,n.count,n):"",D=n["defaultValue".concat(I)]||n.defaultValue;!this.isValidLookup(h)&&M&&(E=!0,h=D),this.isValidLookup(h)||(R=!0,h=l);var O=(n.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey)&&R?void 0:h,T=M&&D!==h&&this.options.updateMissing;if(R||E||T){if(this.logger.log(T?"updateKey":"missingKey",d,u,l,T?D:h),o){var P=this.resolve(l,U(U({},n),{},{keySeparator:!1}));P&&P.res&&this.logger.warn("Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.")}var F=[],N=this.languageUtils.getFallbackCodes(this.options.fallbackLng,n.lng||this.language);if("fallback"===this.options.saveMissingTo&&N&&N[0])for(var q=0;q<N.length;q++)F.push(N[q]);else"all"===this.options.saveMissingTo?F=this.languageUtils.toResolveHierarchy(n.lng||this.language):F.push(n.lng||this.language);var z=function(e,t,i){var a=M&&i!==h?i:O;s.options.missingKeyHandler?s.options.missingKeyHandler(e,u,t,a,T,n):s.backendConnector&&s.backendConnector.saveMissing&&s.backendConnector.saveMissing(e,u,t,a,T,n),s.emit("missingKey",e,u,t,h)};this.options.saveMissing&&(this.options.saveMissingPlurals&&L?F.forEach((function(e){s.pluralResolver.getSuffixes(e,n).forEach((function(t){z([e],l+t,n["defaultValue".concat(t)]||D)}))})):z(F,l,D))}h=this.extendTranslation(h,e,n,v,i),R&&h===l&&this.options.appendNamespaceToMissingKey&&(h="".concat(u,":").concat(l)),(R||E)&&this.options.parseMissingKeyHandler&&(h="v1"!==this.options.compatibilityAPI?this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey?"".concat(u,":").concat(l):l,E?h:void 0):this.options.parseMissingKeyHandler(h))}return a?(v.res=h,v):h}},{key:"extendTranslation",value:function(e,n,t,i,s){var a=this;if(this.i18nFormat&&this.i18nFormat.parse)e=this.i18nFormat.parse(e,U(U({},this.options.interpolation.defaultVariables),t),i.usedLng,i.usedNS,i.usedKey,{resolved:i});else if(!t.skipInterpolation){t.interpolation&&this.interpolator.init(U(U({},t),{interpolation:U(U({},this.options.interpolation),t.interpolation)}));var o,r="string"==typeof e&&(t&&t.interpolation&&void 0!==t.interpolation.skipOnVariables?t.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables);if(r){var c=e.match(this.interpolator.nestingRegexp);o=c&&c.length}var l=t.replace&&"string"!=typeof t.replace?t.replace:t;if(this.options.interpolation.defaultVariables&&(l=U(U({},this.options.interpolation.defaultVariables),l)),e=this.interpolator.interpolate(e,l,t.lng||this.language,t),r){var p=e.match(this.interpolator.nestingRegexp);o<(p&&p.length)&&(t.nest=!1)}!t.lng&&"v1"!==this.options.compatibilityAPI&&i&&i.res&&(t.lng=i.usedLng),!1!==t.nest&&(e=this.interpolator.nest(e,(function(){for(var e=arguments.length,i=new Array(e),o=0;o<e;o++)i[o]=arguments[o];return s&&s[0]===i[0]&&!t.context?(a.logger.warn("It seems you are nesting recursively key: ".concat(i[0]," in key: ").concat(n[0])),null):a.translate.apply(a,i.concat([n]))}),t)),t.interpolation&&this.interpolator.reset()}var u=t.postProcess||this.options.postProcess,d="string"==typeof u?[u]:u;return null!=e&&d&&d.length&&!1!==t.applyPostProcessor&&(e=V.handle(d,e,n,this.options&&this.options.postProcessPassResolved?U({i18nResolved:i},t):t,this)),e}},{key:"resolve",value:function(e){var n,t,i,s,a,o=this,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return"string"==typeof e&&(e=[e]),e.forEach((function(e){if(!o.isValidLookup(n)){var c=o.extractFromKey(e,r),l=c.key;t=l;var p=c.namespaces;o.options.fallbackNS&&(p=p.concat(o.options.fallbackNS));var u=void 0!==r.count&&"string"!=typeof r.count,d=u&&!r.ordinal&&0===r.count&&o.pluralResolver.shouldUseIntlApi(),g=void 0!==r.context&&("string"==typeof r.context||"number"==typeof r.context)&&""!==r.context,m=r.lngs?r.lngs:o.languageUtils.toResolveHierarchy(r.lng||o.language,r.fallbackLng);p.forEach((function(e){o.isValidLookup(n)||(a=e,!W["".concat(m[0],"-").concat(e)]&&o.utils&&o.utils.hasLoadedNamespace&&!o.utils.hasLoadedNamespace(a)&&(W["".concat(m[0],"-").concat(e)]=!0,o.logger.warn('key "'.concat(t,'" for languages "').concat(m.join(", "),'" won\'t get resolved as namespace "').concat(a,'" was not yet loaded'),"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!")),m.forEach((function(t){if(!o.isValidLookup(n)){s=t;var a,c=[l];if(o.i18nFormat&&o.i18nFormat.addLookupKeys)o.i18nFormat.addLookupKeys(c,l,t,e,r);else{var p;u&&(p=o.pluralResolver.getSuffix(t,r.count,r));var m="".concat(o.options.pluralSeparator,"zero");if(u&&(c.push(l+p),d&&c.push(l+m)),g){var v="".concat(l).concat(o.options.contextSeparator).concat(r.context);c.push(v),u&&(c.push(v+p),d&&c.push(v+m))}}for(;a=c.pop();)o.isValidLookup(n)||(i=a,n=o.getResource(t,e,a,r))}})))}))}})),{res:n,usedKey:t,exactUsedKey:i,usedLng:s,usedNS:a}}},{key:"isValidLookup",value:function(e){return!(void 0===e||!this.options.returnNull&&null===e||!this.options.returnEmptyString&&""===e)}},{key:"getResource",value:function(e,n,t){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return this.i18nFormat&&this.i18nFormat.getResource?this.i18nFormat.getResource(e,n,t,i):this.resourceStore.getResource(e,n,t,i)}}],[{key:"hasDefaultValue",value:function(e){var n="defaultValue";for(var t in e)if(Object.prototype.hasOwnProperty.call(e,t)&&n===t.substring(0,12)&&void 0!==e[t])return!0;return!1}}]),t}();function Y(e){return e.charAt(0).toUpperCase()+e.slice(1)}var K=function(){function e(n){c(this,e),this.options=n,this.supportedLngs=this.options.supportedLngs||!1,this.logger=S.create("languageUtils")}return u(e,[{key:"getScriptPartFromCode",value:function(e){if(!e||e.indexOf("-")<0)return null;var n=e.split("-");return 2===n.length?null:(n.pop(),"x"===n[n.length-1].toLowerCase()?null:this.formatLanguageCode(n.join("-")))}},{key:"getLanguagePartFromCode",value:function(e){if(!e||e.indexOf("-")<0)return e;var n=e.split("-");return this.formatLanguageCode(n[0])}},{key:"formatLanguageCode",value:function(e){if("string"==typeof e&&e.indexOf("-")>-1){var n=["hans","hant","latn","cyrl","cans","mong","arab"],t=e.split("-");return this.options.lowerCaseLng?t=t.map((function(e){return e.toLowerCase()})):2===t.length?(t[0]=t[0].toLowerCase(),t[1]=t[1].toUpperCase(),n.indexOf(t[1].toLowerCase())>-1&&(t[1]=Y(t[1].toLowerCase()))):3===t.length&&(t[0]=t[0].toLowerCase(),2===t[1].length&&(t[1]=t[1].toUpperCase()),"sgn"!==t[0]&&2===t[2].length&&(t[2]=t[2].toUpperCase()),n.indexOf(t[1].toLowerCase())>-1&&(t[1]=Y(t[1].toLowerCase())),n.indexOf(t[2].toLowerCase())>-1&&(t[2]=Y(t[2].toLowerCase()))),t.join("-")}return this.options.cleanCode||this.options.lowerCaseLng?e.toLowerCase():e}},{key:"isSupportedCode",value:function(e){return("languageOnly"===this.options.load||this.options.nonExplicitSupportedLngs)&&(e=this.getLanguagePartFromCode(e)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.indexOf(e)>-1}},{key:"getBestMatchFromCodes",value:function(e){var n,t=this;return e?(e.forEach((function(e){if(!n){var i=t.formatLanguageCode(e);t.options.supportedLngs&&!t.isSupportedCode(i)||(n=i)}})),!n&&this.options.supportedLngs&&e.forEach((function(e){if(!n){var i=t.getLanguagePartFromCode(e);if(t.isSupportedCode(i))return n=i;n=t.options.supportedLngs.find((function(e){return e===i?e:e.indexOf("-")<0&&i.indexOf("-")<0?void 0:0===e.indexOf(i)?e:void 0}))}})),n||(n=this.getFallbackCodes(this.options.fallbackLng)[0]),n):null}},{key:"getFallbackCodes",value:function(e,n){if(!e)return[];if("function"==typeof e&&(e=e(n)),"string"==typeof e&&(e=[e]),"[object Array]"===Object.prototype.toString.apply(e))return e;if(!n)return e.default||[];var t=e[n];return t||(t=e[this.getScriptPartFromCode(n)]),t||(t=e[this.formatLanguageCode(n)]),t||(t=e[this.getLanguagePartFromCode(n)]),t||(t=e.default),t||[]}},{key:"toResolveHierarchy",value:function(e,n){var t=this,i=this.getFallbackCodes(n||this.options.fallbackLng||[],e),s=[],a=function(e){e&&(t.isSupportedCode(e)?s.push(e):t.logger.warn("rejecting language code not found in supportedLngs: ".concat(e)))};return"string"==typeof e&&e.indexOf("-")>-1?("languageOnly"!==this.options.load&&a(this.formatLanguageCode(e)),"languageOnly"!==this.options.load&&"currentOnly"!==this.options.load&&a(this.getScriptPartFromCode(e)),"currentOnly"!==this.options.load&&a(this.getLanguagePartFromCode(e))):"string"==typeof e&&a(this.formatLanguageCode(e)),i.forEach((function(e){s.indexOf(e)<0&&a(t.formatLanguageCode(e))})),s}}]),e}(),X=[{lngs:["ach","ak","am","arn","br","fil","gun","ln","mfe","mg","mi","oc","pt","pt-BR","tg","tl","ti","tr","uz","wa"],nr:[1,2],fc:1},{lngs:["af","an","ast","az","bg","bn","ca","da","de","dev","el","en","eo","es","et","eu","fi","fo","fur","fy","gl","gu","ha","hi","hu","hy","ia","it","kk","kn","ku","lb","mai","ml","mn","mr","nah","nap","nb","ne","nl","nn","no","nso","pa","pap","pms","ps","pt-PT","rm","sco","se","si","so","son","sq","sv","sw","ta","te","tk","ur","yo"],nr:[1,2],fc:2},{lngs:["ay","bo","cgg","fa","ht","id","ja","jbo","ka","km","ko","ky","lo","ms","sah","su","th","tt","ug","vi","wo","zh"],nr:[1],fc:3},{lngs:["be","bs","cnr","dz","hr","ru","sr","uk"],nr:[1,2,5],fc:4},{lngs:["ar"],nr:[0,1,2,3,11,100],fc:5},{lngs:["cs","sk"],nr:[1,2,5],fc:6},{lngs:["csb","pl"],nr:[1,2,5],fc:7},{lngs:["cy"],nr:[1,2,3,8],fc:8},{lngs:["fr"],nr:[1,2],fc:9},{lngs:["ga"],nr:[1,2,3,7,11],fc:10},{lngs:["gd"],nr:[1,2,3,20],fc:11},{lngs:["is"],nr:[1,2],fc:12},{lngs:["jv"],nr:[0,1],fc:13},{lngs:["kw"],nr:[1,2,3,4],fc:14},{lngs:["lt"],nr:[1,2,10],fc:15},{lngs:["lv"],nr:[1,2,0],fc:16},{lngs:["mk"],nr:[1,2],fc:17},{lngs:["mnk"],nr:[0,1,2],fc:18},{lngs:["mt"],nr:[1,2,11,20],fc:19},{lngs:["or"],nr:[2,1],fc:2},{lngs:["ro"],nr:[1,2,20],fc:20},{lngs:["sl"],nr:[5,1,2,3],fc:21},{lngs:["he","iw"],nr:[1,2,20,21],fc:22}],G={1:function(e){return Number(e>1)},2:function(e){return Number(1!=e)},3:function(e){return 0},4:function(e){return Number(e%10==1&&e%100!=11?0:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?1:2)},5:function(e){return Number(0==e?0:1==e?1:2==e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5)},6:function(e){return Number(1==e?0:e>=2&&e<=4?1:2)},7:function(e){return Number(1==e?0:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?1:2)},8:function(e){return Number(1==e?0:2==e?1:8!=e&&11!=e?2:3)},9:function(e){return Number(e>=2)},10:function(e){return Number(1==e?0:2==e?1:e<7?2:e<11?3:4)},11:function(e){return Number(1==e||11==e?0:2==e||12==e?1:e>2&&e<20?2:3)},12:function(e){return Number(e%10!=1||e%100==11)},13:function(e){return Number(0!==e)},14:function(e){return Number(1==e?0:2==e?1:3==e?2:3)},15:function(e){return Number(e%10==1&&e%100!=11?0:e%10>=2&&(e%100<10||e%100>=20)?1:2)},16:function(e){return Number(e%10==1&&e%100!=11?0:0!==e?1:2)},17:function(e){return Number(1==e||e%10==1&&e%100!=11?0:1)},18:function(e){return Number(0==e?0:1==e?1:2)},19:function(e){return Number(1==e?0:0==e||e%100>1&&e%100<11?1:e%100>10&&e%100<20?2:3)},20:function(e){return Number(1==e?0:0==e||e%100>0&&e%100<20?1:2)},21:function(e){return Number(e%100==1?1:e%100==2?2:e%100==3||e%100==4?3:0)},22:function(e){return Number(1==e?0:2==e?1:(e<0||e>10)&&e%10==0?2:3)}},J=["v1","v2","v3"],Q={zero:0,one:1,two:2,few:3,many:4,other:5};var Z=function(){function e(n){var t,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};c(this,e),this.languageUtils=n,this.options=i,this.logger=S.create("pluralResolver"),this.options.compatibilityJSON&&"v4"!==this.options.compatibilityJSON||"undefined"!=typeof Intl&&Intl.PluralRules||(this.options.compatibilityJSON="v3",this.logger.error("Your environment seems not to be Intl API compatible, use an Intl.PluralRules polyfill. Will fallback to the compatibilityJSON v3 format handling.")),this.rules=(t={},X.forEach((function(e){e.lngs.forEach((function(n){t[n]={numbers:e.nr,plurals:G[e.fc]}}))})),t)}return u(e,[{key:"addRule",value:function(e,n){this.rules[e]=n}},{key:"getRule",value:function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(this.shouldUseIntlApi())try{return new Intl.PluralRules(e,{type:n.ordinal?"ordinal":"cardinal"})}catch(e){return}return this.rules[e]||this.rules[this.languageUtils.getLanguagePartFromCode(e)]}},{key:"needsPlural",value:function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},t=this.getRule(e,n);return this.shouldUseIntlApi()?t&&t.resolvedOptions().pluralCategories.length>1:t&&t.numbers.length>1}},{key:"getPluralFormsOfKey",value:function(e,n){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return this.getSuffixes(e,t).map((function(e){return"".concat(n).concat(e)}))}},{key:"getSuffixes",value:function(e){var n=this,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=this.getRule(e,t);return i?this.shouldUseIntlApi()?i.resolvedOptions().pluralCategories.sort((function(e,n){return Q[e]-Q[n]})).map((function(e){return"".concat(n.options.prepend).concat(e)})):i.numbers.map((function(i){return n.getSuffix(e,i,t)})):[]}},{key:"getSuffix",value:function(e,n){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=this.getRule(e,t);return i?this.shouldUseIntlApi()?"".concat(this.options.prepend).concat(i.select(n)):this.getSuffixRetroCompatible(i,n):(this.logger.warn("no plural rule found for: ".concat(e)),"")}},{key:"getSuffixRetroCompatible",value:function(e,n){var t=this,i=e.noAbs?e.plurals(n):e.plurals(Math.abs(n)),s=e.numbers[i];this.options.simplifyPluralSuffix&&2===e.numbers.length&&1===e.numbers[0]&&(2===s?s="plural":1===s&&(s=""));var a=function(){return t.options.prepend&&s.toString()?t.options.prepend+s.toString():s.toString()};return"v1"===this.options.compatibilityJSON?1===s?"":"number"==typeof s?"_plural_".concat(s.toString()):a():"v2"===this.options.compatibilityJSON||this.options.simplifyPluralSuffix&&2===e.numbers.length&&1===e.numbers[0]?a():this.options.prepend&&i.toString()?this.options.prepend+i.toString():i.toString()}},{key:"shouldUseIntlApi",value:function(){return!J.includes(this.options.compatibilityJSON)}}]),e}();function ee(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,i)}return t}function ne(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?ee(Object(t),!0).forEach((function(n){f(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ee(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function te(e,n,t){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:".",s=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],a=function(e,n,t){var i=R(e,t);return void 0!==i?i:R(n,t)}(e,n,t);return!a&&s&&"string"==typeof t&&void 0===(a=P(e,t,i))&&(a=P(n,t,i)),a}var ie=function(){function e(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};c(this,e),this.logger=S.create("interpolator"),this.options=n,this.format=n.interpolation&&n.interpolation.format||function(e){return e},this.init(n)}return u(e,[{key:"init",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};e.interpolation||(e.interpolation={escapeValue:!0});var n=e.interpolation;this.escape=void 0!==n.escape?n.escape:D,this.escapeValue=void 0===n.escapeValue||n.escapeValue,this.useRawValueToEscape=void 0!==n.useRawValueToEscape&&n.useRawValueToEscape,this.prefix=n.prefix?M(n.prefix):n.prefixEscaped||"{{",this.suffix=n.suffix?M(n.suffix):n.suffixEscaped||"}}",this.formatSeparator=n.formatSeparator?n.formatSeparator:n.formatSeparator||",",this.unescapePrefix=n.unescapeSuffix?"":n.unescapePrefix||"-",this.unescapeSuffix=this.unescapePrefix?"":n.unescapeSuffix||"",this.nestingPrefix=n.nestingPrefix?M(n.nestingPrefix):n.nestingPrefixEscaped||M("$t("),this.nestingSuffix=n.nestingSuffix?M(n.nestingSuffix):n.nestingSuffixEscaped||M(")"),this.nestingOptionsSeparator=n.nestingOptionsSeparator?n.nestingOptionsSeparator:n.nestingOptionsSeparator||",",this.maxReplaces=n.maxReplaces?n.maxReplaces:1e3,this.alwaysFormat=void 0!==n.alwaysFormat&&n.alwaysFormat,this.resetRegExp()}},{key:"reset",value:function(){this.options&&this.init(this.options)}},{key:"resetRegExp",value:function(){var e="".concat(this.prefix,"(.+?)").concat(this.suffix);this.regexp=new RegExp(e,"g");var n="".concat(this.prefix).concat(this.unescapePrefix,"(.+?)").concat(this.unescapeSuffix).concat(this.suffix);this.regexpUnescape=new RegExp(n,"g");var t="".concat(this.nestingPrefix,"(.+?)").concat(this.nestingSuffix);this.nestingRegexp=new RegExp(t,"g")}},{key:"interpolate",value:function(e,n,t,i){var s,a,o,r=this,c=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{};function l(e){return e.replace(/\$/g,"$$$$")}var p=function(e){if(e.indexOf(r.formatSeparator)<0){var s=te(n,c,e,r.options.keySeparator,r.options.ignoreJSONStructure);return r.alwaysFormat?r.format(s,void 0,t,ne(ne(ne({},i),n),{},{interpolationkey:e})):s}var a=e.split(r.formatSeparator),o=a.shift().trim(),l=a.join(r.formatSeparator).trim();return r.format(te(n,c,o,r.options.keySeparator,r.options.ignoreJSONStructure),l,t,ne(ne(ne({},i),n),{},{interpolationkey:o}))};this.resetRegExp();var u=i&&i.missingInterpolationHandler||this.options.missingInterpolationHandler,d=i&&i.interpolation&&void 0!==i.interpolation.skipOnVariables?i.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:function(e){return l(e)}},{regex:this.regexp,safeValue:function(e){return r.escapeValue?l(r.escape(e)):l(e)}}].forEach((function(n){for(o=0;s=n.regex.exec(e);){var t=s[1].trim();if(void 0===(a=p(t)))if("function"==typeof u){var c=u(e,s,i);a="string"==typeof c?c:""}else if(i&&Object.prototype.hasOwnProperty.call(i,t))a="";else{if(d){a=s[0];continue}r.logger.warn("missed to pass in variable ".concat(t," for interpolating ").concat(e)),a=""}else"string"==typeof a||r.useRawValueToEscape||(a=C(a));var l=n.safeValue(a);if(e=e.replace(s[0],l),d?(n.regex.lastIndex+=a.length,n.regex.lastIndex-=s[0].length):n.regex.lastIndex=0,++o>=r.maxReplaces)break}})),e}},{key:"nest",value:function(e,n){var t,i,s,a=this,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};function r(e,n){var t=this.nestingOptionsSeparator;if(e.indexOf(t)<0)return e;var i=e.split(new RegExp("".concat(t,"[ ]*{"))),a="{".concat(i[1]);e=i[0];var o=(a=this.interpolate(a,s)).match(/'/g),r=a.match(/"/g);(o&&o.length%2==0&&!r||r.length%2!=0)&&(a=a.replace(/'/g,'"'));try{s=JSON.parse(a),n&&(s=ne(ne({},n),s))}catch(n){return this.logger.warn("failed parsing options string in nesting for key ".concat(e),n),"".concat(e).concat(t).concat(a)}return delete s.defaultValue,e}for(;t=this.nestingRegexp.exec(e);){var c=[];(s=(s=ne({},o)).replace&&"string"!=typeof s.replace?s.replace:s).applyPostProcessor=!1,delete s.defaultValue;var l=!1;if(-1!==t[0].indexOf(this.formatSeparator)&&!/{.*}/.test(t[1])){var p=t[1].split(this.formatSeparator).map((function(e){return e.trim()}));t[1]=p.shift(),c=p,l=!0}if((i=n(r.call(this,t[1].trim(),s),s))&&t[0]===e&&"string"!=typeof i)return i;"string"!=typeof i&&(i=C(i)),i||(this.logger.warn("missed to resolve ".concat(t[1]," for nesting ").concat(e)),i=""),l&&(i=c.reduce((function(e,n){return a.format(e,n,o.lng,ne(ne({},o),{},{interpolationkey:t[1].trim()}))}),i.trim())),e=e.replace(t[0],i),this.regexp.lastIndex=0}return e}}]),e}();function se(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,i)}return t}function ae(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?se(Object(t),!0).forEach((function(n){f(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):se(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function oe(e){var n={};return function(t,i,s){var a=i+JSON.stringify(s),o=n[a];return o||(o=e(i,s),n[a]=o),o(t)}}var re=function(){function e(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};c(this,e),this.logger=S.create("formatter"),this.options=n,this.formats={number:oe((function(e,n){var t=new Intl.NumberFormat(e,ae({},n));return function(e){return t.format(e)}})),currency:oe((function(e,n){var t=new Intl.NumberFormat(e,ae(ae({},n),{},{style:"currency"}));return function(e){return t.format(e)}})),datetime:oe((function(e,n){var t=new Intl.DateTimeFormat(e,ae({},n));return function(e){return t.format(e)}})),relativetime:oe((function(e,n){var t=new Intl.RelativeTimeFormat(e,ae({},n));return function(e){return t.format(e,n.range||"day")}})),list:oe((function(e,n){var t=new Intl.ListFormat(e,ae({},n));return function(e){return t.format(e)}}))},this.init(n)}return u(e,[{key:"init",value:function(e){var n=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{interpolation:{}}).interpolation;this.formatSeparator=n.formatSeparator?n.formatSeparator:n.formatSeparator||","}},{key:"add",value:function(e,n){this.formats[e.toLowerCase().trim()]=n}},{key:"addCached",value:function(e,n){this.formats[e.toLowerCase().trim()]=oe(n)}},{key:"format",value:function(e,n,t){var i=this,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return n.split(this.formatSeparator).reduce((function(e,n){var a=function(e){var n=e.toLowerCase().trim(),t={};if(e.indexOf("(")>-1){var i=e.split("(");n=i[0].toLowerCase().trim();var s=i[1].substring(0,i[1].length-1);"currency"===n&&s.indexOf(":")<0?t.currency||(t.currency=s.trim()):"relativetime"===n&&s.indexOf(":")<0?t.range||(t.range=s.trim()):s.split(";").forEach((function(e){if(e){var n=b(e.split(":")),i=n[0],s=n.slice(1).join(":").trim().replace(/^'+|'+$/g,"");t[i.trim()]||(t[i.trim()]=s),"false"===s&&(t[i.trim()]=!1),"true"===s&&(t[i.trim()]=!0),isNaN(s)||(t[i.trim()]=parseInt(s,10))}}))}return{formatName:n,formatOptions:t}}(n),o=a.formatName,r=a.formatOptions;if(i.formats[o]){var c=e;try{var l=s&&s.formatParams&&s.formatParams[s.interpolationkey]||{},p=l.locale||l.lng||s.locale||s.lng||t;c=i.formats[o](e,p,ae(ae(ae({},r),s),l))}catch(e){i.logger.warn(e)}return c}return i.logger.warn("there was no format function for ".concat(o)),e}),e)}}]),e}();function ce(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,i)}return t}function le(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?ce(Object(t),!0).forEach((function(n){f(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ce(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function pe(e){var n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var t,i=h(e);if(n){var s=h(this).constructor;t=Reflect.construct(i,arguments,s)}else t=i.apply(this,arguments);return v(this,t)}}var ue=function(e){m(t,j);var n=pe(t);function t(e,i,s){var a,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return c(this,t),a=n.call(this),O&&j.call(d(a)),a.backend=e,a.store=i,a.services=s,a.languageUtils=s.languageUtils,a.options=o,a.logger=S.create("backendConnector"),a.waitingReads=[],a.maxParallelReads=o.maxParallelReads||10,a.readingCalls=0,a.maxRetries=o.maxRetries>=0?o.maxRetries:5,a.retryTimeout=o.retryTimeout>=1?o.retryTimeout:350,a.state={},a.queue=[],a.backend&&a.backend.init&&a.backend.init(s,o.backend,o),a}return u(t,[{key:"queueLoad",value:function(e,n,t,i){var s=this,a={},o={},r={},c={};return e.forEach((function(e){var i=!0;n.forEach((function(n){var r="".concat(e,"|").concat(n);!t.reload&&s.store.hasResourceBundle(e,n)?s.state[r]=2:s.state[r]<0||(1===s.state[r]?void 0===o[r]&&(o[r]=!0):(s.state[r]=1,i=!1,void 0===o[r]&&(o[r]=!0),void 0===a[r]&&(a[r]=!0),void 0===c[n]&&(c[n]=!0)))})),i||(r[e]=!0)})),(Object.keys(a).length||Object.keys(o).length)&&this.queue.push({pending:o,pendingCount:Object.keys(o).length,loaded:{},errors:[],callback:i}),{toLoad:Object.keys(a),pending:Object.keys(o),toLoadLanguages:Object.keys(r),toLoadNamespaces:Object.keys(c)}}},{key:"loaded",value:function(e,n,t){var i=e.split("|"),s=i[0],a=i[1];n&&this.emit("failedLoading",s,a,n),t&&this.store.addResourceBundle(s,a,t),this.state[e]=n?-1:2;var o={};this.queue.forEach((function(t){!function(e,n,t,i){var s=A(e,n,Object),a=s.obj,o=s.k;a[o]=a[o]||[],i&&(a[o]=a[o].concat(t)),i||a[o].push(t)}(t.loaded,[s],a),function(e,n){void 0!==e.pending[n]&&(delete e.pending[n],e.pendingCount--)}(t,e),n&&t.errors.push(n),0!==t.pendingCount||t.done||(Object.keys(t.loaded).forEach((function(e){o[e]||(o[e]={});var n=t.loaded[e];n.length&&n.forEach((function(n){void 0===o[e][n]&&(o[e][n]=!0)}))})),t.done=!0,t.errors.length?t.callback(t.errors):t.callback())})),this.emit("loaded",o),this.queue=this.queue.filter((function(e){return!e.done}))}},{key:"read",value:function(e,n,t){var i=this,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:this.retryTimeout,o=arguments.length>5?arguments[5]:void 0;if(!e.length)return o(null,{});if(this.readingCalls>=this.maxParallelReads)this.waitingReads.push({lng:e,ns:n,fcName:t,tried:s,wait:a,callback:o});else{this.readingCalls++;var r=function(r,c){if(i.readingCalls--,i.waitingReads.length>0){var l=i.waitingReads.shift();i.read(l.lng,l.ns,l.fcName,l.tried,l.wait,l.callback)}r&&c&&s<i.maxRetries?setTimeout((function(){i.read.call(i,e,n,t,s+1,2*a,o)}),a):o(r,c)},c=this.backend[t].bind(this.backend);if(2!==c.length)return c(e,n,r);try{var l=c(e,n);l&&"function"==typeof l.then?l.then((function(e){return r(null,e)})).catch(r):r(null,l)}catch(e){r(e)}}}},{key:"prepareLoading",value:function(e,n){var t=this,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},s=arguments.length>3?arguments[3]:void 0;if(!this.backend)return this.logger.warn("No backend was added via i18next.use. Will not load resources."),s&&s();"string"==typeof e&&(e=this.languageUtils.toResolveHierarchy(e)),"string"==typeof n&&(n=[n]);var a=this.queueLoad(e,n,i,s);if(!a.toLoad.length)return a.pending.length||s(),null;a.toLoad.forEach((function(e){t.loadOne(e)}))}},{key:"load",value:function(e,n,t){this.prepareLoading(e,n,{},t)}},{key:"reload",value:function(e,n,t){this.prepareLoading(e,n,{reload:!0},t)}},{key:"loadOne",value:function(e){var n=this,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",i=e.split("|"),s=i[0],a=i[1];this.read(s,a,"read",void 0,void 0,(function(i,o){i&&n.logger.warn("".concat(t,"loading namespace ").concat(a," for language ").concat(s," failed"),i),!i&&o&&n.logger.log("".concat(t,"loaded namespace ").concat(a," for language ").concat(s),o),n.loaded(e,i,o)}))}},{key:"saveMissing",value:function(e,n,t,i,s){var a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{},o=arguments.length>6&&void 0!==arguments[6]?arguments[6]:function(){};if(this.services.utils&&this.services.utils.hasLoadedNamespace&&!this.services.utils.hasLoadedNamespace(n))this.logger.warn('did not save key "'.concat(t,'" as the namespace "').concat(n,'" was not yet loaded'),"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!");else if(null!=t&&""!==t){if(this.backend&&this.backend.create){var r=le(le({},a),{},{isUpdate:s}),c=this.backend.create.bind(this.backend);if(c.length<6)try{var l;(l=5===c.length?c(e,n,t,i,r):c(e,n,t,i))&&"function"==typeof l.then?l.then((function(e){return o(null,e)})).catch(o):o(null,l)}catch(e){o(e)}else c(e,n,t,i,o,r)}e&&e[0]&&this.store.addResource(e[0],n,t,i)}}}]),t}();function de(){return{debug:!1,initImmediate:!0,ns:["translation"],defaultNS:["translation"],fallbackLng:["dev"],fallbackNS:!1,supportedLngs:!1,nonExplicitSupportedLngs:!1,load:"all",preload:!1,simplifyPluralSuffix:!0,keySeparator:".",nsSeparator:":",pluralSeparator:"_",contextSeparator:"_",partialBundledLanguages:!1,saveMissing:!1,updateMissing:!1,saveMissingTo:"fallback",saveMissingPlurals:!0,missingKeyHandler:!1,missingInterpolationHandler:!1,postProcess:!1,postProcessPassResolved:!1,returnNull:!0,returnEmptyString:!0,returnObjects:!1,joinArrays:!1,returnedObjectHandler:!1,parseMissingKeyHandler:!1,appendNamespaceToMissingKey:!1,appendNamespaceToCIMode:!1,overloadTranslationOptionHandler:function(e){var n={};if("object"===r(e[1])&&(n=e[1]),"string"==typeof e[1]&&(n.defaultValue=e[1]),"string"==typeof e[2]&&(n.tDescription=e[2]),"object"===r(e[2])||"object"===r(e[3])){var t=e[3]||e[2];Object.keys(t).forEach((function(e){n[e]=t[e]}))}return n},interpolation:{escapeValue:!0,format:function(e,n,t,i){return e},prefix:"{{",suffix:"}}",formatSeparator:",",unescapePrefix:"-",nestingPrefix:"$t(",nestingSuffix:")",nestingOptionsSeparator:",",maxReplaces:1e3,skipOnVariables:!0}}}function ge(e){return"string"==typeof e.ns&&(e.ns=[e.ns]),"string"==typeof e.fallbackLng&&(e.fallbackLng=[e.fallbackLng]),"string"==typeof e.fallbackNS&&(e.fallbackNS=[e.fallbackNS]),e.supportedLngs&&e.supportedLngs.indexOf("cimode")<0&&(e.supportedLngs=e.supportedLngs.concat(["cimode"])),e}function me(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,i)}return t}function ve(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?me(Object(t),!0).forEach((function(n){f(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):me(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function he(e){var n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var t,i=h(e);if(n){var s=h(this).constructor;t=Reflect.construct(i,arguments,s)}else t=i.apply(this,arguments);return v(this,t)}}function fe(){}var xe=function(e){m(t,j);var n=he(t);function t(){var e,i,s=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},a=arguments.length>1?arguments[1]:void 0;if(c(this,t),e=n.call(this),O&&j.call(d(e)),e.options=ge(s),e.services={},e.logger=S,e.modules={external:[]},i=d(e),Object.getOwnPropertyNames(Object.getPrototypeOf(i)).forEach((function(e){"function"==typeof i[e]&&(i[e]=i[e].bind(i))})),a&&!e.isInitialized&&!s.isClone){if(!e.options.initImmediate)return e.init(s,a),v(e,d(e));setTimeout((function(){e.init(s,a)}),0)}return e}return u(t,[{key:"init",value:function(){var e=this,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0;"function"==typeof n&&(t=n,n={}),!n.defaultNS&&!1!==n.defaultNS&&n.ns&&("string"==typeof n.ns?n.defaultNS=n.ns:n.ns.indexOf("translation")<0&&(n.defaultNS=n.ns[0]));var i=de();function s(e){return e?"function"==typeof e?new e:e:null}if(this.options=ve(ve(ve({},i),this.options),ge(n)),"v1"!==this.options.compatibilityAPI&&(this.options.interpolation=ve(ve({},i.interpolation),this.options.interpolation)),void 0!==n.keySeparator&&(this.options.userDefinedKeySeparator=n.keySeparator),void 0!==n.nsSeparator&&(this.options.userDefinedNsSeparator=n.nsSeparator),!this.options.isClone){var a;this.modules.logger?S.init(s(this.modules.logger),this.options):S.init(null,this.options),this.modules.formatter?a=this.modules.formatter:"undefined"!=typeof Intl&&(a=re);var o=new K(this.options);this.store=new z(this.options.resources,this.options);var r=this.services;r.logger=S,r.resourceStore=this.store,r.languageUtils=o,r.pluralResolver=new Z(o,{prepend:this.options.pluralSeparator,compatibilityJSON:this.options.compatibilityJSON,simplifyPluralSuffix:this.options.simplifyPluralSuffix}),!a||this.options.interpolation.format&&this.options.interpolation.format!==i.interpolation.format||(r.formatter=s(a),r.formatter.init(r,this.options),this.options.interpolation.format=r.formatter.format.bind(r.formatter)),r.interpolator=new ie(this.options),r.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},r.backendConnector=new ue(s(this.modules.backend),r.resourceStore,r,this.options),r.backendConnector.on("*",(function(n){for(var t=arguments.length,i=new Array(t>1?t-1:0),s=1;s<t;s++)i[s-1]=arguments[s];e.emit.apply(e,[n].concat(i))})),this.modules.languageDetector&&(r.languageDetector=s(this.modules.languageDetector),r.languageDetector.init&&r.languageDetector.init(r,this.options.detection,this.options)),this.modules.i18nFormat&&(r.i18nFormat=s(this.modules.i18nFormat),r.i18nFormat.init&&r.i18nFormat.init(this)),this.translator=new $(this.services,this.options),this.translator.on("*",(function(n){for(var t=arguments.length,i=new Array(t>1?t-1:0),s=1;s<t;s++)i[s-1]=arguments[s];e.emit.apply(e,[n].concat(i))})),this.modules.external.forEach((function(n){n.init&&n.init(e)}))}if(this.format=this.options.interpolation.format,t||(t=fe),this.options.fallbackLng&&!this.services.languageDetector&&!this.options.lng){var c=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);c.length>0&&"dev"!==c[0]&&(this.options.lng=c[0])}this.services.languageDetector||this.options.lng||this.logger.warn("init: no languageDetector is used and no lng is defined");["getResource","hasResourceBundle","getResourceBundle","getDataByLanguage"].forEach((function(n){e[n]=function(){var t;return(t=e.store)[n].apply(t,arguments)}}));["addResource","addResources","addResourceBundle","removeResourceBundle"].forEach((function(n){e[n]=function(){var t;return(t=e.store)[n].apply(t,arguments),e}}));var l=_(),p=function(){var n=function(n,i){e.isInitialized&&!e.initializedStoreOnce&&e.logger.warn("init: i18next is already initialized. You should call init just once!"),e.isInitialized=!0,e.options.isClone||e.logger.log("initialized",e.options),e.emit("initialized",e.options),l.resolve(i),t(n,i)};if(e.languages&&"v1"!==e.options.compatibilityAPI&&!e.isInitialized)return n(null,e.t.bind(e));e.changeLanguage(e.options.lng,n)};return this.options.resources||!this.options.initImmediate?p():setTimeout(p,0),l}},{key:"loadResources",value:function(e){var n=this,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:fe,i="string"==typeof e?e:this.language;if("function"==typeof e&&(t=e),!this.options.resources||this.options.partialBundledLanguages){if(i&&"cimode"===i.toLowerCase())return t();var s=[],a=function(e){e&&n.services.languageUtils.toResolveHierarchy(e).forEach((function(e){s.indexOf(e)<0&&s.push(e)}))};if(i)a(i);else this.services.languageUtils.getFallbackCodes(this.options.fallbackLng).forEach((function(e){return a(e)}));this.options.preload&&this.options.preload.forEach((function(e){return a(e)})),this.services.backendConnector.load(s,this.options.ns,(function(e){e||n.resolvedLanguage||!n.language||n.setResolvedLanguage(n.language),t(e)}))}else t(null)}},{key:"reloadResources",value:function(e,n,t){var i=_();return e||(e=this.languages),n||(n=this.options.ns),t||(t=fe),this.services.backendConnector.reload(e,n,(function(e){i.resolve(),t(e)})),i}},{key:"use",value:function(e){if(!e)throw new Error("You are passing an undefined module! Please check the object you are passing to i18next.use()");if(!e.type)throw new Error("You are passing a wrong module! Please check the object you are passing to i18next.use()");return"backend"===e.type&&(this.modules.backend=e),("logger"===e.type||e.log&&e.warn&&e.error)&&(this.modules.logger=e),"languageDetector"===e.type&&(this.modules.languageDetector=e),"i18nFormat"===e.type&&(this.modules.i18nFormat=e),"postProcessor"===e.type&&V.addPostProcessor(e),"formatter"===e.type&&(this.modules.formatter=e),"3rdParty"===e.type&&this.modules.external.push(e),this}},{key:"setResolvedLanguage",value:function(e){if(e&&this.languages&&!(["cimode","dev"].indexOf(e)>-1))for(var n=0;n<this.languages.length;n++){var t=this.languages[n];if(!(["cimode","dev"].indexOf(t)>-1)&&this.store.hasLanguageSomeTranslations(t)){this.resolvedLanguage=t;break}}}},{key:"changeLanguage",value:function(e,n){var t=this;this.isLanguageChangingTo=e;var i=_();this.emit("languageChanging",e);var s=function(e){t.language=e,t.languages=t.services.languageUtils.toResolveHierarchy(e),t.resolvedLanguage=void 0,t.setResolvedLanguage(e)},a=function(a){e||a||!t.services.languageDetector||(a=[]);var o="string"==typeof a?a:t.services.languageUtils.getBestMatchFromCodes(a);o&&(t.language||s(o),t.translator.language||t.translator.changeLanguage(o),t.services.languageDetector&&t.services.languageDetector.cacheUserLanguage&&t.services.languageDetector.cacheUserLanguage(o)),t.loadResources(o,(function(e){!function(e,a){a?(s(a),t.translator.changeLanguage(a),t.isLanguageChangingTo=void 0,t.emit("languageChanged",a),t.logger.log("languageChanged",a)):t.isLanguageChangingTo=void 0,i.resolve((function(){return t.t.apply(t,arguments)})),n&&n(e,(function(){return t.t.apply(t,arguments)}))}(e,o)}))};return e||!this.services.languageDetector||this.services.languageDetector.async?!e&&this.services.languageDetector&&this.services.languageDetector.async?0===this.services.languageDetector.detect.length?this.services.languageDetector.detect().then(a):this.services.languageDetector.detect(a):a(e):a(this.services.languageDetector.detect()),i}},{key:"getFixedT",value:function(e,n,t){var i=this,s=function e(n,s){var a;if("object"!==r(s)){for(var o=arguments.length,c=new Array(o>2?o-2:0),l=2;l<o;l++)c[l-2]=arguments[l];a=i.options.overloadTranslationOptionHandler([n,s].concat(c))}else a=ve({},s);a.lng=a.lng||e.lng,a.lngs=a.lngs||e.lngs,a.ns=a.ns||e.ns,a.keyPrefix=a.keyPrefix||t||e.keyPrefix;var p,u=i.options.keySeparator||".";return p=a.keyPrefix&&Array.isArray(n)?n.map((function(e){return"".concat(a.keyPrefix).concat(u).concat(e)})):a.keyPrefix?"".concat(a.keyPrefix).concat(u).concat(n):n,i.t(p,a)};return"string"==typeof e?s.lng=e:s.lngs=e,s.ns=n,s.keyPrefix=t,s}},{key:"t",value:function(){var e;return this.translator&&(e=this.translator).translate.apply(e,arguments)}},{key:"exists",value:function(){var e;return this.translator&&(e=this.translator).exists.apply(e,arguments)}},{key:"setDefaultNamespace",value:function(e){this.options.defaultNS=e}},{key:"hasLoadedNamespace",value:function(e){var n=this,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!this.isInitialized)return this.logger.warn("hasLoadedNamespace: i18next was not initialized",this.languages),!1;if(!this.languages||!this.languages.length)return this.logger.warn("hasLoadedNamespace: i18n.languages were undefined or empty",this.languages),!1;var i=t.lng||this.resolvedLanguage||this.languages[0],s=!!this.options&&this.options.fallbackLng,a=this.languages[this.languages.length-1];if("cimode"===i.toLowerCase())return!0;var o=function(e,t){var i=n.services.backendConnector.state["".concat(e,"|").concat(t)];return-1===i||2===i};if(t.precheck){var r=t.precheck(this,o);if(void 0!==r)return r}return!!this.hasResourceBundle(i,e)||(!(this.services.backendConnector.backend&&(!this.options.resources||this.options.partialBundledLanguages))||!(!o(i,e)||s&&!o(a,e)))}},{key:"loadNamespaces",value:function(e,n){var t=this,i=_();return this.options.ns?("string"==typeof e&&(e=[e]),e.forEach((function(e){t.options.ns.indexOf(e)<0&&t.options.ns.push(e)})),this.loadResources((function(e){i.resolve(),n&&n(e)})),i):(n&&n(),Promise.resolve())}},{key:"loadLanguages",value:function(e,n){var t=_();"string"==typeof e&&(e=[e]);var i=this.options.preload||[],s=e.filter((function(e){return i.indexOf(e)<0}));return s.length?(this.options.preload=i.concat(s),this.loadResources((function(e){t.resolve(),n&&n(e)})),t):(n&&n(),Promise.resolve())}},{key:"dir",value:function(e){if(e||(e=this.resolvedLanguage||(this.languages&&this.languages.length>0?this.languages[0]:this.language)),!e)return"rtl";var n=this.services&&this.services.languageUtils||new K(de());return["ar","shu","sqr","ssh","xaa","yhd","yud","aao","abh","abv","acm","acq","acw","acx","acy","adf","ads","aeb","aec","afb","ajp","apc","apd","arb","arq","ars","ary","arz","auz","avl","ayh","ayl","ayn","ayp","bbz","pga","he","iw","ps","pbt","pbu","pst","prp","prd","ug","ur","ydd","yds","yih","ji","yi","hbo","men","xmn","fa","jpr","peo","pes","prs","dv","sam","ckb"].indexOf(n.getLanguagePartFromCode(e))>-1||e.toLowerCase().indexOf("-arab")>1?"rtl":"ltr"}},{key:"cloneInstance",value:function(){var e=this,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:fe,s=ve(ve(ve({},this.options),n),{isClone:!0}),a=new t(s);void 0===n.debug&&void 0===n.prefix||(a.logger=a.logger.clone(n));return["store","services","language"].forEach((function(n){a[n]=e[n]})),a.services=ve({},this.services),a.services.utils={hasLoadedNamespace:a.hasLoadedNamespace.bind(a)},a.translator=new $(a.services,a.options),a.translator.on("*",(function(e){for(var n=arguments.length,t=new Array(n>1?n-1:0),i=1;i<n;i++)t[i-1]=arguments[i];a.emit.apply(a,[e].concat(t))})),a.init(s,i),a.translator.options=a.options,a.translator.backendConnector.services.utils={hasLoadedNamespace:a.hasLoadedNamespace.bind(a)},a}},{key:"toJSON",value:function(){return{options:this.options,store:this.store,language:this.language,languages:this.languages,resolvedLanguage:this.resolvedLanguage}}}]),t}();f(xe,"createInstance",(function(){return new xe(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1?arguments[1]:void 0)}));var be=xe.createInstance();be.createInstance=xe.createInstance,be.createInstance,be.dir,be.init,be.loadResources,be.reloadResources,be.use,be.changeLanguage,be.getFixedT,be.t,be.exists,be.setDefaultNamespace,be.hasLoadedNamespace,be.loadNamespaces,be.loadLanguages;var ye=[],we=ye.forEach,ke=ye.slice;var Se=/^[\u0009\u0020-\u007e\u0080-\u00ff]+$/,je=function(e,n,t,i){var s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{path:"/",sameSite:"strict"};t&&(s.expires=new Date,s.expires.setTime(s.expires.getTime()+60*t*1e3)),i&&(s.domain=i),document.cookie=function(e,n,t){var i=t||{};i.path=i.path||"/";var s=encodeURIComponent(n),a="".concat(e,"=").concat(s);if(i.maxAge>0){var o=i.maxAge-0;if(Number.isNaN(o))throw new Error("maxAge should be a Number");a+="; Max-Age=".concat(Math.floor(o))}if(i.domain){if(!Se.test(i.domain))throw new TypeError("option domain is invalid");a+="; Domain=".concat(i.domain)}if(i.path){if(!Se.test(i.path))throw new TypeError("option path is invalid");a+="; Path=".concat(i.path)}if(i.expires){if("function"!=typeof i.expires.toUTCString)throw new TypeError("option expires is invalid");a+="; Expires=".concat(i.expires.toUTCString())}if(i.httpOnly&&(a+="; HttpOnly"),i.secure&&(a+="; Secure"),i.sameSite)switch("string"==typeof i.sameSite?i.sameSite.toLowerCase():i.sameSite){case!0:a+="; SameSite=Strict";break;case"lax":a+="; SameSite=Lax";break;case"strict":a+="; SameSite=Strict";break;case"none":a+="; SameSite=None";break;default:throw new TypeError("option sameSite is invalid")}return a}(e,encodeURIComponent(n),s)},_e=function(e){for(var n="".concat(e,"="),t=document.cookie.split(";"),i=0;i<t.length;i++){for(var s=t[i];" "===s.charAt(0);)s=s.substring(1,s.length);if(0===s.indexOf(n))return s.substring(n.length,s.length)}return null},Ce={name:"cookie",lookup:function(e){var n;if(e.lookupCookie&&"undefined"!=typeof document){var t=_e(e.lookupCookie);t&&(n=t)}return n},cacheUserLanguage:function(e,n){n.lookupCookie&&"undefined"!=typeof document&&je(n.lookupCookie,e,n.cookieMinutes,n.cookieDomain,n.cookieOptions)}},Ae={name:"querystring",lookup:function(e){var n;if("undefined"!=typeof window){var t=window.location.search;!window.location.search&&window.location.hash&&window.location.hash.indexOf("?")>-1&&(t=window.location.hash.substring(window.location.hash.indexOf("?")));for(var i=t.substring(1).split("&"),s=0;s<i.length;s++){var a=i[s].indexOf("=");if(a>0)i[s].substring(0,a)===e.lookupQuerystring&&(n=i[s].substring(a+1))}}return n}},Ee=null,Re=function(){if(null!==Ee)return Ee;try{Ee="undefined"!==window&&null!==window.localStorage;var e="i18next.translate.boo";window.localStorage.setItem(e,"foo"),window.localStorage.removeItem(e)}catch(e){Ee=!1}return Ee},Le={name:"localStorage",lookup:function(e){var n;if(e.lookupLocalStorage&&Re()){var t=window.localStorage.getItem(e.lookupLocalStorage);t&&(n=t)}return n},cacheUserLanguage:function(e,n){n.lookupLocalStorage&&Re()&&window.localStorage.setItem(n.lookupLocalStorage,e)}},Me=null,Ie=function(){if(null!==Me)return Me;try{Me="undefined"!==window&&null!==window.sessionStorage;var e="i18next.translate.boo";window.sessionStorage.setItem(e,"foo"),window.sessionStorage.removeItem(e)}catch(e){Me=!1}return Me},De={name:"sessionStorage",lookup:function(e){var n;if(e.lookupSessionStorage&&Ie()){var t=window.sessionStorage.getItem(e.lookupSessionStorage);t&&(n=t)}return n},cacheUserLanguage:function(e,n){n.lookupSessionStorage&&Ie()&&window.sessionStorage.setItem(n.lookupSessionStorage,e)}},Oe={name:"navigator",lookup:function(e){var n=[];if("undefined"!=typeof navigator){if(navigator.languages)for(var t=0;t<navigator.languages.length;t++)n.push(navigator.languages[t]);navigator.userLanguage&&n.push(navigator.userLanguage),navigator.language&&n.push(navigator.language)}return n.length>0?n:void 0}},Te={name:"htmlTag",lookup:function(e){var n,t=e.htmlTag||("undefined"!=typeof document?document.documentElement:null);return t&&"function"==typeof t.getAttribute&&(n=t.getAttribute("lang")),n}},Pe={name:"path",lookup:function(e){var n;if("undefined"!=typeof window){var t=window.location.pathname.match(/\/([a-zA-Z-]*)/g);if(t instanceof Array)if("number"==typeof e.lookupFromPathIndex){if("string"!=typeof t[e.lookupFromPathIndex])return;n=t[e.lookupFromPathIndex].replace("/","")}else n=t[0].replace("/","")}return n}},Fe={name:"subdomain",lookup:function(e){var n="number"==typeof e.lookupFromSubdomainIndex?e.lookupFromSubdomainIndex+1:1,t="undefined"!=typeof window&&window.location&&window.location.hostname&&window.location.hostname.match(/^(\w{2,5})\.(([a-z0-9-]{1,63}\.[a-z]{2,6})|localhost)/i);if(t)return t[n]}};var Ne=function(){function e(n){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};c(this,e),this.type="languageDetector",this.detectors={},this.init(n,t)}return u(e,[{key:"init",value:function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};this.services=e||{languageUtils:{}},this.options=function(e){return we.call(ke.call(arguments,1),(function(n){if(n)for(var t in n)void 0===e[t]&&(e[t]=n[t])})),e}(n,this.options||{},{order:["querystring","cookie","localStorage","sessionStorage","navigator","htmlTag"],lookupQuerystring:"lng",lookupCookie:"i18next",lookupLocalStorage:"i18nextLng",lookupSessionStorage:"i18nextLng",caches:["localStorage"],excludeCacheFor:["cimode"],convertDetectedLanguage:function(e){return e}}),"string"==typeof this.options.convertDetectedLanguage&&this.options.convertDetectedLanguage.indexOf("15897")>-1&&(this.options.convertDetectedLanguage=function(e){return e.replace("-","_")}),this.options.lookupFromUrlIndex&&(this.options.lookupFromPathIndex=this.options.lookupFromUrlIndex),this.i18nOptions=t,this.addDetector(Ce),this.addDetector(Ae),this.addDetector(Le),this.addDetector(De),this.addDetector(Oe),this.addDetector(Te),this.addDetector(Pe),this.addDetector(Fe)}},{key:"addDetector",value:function(e){return this.detectors[e.name]=e,this}},{key:"detect",value:function(e){var n=this;e||(e=this.options.order);var t=[];return e.forEach((function(e){if(n.detectors[e]){var i=n.detectors[e].lookup(n.options);i&&"string"==typeof i&&(i=[i]),i&&(t=t.concat(i))}})),t=t.map((function(e){return n.options.convertDetectedLanguage(e)})),this.services.languageUtils.getBestMatchFromCodes?t:t.length>0?t[0]:null}},{key:"cacheUserLanguage",value:function(e,n){var t=this;n||(n=this.options.caches),n&&(this.options.excludeCacheFor&&this.options.excludeCacheFor.indexOf(e)>-1||n.forEach((function(n){t.detectors[n]&&t.detectors[n].cacheUserLanguage(e,t.options)})))}}]),e}();Ne.type="languageDetector";var qe={progressBar:"Progress Complete",fullScreenTrial:{prompt:"Switching to full screen mode.",buttonText:"Go"},instructions:{intro:{header:"Welcome to ROAR Multichoice!",topText:"In this activity, you're going to help me complete some sentences.",bottomText:""},instructions:{header:"What word completes the sentence?",topText:"Choose the best option to fill in the blank.",bottomText:""},practice:{header:"Let's practice!",topText:"Remember, your job is to choose the right word that fills in the blank.",bottomText:""},postPractice:{header:"Great job!",topText:"Now you're ready to try on your own. Try your best to choose the word that completes the sentence.",bottomText:""},practiceCorrect:{header:"That's right!",topText:"",bottomText:""},break1:{header:"Keep up the good work!",topText:"",bottomText:""},break2:{header:"You are doing great!",topText:"",bottomText:""},break3:{header:"Let's keep going.",topText:"",bottomText:""},break4:{header:"You are an expert at this!",topText:"",bottomText:""},break5:{header:"You can do it!",topText:"",bottomText:""},ending:{header:"You're all done! Thank you for helping me find those words!",topText:"",bottomText:""}}};(new Ne).addDetector({name:"defaultToEnglish",lookup:e=>"en"}),be.use(Ne).init({debug:!1,load:"languageOnly",fallbackLng:"en",detection:{order:["defaultToEnglish","querystring"]},resources:{en:{translation:qe}}});var ze=function(){this.__data__=[],this.size=0};var Ve=function(e,n){return e===n||e!=e&&n!=n},Be=Ve;var Ue=function(e,n){for(var t=e.length;t--;)if(Be(e[t][0],n))return t;return-1},He=Ue,We=Array.prototype.splice;var $e=Ue;var Ye=Ue;var Ke=Ue;var Xe=ze,Ge=function(e){var n=this.__data__,t=He(n,e);return!(t<0)&&(t==n.length-1?n.pop():We.call(n,t,1),--this.size,!0)},Je=function(e){var n=this.__data__,t=$e(n,e);return t<0?void 0:n[t][1]},Qe=function(e){return Ye(this.__data__,e)>-1},Ze=function(e,n){var t=this.__data__,i=Ke(t,e);return i<0?(++this.size,t.push([e,n])):t[i][1]=n,this};function en(e){var n=-1,t=null==e?0:e.length;for(this.clear();++n<t;){var i=e[n];this.set(i[0],i[1])}}en.prototype.clear=Xe,en.prototype.delete=Ge,en.prototype.get=Je,en.prototype.has=Qe,en.prototype.set=Ze;var nn=en,tn=nn;var sn=function(){this.__data__=new tn,this.size=0};var an=function(e){var n=this.__data__,t=n.delete(e);return this.size=n.size,t};var on=function(e){return this.__data__.get(e)};var rn=function(e){return this.__data__.has(e)},cn="object"==typeof n&&n&&n.Object===Object&&n,ln=cn,pn="object"==typeof self&&self&&self.Object===Object&&self,un=ln||pn||Function("return this")(),dn=un.Symbol,gn=dn,mn=Object.prototype,vn=mn.hasOwnProperty,hn=mn.toString,fn=gn?gn.toStringTag:void 0;var xn=function(e){var n=vn.call(e,fn),t=e[fn];try{e[fn]=void 0;var i=!0}catch(e){}var s=hn.call(e);return i&&(n?e[fn]=t:delete e[fn]),s},bn=Object.prototype.toString;var yn=xn,wn=function(e){return bn.call(e)},kn=dn?dn.toStringTag:void 0;var Sn=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":kn&&kn in Object(e)?yn(e):wn(e)};var jn=function(e){var n=typeof e;return null!=e&&("object"==n||"function"==n)},_n=Sn,Cn=jn;var An,En=function(e){if(!Cn(e))return!1;var n=_n(e);return"[object Function]"==n||"[object GeneratorFunction]"==n||"[object AsyncFunction]"==n||"[object Proxy]"==n},Rn=un["__core-js_shared__"],Ln=(An=/[^.]+$/.exec(Rn&&Rn.keys&&Rn.keys.IE_PROTO||""))?"Symbol(src)_1."+An:"";var Mn=function(e){return!!Ln&&Ln in e},In=Function.prototype.toString;var Dn=function(e){if(null!=e){try{return In.call(e)}catch(e){}try{return e+""}catch(e){}}return""},On=En,Tn=Mn,Pn=jn,Fn=Dn,Nn=/^\[object .+?Constructor\]$/,qn=Function.prototype,zn=Object.prototype,Vn=qn.toString,Bn=zn.hasOwnProperty,Un=RegExp("^"+Vn.call(Bn).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");var Hn=function(e){return!(!Pn(e)||Tn(e))&&(On(e)?Un:Nn).test(Fn(e))},Wn=function(e,n){return null==e?void 0:e[n]};var $n=function(e,n){var t=Wn(e,n);return Hn(t)?t:void 0},Yn=$n(un,"Map"),Kn=$n(Object,"create"),Xn=Kn;var Gn=function(){this.__data__=Xn?Xn(null):{},this.size=0};var Jn=function(e){var n=this.has(e)&&delete this.__data__[e];return this.size-=n?1:0,n},Qn=Kn,Zn=Object.prototype.hasOwnProperty;var et=function(e){var n=this.__data__;if(Qn){var t=n[e];return"__lodash_hash_undefined__"===t?void 0:t}return Zn.call(n,e)?n[e]:void 0},nt=Kn,tt=Object.prototype.hasOwnProperty;var it=Kn;var st=Gn,at=Jn,ot=et,rt=function(e){var n=this.__data__;return nt?void 0!==n[e]:tt.call(n,e)},ct=function(e,n){var t=this.__data__;return this.size+=this.has(e)?0:1,t[e]=it&&void 0===n?"__lodash_hash_undefined__":n,this};function lt(e){var n=-1,t=null==e?0:e.length;for(this.clear();++n<t;){var i=e[n];this.set(i[0],i[1])}}lt.prototype.clear=st,lt.prototype.delete=at,lt.prototype.get=ot,lt.prototype.has=rt,lt.prototype.set=ct;var pt=lt,ut=nn,dt=Yn;var gt=function(e){var n=typeof e;return"string"==n||"number"==n||"symbol"==n||"boolean"==n?"__proto__"!==e:null===e};var mt=function(e,n){var t=e.__data__;return gt(n)?t["string"==typeof n?"string":"hash"]:t.map},vt=mt;var ht=mt;var ft=mt;var xt=mt;var bt=function(){this.size=0,this.__data__={hash:new pt,map:new(dt||ut),string:new pt}},yt=function(e){var n=vt(this,e).delete(e);return this.size-=n?1:0,n},wt=function(e){return ht(this,e).get(e)},kt=function(e){return ft(this,e).has(e)},St=function(e,n){var t=xt(this,e),i=t.size;return t.set(e,n),this.size+=t.size==i?0:1,this};function jt(e){var n=-1,t=null==e?0:e.length;for(this.clear();++n<t;){var i=e[n];this.set(i[0],i[1])}}jt.prototype.clear=bt,jt.prototype.delete=yt,jt.prototype.get=wt,jt.prototype.has=kt,jt.prototype.set=St;var _t=jt,Ct=nn,At=Yn,Et=_t;var Rt=nn,Lt=sn,Mt=an,It=on,Dt=rn,Ot=function(e,n){var t=this.__data__;if(t instanceof Ct){var i=t.__data__;if(!At||i.length<199)return i.push([e,n]),this.size=++t.size,this;t=this.__data__=new Et(i)}return t.set(e,n),this.size=t.size,this};function Tt(e){var n=this.__data__=new Rt(e);this.size=n.size}Tt.prototype.clear=Lt,Tt.prototype.delete=Mt,Tt.prototype.get=It,Tt.prototype.has=Dt,Tt.prototype.set=Ot;var Pt=Tt;var Ft=_t,Nt=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this},qt=function(e){return this.__data__.has(e)};function zt(e){var n=-1,t=null==e?0:e.length;for(this.__data__=new Ft;++n<t;)this.add(e[n])}zt.prototype.add=zt.prototype.push=Nt,zt.prototype.has=qt;var Vt=zt,Bt=function(e,n){for(var t=-1,i=null==e?0:e.length;++t<i;)if(n(e[t],t,e))return!0;return!1},Ut=function(e,n){return e.has(n)};var Ht=function(e,n,t,i,s,a){var o=1&t,r=e.length,c=n.length;if(r!=c&&!(o&&c>r))return!1;var l=a.get(e),p=a.get(n);if(l&&p)return l==n&&p==e;var u=-1,d=!0,g=2&t?new Vt:void 0;for(a.set(e,n),a.set(n,e);++u<r;){var m=e[u],v=n[u];if(i)var h=o?i(v,m,u,n,e,a):i(m,v,u,e,n,a);if(void 0!==h){if(h)continue;d=!1;break}if(g){if(!Bt(n,(function(e,n){if(!Ut(g,n)&&(m===e||s(m,e,t,i,a)))return g.push(n)}))){d=!1;break}}else if(m!==v&&!s(m,v,t,i,a)){d=!1;break}}return a.delete(e),a.delete(n),d};var Wt=un.Uint8Array,$t=Ve,Yt=Ht,Kt=function(e){var n=-1,t=Array(e.size);return e.forEach((function(e,i){t[++n]=[i,e]})),t},Xt=function(e){var n=-1,t=Array(e.size);return e.forEach((function(e){t[++n]=e})),t},Gt=dn?dn.prototype:void 0,Jt=Gt?Gt.valueOf:void 0;var Qt=function(e,n,t,i,s,a,o){switch(t){case"[object DataView]":if(e.byteLength!=n.byteLength||e.byteOffset!=n.byteOffset)return!1;e=e.buffer,n=n.buffer;case"[object ArrayBuffer]":return!(e.byteLength!=n.byteLength||!a(new Wt(e),new Wt(n)));case"[object Boolean]":case"[object Date]":case"[object Number]":return $t(+e,+n);case"[object Error]":return e.name==n.name&&e.message==n.message;case"[object RegExp]":case"[object String]":return e==n+"";case"[object Map]":var r=Kt;case"[object Set]":var c=1&i;if(r||(r=Xt),e.size!=n.size&&!c)return!1;var l=o.get(e);if(l)return l==n;i|=2,o.set(e,n);var p=Yt(r(e),r(n),i,s,a,o);return o.delete(e),p;case"[object Symbol]":if(Jt)return Jt.call(e)==Jt.call(n)}return!1};var Zt=function(e,n){for(var t=-1,i=n.length,s=e.length;++t<i;)e[s+t]=n[t];return e},ei=Array.isArray,ni=Zt,ti=ei;var ii=function(e,n,t){var i=n(e);return ti(e)?i:ni(i,t(e))};var si=function(){return[]},ai=function(e,n){for(var t=-1,i=null==e?0:e.length,s=0,a=[];++t<i;){var o=e[t];n(o,t,e)&&(a[s++]=o)}return a},oi=si,ri=Object.prototype.propertyIsEnumerable,ci=Object.getOwnPropertySymbols,li=ci?function(e){return null==e?[]:(e=Object(e),ai(ci(e),(function(n){return ri.call(e,n)})))}:oi;var pi=function(e,n){for(var t=-1,i=Array(e);++t<e;)i[t]=n(t);return i};var ui=function(e){return null!=e&&"object"==typeof e},di=Sn,gi=ui;var mi=function(e){return gi(e)&&"[object Arguments]"==di(e)},vi=ui,hi=Object.prototype,fi=hi.hasOwnProperty,xi=hi.propertyIsEnumerable,bi=mi(function(){return arguments}())?mi:function(e){return vi(e)&&fi.call(e,"callee")&&!xi.call(e,"callee")},yi={exports:{}};var wi=function(){return!1};!function(e,n){var t=un,i=wi,s=n&&!n.nodeType&&n,a=s&&e&&!e.nodeType&&e,o=a&&a.exports===s?t.Buffer:void 0,r=(o?o.isBuffer:void 0)||i;e.exports=r}(yi,yi.exports);var ki=yi.exports,Si=/^(?:0|[1-9]\d*)$/;var ji=function(e,n){var t=typeof e;return!!(n=null==n?9007199254740991:n)&&("number"==t||"symbol"!=t&&Si.test(e))&&e>-1&&e%1==0&&e<n};var _i=function(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991},Ci=Sn,Ai=_i,Ei=ui,Ri={};Ri["[object Float32Array]"]=Ri["[object Float64Array]"]=Ri["[object Int8Array]"]=Ri["[object Int16Array]"]=Ri["[object Int32Array]"]=Ri["[object Uint8Array]"]=Ri["[object Uint8ClampedArray]"]=Ri["[object Uint16Array]"]=Ri["[object Uint32Array]"]=!0,Ri["[object Arguments]"]=Ri["[object Array]"]=Ri["[object ArrayBuffer]"]=Ri["[object Boolean]"]=Ri["[object DataView]"]=Ri["[object Date]"]=Ri["[object Error]"]=Ri["[object Function]"]=Ri["[object Map]"]=Ri["[object Number]"]=Ri["[object Object]"]=Ri["[object RegExp]"]=Ri["[object Set]"]=Ri["[object String]"]=Ri["[object WeakMap]"]=!1;var Li=function(e){return Ei(e)&&Ai(e.length)&&!!Ri[Ci(e)]};var Mi=function(e){return function(n){return e(n)}},Ii={exports:{}};!function(e,n){var t=cn,i=n&&!n.nodeType&&n,s=i&&e&&!e.nodeType&&e,a=s&&s.exports===i&&t.process,o=function(){try{var e=s&&s.require&&s.require("util").types;return e||a&&a.binding&&a.binding("util")}catch(e){}}();e.exports=o}(Ii,Ii.exports);var Di=Ii.exports,Oi=Li,Ti=Mi,Pi=Di&&Di.isTypedArray,Fi=Pi?Ti(Pi):Oi,Ni=pi,qi=bi,zi=ei,Vi=ki,Bi=ji,Ui=Fi,Hi=Object.prototype.hasOwnProperty;var Wi=function(e,n){var t=zi(e),i=!t&&qi(e),s=!t&&!i&&Vi(e),a=!t&&!i&&!s&&Ui(e),o=t||i||s||a,r=o?Ni(e.length,String):[],c=r.length;for(var l in e)!n&&!Hi.call(e,l)||o&&("length"==l||s&&("offset"==l||"parent"==l)||a&&("buffer"==l||"byteLength"==l||"byteOffset"==l)||Bi(l,c))||r.push(l);return r},$i=Object.prototype;var Yi=function(e){var n=e&&e.constructor;return e===("function"==typeof n&&n.prototype||$i)};var Ki=function(e,n){return function(t){return e(n(t))}},Xi=Ki(Object.keys,Object),Gi=Yi,Ji=Xi,Qi=Object.prototype.hasOwnProperty;var Zi=En,es=_i;var ns=function(e){return null!=e&&es(e.length)&&!Zi(e)},ts=Wi,is=function(e){if(!Gi(e))return Ji(e);var n=[];for(var t in Object(e))Qi.call(e,t)&&"constructor"!=t&&n.push(t);return n},ss=ns;var as=function(e){return ss(e)?ts(e):is(e)},os=ii,rs=li,cs=as;var ls=function(e){return os(e,cs,rs)},ps=Object.prototype.hasOwnProperty;var us=function(e,n,t,i,s,a){var o=1&t,r=ls(e),c=r.length;if(c!=ls(n).length&&!o)return!1;for(var l=c;l--;){var p=r[l];if(!(o?p in n:ps.call(n,p)))return!1}var u=a.get(e),d=a.get(n);if(u&&d)return u==n&&d==e;var g=!0;a.set(e,n),a.set(n,e);for(var m=o;++l<c;){var v=e[p=r[l]],h=n[p];if(i)var f=o?i(h,v,p,n,e,a):i(v,h,p,e,n,a);if(!(void 0===f?v===h||s(v,h,t,i,a):f)){g=!1;break}m||(m="constructor"==p)}if(g&&!m){var x=e.constructor,b=n.constructor;x==b||!("constructor"in e)||!("constructor"in n)||"function"==typeof x&&x instanceof x&&"function"==typeof b&&b instanceof b||(g=!1)}return a.delete(e),a.delete(n),g},ds=$n(un,"DataView"),gs=Yn,ms=$n(un,"Promise"),vs=$n(un,"Set"),hs=$n(un,"WeakMap"),fs=Sn,xs=Dn,bs="[object Map]",ys="[object Promise]",ws="[object Set]",ks="[object WeakMap]",Ss="[object DataView]",js=xs(ds),_s=xs(gs),Cs=xs(ms),As=xs(vs),Es=xs(hs),Rs=fs;(ds&&Rs(new ds(new ArrayBuffer(1)))!=Ss||gs&&Rs(new gs)!=bs||ms&&Rs(ms.resolve())!=ys||vs&&Rs(new vs)!=ws||hs&&Rs(new hs)!=ks)&&(Rs=function(e){var n=fs(e),t="[object Object]"==n?e.constructor:void 0,i=t?xs(t):"";if(i)switch(i){case js:return Ss;case _s:return bs;case Cs:return ys;case As:return ws;case Es:return ks}return n});var Ls=Pt,Ms=Ht,Is=Qt,Ds=us,Os=Rs,Ts=ei,Ps=ki,Fs=Fi,Ns="[object Arguments]",qs="[object Array]",zs="[object Object]",Vs=Object.prototype.hasOwnProperty;var Bs=function(e,n,t,i,s,a){var o=Ts(e),r=Ts(n),c=o?qs:Os(e),l=r?qs:Os(n),p=(c=c==Ns?zs:c)==zs,u=(l=l==Ns?zs:l)==zs,d=c==l;if(d&&Ps(e)){if(!Ps(n))return!1;o=!0,p=!1}if(d&&!p)return a||(a=new Ls),o||Fs(e)?Ms(e,n,t,i,s,a):Is(e,n,c,t,i,s,a);if(!(1&t)){var g=p&&Vs.call(e,"__wrapped__"),m=u&&Vs.call(n,"__wrapped__");if(g||m){var v=g?e.value():e,h=m?n.value():n;return a||(a=new Ls),s(v,h,t,i,a)}}return!!d&&(a||(a=new Ls),Ds(e,n,t,i,s,a))},Us=ui;var Hs=function e(n,t,i,s,a){return n===t||(null==n||null==t||!Us(n)&&!Us(t)?n!=n&&t!=t:Bs(n,t,i,s,e,a))},Ws=Pt,$s=Hs;var Ys=jn;var Ks=function(e){return e==e&&!Ys(e)},Xs=Ks,Gs=as;var Js=function(e,n){return function(t){return null!=t&&(t[e]===n&&(void 0!==n||e in Object(t)))}},Qs=function(e,n,t,i){var s=t.length,a=s,o=!i;if(null==e)return!a;for(e=Object(e);s--;){var r=t[s];if(o&&r[2]?r[1]!==e[r[0]]:!(r[0]in e))return!1}for(;++s<a;){var c=(r=t[s])[0],l=e[c],p=r[1];if(o&&r[2]){if(void 0===l&&!(c in e))return!1}else{var u=new Ws;if(i)var d=i(l,p,c,e,n,u);if(!(void 0===d?$s(p,l,3,i,u):d))return!1}}return!0},Zs=function(e){for(var n=Gs(e),t=n.length;t--;){var i=n[t],s=e[i];n[t]=[i,s,Xs(s)]}return n},ea=Js;var na=function(e){var n=Zs(e);return 1==n.length&&n[0][2]?ea(n[0][0],n[0][1]):function(t){return t===e||Qs(t,e,n)}},ta=Sn,ia=ui;var sa=function(e){return"symbol"==typeof e||ia(e)&&"[object Symbol]"==ta(e)},aa=ei,oa=sa,ra=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,ca=/^\w*$/;var la=function(e,n){if(aa(e))return!1;var t=typeof e;return!("number"!=t&&"symbol"!=t&&"boolean"!=t&&null!=e&&!oa(e))||(ca.test(e)||!ra.test(e)||null!=n&&e in Object(n))},pa=_t;function ua(e,n){if("function"!=typeof e||null!=n&&"function"!=typeof n)throw new TypeError("Expected a function");var t=function(){var i=arguments,s=n?n.apply(this,i):i[0],a=t.cache;if(a.has(s))return a.get(s);var o=e.apply(this,i);return t.cache=a.set(s,o)||a,o};return t.cache=new(ua.Cache||pa),t}ua.Cache=pa;var da=ua;var ga=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,ma=/\\(\\)?/g,va=function(e){var n=da(e,(function(e){return 500===t.size&&t.clear(),e})),t=n.cache;return n}((function(e){var n=[];return 46===e.charCodeAt(0)&&n.push(""),e.replace(ga,(function(e,t,i,s){n.push(i?s.replace(ma,"$1"):t||e)})),n}));var ha=function(e,n){for(var t=-1,i=null==e?0:e.length,s=Array(i);++t<i;)s[t]=n(e[t],t,e);return s},fa=ha,xa=ei,ba=sa,ya=dn?dn.prototype:void 0,wa=ya?ya.toString:void 0;var ka=function e(n){if("string"==typeof n)return n;if(xa(n))return fa(n,e)+"";if(ba(n))return wa?wa.call(n):"";var t=n+"";return"0"==t&&1/n==-1/0?"-0":t},Sa=ka;var ja=ei,_a=la,Ca=va,Aa=function(e){return null==e?"":Sa(e)};var Ea=function(e,n){return ja(e)?e:_a(e,n)?[e]:Ca(Aa(e))},Ra=sa;var La=function(e){if("string"==typeof e||Ra(e))return e;var n=e+"";return"0"==n&&1/e==-1/0?"-0":n},Ma=Ea,Ia=La;var Da=function(e,n){for(var t=0,i=(n=Ma(n,e)).length;null!=e&&t<i;)e=e[Ia(n[t++])];return t&&t==i?e:void 0},Oa=Da;var Ta=function(e,n,t){var i=null==e?void 0:Oa(e,n);return void 0===i?t:i};var Pa=Ea,Fa=bi,Na=ei,qa=ji,za=_i,Va=La;var Ba=function(e,n,t){for(var i=-1,s=(n=Pa(n,e)).length,a=!1;++i<s;){var o=Va(n[i]);if(!(a=null!=e&&t(e,o)))break;e=e[o]}return a||++i!=s?a:!!(s=null==e?0:e.length)&&za(s)&&qa(o,s)&&(Na(e)||Fa(e))},Ua=function(e,n){return null!=e&&n in Object(e)},Ha=Ba;var Wa=function(e,n){return null!=e&&Ha(e,n,Ua)},$a=Hs,Ya=Ta,Ka=Wa,Xa=la,Ga=Ks,Ja=Js,Qa=La;var Za=function(e,n){return Xa(e)&&Ga(n)?Ja(Qa(e),n):function(t){var i=Ya(t,e);return void 0===i&&i===n?Ka(t,e):$a(n,i,3)}};var eo=Da;var no=function(e){return function(n){return eo(n,e)}},to=function(e){return function(n){return null==n?void 0:n[e]}},io=no,so=la,ao=La;var oo=function(e){return so(e)?to(ao(e)):io(e)},ro=na,co=Za,lo=function(e){return e},po=ei,uo=oo;var go=function(e){return"function"==typeof e?e:null==e?lo:"object"==typeof e?po(e)?co(e[0],e[1]):ro(e):uo(e)};var mo=function(e){if("function"!=typeof e)throw new TypeError("Expected a function");return function(){var n=arguments;switch(n.length){case 0:return!e.call(this);case 1:return!e.call(this,n[0]);case 2:return!e.call(this,n[0],n[1]);case 3:return!e.call(this,n[0],n[1],n[2])}return!e.apply(this,n)}},vo=$n,ho=function(){try{var e=vo(Object,"defineProperty");return e({},"",{}),e}catch(e){}}();var fo=function(e,n,t){"__proto__"==n&&ho?ho(e,n,{configurable:!0,enumerable:!0,value:t,writable:!0}):e[n]=t},xo=Ve,bo=Object.prototype.hasOwnProperty;var yo=function(e,n,t){var i=e[n];bo.call(e,n)&&xo(i,t)&&(void 0!==t||n in e)||fo(e,n,t)},wo=Ea,ko=ji,So=jn,jo=La;var _o=function(e,n,t,i){if(!So(e))return e;for(var s=-1,a=(n=wo(n,e)).length,o=a-1,r=e;null!=r&&++s<a;){var c=jo(n[s]),l=t;if("__proto__"===c||"constructor"===c||"prototype"===c)return e;if(s!=o){var p=r[c];void 0===(l=i?i(p,c,r):void 0)&&(l=So(p)?p:ko(n[s+1])?[]:{})}yo(r,c,l),r=r[c]}return e},Co=Da,Ao=_o,Eo=Ea;var Ro=function(e,n,t){for(var i=-1,s=n.length,a={};++i<s;){var o=n[i],r=Co(e,o);t(r,o)&&Ao(a,Eo(o,e),r)}return a},Lo=Ki(Object.getPrototypeOf,Object),Mo=Zt,Io=Lo,Do=li,Oo=si,To=Object.getOwnPropertySymbols?function(e){for(var n=[];e;)Mo(n,Do(e)),e=Io(e);return n}:Oo;var Po=jn,Fo=Yi,No=function(e){var n=[];if(null!=e)for(var t in Object(e))n.push(t);return n},qo=Object.prototype.hasOwnProperty;var zo=Wi,Vo=function(e){if(!Po(e))return No(e);var n=Fo(e),t=[];for(var i in e)("constructor"!=i||!n&&qo.call(e,i))&&t.push(i);return t},Bo=ns;var Uo=ii,Ho=To,Wo=function(e){return Bo(e)?zo(e,!0):Vo(e)};var $o=ha,Yo=go,Ko=Ro,Xo=function(e){return Uo(e,Wo,Ho)};var Go=function(e,n){if(null==e)return{};var t=$o(Xo(e),(function(e){return[e]}));return n=Yo(n),Ko(e,t,(function(e,t){return n(e,t[0])}))},Jo=go,Qo=mo,Zo=Go;var er=t((function(e,n){return Zo(e,Qo(Jo(n)))}));var nr=t((function(e){return null===e}));var tr=t((function(e){return void 0===e}));function ir(e){if("string"!=typeof e)throw new TypeError("Path must be a string. Received "+JSON.stringify(e))}function sr(e,n){for(var t,i="",s=0,a=-1,o=0,r=0;r<=e.length;++r){if(r<e.length)t=e.charCodeAt(r);else{if(47===t)break;t=47}if(47===t){if(a===r-1||1===o);else if(a!==r-1&&2===o){if(i.length<2||2!==s||46!==i.charCodeAt(i.length-1)||46!==i.charCodeAt(i.length-2))if(i.length>2){var c=i.lastIndexOf("/");if(c!==i.length-1){-1===c?(i="",s=0):s=(i=i.slice(0,c)).length-1-i.lastIndexOf("/"),a=r,o=0;continue}}else if(2===i.length||1===i.length){i="",s=0,a=r,o=0;continue}n&&(i.length>0?i+="/..":i="..",s=2)}else i.length>0?i+="/"+e.slice(a+1,r):i=e.slice(a+1,r),s=r-a-1;a=r,o=0}else 46===t&&-1!==o?++o:o=-1}return i}var ar={resolve:function(){for(var e,n="",t=!1,i=arguments.length-1;i>=-1&&!t;i--){var s;i>=0?s=arguments[i]:(void 0===e&&(e=process.cwd()),s=e),ir(s),0!==s.length&&(n=s+"/"+n,t=47===s.charCodeAt(0))}return n=sr(n,!t),t?n.length>0?"/"+n:"/":n.length>0?n:"."},normalize:function(e){if(ir(e),0===e.length)return".";var n=47===e.charCodeAt(0),t=47===e.charCodeAt(e.length-1);return 0!==(e=sr(e,!n)).length||n||(e="."),e.length>0&&t&&(e+="/"),n?"/"+e:e},isAbsolute:function(e){return ir(e),e.length>0&&47===e.charCodeAt(0)},join:function(){if(0===arguments.length)return".";for(var e,n=0;n<arguments.length;++n){var t=arguments[n];ir(t),t.length>0&&(void 0===e?e=t:e+="/"+t)}return void 0===e?".":ar.normalize(e)},relative:function(e,n){if(ir(e),ir(n),e===n)return"";if((e=ar.resolve(e))===(n=ar.resolve(n)))return"";for(var t=1;t<e.length&&47===e.charCodeAt(t);++t);for(var i=e.length,s=i-t,a=1;a<n.length&&47===n.charCodeAt(a);++a);for(var o=n.length-a,r=s<o?s:o,c=-1,l=0;l<=r;++l){if(l===r){if(o>r){if(47===n.charCodeAt(a+l))return n.slice(a+l+1);if(0===l)return n.slice(a+l)}else s>r&&(47===e.charCodeAt(t+l)?c=l:0===l&&(c=0));break}var p=e.charCodeAt(t+l);if(p!==n.charCodeAt(a+l))break;47===p&&(c=l)}var u="";for(l=t+c+1;l<=i;++l)l!==i&&47!==e.charCodeAt(l)||(0===u.length?u+="..":u+="/..");return u.length>0?u+n.slice(a+c):(a+=c,47===n.charCodeAt(a)&&++a,n.slice(a))},_makeLong:function(e){return e},dirname:function(e){if(ir(e),0===e.length)return".";for(var n=e.charCodeAt(0),t=47===n,i=-1,s=!0,a=e.length-1;a>=1;--a)if(47===(n=e.charCodeAt(a))){if(!s){i=a;break}}else s=!1;return-1===i?t?"/":".":t&&1===i?"//":e.slice(0,i)},basename:function(e,n){if(void 0!==n&&"string"!=typeof n)throw new TypeError('"ext" argument must be a string');ir(e);var t,i=0,s=-1,a=!0;if(void 0!==n&&n.length>0&&n.length<=e.length){if(n.length===e.length&&n===e)return"";var o=n.length-1,r=-1;for(t=e.length-1;t>=0;--t){var c=e.charCodeAt(t);if(47===c){if(!a){i=t+1;break}}else-1===r&&(a=!1,r=t+1),o>=0&&(c===n.charCodeAt(o)?-1==--o&&(s=t):(o=-1,s=r))}return i===s?s=r:-1===s&&(s=e.length),e.slice(i,s)}for(t=e.length-1;t>=0;--t)if(47===e.charCodeAt(t)){if(!a){i=t+1;break}}else-1===s&&(a=!1,s=t+1);return-1===s?"":e.slice(i,s)},extname:function(e){ir(e);for(var n=-1,t=0,i=-1,s=!0,a=0,o=e.length-1;o>=0;--o){var r=e.charCodeAt(o);if(47!==r)-1===i&&(s=!1,i=o+1),46===r?-1===n?n=o:1!==a&&(a=1):-1!==n&&(a=-1);else if(!s){t=o+1;break}}return-1===n||-1===i||0===a||1===a&&n===i-1&&n===t+1?"":e.slice(n,i)},format:function(e){if(null===e||"object"!=typeof e)throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof e);return function(e,n){var t=n.dir||n.root,i=n.base||(n.name||"")+(n.ext||"");return t?t===n.root?t+i:t+e+i:i}("/",e)},parse:function(e){ir(e);var n={root:"",dir:"",base:"",ext:"",name:""};if(0===e.length)return n;var t,i=e.charCodeAt(0),s=47===i;s?(n.root="/",t=1):t=0;for(var a=-1,o=0,r=-1,c=!0,l=e.length-1,p=0;l>=t;--l)if(47!==(i=e.charCodeAt(l)))-1===r&&(c=!1,r=l+1),46===i?-1===a?a=l:1!==p&&(p=1):-1!==a&&(p=-1);else if(!c){o=l+1;break}return-1===a||-1===r||0===p||1===p&&a===r-1&&a===o+1?-1!==r&&(n.base=n.name=0===o&&s?e.slice(1,r):e.slice(o,r)):(0===o&&s?(n.name=e.slice(1,a),n.base=e.slice(1,r)):(n.name=e.slice(o,a),n.base=e.slice(o,r)),n.ext=e.slice(a,r)),o>0?n.dir=e.slice(0,o-1):s&&(n.dir="/"),n},sep:"/",delimiter:":",win32:null,posix:null};ar.posix=ar;var or={"application/1d-interleaved-parityfec":{source:"iana"},"application/3gpdash-qoe-report+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/3gpp-ims+xml":{source:"iana",compressible:!0},"application/3gpphal+json":{source:"iana",compressible:!0},"application/3gpphalforms+json":{source:"iana",compressible:!0},"application/a2l":{source:"iana"},"application/ace+cbor":{source:"iana"},"application/activemessage":{source:"iana"},"application/activity+json":{source:"iana",compressible:!0},"application/alto-costmap+json":{source:"iana",compressible:!0},"application/alto-costmapfilter+json":{source:"iana",compressible:!0},"application/alto-directory+json":{source:"iana",compressible:!0},"application/alto-endpointcost+json":{source:"iana",compressible:!0},"application/alto-endpointcostparams+json":{source:"iana",compressible:!0},"application/alto-endpointprop+json":{source:"iana",compressible:!0},"application/alto-endpointpropparams+json":{source:"iana",compressible:!0},"application/alto-error+json":{source:"iana",compressible:!0},"application/alto-networkmap+json":{source:"iana",compressible:!0},"application/alto-networkmapfilter+json":{source:"iana",compressible:!0},"application/alto-updatestreamcontrol+json":{source:"iana",compressible:!0},"application/alto-updatestreamparams+json":{source:"iana",compressible:!0},"application/aml":{source:"iana"},"application/andrew-inset":{source:"iana",extensions:["ez"]},"application/applefile":{source:"iana"},"application/applixware":{source:"apache",extensions:["aw"]},"application/at+jwt":{source:"iana"},"application/atf":{source:"iana"},"application/atfx":{source:"iana"},"application/atom+xml":{source:"iana",compressible:!0,extensions:["atom"]},"application/atomcat+xml":{source:"iana",compressible:!0,extensions:["atomcat"]},"application/atomdeleted+xml":{source:"iana",compressible:!0,extensions:["atomdeleted"]},"application/atomicmail":{source:"iana"},"application/atomsvc+xml":{source:"iana",compressible:!0,extensions:["atomsvc"]},"application/atsc-dwd+xml":{source:"iana",compressible:!0,extensions:["dwd"]},"application/atsc-dynamic-event-message":{source:"iana"},"application/atsc-held+xml":{source:"iana",compressible:!0,extensions:["held"]},"application/atsc-rdt+json":{source:"iana",compressible:!0},"application/atsc-rsat+xml":{source:"iana",compressible:!0,extensions:["rsat"]},"application/atxml":{source:"iana"},"application/auth-policy+xml":{source:"iana",compressible:!0},"application/bacnet-xdd+zip":{source:"iana",compressible:!1},"application/batch-smtp":{source:"iana"},"application/bdoc":{compressible:!1,extensions:["bdoc"]},"application/beep+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/calendar+json":{source:"iana",compressible:!0},"application/calendar+xml":{source:"iana",compressible:!0,extensions:["xcs"]},"application/call-completion":{source:"iana"},"application/cals-1840":{source:"iana"},"application/captive+json":{source:"iana",compressible:!0},"application/cbor":{source:"iana"},"application/cbor-seq":{source:"iana"},"application/cccex":{source:"iana"},"application/ccmp+xml":{source:"iana",compressible:!0},"application/ccxml+xml":{source:"iana",compressible:!0,extensions:["ccxml"]},"application/cdfx+xml":{source:"iana",compressible:!0,extensions:["cdfx"]},"application/cdmi-capability":{source:"iana",extensions:["cdmia"]},"application/cdmi-container":{source:"iana",extensions:["cdmic"]},"application/cdmi-domain":{source:"iana",extensions:["cdmid"]},"application/cdmi-object":{source:"iana",extensions:["cdmio"]},"application/cdmi-queue":{source:"iana",extensions:["cdmiq"]},"application/cdni":{source:"iana"},"application/cea":{source:"iana"},"application/cea-2018+xml":{source:"iana",compressible:!0},"application/cellml+xml":{source:"iana",compressible:!0},"application/cfw":{source:"iana"},"application/city+json":{source:"iana",compressible:!0},"application/clr":{source:"iana"},"application/clue+xml":{source:"iana",compressible:!0},"application/clue_info+xml":{source:"iana",compressible:!0},"application/cms":{source:"iana"},"application/cnrp+xml":{source:"iana",compressible:!0},"application/coap-group+json":{source:"iana",compressible:!0},"application/coap-payload":{source:"iana"},"application/commonground":{source:"iana"},"application/conference-info+xml":{source:"iana",compressible:!0},"application/cose":{source:"iana"},"application/cose-key":{source:"iana"},"application/cose-key-set":{source:"iana"},"application/cpl+xml":{source:"iana",compressible:!0,extensions:["cpl"]},"application/csrattrs":{source:"iana"},"application/csta+xml":{source:"iana",compressible:!0},"application/cstadata+xml":{source:"iana",compressible:!0},"application/csvm+json":{source:"iana",compressible:!0},"application/cu-seeme":{source:"apache",extensions:["cu"]},"application/cwt":{source:"iana"},"application/cybercash":{source:"iana"},"application/dart":{compressible:!0},"application/dash+xml":{source:"iana",compressible:!0,extensions:["mpd"]},"application/dash-patch+xml":{source:"iana",compressible:!0,extensions:["mpp"]},"application/dashdelta":{source:"iana"},"application/davmount+xml":{source:"iana",compressible:!0,extensions:["davmount"]},"application/dca-rft":{source:"iana"},"application/dcd":{source:"iana"},"application/dec-dx":{source:"iana"},"application/dialog-info+xml":{source:"iana",compressible:!0},"application/dicom":{source:"iana"},"application/dicom+json":{source:"iana",compressible:!0},"application/dicom+xml":{source:"iana",compressible:!0},"application/dii":{source:"iana"},"application/dit":{source:"iana"},"application/dns":{source:"iana"},"application/dns+json":{source:"iana",compressible:!0},"application/dns-message":{source:"iana"},"application/docbook+xml":{source:"apache",compressible:!0,extensions:["dbk"]},"application/dots+cbor":{source:"iana"},"application/dskpp+xml":{source:"iana",compressible:!0},"application/dssc+der":{source:"iana",extensions:["dssc"]},"application/dssc+xml":{source:"iana",compressible:!0,extensions:["xdssc"]},"application/dvcs":{source:"iana"},"application/ecmascript":{source:"iana",compressible:!0,extensions:["es","ecma"]},"application/edi-consent":{source:"iana"},"application/edi-x12":{source:"iana",compressible:!1},"application/edifact":{source:"iana",compressible:!1},"application/efi":{source:"iana"},"application/elm+json":{source:"iana",charset:"UTF-8",compressible:!0},"application/elm+xml":{source:"iana",compressible:!0},"application/emergencycalldata.cap+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/emergencycalldata.comment+xml":{source:"iana",compressible:!0},"application/emergencycalldata.control+xml":{source:"iana",compressible:!0},"application/emergencycalldata.deviceinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.ecall.msd":{source:"iana"},"application/emergencycalldata.providerinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.serviceinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.subscriberinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.veds+xml":{source:"iana",compressible:!0},"application/emma+xml":{source:"iana",compressible:!0,extensions:["emma"]},"application/emotionml+xml":{source:"iana",compressible:!0,extensions:["emotionml"]},"application/encaprtp":{source:"iana"},"application/epp+xml":{source:"iana",compressible:!0},"application/epub+zip":{source:"iana",compressible:!1,extensions:["epub"]},"application/eshop":{source:"iana"},"application/exi":{source:"iana",extensions:["exi"]},"application/expect-ct-report+json":{source:"iana",compressible:!0},"application/express":{source:"iana",extensions:["exp"]},"application/fastinfoset":{source:"iana"},"application/fastsoap":{source:"iana"},"application/fdt+xml":{source:"iana",compressible:!0,extensions:["fdt"]},"application/fhir+json":{source:"iana",charset:"UTF-8",compressible:!0},"application/fhir+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/fido.trusted-apps+json":{compressible:!0},"application/fits":{source:"iana"},"application/flexfec":{source:"iana"},"application/font-sfnt":{source:"iana"},"application/font-tdpfr":{source:"iana",extensions:["pfr"]},"application/font-woff":{source:"iana",compressible:!1},"application/framework-attributes+xml":{source:"iana",compressible:!0},"application/geo+json":{source:"iana",compressible:!0,extensions:["geojson"]},"application/geo+json-seq":{source:"iana"},"application/geopackage+sqlite3":{source:"iana"},"application/geoxacml+xml":{source:"iana",compressible:!0},"application/gltf-buffer":{source:"iana"},"application/gml+xml":{source:"iana",compressible:!0,extensions:["gml"]},"application/gpx+xml":{source:"apache",compressible:!0,extensions:["gpx"]},"application/gxf":{source:"apache",extensions:["gxf"]},"application/gzip":{source:"iana",compressible:!1,extensions:["gz"]},"application/h224":{source:"iana"},"application/held+xml":{source:"iana",compressible:!0},"application/hjson":{extensions:["hjson"]},"application/http":{source:"iana"},"application/hyperstudio":{source:"iana",extensions:["stk"]},"application/ibe-key-request+xml":{source:"iana",compressible:!0},"application/ibe-pkg-reply+xml":{source:"iana",compressible:!0},"application/ibe-pp-data":{source:"iana"},"application/iges":{source:"iana"},"application/im-iscomposing+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/index":{source:"iana"},"application/index.cmd":{source:"iana"},"application/index.obj":{source:"iana"},"application/index.response":{source:"iana"},"application/index.vnd":{source:"iana"},"application/inkml+xml":{source:"iana",compressible:!0,extensions:["ink","inkml"]},"application/iotp":{source:"iana"},"application/ipfix":{source:"iana",extensions:["ipfix"]},"application/ipp":{source:"iana"},"application/isup":{source:"iana"},"application/its+xml":{source:"iana",compressible:!0,extensions:["its"]},"application/java-archive":{source:"apache",compressible:!1,extensions:["jar","war","ear"]},"application/java-serialized-object":{source:"apache",compressible:!1,extensions:["ser"]},"application/java-vm":{source:"apache",compressible:!1,extensions:["class"]},"application/javascript":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["js","mjs"]},"application/jf2feed+json":{source:"iana",compressible:!0},"application/jose":{source:"iana"},"application/jose+json":{source:"iana",compressible:!0},"application/jrd+json":{source:"iana",compressible:!0},"application/jscalendar+json":{source:"iana",compressible:!0},"application/json":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["json","map"]},"application/json-patch+json":{source:"iana",compressible:!0},"application/json-seq":{source:"iana"},"application/json5":{extensions:["json5"]},"application/jsonml+json":{source:"apache",compressible:!0,extensions:["jsonml"]},"application/jwk+json":{source:"iana",compressible:!0},"application/jwk-set+json":{source:"iana",compressible:!0},"application/jwt":{source:"iana"},"application/kpml-request+xml":{source:"iana",compressible:!0},"application/kpml-response+xml":{source:"iana",compressible:!0},"application/ld+json":{source:"iana",compressible:!0,extensions:["jsonld"]},"application/lgr+xml":{source:"iana",compressible:!0,extensions:["lgr"]},"application/link-format":{source:"iana"},"application/load-control+xml":{source:"iana",compressible:!0},"application/lost+xml":{source:"iana",compressible:!0,extensions:["lostxml"]},"application/lostsync+xml":{source:"iana",compressible:!0},"application/lpf+zip":{source:"iana",compressible:!1},"application/lxf":{source:"iana"},"application/mac-binhex40":{source:"iana",extensions:["hqx"]},"application/mac-compactpro":{source:"apache",extensions:["cpt"]},"application/macwriteii":{source:"iana"},"application/mads+xml":{source:"iana",compressible:!0,extensions:["mads"]},"application/manifest+json":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["webmanifest"]},"application/marc":{source:"iana",extensions:["mrc"]},"application/marcxml+xml":{source:"iana",compressible:!0,extensions:["mrcx"]},"application/mathematica":{source:"iana",extensions:["ma","nb","mb"]},"application/mathml+xml":{source:"iana",compressible:!0,extensions:["mathml"]},"application/mathml-content+xml":{source:"iana",compressible:!0},"application/mathml-presentation+xml":{source:"iana",compressible:!0},"application/mbms-associated-procedure-description+xml":{source:"iana",compressible:!0},"application/mbms-deregister+xml":{source:"iana",compressible:!0},"application/mbms-envelope+xml":{source:"iana",compressible:!0},"application/mbms-msk+xml":{source:"iana",compressible:!0},"application/mbms-msk-response+xml":{source:"iana",compressible:!0},"application/mbms-protection-description+xml":{source:"iana",compressible:!0},"application/mbms-reception-report+xml":{source:"iana",compressible:!0},"application/mbms-register+xml":{source:"iana",compressible:!0},"application/mbms-register-response+xml":{source:"iana",compressible:!0},"application/mbms-schedule+xml":{source:"iana",compressible:!0},"application/mbms-user-service-description+xml":{source:"iana",compressible:!0},"application/mbox":{source:"iana",extensions:["mbox"]},"application/media-policy-dataset+xml":{source:"iana",compressible:!0,extensions:["mpf"]},"application/media_control+xml":{source:"iana",compressible:!0},"application/mediaservercontrol+xml":{source:"iana",compressible:!0,extensions:["mscml"]},"application/merge-patch+json":{source:"iana",compressible:!0},"application/metalink+xml":{source:"apache",compressible:!0,extensions:["metalink"]},"application/metalink4+xml":{source:"iana",compressible:!0,extensions:["meta4"]},"application/mets+xml":{source:"iana",compressible:!0,extensions:["mets"]},"application/mf4":{source:"iana"},"application/mikey":{source:"iana"},"application/mipc":{source:"iana"},"application/missing-blocks+cbor-seq":{source:"iana"},"application/mmt-aei+xml":{source:"iana",compressible:!0,extensions:["maei"]},"application/mmt-usd+xml":{source:"iana",compressible:!0,extensions:["musd"]},"application/mods+xml":{source:"iana",compressible:!0,extensions:["mods"]},"application/moss-keys":{source:"iana"},"application/moss-signature":{source:"iana"},"application/mosskey-data":{source:"iana"},"application/mosskey-request":{source:"iana"},"application/mp21":{source:"iana",extensions:["m21","mp21"]},"application/mp4":{source:"iana",extensions:["mp4s","m4p"]},"application/mpeg4-generic":{source:"iana"},"application/mpeg4-iod":{source:"iana"},"application/mpeg4-iod-xmt":{source:"iana"},"application/mrb-consumer+xml":{source:"iana",compressible:!0},"application/mrb-publish+xml":{source:"iana",compressible:!0},"application/msc-ivr+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/msc-mixer+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/msword":{source:"iana",compressible:!1,extensions:["doc","dot"]},"application/mud+json":{source:"iana",compressible:!0},"application/multipart-core":{source:"iana"},"application/mxf":{source:"iana",extensions:["mxf"]},"application/n-quads":{source:"iana",extensions:["nq"]},"application/n-triples":{source:"iana",extensions:["nt"]},"application/nasdata":{source:"iana"},"application/news-checkgroups":{source:"iana",charset:"US-ASCII"},"application/news-groupinfo":{source:"iana",charset:"US-ASCII"},"application/news-transmission":{source:"iana"},"application/nlsml+xml":{source:"iana",compressible:!0},"application/node":{source:"iana",extensions:["cjs"]},"application/nss":{source:"iana"},"application/oauth-authz-req+jwt":{source:"iana"},"application/oblivious-dns-message":{source:"iana"},"application/ocsp-request":{source:"iana"},"application/ocsp-response":{source:"iana"},"application/octet-stream":{source:"iana",compressible:!1,extensions:["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"]},"application/oda":{source:"iana",extensions:["oda"]},"application/odm+xml":{source:"iana",compressible:!0},"application/odx":{source:"iana"},"application/oebps-package+xml":{source:"iana",compressible:!0,extensions:["opf"]},"application/ogg":{source:"iana",compressible:!1,extensions:["ogx"]},"application/omdoc+xml":{source:"apache",compressible:!0,extensions:["omdoc"]},"application/onenote":{source:"apache",extensions:["onetoc","onetoc2","onetmp","onepkg"]},"application/opc-nodeset+xml":{source:"iana",compressible:!0},"application/oscore":{source:"iana"},"application/oxps":{source:"iana",extensions:["oxps"]},"application/p21":{source:"iana"},"application/p21+zip":{source:"iana",compressible:!1},"application/p2p-overlay+xml":{source:"iana",compressible:!0,extensions:["relo"]},"application/parityfec":{source:"iana"},"application/passport":{source:"iana"},"application/patch-ops-error+xml":{source:"iana",compressible:!0,extensions:["xer"]},"application/pdf":{source:"iana",compressible:!1,extensions:["pdf"]},"application/pdx":{source:"iana"},"application/pem-certificate-chain":{source:"iana"},"application/pgp-encrypted":{source:"iana",compressible:!1,extensions:["pgp"]},"application/pgp-keys":{source:"iana",extensions:["asc"]},"application/pgp-signature":{source:"iana",extensions:["asc","sig"]},"application/pics-rules":{source:"apache",extensions:["prf"]},"application/pidf+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/pidf-diff+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/pkcs10":{source:"iana",extensions:["p10"]},"application/pkcs12":{source:"iana"},"application/pkcs7-mime":{source:"iana",extensions:["p7m","p7c"]},"application/pkcs7-signature":{source:"iana",extensions:["p7s"]},"application/pkcs8":{source:"iana",extensions:["p8"]},"application/pkcs8-encrypted":{source:"iana"},"application/pkix-attr-cert":{source:"iana",extensions:["ac"]},"application/pkix-cert":{source:"iana",extensions:["cer"]},"application/pkix-crl":{source:"iana",extensions:["crl"]},"application/pkix-pkipath":{source:"iana",extensions:["pkipath"]},"application/pkixcmp":{source:"iana",extensions:["pki"]},"application/pls+xml":{source:"iana",compressible:!0,extensions:["pls"]},"application/poc-settings+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/postscript":{source:"iana",compressible:!0,extensions:["ai","eps","ps"]},"application/ppsp-tracker+json":{source:"iana",compressible:!0},"application/problem+json":{source:"iana",compressible:!0},"application/problem+xml":{source:"iana",compressible:!0},"application/provenance+xml":{source:"iana",compressible:!0,extensions:["provx"]},"application/prs.alvestrand.titrax-sheet":{source:"iana"},"application/prs.cww":{source:"iana",extensions:["cww"]},"application/prs.cyn":{source:"iana",charset:"7-BIT"},"application/prs.hpub+zip":{source:"iana",compressible:!1},"application/prs.nprend":{source:"iana"},"application/prs.plucker":{source:"iana"},"application/prs.rdf-xml-crypt":{source:"iana"},"application/prs.xsf+xml":{source:"iana",compressible:!0},"application/pskc+xml":{source:"iana",compressible:!0,extensions:["pskcxml"]},"application/pvd+json":{source:"iana",compressible:!0},"application/qsig":{source:"iana"},"application/raml+yaml":{compressible:!0,extensions:["raml"]},"application/raptorfec":{source:"iana"},"application/rdap+json":{source:"iana",compressible:!0},"application/rdf+xml":{source:"iana",compressible:!0,extensions:["rdf","owl"]},"application/reginfo+xml":{source:"iana",compressible:!0,extensions:["rif"]},"application/relax-ng-compact-syntax":{source:"iana",extensions:["rnc"]},"application/remote-printing":{source:"iana"},"application/reputon+json":{source:"iana",compressible:!0},"application/resource-lists+xml":{source:"iana",compressible:!0,extensions:["rl"]},"application/resource-lists-diff+xml":{source:"iana",compressible:!0,extensions:["rld"]},"application/rfc+xml":{source:"iana",compressible:!0},"application/riscos":{source:"iana"},"application/rlmi+xml":{source:"iana",compressible:!0},"application/rls-services+xml":{source:"iana",compressible:!0,extensions:["rs"]},"application/route-apd+xml":{source:"iana",compressible:!0,extensions:["rapd"]},"application/route-s-tsid+xml":{source:"iana",compressible:!0,extensions:["sls"]},"application/route-usd+xml":{source:"iana",compressible:!0,extensions:["rusd"]},"application/rpki-ghostbusters":{source:"iana",extensions:["gbr"]},"application/rpki-manifest":{source:"iana",extensions:["mft"]},"application/rpki-publication":{source:"iana"},"application/rpki-roa":{source:"iana",extensions:["roa"]},"application/rpki-updown":{source:"iana"},"application/rsd+xml":{source:"apache",compressible:!0,extensions:["rsd"]},"application/rss+xml":{source:"apache",compressible:!0,extensions:["rss"]},"application/rtf":{source:"iana",compressible:!0,extensions:["rtf"]},"application/rtploopback":{source:"iana"},"application/rtx":{source:"iana"},"application/samlassertion+xml":{source:"iana",compressible:!0},"application/samlmetadata+xml":{source:"iana",compressible:!0},"application/sarif+json":{source:"iana",compressible:!0},"application/sarif-external-properties+json":{source:"iana",compressible:!0},"application/sbe":{source:"iana"},"application/sbml+xml":{source:"iana",compressible:!0,extensions:["sbml"]},"application/scaip+xml":{source:"iana",compressible:!0},"application/scim+json":{source:"iana",compressible:!0},"application/scvp-cv-request":{source:"iana",extensions:["scq"]},"application/scvp-cv-response":{source:"iana",extensions:["scs"]},"application/scvp-vp-request":{source:"iana",extensions:["spq"]},"application/scvp-vp-response":{source:"iana",extensions:["spp"]},"application/sdp":{source:"iana",extensions:["sdp"]},"application/secevent+jwt":{source:"iana"},"application/senml+cbor":{source:"iana"},"application/senml+json":{source:"iana",compressible:!0},"application/senml+xml":{source:"iana",compressible:!0,extensions:["senmlx"]},"application/senml-etch+cbor":{source:"iana"},"application/senml-etch+json":{source:"iana",compressible:!0},"application/senml-exi":{source:"iana"},"application/sensml+cbor":{source:"iana"},"application/sensml+json":{source:"iana",compressible:!0},"application/sensml+xml":{source:"iana",compressible:!0,extensions:["sensmlx"]},"application/sensml-exi":{source:"iana"},"application/sep+xml":{source:"iana",compressible:!0},"application/sep-exi":{source:"iana"},"application/session-info":{source:"iana"},"application/set-payment":{source:"iana"},"application/set-payment-initiation":{source:"iana",extensions:["setpay"]},"application/set-registration":{source:"iana"},"application/set-registration-initiation":{source:"iana",extensions:["setreg"]},"application/sgml":{source:"iana"},"application/sgml-open-catalog":{source:"iana"},"application/shf+xml":{source:"iana",compressible:!0,extensions:["shf"]},"application/sieve":{source:"iana",extensions:["siv","sieve"]},"application/simple-filter+xml":{source:"iana",compressible:!0},"application/simple-message-summary":{source:"iana"},"application/simplesymbolcontainer":{source:"iana"},"application/sipc":{source:"iana"},"application/slate":{source:"iana"},"application/smil":{source:"iana"},"application/smil+xml":{source:"iana",compressible:!0,extensions:["smi","smil"]},"application/smpte336m":{source:"iana"},"application/soap+fastinfoset":{source:"iana"},"application/soap+xml":{source:"iana",compressible:!0},"application/sparql-query":{source:"iana",extensions:["rq"]},"application/sparql-results+xml":{source:"iana",compressible:!0,extensions:["srx"]},"application/spdx+json":{source:"iana",compressible:!0},"application/spirits-event+xml":{source:"iana",compressible:!0},"application/sql":{source:"iana"},"application/srgs":{source:"iana",extensions:["gram"]},"application/srgs+xml":{source:"iana",compressible:!0,extensions:["grxml"]},"application/sru+xml":{source:"iana",compressible:!0,extensions:["sru"]},"application/ssdl+xml":{source:"apache",compressible:!0,extensions:["ssdl"]},"application/ssml+xml":{source:"iana",compressible:!0,extensions:["ssml"]},"application/stix+json":{source:"iana",compressible:!0},"application/swid+xml":{source:"iana",compressible:!0,extensions:["swidtag"]},"application/tamp-apex-update":{source:"iana"},"application/tamp-apex-update-confirm":{source:"iana"},"application/tamp-community-update":{source:"iana"},"application/tamp-community-update-confirm":{source:"iana"},"application/tamp-error":{source:"iana"},"application/tamp-sequence-adjust":{source:"iana"},"application/tamp-sequence-adjust-confirm":{source:"iana"},"application/tamp-status-query":{source:"iana"},"application/tamp-status-response":{source:"iana"},"application/tamp-update":{source:"iana"},"application/tamp-update-confirm":{source:"iana"},"application/tar":{compressible:!0},"application/taxii+json":{source:"iana",compressible:!0},"application/td+json":{source:"iana",compressible:!0},"application/tei+xml":{source:"iana",compressible:!0,extensions:["tei","teicorpus"]},"application/tetra_isi":{source:"iana"},"application/thraud+xml":{source:"iana",compressible:!0,extensions:["tfi"]},"application/timestamp-query":{source:"iana"},"application/timestamp-reply":{source:"iana"},"application/timestamped-data":{source:"iana",extensions:["tsd"]},"application/tlsrpt+gzip":{source:"iana"},"application/tlsrpt+json":{source:"iana",compressible:!0},"application/tnauthlist":{source:"iana"},"application/token-introspection+jwt":{source:"iana"},"application/toml":{compressible:!0,extensions:["toml"]},"application/trickle-ice-sdpfrag":{source:"iana"},"application/trig":{source:"iana",extensions:["trig"]},"application/ttml+xml":{source:"iana",compressible:!0,extensions:["ttml"]},"application/tve-trigger":{source:"iana"},"application/tzif":{source:"iana"},"application/tzif-leap":{source:"iana"},"application/ubjson":{compressible:!1,extensions:["ubj"]},"application/ulpfec":{source:"iana"},"application/urc-grpsheet+xml":{source:"iana",compressible:!0},"application/urc-ressheet+xml":{source:"iana",compressible:!0,extensions:["rsheet"]},"application/urc-targetdesc+xml":{source:"iana",compressible:!0,extensions:["td"]},"application/urc-uisocketdesc+xml":{source:"iana",compressible:!0},"application/vcard+json":{source:"iana",compressible:!0},"application/vcard+xml":{source:"iana",compressible:!0},"application/vemmi":{source:"iana"},"application/vividence.scriptfile":{source:"apache"},"application/vnd.1000minds.decision-model+xml":{source:"iana",compressible:!0,extensions:["1km"]},"application/vnd.3gpp-prose+xml":{source:"iana",compressible:!0},"application/vnd.3gpp-prose-pc3ch+xml":{source:"iana",compressible:!0},"application/vnd.3gpp-v2x-local-service-information":{source:"iana"},"application/vnd.3gpp.5gnas":{source:"iana"},"application/vnd.3gpp.access-transfer-events+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.bsf+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.gmop+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.gtpc":{source:"iana"},"application/vnd.3gpp.interworking-data":{source:"iana"},"application/vnd.3gpp.lpp":{source:"iana"},"application/vnd.3gpp.mc-signalling-ear":{source:"iana"},"application/vnd.3gpp.mcdata-affiliation-command+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-payload":{source:"iana"},"application/vnd.3gpp.mcdata-service-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-signalling":{source:"iana"},"application/vnd.3gpp.mcdata-ue-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-user-profile+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-affiliation-command+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-floor-request+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-location-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-mbms-usage-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-service-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-signed+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-ue-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-ue-init-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-user-profile+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-affiliation-command+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-affiliation-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-location-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-mbms-usage-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-service-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-transmission-request+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-ue-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-user-profile+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mid-call+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.ngap":{source:"iana"},"application/vnd.3gpp.pfcp":{source:"iana"},"application/vnd.3gpp.pic-bw-large":{source:"iana",extensions:["plb"]},"application/vnd.3gpp.pic-bw-small":{source:"iana",extensions:["psb"]},"application/vnd.3gpp.pic-bw-var":{source:"iana",extensions:["pvb"]},"application/vnd.3gpp.s1ap":{source:"iana"},"application/vnd.3gpp.sms":{source:"iana"},"application/vnd.3gpp.sms+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.srvcc-ext+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.srvcc-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.state-and-event-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.ussd+xml":{source:"iana",compressible:!0},"application/vnd.3gpp2.bcmcsinfo+xml":{source:"iana",compressible:!0},"application/vnd.3gpp2.sms":{source:"iana"},"application/vnd.3gpp2.tcap":{source:"iana",extensions:["tcap"]},"application/vnd.3lightssoftware.imagescal":{source:"iana"},"application/vnd.3m.post-it-notes":{source:"iana",extensions:["pwn"]},"application/vnd.accpac.simply.aso":{source:"iana",extensions:["aso"]},"application/vnd.accpac.simply.imp":{source:"iana",extensions:["imp"]},"application/vnd.acucobol":{source:"iana",extensions:["acu"]},"application/vnd.acucorp":{source:"iana",extensions:["atc","acutc"]},"application/vnd.adobe.air-application-installer-package+zip":{source:"apache",compressible:!1,extensions:["air"]},"application/vnd.adobe.flash.movie":{source:"iana"},"application/vnd.adobe.formscentral.fcdt":{source:"iana",extensions:["fcdt"]},"application/vnd.adobe.fxp":{source:"iana",extensions:["fxp","fxpl"]},"application/vnd.adobe.partial-upload":{source:"iana"},"application/vnd.adobe.xdp+xml":{source:"iana",compressible:!0,extensions:["xdp"]},"application/vnd.adobe.xfdf":{source:"iana",extensions:["xfdf"]},"application/vnd.aether.imp":{source:"iana"},"application/vnd.afpc.afplinedata":{source:"iana"},"application/vnd.afpc.afplinedata-pagedef":{source:"iana"},"application/vnd.afpc.cmoca-cmresource":{source:"iana"},"application/vnd.afpc.foca-charset":{source:"iana"},"application/vnd.afpc.foca-codedfont":{source:"iana"},"application/vnd.afpc.foca-codepage":{source:"iana"},"application/vnd.afpc.modca":{source:"iana"},"application/vnd.afpc.modca-cmtable":{source:"iana"},"application/vnd.afpc.modca-formdef":{source:"iana"},"application/vnd.afpc.modca-mediummap":{source:"iana"},"application/vnd.afpc.modca-objectcontainer":{source:"iana"},"application/vnd.afpc.modca-overlay":{source:"iana"},"application/vnd.afpc.modca-pagesegment":{source:"iana"},"application/vnd.age":{source:"iana",extensions:["age"]},"application/vnd.ah-barcode":{source:"iana"},"application/vnd.ahead.space":{source:"iana",extensions:["ahead"]},"application/vnd.airzip.filesecure.azf":{source:"iana",extensions:["azf"]},"application/vnd.airzip.filesecure.azs":{source:"iana",extensions:["azs"]},"application/vnd.amadeus+json":{source:"iana",compressible:!0},"application/vnd.amazon.ebook":{source:"apache",extensions:["azw"]},"application/vnd.amazon.mobi8-ebook":{source:"iana"},"application/vnd.americandynamics.acc":{source:"iana",extensions:["acc"]},"application/vnd.amiga.ami":{source:"iana",extensions:["ami"]},"application/vnd.amundsen.maze+xml":{source:"iana",compressible:!0},"application/vnd.android.ota":{source:"iana"},"application/vnd.android.package-archive":{source:"apache",compressible:!1,extensions:["apk"]},"application/vnd.anki":{source:"iana"},"application/vnd.anser-web-certificate-issue-initiation":{source:"iana",extensions:["cii"]},"application/vnd.anser-web-funds-transfer-initiation":{source:"apache",extensions:["fti"]},"application/vnd.antix.game-component":{source:"iana",extensions:["atx"]},"application/vnd.apache.arrow.file":{source:"iana"},"application/vnd.apache.arrow.stream":{source:"iana"},"application/vnd.apache.thrift.binary":{source:"iana"},"application/vnd.apache.thrift.compact":{source:"iana"},"application/vnd.apache.thrift.json":{source:"iana"},"application/vnd.api+json":{source:"iana",compressible:!0},"application/vnd.aplextor.warrp+json":{source:"iana",compressible:!0},"application/vnd.apothekende.reservation+json":{source:"iana",compressible:!0},"application/vnd.apple.installer+xml":{source:"iana",compressible:!0,extensions:["mpkg"]},"application/vnd.apple.keynote":{source:"iana",extensions:["key"]},"application/vnd.apple.mpegurl":{source:"iana",extensions:["m3u8"]},"application/vnd.apple.numbers":{source:"iana",extensions:["numbers"]},"application/vnd.apple.pages":{source:"iana",extensions:["pages"]},"application/vnd.apple.pkpass":{compressible:!1,extensions:["pkpass"]},"application/vnd.arastra.swi":{source:"iana"},"application/vnd.aristanetworks.swi":{source:"iana",extensions:["swi"]},"application/vnd.artisan+json":{source:"iana",compressible:!0},"application/vnd.artsquare":{source:"iana"},"application/vnd.astraea-software.iota":{source:"iana",extensions:["iota"]},"application/vnd.audiograph":{source:"iana",extensions:["aep"]},"application/vnd.autopackage":{source:"iana"},"application/vnd.avalon+json":{source:"iana",compressible:!0},"application/vnd.avistar+xml":{source:"iana",compressible:!0},"application/vnd.balsamiq.bmml+xml":{source:"iana",compressible:!0,extensions:["bmml"]},"application/vnd.balsamiq.bmpr":{source:"iana"},"application/vnd.banana-accounting":{source:"iana"},"application/vnd.bbf.usp.error":{source:"iana"},"application/vnd.bbf.usp.msg":{source:"iana"},"application/vnd.bbf.usp.msg+json":{source:"iana",compressible:!0},"application/vnd.bekitzur-stech+json":{source:"iana",compressible:!0},"application/vnd.bint.med-content":{source:"iana"},"application/vnd.biopax.rdf+xml":{source:"iana",compressible:!0},"application/vnd.blink-idb-value-wrapper":{source:"iana"},"application/vnd.blueice.multipass":{source:"iana",extensions:["mpm"]},"application/vnd.bluetooth.ep.oob":{source:"iana"},"application/vnd.bluetooth.le.oob":{source:"iana"},"application/vnd.bmi":{source:"iana",extensions:["bmi"]},"application/vnd.bpf":{source:"iana"},"application/vnd.bpf3":{source:"iana"},"application/vnd.businessobjects":{source:"iana",extensions:["rep"]},"application/vnd.byu.uapi+json":{source:"iana",compressible:!0},"application/vnd.cab-jscript":{source:"iana"},"application/vnd.canon-cpdl":{source:"iana"},"application/vnd.canon-lips":{source:"iana"},"application/vnd.capasystems-pg+json":{source:"iana",compressible:!0},"application/vnd.cendio.thinlinc.clientconf":{source:"iana"},"application/vnd.century-systems.tcp_stream":{source:"iana"},"application/vnd.chemdraw+xml":{source:"iana",compressible:!0,extensions:["cdxml"]},"application/vnd.chess-pgn":{source:"iana"},"application/vnd.chipnuts.karaoke-mmd":{source:"iana",extensions:["mmd"]},"application/vnd.ciedi":{source:"iana"},"application/vnd.cinderella":{source:"iana",extensions:["cdy"]},"application/vnd.cirpack.isdn-ext":{source:"iana"},"application/vnd.citationstyles.style+xml":{source:"iana",compressible:!0,extensions:["csl"]},"application/vnd.claymore":{source:"iana",extensions:["cla"]},"application/vnd.cloanto.rp9":{source:"iana",extensions:["rp9"]},"application/vnd.clonk.c4group":{source:"iana",extensions:["c4g","c4d","c4f","c4p","c4u"]},"application/vnd.cluetrust.cartomobile-config":{source:"iana",extensions:["c11amc"]},"application/vnd.cluetrust.cartomobile-config-pkg":{source:"iana",extensions:["c11amz"]},"application/vnd.coffeescript":{source:"iana"},"application/vnd.collabio.xodocuments.document":{source:"iana"},"application/vnd.collabio.xodocuments.document-template":{source:"iana"},"application/vnd.collabio.xodocuments.presentation":{source:"iana"},"application/vnd.collabio.xodocuments.presentation-template":{source:"iana"},"application/vnd.collabio.xodocuments.spreadsheet":{source:"iana"},"application/vnd.collabio.xodocuments.spreadsheet-template":{source:"iana"},"application/vnd.collection+json":{source:"iana",compressible:!0},"application/vnd.collection.doc+json":{source:"iana",compressible:!0},"application/vnd.collection.next+json":{source:"iana",compressible:!0},"application/vnd.comicbook+zip":{source:"iana",compressible:!1},"application/vnd.comicbook-rar":{source:"iana"},"application/vnd.commerce-battelle":{source:"iana"},"application/vnd.commonspace":{source:"iana",extensions:["csp"]},"application/vnd.contact.cmsg":{source:"iana",extensions:["cdbcmsg"]},"application/vnd.coreos.ignition+json":{source:"iana",compressible:!0},"application/vnd.cosmocaller":{source:"iana",extensions:["cmc"]},"application/vnd.crick.clicker":{source:"iana",extensions:["clkx"]},"application/vnd.crick.clicker.keyboard":{source:"iana",extensions:["clkk"]},"application/vnd.crick.clicker.palette":{source:"iana",extensions:["clkp"]},"application/vnd.crick.clicker.template":{source:"iana",extensions:["clkt"]},"application/vnd.crick.clicker.wordbank":{source:"iana",extensions:["clkw"]},"application/vnd.criticaltools.wbs+xml":{source:"iana",compressible:!0,extensions:["wbs"]},"application/vnd.cryptii.pipe+json":{source:"iana",compressible:!0},"application/vnd.crypto-shade-file":{source:"iana"},"application/vnd.cryptomator.encrypted":{source:"iana"},"application/vnd.cryptomator.vault":{source:"iana"},"application/vnd.ctc-posml":{source:"iana",extensions:["pml"]},"application/vnd.ctct.ws+xml":{source:"iana",compressible:!0},"application/vnd.cups-pdf":{source:"iana"},"application/vnd.cups-postscript":{source:"iana"},"application/vnd.cups-ppd":{source:"iana",extensions:["ppd"]},"application/vnd.cups-raster":{source:"iana"},"application/vnd.cups-raw":{source:"iana"},"application/vnd.curl":{source:"iana"},"application/vnd.curl.car":{source:"apache",extensions:["car"]},"application/vnd.curl.pcurl":{source:"apache",extensions:["pcurl"]},"application/vnd.cyan.dean.root+xml":{source:"iana",compressible:!0},"application/vnd.cybank":{source:"iana"},"application/vnd.cyclonedx+json":{source:"iana",compressible:!0},"application/vnd.cyclonedx+xml":{source:"iana",compressible:!0},"application/vnd.d2l.coursepackage1p0+zip":{source:"iana",compressible:!1},"application/vnd.d3m-dataset":{source:"iana"},"application/vnd.d3m-problem":{source:"iana"},"application/vnd.dart":{source:"iana",compressible:!0,extensions:["dart"]},"application/vnd.data-vision.rdz":{source:"iana",extensions:["rdz"]},"application/vnd.datapackage+json":{source:"iana",compressible:!0},"application/vnd.dataresource+json":{source:"iana",compressible:!0},"application/vnd.dbf":{source:"iana",extensions:["dbf"]},"application/vnd.debian.binary-package":{source:"iana"},"application/vnd.dece.data":{source:"iana",extensions:["uvf","uvvf","uvd","uvvd"]},"application/vnd.dece.ttml+xml":{source:"iana",compressible:!0,extensions:["uvt","uvvt"]},"application/vnd.dece.unspecified":{source:"iana",extensions:["uvx","uvvx"]},"application/vnd.dece.zip":{source:"iana",extensions:["uvz","uvvz"]},"application/vnd.denovo.fcselayout-link":{source:"iana",extensions:["fe_launch"]},"application/vnd.desmume.movie":{source:"iana"},"application/vnd.dir-bi.plate-dl-nosuffix":{source:"iana"},"application/vnd.dm.delegation+xml":{source:"iana",compressible:!0},"application/vnd.dna":{source:"iana",extensions:["dna"]},"application/vnd.document+json":{source:"iana",compressible:!0},"application/vnd.dolby.mlp":{source:"apache",extensions:["mlp"]},"application/vnd.dolby.mobile.1":{source:"iana"},"application/vnd.dolby.mobile.2":{source:"iana"},"application/vnd.doremir.scorecloud-binary-document":{source:"iana"},"application/vnd.dpgraph":{source:"iana",extensions:["dpg"]},"application/vnd.dreamfactory":{source:"iana",extensions:["dfac"]},"application/vnd.drive+json":{source:"iana",compressible:!0},"application/vnd.ds-keypoint":{source:"apache",extensions:["kpxx"]},"application/vnd.dtg.local":{source:"iana"},"application/vnd.dtg.local.flash":{source:"iana"},"application/vnd.dtg.local.html":{source:"iana"},"application/vnd.dvb.ait":{source:"iana",extensions:["ait"]},"application/vnd.dvb.dvbisl+xml":{source:"iana",compressible:!0},"application/vnd.dvb.dvbj":{source:"iana"},"application/vnd.dvb.esgcontainer":{source:"iana"},"application/vnd.dvb.ipdcdftnotifaccess":{source:"iana"},"application/vnd.dvb.ipdcesgaccess":{source:"iana"},"application/vnd.dvb.ipdcesgaccess2":{source:"iana"},"application/vnd.dvb.ipdcesgpdd":{source:"iana"},"application/vnd.dvb.ipdcroaming":{source:"iana"},"application/vnd.dvb.iptv.alfec-base":{source:"iana"},"application/vnd.dvb.iptv.alfec-enhancement":{source:"iana"},"application/vnd.dvb.notif-aggregate-root+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-container+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-generic+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-ia-msglist+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-ia-registration-request+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-ia-registration-response+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-init+xml":{source:"iana",compressible:!0},"application/vnd.dvb.pfr":{source:"iana"},"application/vnd.dvb.service":{source:"iana",extensions:["svc"]},"application/vnd.dxr":{source:"iana"},"application/vnd.dynageo":{source:"iana",extensions:["geo"]},"application/vnd.dzr":{source:"iana"},"application/vnd.easykaraoke.cdgdownload":{source:"iana"},"application/vnd.ecdis-update":{source:"iana"},"application/vnd.ecip.rlp":{source:"iana"},"application/vnd.eclipse.ditto+json":{source:"iana",compressible:!0},"application/vnd.ecowin.chart":{source:"iana",extensions:["mag"]},"application/vnd.ecowin.filerequest":{source:"iana"},"application/vnd.ecowin.fileupdate":{source:"iana"},"application/vnd.ecowin.series":{source:"iana"},"application/vnd.ecowin.seriesrequest":{source:"iana"},"application/vnd.ecowin.seriesupdate":{source:"iana"},"application/vnd.efi.img":{source:"iana"},"application/vnd.efi.iso":{source:"iana"},"application/vnd.emclient.accessrequest+xml":{source:"iana",compressible:!0},"application/vnd.enliven":{source:"iana",extensions:["nml"]},"application/vnd.enphase.envoy":{source:"iana"},"application/vnd.eprints.data+xml":{source:"iana",compressible:!0},"application/vnd.epson.esf":{source:"iana",extensions:["esf"]},"application/vnd.epson.msf":{source:"iana",extensions:["msf"]},"application/vnd.epson.quickanime":{source:"iana",extensions:["qam"]},"application/vnd.epson.salt":{source:"iana",extensions:["slt"]},"application/vnd.epson.ssf":{source:"iana",extensions:["ssf"]},"application/vnd.ericsson.quickcall":{source:"iana"},"application/vnd.espass-espass+zip":{source:"iana",compressible:!1},"application/vnd.eszigno3+xml":{source:"iana",compressible:!0,extensions:["es3","et3"]},"application/vnd.etsi.aoc+xml":{source:"iana",compressible:!0},"application/vnd.etsi.asic-e+zip":{source:"iana",compressible:!1},"application/vnd.etsi.asic-s+zip":{source:"iana",compressible:!1},"application/vnd.etsi.cug+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvcommand+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvdiscovery+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvprofile+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsad-bc+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsad-cod+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsad-npvr+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvservice+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsync+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvueprofile+xml":{source:"iana",compressible:!0},"application/vnd.etsi.mcid+xml":{source:"iana",compressible:!0},"application/vnd.etsi.mheg5":{source:"iana"},"application/vnd.etsi.overload-control-policy-dataset+xml":{source:"iana",compressible:!0},"application/vnd.etsi.pstn+xml":{source:"iana",compressible:!0},"application/vnd.etsi.sci+xml":{source:"iana",compressible:!0},"application/vnd.etsi.simservs+xml":{source:"iana",compressible:!0},"application/vnd.etsi.timestamp-token":{source:"iana"},"application/vnd.etsi.tsl+xml":{source:"iana",compressible:!0},"application/vnd.etsi.tsl.der":{source:"iana"},"application/vnd.eu.kasparian.car+json":{source:"iana",compressible:!0},"application/vnd.eudora.data":{source:"iana"},"application/vnd.evolv.ecig.profile":{source:"iana"},"application/vnd.evolv.ecig.settings":{source:"iana"},"application/vnd.evolv.ecig.theme":{source:"iana"},"application/vnd.exstream-empower+zip":{source:"iana",compressible:!1},"application/vnd.exstream-package":{source:"iana"},"application/vnd.ezpix-album":{source:"iana",extensions:["ez2"]},"application/vnd.ezpix-package":{source:"iana",extensions:["ez3"]},"application/vnd.f-secure.mobile":{source:"iana"},"application/vnd.familysearch.gedcom+zip":{source:"iana",compressible:!1},"application/vnd.fastcopy-disk-image":{source:"iana"},"application/vnd.fdf":{source:"iana",extensions:["fdf"]},"application/vnd.fdsn.mseed":{source:"iana",extensions:["mseed"]},"application/vnd.fdsn.seed":{source:"iana",extensions:["seed","dataless"]},"application/vnd.ffsns":{source:"iana"},"application/vnd.ficlab.flb+zip":{source:"iana",compressible:!1},"application/vnd.filmit.zfc":{source:"iana"},"application/vnd.fints":{source:"iana"},"application/vnd.firemonkeys.cloudcell":{source:"iana"},"application/vnd.flographit":{source:"iana",extensions:["gph"]},"application/vnd.fluxtime.clip":{source:"iana",extensions:["ftc"]},"application/vnd.font-fontforge-sfd":{source:"iana"},"application/vnd.framemaker":{source:"iana",extensions:["fm","frame","maker","book"]},"application/vnd.frogans.fnc":{source:"iana",extensions:["fnc"]},"application/vnd.frogans.ltf":{source:"iana",extensions:["ltf"]},"application/vnd.fsc.weblaunch":{source:"iana",extensions:["fsc"]},"application/vnd.fujifilm.fb.docuworks":{source:"iana"},"application/vnd.fujifilm.fb.docuworks.binder":{source:"iana"},"application/vnd.fujifilm.fb.docuworks.container":{source:"iana"},"application/vnd.fujifilm.fb.jfi+xml":{source:"iana",compressible:!0},"application/vnd.fujitsu.oasys":{source:"iana",extensions:["oas"]},"application/vnd.fujitsu.oasys2":{source:"iana",extensions:["oa2"]},"application/vnd.fujitsu.oasys3":{source:"iana",extensions:["oa3"]},"application/vnd.fujitsu.oasysgp":{source:"iana",extensions:["fg5"]},"application/vnd.fujitsu.oasysprs":{source:"iana",extensions:["bh2"]},"application/vnd.fujixerox.art-ex":{source:"iana"},"application/vnd.fujixerox.art4":{source:"iana"},"application/vnd.fujixerox.ddd":{source:"iana",extensions:["ddd"]},"application/vnd.fujixerox.docuworks":{source:"iana",extensions:["xdw"]},"application/vnd.fujixerox.docuworks.binder":{source:"iana",extensions:["xbd"]},"application/vnd.fujixerox.docuworks.container":{source:"iana"},"application/vnd.fujixerox.hbpl":{source:"iana"},"application/vnd.fut-misnet":{source:"iana"},"application/vnd.futoin+cbor":{source:"iana"},"application/vnd.futoin+json":{source:"iana",compressible:!0},"application/vnd.fuzzysheet":{source:"iana",extensions:["fzs"]},"application/vnd.genomatix.tuxedo":{source:"iana",extensions:["txd"]},"application/vnd.gentics.grd+json":{source:"iana",compressible:!0},"application/vnd.geo+json":{source:"iana",compressible:!0},"application/vnd.geocube+xml":{source:"iana",compressible:!0},"application/vnd.geogebra.file":{source:"iana",extensions:["ggb"]},"application/vnd.geogebra.slides":{source:"iana"},"application/vnd.geogebra.tool":{source:"iana",extensions:["ggt"]},"application/vnd.geometry-explorer":{source:"iana",extensions:["gex","gre"]},"application/vnd.geonext":{source:"iana",extensions:["gxt"]},"application/vnd.geoplan":{source:"iana",extensions:["g2w"]},"application/vnd.geospace":{source:"iana",extensions:["g3w"]},"application/vnd.gerber":{source:"iana"},"application/vnd.globalplatform.card-content-mgt":{source:"iana"},"application/vnd.globalplatform.card-content-mgt-response":{source:"iana"},"application/vnd.gmx":{source:"iana",extensions:["gmx"]},"application/vnd.google-apps.document":{compressible:!1,extensions:["gdoc"]},"application/vnd.google-apps.presentation":{compressible:!1,extensions:["gslides"]},"application/vnd.google-apps.spreadsheet":{compressible:!1,extensions:["gsheet"]},"application/vnd.google-earth.kml+xml":{source:"iana",compressible:!0,extensions:["kml"]},"application/vnd.google-earth.kmz":{source:"iana",compressible:!1,extensions:["kmz"]},"application/vnd.gov.sk.e-form+xml":{source:"iana",compressible:!0},"application/vnd.gov.sk.e-form+zip":{source:"iana",compressible:!1},"application/vnd.gov.sk.xmldatacontainer+xml":{source:"iana",compressible:!0},"application/vnd.grafeq":{source:"iana",extensions:["gqf","gqs"]},"application/vnd.gridmp":{source:"iana"},"application/vnd.groove-account":{source:"iana",extensions:["gac"]},"application/vnd.groove-help":{source:"iana",extensions:["ghf"]},"application/vnd.groove-identity-message":{source:"iana",extensions:["gim"]},"application/vnd.groove-injector":{source:"iana",extensions:["grv"]},"application/vnd.groove-tool-message":{source:"iana",extensions:["gtm"]},"application/vnd.groove-tool-template":{source:"iana",extensions:["tpl"]},"application/vnd.groove-vcard":{source:"iana",extensions:["vcg"]},"application/vnd.hal+json":{source:"iana",compressible:!0},"application/vnd.hal+xml":{source:"iana",compressible:!0,extensions:["hal"]},"application/vnd.handheld-entertainment+xml":{source:"iana",compressible:!0,extensions:["zmm"]},"application/vnd.hbci":{source:"iana",extensions:["hbci"]},"application/vnd.hc+json":{source:"iana",compressible:!0},"application/vnd.hcl-bireports":{source:"iana"},"application/vnd.hdt":{source:"iana"},"application/vnd.heroku+json":{source:"iana",compressible:!0},"application/vnd.hhe.lesson-player":{source:"iana",extensions:["les"]},"application/vnd.hl7cda+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.hl7v2+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.hp-hpgl":{source:"iana",extensions:["hpgl"]},"application/vnd.hp-hpid":{source:"iana",extensions:["hpid"]},"application/vnd.hp-hps":{source:"iana",extensions:["hps"]},"application/vnd.hp-jlyt":{source:"iana",extensions:["jlt"]},"application/vnd.hp-pcl":{source:"iana",extensions:["pcl"]},"application/vnd.hp-pclxl":{source:"iana",extensions:["pclxl"]},"application/vnd.httphone":{source:"iana"},"application/vnd.hydrostatix.sof-data":{source:"iana",extensions:["sfd-hdstx"]},"application/vnd.hyper+json":{source:"iana",compressible:!0},"application/vnd.hyper-item+json":{source:"iana",compressible:!0},"application/vnd.hyperdrive+json":{source:"iana",compressible:!0},"application/vnd.hzn-3d-crossword":{source:"iana"},"application/vnd.ibm.afplinedata":{source:"iana"},"application/vnd.ibm.electronic-media":{source:"iana"},"application/vnd.ibm.minipay":{source:"iana",extensions:["mpy"]},"application/vnd.ibm.modcap":{source:"iana",extensions:["afp","listafp","list3820"]},"application/vnd.ibm.rights-management":{source:"iana",extensions:["irm"]},"application/vnd.ibm.secure-container":{source:"iana",extensions:["sc"]},"application/vnd.iccprofile":{source:"iana",extensions:["icc","icm"]},"application/vnd.ieee.1905":{source:"iana"},"application/vnd.igloader":{source:"iana",extensions:["igl"]},"application/vnd.imagemeter.folder+zip":{source:"iana",compressible:!1},"application/vnd.imagemeter.image+zip":{source:"iana",compressible:!1},"application/vnd.immervision-ivp":{source:"iana",extensions:["ivp"]},"application/vnd.immervision-ivu":{source:"iana",extensions:["ivu"]},"application/vnd.ims.imsccv1p1":{source:"iana"},"application/vnd.ims.imsccv1p2":{source:"iana"},"application/vnd.ims.imsccv1p3":{source:"iana"},"application/vnd.ims.lis.v2.result+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolconsumerprofile+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolproxy+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolproxy.id+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolsettings+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolsettings.simple+json":{source:"iana",compressible:!0},"application/vnd.informedcontrol.rms+xml":{source:"iana",compressible:!0},"application/vnd.informix-visionary":{source:"iana"},"application/vnd.infotech.project":{source:"iana"},"application/vnd.infotech.project+xml":{source:"iana",compressible:!0},"application/vnd.innopath.wamp.notification":{source:"iana"},"application/vnd.insors.igm":{source:"iana",extensions:["igm"]},"application/vnd.intercon.formnet":{source:"iana",extensions:["xpw","xpx"]},"application/vnd.intergeo":{source:"iana",extensions:["i2g"]},"application/vnd.intertrust.digibox":{source:"iana"},"application/vnd.intertrust.nncp":{source:"iana"},"application/vnd.intu.qbo":{source:"iana",extensions:["qbo"]},"application/vnd.intu.qfx":{source:"iana",extensions:["qfx"]},"application/vnd.iptc.g2.catalogitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.conceptitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.knowledgeitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.newsitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.newsmessage+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.packageitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.planningitem+xml":{source:"iana",compressible:!0},"application/vnd.ipunplugged.rcprofile":{source:"iana",extensions:["rcprofile"]},"application/vnd.irepository.package+xml":{source:"iana",compressible:!0,extensions:["irp"]},"application/vnd.is-xpr":{source:"iana",extensions:["xpr"]},"application/vnd.isac.fcs":{source:"iana",extensions:["fcs"]},"application/vnd.iso11783-10+zip":{source:"iana",compressible:!1},"application/vnd.jam":{source:"iana",extensions:["jam"]},"application/vnd.japannet-directory-service":{source:"iana"},"application/vnd.japannet-jpnstore-wakeup":{source:"iana"},"application/vnd.japannet-payment-wakeup":{source:"iana"},"application/vnd.japannet-registration":{source:"iana"},"application/vnd.japannet-registration-wakeup":{source:"iana"},"application/vnd.japannet-setstore-wakeup":{source:"iana"},"application/vnd.japannet-verification":{source:"iana"},"application/vnd.japannet-verification-wakeup":{source:"iana"},"application/vnd.jcp.javame.midlet-rms":{source:"iana",extensions:["rms"]},"application/vnd.jisp":{source:"iana",extensions:["jisp"]},"application/vnd.joost.joda-archive":{source:"iana",extensions:["joda"]},"application/vnd.jsk.isdn-ngn":{source:"iana"},"application/vnd.kahootz":{source:"iana",extensions:["ktz","ktr"]},"application/vnd.kde.karbon":{source:"iana",extensions:["karbon"]},"application/vnd.kde.kchart":{source:"iana",extensions:["chrt"]},"application/vnd.kde.kformula":{source:"iana",extensions:["kfo"]},"application/vnd.kde.kivio":{source:"iana",extensions:["flw"]},"application/vnd.kde.kontour":{source:"iana",extensions:["kon"]},"application/vnd.kde.kpresenter":{source:"iana",extensions:["kpr","kpt"]},"application/vnd.kde.kspread":{source:"iana",extensions:["ksp"]},"application/vnd.kde.kword":{source:"iana",extensions:["kwd","kwt"]},"application/vnd.kenameaapp":{source:"iana",extensions:["htke"]},"application/vnd.kidspiration":{source:"iana",extensions:["kia"]},"application/vnd.kinar":{source:"iana",extensions:["kne","knp"]},"application/vnd.koan":{source:"iana",extensions:["skp","skd","skt","skm"]},"application/vnd.kodak-descriptor":{source:"iana",extensions:["sse"]},"application/vnd.las":{source:"iana"},"application/vnd.las.las+json":{source:"iana",compressible:!0},"application/vnd.las.las+xml":{source:"iana",compressible:!0,extensions:["lasxml"]},"application/vnd.laszip":{source:"iana"},"application/vnd.leap+json":{source:"iana",compressible:!0},"application/vnd.liberty-request+xml":{source:"iana",compressible:!0},"application/vnd.llamagraphics.life-balance.desktop":{source:"iana",extensions:["lbd"]},"application/vnd.llamagraphics.life-balance.exchange+xml":{source:"iana",compressible:!0,extensions:["lbe"]},"application/vnd.logipipe.circuit+zip":{source:"iana",compressible:!1},"application/vnd.loom":{source:"iana"},"application/vnd.lotus-1-2-3":{source:"iana",extensions:["123"]},"application/vnd.lotus-approach":{source:"iana",extensions:["apr"]},"application/vnd.lotus-freelance":{source:"iana",extensions:["pre"]},"application/vnd.lotus-notes":{source:"iana",extensions:["nsf"]},"application/vnd.lotus-organizer":{source:"iana",extensions:["org"]},"application/vnd.lotus-screencam":{source:"iana",extensions:["scm"]},"application/vnd.lotus-wordpro":{source:"iana",extensions:["lwp"]},"application/vnd.macports.portpkg":{source:"iana",extensions:["portpkg"]},"application/vnd.mapbox-vector-tile":{source:"iana",extensions:["mvt"]},"application/vnd.marlin.drm.actiontoken+xml":{source:"iana",compressible:!0},"application/vnd.marlin.drm.conftoken+xml":{source:"iana",compressible:!0},"application/vnd.marlin.drm.license+xml":{source:"iana",compressible:!0},"application/vnd.marlin.drm.mdcf":{source:"iana"},"application/vnd.mason+json":{source:"iana",compressible:!0},"application/vnd.maxar.archive.3tz+zip":{source:"iana",compressible:!1},"application/vnd.maxmind.maxmind-db":{source:"iana"},"application/vnd.mcd":{source:"iana",extensions:["mcd"]},"application/vnd.medcalcdata":{source:"iana",extensions:["mc1"]},"application/vnd.mediastation.cdkey":{source:"iana",extensions:["cdkey"]},"application/vnd.meridian-slingshot":{source:"iana"},"application/vnd.mfer":{source:"iana",extensions:["mwf"]},"application/vnd.mfmp":{source:"iana",extensions:["mfm"]},"application/vnd.micro+json":{source:"iana",compressible:!0},"application/vnd.micrografx.flo":{source:"iana",extensions:["flo"]},"application/vnd.micrografx.igx":{source:"iana",extensions:["igx"]},"application/vnd.microsoft.portable-executable":{source:"iana"},"application/vnd.microsoft.windows.thumbnail-cache":{source:"iana"},"application/vnd.miele+json":{source:"iana",compressible:!0},"application/vnd.mif":{source:"iana",extensions:["mif"]},"application/vnd.minisoft-hp3000-save":{source:"iana"},"application/vnd.mitsubishi.misty-guard.trustweb":{source:"iana"},"application/vnd.mobius.daf":{source:"iana",extensions:["daf"]},"application/vnd.mobius.dis":{source:"iana",extensions:["dis"]},"application/vnd.mobius.mbk":{source:"iana",extensions:["mbk"]},"application/vnd.mobius.mqy":{source:"iana",extensions:["mqy"]},"application/vnd.mobius.msl":{source:"iana",extensions:["msl"]},"application/vnd.mobius.plc":{source:"iana",extensions:["plc"]},"application/vnd.mobius.txf":{source:"iana",extensions:["txf"]},"application/vnd.mophun.application":{source:"iana",extensions:["mpn"]},"application/vnd.mophun.certificate":{source:"iana",extensions:["mpc"]},"application/vnd.motorola.flexsuite":{source:"iana"},"application/vnd.motorola.flexsuite.adsi":{source:"iana"},"application/vnd.motorola.flexsuite.fis":{source:"iana"},"application/vnd.motorola.flexsuite.gotap":{source:"iana"},"application/vnd.motorola.flexsuite.kmr":{source:"iana"},"application/vnd.motorola.flexsuite.ttc":{source:"iana"},"application/vnd.motorola.flexsuite.wem":{source:"iana"},"application/vnd.motorola.iprm":{source:"iana"},"application/vnd.mozilla.xul+xml":{source:"iana",compressible:!0,extensions:["xul"]},"application/vnd.ms-3mfdocument":{source:"iana"},"application/vnd.ms-artgalry":{source:"iana",extensions:["cil"]},"application/vnd.ms-asf":{source:"iana"},"application/vnd.ms-cab-compressed":{source:"iana",extensions:["cab"]},"application/vnd.ms-color.iccprofile":{source:"apache"},"application/vnd.ms-excel":{source:"iana",compressible:!1,extensions:["xls","xlm","xla","xlc","xlt","xlw"]},"application/vnd.ms-excel.addin.macroenabled.12":{source:"iana",extensions:["xlam"]},"application/vnd.ms-excel.sheet.binary.macroenabled.12":{source:"iana",extensions:["xlsb"]},"application/vnd.ms-excel.sheet.macroenabled.12":{source:"iana",extensions:["xlsm"]},"application/vnd.ms-excel.template.macroenabled.12":{source:"iana",extensions:["xltm"]},"application/vnd.ms-fontobject":{source:"iana",compressible:!0,extensions:["eot"]},"application/vnd.ms-htmlhelp":{source:"iana",extensions:["chm"]},"application/vnd.ms-ims":{source:"iana",extensions:["ims"]},"application/vnd.ms-lrm":{source:"iana",extensions:["lrm"]},"application/vnd.ms-office.activex+xml":{source:"iana",compressible:!0},"application/vnd.ms-officetheme":{source:"iana",extensions:["thmx"]},"application/vnd.ms-opentype":{source:"apache",compressible:!0},"application/vnd.ms-outlook":{compressible:!1,extensions:["msg"]},"application/vnd.ms-package.obfuscated-opentype":{source:"apache"},"application/vnd.ms-pki.seccat":{source:"apache",extensions:["cat"]},"application/vnd.ms-pki.stl":{source:"apache",extensions:["stl"]},"application/vnd.ms-playready.initiator+xml":{source:"iana",compressible:!0},"application/vnd.ms-powerpoint":{source:"iana",compressible:!1,extensions:["ppt","pps","pot"]},"application/vnd.ms-powerpoint.addin.macroenabled.12":{source:"iana",extensions:["ppam"]},"application/vnd.ms-powerpoint.presentation.macroenabled.12":{source:"iana",extensions:["pptm"]},"application/vnd.ms-powerpoint.slide.macroenabled.12":{source:"iana",extensions:["sldm"]},"application/vnd.ms-powerpoint.slideshow.macroenabled.12":{source:"iana",extensions:["ppsm"]},"application/vnd.ms-powerpoint.template.macroenabled.12":{source:"iana",extensions:["potm"]},"application/vnd.ms-printdevicecapabilities+xml":{source:"iana",compressible:!0},"application/vnd.ms-printing.printticket+xml":{source:"apache",compressible:!0},"application/vnd.ms-printschematicket+xml":{source:"iana",compressible:!0},"application/vnd.ms-project":{source:"iana",extensions:["mpp","mpt"]},"application/vnd.ms-tnef":{source:"iana"},"application/vnd.ms-windows.devicepairing":{source:"iana"},"application/vnd.ms-windows.nwprinting.oob":{source:"iana"},"application/vnd.ms-windows.printerpairing":{source:"iana"},"application/vnd.ms-windows.wsd.oob":{source:"iana"},"application/vnd.ms-wmdrm.lic-chlg-req":{source:"iana"},"application/vnd.ms-wmdrm.lic-resp":{source:"iana"},"application/vnd.ms-wmdrm.meter-chlg-req":{source:"iana"},"application/vnd.ms-wmdrm.meter-resp":{source:"iana"},"application/vnd.ms-word.document.macroenabled.12":{source:"iana",extensions:["docm"]},"application/vnd.ms-word.template.macroenabled.12":{source:"iana",extensions:["dotm"]},"application/vnd.ms-works":{source:"iana",extensions:["wps","wks","wcm","wdb"]},"application/vnd.ms-wpl":{source:"iana",extensions:["wpl"]},"application/vnd.ms-xpsdocument":{source:"iana",compressible:!1,extensions:["xps"]},"application/vnd.msa-disk-image":{source:"iana"},"application/vnd.mseq":{source:"iana",extensions:["mseq"]},"application/vnd.msign":{source:"iana"},"application/vnd.multiad.creator":{source:"iana"},"application/vnd.multiad.creator.cif":{source:"iana"},"application/vnd.music-niff":{source:"iana"},"application/vnd.musician":{source:"iana",extensions:["mus"]},"application/vnd.muvee.style":{source:"iana",extensions:["msty"]},"application/vnd.mynfc":{source:"iana",extensions:["taglet"]},"application/vnd.nacamar.ybrid+json":{source:"iana",compressible:!0},"application/vnd.ncd.control":{source:"iana"},"application/vnd.ncd.reference":{source:"iana"},"application/vnd.nearst.inv+json":{source:"iana",compressible:!0},"application/vnd.nebumind.line":{source:"iana"},"application/vnd.nervana":{source:"iana"},"application/vnd.netfpx":{source:"iana"},"application/vnd.neurolanguage.nlu":{source:"iana",extensions:["nlu"]},"application/vnd.nimn":{source:"iana"},"application/vnd.nintendo.nitro.rom":{source:"iana"},"application/vnd.nintendo.snes.rom":{source:"iana"},"application/vnd.nitf":{source:"iana",extensions:["ntf","nitf"]},"application/vnd.noblenet-directory":{source:"iana",extensions:["nnd"]},"application/vnd.noblenet-sealer":{source:"iana",extensions:["nns"]},"application/vnd.noblenet-web":{source:"iana",extensions:["nnw"]},"application/vnd.nokia.catalogs":{source:"iana"},"application/vnd.nokia.conml+wbxml":{source:"iana"},"application/vnd.nokia.conml+xml":{source:"iana",compressible:!0},"application/vnd.nokia.iptv.config+xml":{source:"iana",compressible:!0},"application/vnd.nokia.isds-radio-presets":{source:"iana"},"application/vnd.nokia.landmark+wbxml":{source:"iana"},"application/vnd.nokia.landmark+xml":{source:"iana",compressible:!0},"application/vnd.nokia.landmarkcollection+xml":{source:"iana",compressible:!0},"application/vnd.nokia.n-gage.ac+xml":{source:"iana",compressible:!0,extensions:["ac"]},"application/vnd.nokia.n-gage.data":{source:"iana",extensions:["ngdat"]},"application/vnd.nokia.n-gage.symbian.install":{source:"iana",extensions:["n-gage"]},"application/vnd.nokia.ncd":{source:"iana"},"application/vnd.nokia.pcd+wbxml":{source:"iana"},"application/vnd.nokia.pcd+xml":{source:"iana",compressible:!0},"application/vnd.nokia.radio-preset":{source:"iana",extensions:["rpst"]},"application/vnd.nokia.radio-presets":{source:"iana",extensions:["rpss"]},"application/vnd.novadigm.edm":{source:"iana",extensions:["edm"]},"application/vnd.novadigm.edx":{source:"iana",extensions:["edx"]},"application/vnd.novadigm.ext":{source:"iana",extensions:["ext"]},"application/vnd.ntt-local.content-share":{source:"iana"},"application/vnd.ntt-local.file-transfer":{source:"iana"},"application/vnd.ntt-local.ogw_remote-access":{source:"iana"},"application/vnd.ntt-local.sip-ta_remote":{source:"iana"},"application/vnd.ntt-local.sip-ta_tcp_stream":{source:"iana"},"application/vnd.oasis.opendocument.chart":{source:"iana",extensions:["odc"]},"application/vnd.oasis.opendocument.chart-template":{source:"iana",extensions:["otc"]},"application/vnd.oasis.opendocument.database":{source:"iana",extensions:["odb"]},"application/vnd.oasis.opendocument.formula":{source:"iana",extensions:["odf"]},"application/vnd.oasis.opendocument.formula-template":{source:"iana",extensions:["odft"]},"application/vnd.oasis.opendocument.graphics":{source:"iana",compressible:!1,extensions:["odg"]},"application/vnd.oasis.opendocument.graphics-template":{source:"iana",extensions:["otg"]},"application/vnd.oasis.opendocument.image":{source:"iana",extensions:["odi"]},"application/vnd.oasis.opendocument.image-template":{source:"iana",extensions:["oti"]},"application/vnd.oasis.opendocument.presentation":{source:"iana",compressible:!1,extensions:["odp"]},"application/vnd.oasis.opendocument.presentation-template":{source:"iana",extensions:["otp"]},"application/vnd.oasis.opendocument.spreadsheet":{source:"iana",compressible:!1,extensions:["ods"]},"application/vnd.oasis.opendocument.spreadsheet-template":{source:"iana",extensions:["ots"]},"application/vnd.oasis.opendocument.text":{source:"iana",compressible:!1,extensions:["odt"]},"application/vnd.oasis.opendocument.text-master":{source:"iana",extensions:["odm"]},"application/vnd.oasis.opendocument.text-template":{source:"iana",extensions:["ott"]},"application/vnd.oasis.opendocument.text-web":{source:"iana",extensions:["oth"]},"application/vnd.obn":{source:"iana"},"application/vnd.ocf+cbor":{source:"iana"},"application/vnd.oci.image.manifest.v1+json":{source:"iana",compressible:!0},"application/vnd.oftn.l10n+json":{source:"iana",compressible:!0},"application/vnd.oipf.contentaccessdownload+xml":{source:"iana",compressible:!0},"application/vnd.oipf.contentaccessstreaming+xml":{source:"iana",compressible:!0},"application/vnd.oipf.cspg-hexbinary":{source:"iana"},"application/vnd.oipf.dae.svg+xml":{source:"iana",compressible:!0},"application/vnd.oipf.dae.xhtml+xml":{source:"iana",compressible:!0},"application/vnd.oipf.mippvcontrolmessage+xml":{source:"iana",compressible:!0},"application/vnd.oipf.pae.gem":{source:"iana"},"application/vnd.oipf.spdiscovery+xml":{source:"iana",compressible:!0},"application/vnd.oipf.spdlist+xml":{source:"iana",compressible:!0},"application/vnd.oipf.ueprofile+xml":{source:"iana",compressible:!0},"application/vnd.oipf.userprofile+xml":{source:"iana",compressible:!0},"application/vnd.olpc-sugar":{source:"iana",extensions:["xo"]},"application/vnd.oma-scws-config":{source:"iana"},"application/vnd.oma-scws-http-request":{source:"iana"},"application/vnd.oma-scws-http-response":{source:"iana"},"application/vnd.oma.bcast.associated-procedure-parameter+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.drm-trigger+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.imd+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.ltkm":{source:"iana"},"application/vnd.oma.bcast.notification+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.provisioningtrigger":{source:"iana"},"application/vnd.oma.bcast.sgboot":{source:"iana"},"application/vnd.oma.bcast.sgdd+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.sgdu":{source:"iana"},"application/vnd.oma.bcast.simple-symbol-container":{source:"iana"},"application/vnd.oma.bcast.smartcard-trigger+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.sprov+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.stkm":{source:"iana"},"application/vnd.oma.cab-address-book+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-feature-handler+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-pcc+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-subs-invite+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-user-prefs+xml":{source:"iana",compressible:!0},"application/vnd.oma.dcd":{source:"iana"},"application/vnd.oma.dcdc":{source:"iana"},"application/vnd.oma.dd2+xml":{source:"iana",compressible:!0,extensions:["dd2"]},"application/vnd.oma.drm.risd+xml":{source:"iana",compressible:!0},"application/vnd.oma.group-usage-list+xml":{source:"iana",compressible:!0},"application/vnd.oma.lwm2m+cbor":{source:"iana"},"application/vnd.oma.lwm2m+json":{source:"iana",compressible:!0},"application/vnd.oma.lwm2m+tlv":{source:"iana"},"application/vnd.oma.pal+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.detailed-progress-report+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.final-report+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.groups+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.invocation-descriptor+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.optimized-progress-report+xml":{source:"iana",compressible:!0},"application/vnd.oma.push":{source:"iana"},"application/vnd.oma.scidm.messages+xml":{source:"iana",compressible:!0},"application/vnd.oma.xcap-directory+xml":{source:"iana",compressible:!0},"application/vnd.omads-email+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.omads-file+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.omads-folder+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.omaloc-supl-init":{source:"iana"},"application/vnd.onepager":{source:"iana"},"application/vnd.onepagertamp":{source:"iana"},"application/vnd.onepagertamx":{source:"iana"},"application/vnd.onepagertat":{source:"iana"},"application/vnd.onepagertatp":{source:"iana"},"application/vnd.onepagertatx":{source:"iana"},"application/vnd.openblox.game+xml":{source:"iana",compressible:!0,extensions:["obgx"]},"application/vnd.openblox.game-binary":{source:"iana"},"application/vnd.openeye.oeb":{source:"iana"},"application/vnd.openofficeorg.extension":{source:"apache",extensions:["oxt"]},"application/vnd.openstreetmap.data+xml":{source:"iana",compressible:!0,extensions:["osm"]},"application/vnd.opentimestamps.ots":{source:"iana"},"application/vnd.openxmlformats-officedocument.custom-properties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.customxmlproperties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawing+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.chart+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.extended-properties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.comments+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.presentation":{source:"iana",compressible:!1,extensions:["pptx"]},"application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.presprops+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slide":{source:"iana",extensions:["sldx"]},"application/vnd.openxmlformats-officedocument.presentationml.slide+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slideshow":{source:"iana",extensions:["ppsx"]},"application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.tags+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.template":{source:"iana",extensions:["potx"]},"application/vnd.openxmlformats-officedocument.presentationml.template.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{source:"iana",compressible:!1,extensions:["xlsx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.template":{source:"iana",extensions:["xltx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.theme+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.themeoverride+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.vmldrawing":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.document":{source:"iana",compressible:!1,extensions:["docx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.template":{source:"iana",extensions:["dotx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-package.core-properties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-package.relationships+xml":{source:"iana",compressible:!0},"application/vnd.oracle.resource+json":{source:"iana",compressible:!0},"application/vnd.orange.indata":{source:"iana"},"application/vnd.osa.netdeploy":{source:"iana"},"application/vnd.osgeo.mapguide.package":{source:"iana",extensions:["mgp"]},"application/vnd.osgi.bundle":{source:"iana"},"application/vnd.osgi.dp":{source:"iana",extensions:["dp"]},"application/vnd.osgi.subsystem":{source:"iana",extensions:["esa"]},"application/vnd.otps.ct-kip+xml":{source:"iana",compressible:!0},"application/vnd.oxli.countgraph":{source:"iana"},"application/vnd.pagerduty+json":{source:"iana",compressible:!0},"application/vnd.palm":{source:"iana",extensions:["pdb","pqa","oprc"]},"application/vnd.panoply":{source:"iana"},"application/vnd.paos.xml":{source:"iana"},"application/vnd.patentdive":{source:"iana"},"application/vnd.patientecommsdoc":{source:"iana"},"application/vnd.pawaafile":{source:"iana",extensions:["paw"]},"application/vnd.pcos":{source:"iana"},"application/vnd.pg.format":{source:"iana",extensions:["str"]},"application/vnd.pg.osasli":{source:"iana",extensions:["ei6"]},"application/vnd.piaccess.application-licence":{source:"iana"},"application/vnd.picsel":{source:"iana",extensions:["efif"]},"application/vnd.pmi.widget":{source:"iana",extensions:["wg"]},"application/vnd.poc.group-advertisement+xml":{source:"iana",compressible:!0},"application/vnd.pocketlearn":{source:"iana",extensions:["plf"]},"application/vnd.powerbuilder6":{source:"iana",extensions:["pbd"]},"application/vnd.powerbuilder6-s":{source:"iana"},"application/vnd.powerbuilder7":{source:"iana"},"application/vnd.powerbuilder7-s":{source:"iana"},"application/vnd.powerbuilder75":{source:"iana"},"application/vnd.powerbuilder75-s":{source:"iana"},"application/vnd.preminet":{source:"iana"},"application/vnd.previewsystems.box":{source:"iana",extensions:["box"]},"application/vnd.proteus.magazine":{source:"iana",extensions:["mgz"]},"application/vnd.psfs":{source:"iana"},"application/vnd.publishare-delta-tree":{source:"iana",extensions:["qps"]},"application/vnd.pvi.ptid1":{source:"iana",extensions:["ptid"]},"application/vnd.pwg-multiplexed":{source:"iana"},"application/vnd.pwg-xhtml-print+xml":{source:"iana",compressible:!0},"application/vnd.qualcomm.brew-app-res":{source:"iana"},"application/vnd.quarantainenet":{source:"iana"},"application/vnd.quark.quarkxpress":{source:"iana",extensions:["qxd","qxt","qwd","qwt","qxl","qxb"]},"application/vnd.quobject-quoxdocument":{source:"iana"},"application/vnd.radisys.moml+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-conf+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-conn+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-dialog+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-stream+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-conf+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-base+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-fax-detect+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-fax-sendrecv+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-group+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-speech+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-transform+xml":{source:"iana",compressible:!0},"application/vnd.rainstor.data":{source:"iana"},"application/vnd.rapid":{source:"iana"},"application/vnd.rar":{source:"iana",extensions:["rar"]},"application/vnd.realvnc.bed":{source:"iana",extensions:["bed"]},"application/vnd.recordare.musicxml":{source:"iana",extensions:["mxl"]},"application/vnd.recordare.musicxml+xml":{source:"iana",compressible:!0,extensions:["musicxml"]},"application/vnd.renlearn.rlprint":{source:"iana"},"application/vnd.resilient.logic":{source:"iana"},"application/vnd.restful+json":{source:"iana",compressible:!0},"application/vnd.rig.cryptonote":{source:"iana",extensions:["cryptonote"]},"application/vnd.rim.cod":{source:"apache",extensions:["cod"]},"application/vnd.rn-realmedia":{source:"apache",extensions:["rm"]},"application/vnd.rn-realmedia-vbr":{source:"apache",extensions:["rmvb"]},"application/vnd.route66.link66+xml":{source:"iana",compressible:!0,extensions:["link66"]},"application/vnd.rs-274x":{source:"iana"},"application/vnd.ruckus.download":{source:"iana"},"application/vnd.s3sms":{source:"iana"},"application/vnd.sailingtracker.track":{source:"iana",extensions:["st"]},"application/vnd.sar":{source:"iana"},"application/vnd.sbm.cid":{source:"iana"},"application/vnd.sbm.mid2":{source:"iana"},"application/vnd.scribus":{source:"iana"},"application/vnd.sealed.3df":{source:"iana"},"application/vnd.sealed.csf":{source:"iana"},"application/vnd.sealed.doc":{source:"iana"},"application/vnd.sealed.eml":{source:"iana"},"application/vnd.sealed.mht":{source:"iana"},"application/vnd.sealed.net":{source:"iana"},"application/vnd.sealed.ppt":{source:"iana"},"application/vnd.sealed.tiff":{source:"iana"},"application/vnd.sealed.xls":{source:"iana"},"application/vnd.sealedmedia.softseal.html":{source:"iana"},"application/vnd.sealedmedia.softseal.pdf":{source:"iana"},"application/vnd.seemail":{source:"iana",extensions:["see"]},"application/vnd.seis+json":{source:"iana",compressible:!0},"application/vnd.sema":{source:"iana",extensions:["sema"]},"application/vnd.semd":{source:"iana",extensions:["semd"]},"application/vnd.semf":{source:"iana",extensions:["semf"]},"application/vnd.shade-save-file":{source:"iana"},"application/vnd.shana.informed.formdata":{source:"iana",extensions:["ifm"]},"application/vnd.shana.informed.formtemplate":{source:"iana",extensions:["itp"]},"application/vnd.shana.informed.interchange":{source:"iana",extensions:["iif"]},"application/vnd.shana.informed.package":{source:"iana",extensions:["ipk"]},"application/vnd.shootproof+json":{source:"iana",compressible:!0},"application/vnd.shopkick+json":{source:"iana",compressible:!0},"application/vnd.shp":{source:"iana"},"application/vnd.shx":{source:"iana"},"application/vnd.sigrok.session":{source:"iana"},"application/vnd.simtech-mindmapper":{source:"iana",extensions:["twd","twds"]},"application/vnd.siren+json":{source:"iana",compressible:!0},"application/vnd.smaf":{source:"iana",extensions:["mmf"]},"application/vnd.smart.notebook":{source:"iana"},"application/vnd.smart.teacher":{source:"iana",extensions:["teacher"]},"application/vnd.snesdev-page-table":{source:"iana"},"application/vnd.software602.filler.form+xml":{source:"iana",compressible:!0,extensions:["fo"]},"application/vnd.software602.filler.form-xml-zip":{source:"iana"},"application/vnd.solent.sdkm+xml":{source:"iana",compressible:!0,extensions:["sdkm","sdkd"]},"application/vnd.spotfire.dxp":{source:"iana",extensions:["dxp"]},"application/vnd.spotfire.sfs":{source:"iana",extensions:["sfs"]},"application/vnd.sqlite3":{source:"iana"},"application/vnd.sss-cod":{source:"iana"},"application/vnd.sss-dtf":{source:"iana"},"application/vnd.sss-ntf":{source:"iana"},"application/vnd.stardivision.calc":{source:"apache",extensions:["sdc"]},"application/vnd.stardivision.draw":{source:"apache",extensions:["sda"]},"application/vnd.stardivision.impress":{source:"apache",extensions:["sdd"]},"application/vnd.stardivision.math":{source:"apache",extensions:["smf"]},"application/vnd.stardivision.writer":{source:"apache",extensions:["sdw","vor"]},"application/vnd.stardivision.writer-global":{source:"apache",extensions:["sgl"]},"application/vnd.stepmania.package":{source:"iana",extensions:["smzip"]},"application/vnd.stepmania.stepchart":{source:"iana",extensions:["sm"]},"application/vnd.street-stream":{source:"iana"},"application/vnd.sun.wadl+xml":{source:"iana",compressible:!0,extensions:["wadl"]},"application/vnd.sun.xml.calc":{source:"apache",extensions:["sxc"]},"application/vnd.sun.xml.calc.template":{source:"apache",extensions:["stc"]},"application/vnd.sun.xml.draw":{source:"apache",extensions:["sxd"]},"application/vnd.sun.xml.draw.template":{source:"apache",extensions:["std"]},"application/vnd.sun.xml.impress":{source:"apache",extensions:["sxi"]},"application/vnd.sun.xml.impress.template":{source:"apache",extensions:["sti"]},"application/vnd.sun.xml.math":{source:"apache",extensions:["sxm"]},"application/vnd.sun.xml.writer":{source:"apache",extensions:["sxw"]},"application/vnd.sun.xml.writer.global":{source:"apache",extensions:["sxg"]},"application/vnd.sun.xml.writer.template":{source:"apache",extensions:["stw"]},"application/vnd.sus-calendar":{source:"iana",extensions:["sus","susp"]},"application/vnd.svd":{source:"iana",extensions:["svd"]},"application/vnd.swiftview-ics":{source:"iana"},"application/vnd.sycle+xml":{source:"iana",compressible:!0},"application/vnd.syft+json":{source:"iana",compressible:!0},"application/vnd.symbian.install":{source:"apache",extensions:["sis","sisx"]},"application/vnd.syncml+xml":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["xsm"]},"application/vnd.syncml.dm+wbxml":{source:"iana",charset:"UTF-8",extensions:["bdm"]},"application/vnd.syncml.dm+xml":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["xdm"]},"application/vnd.syncml.dm.notification":{source:"iana"},"application/vnd.syncml.dmddf+wbxml":{source:"iana"},"application/vnd.syncml.dmddf+xml":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["ddf"]},"application/vnd.syncml.dmtnds+wbxml":{source:"iana"},"application/vnd.syncml.dmtnds+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.syncml.ds.notification":{source:"iana"},"application/vnd.tableschema+json":{source:"iana",compressible:!0},"application/vnd.tao.intent-module-archive":{source:"iana",extensions:["tao"]},"application/vnd.tcpdump.pcap":{source:"iana",extensions:["pcap","cap","dmp"]},"application/vnd.think-cell.ppttc+json":{source:"iana",compressible:!0},"application/vnd.tmd.mediaflex.api+xml":{source:"iana",compressible:!0},"application/vnd.tml":{source:"iana"},"application/vnd.tmobile-livetv":{source:"iana",extensions:["tmo"]},"application/vnd.tri.onesource":{source:"iana"},"application/vnd.trid.tpt":{source:"iana",extensions:["tpt"]},"application/vnd.triscape.mxs":{source:"iana",extensions:["mxs"]},"application/vnd.trueapp":{source:"iana",extensions:["tra"]},"application/vnd.truedoc":{source:"iana"},"application/vnd.ubisoft.webplayer":{source:"iana"},"application/vnd.ufdl":{source:"iana",extensions:["ufd","ufdl"]},"application/vnd.uiq.theme":{source:"iana",extensions:["utz"]},"application/vnd.umajin":{source:"iana",extensions:["umj"]},"application/vnd.unity":{source:"iana",extensions:["unityweb"]},"application/vnd.uoml+xml":{source:"iana",compressible:!0,extensions:["uoml"]},"application/vnd.uplanet.alert":{source:"iana"},"application/vnd.uplanet.alert-wbxml":{source:"iana"},"application/vnd.uplanet.bearer-choice":{source:"iana"},"application/vnd.uplanet.bearer-choice-wbxml":{source:"iana"},"application/vnd.uplanet.cacheop":{source:"iana"},"application/vnd.uplanet.cacheop-wbxml":{source:"iana"},"application/vnd.uplanet.channel":{source:"iana"},"application/vnd.uplanet.channel-wbxml":{source:"iana"},"application/vnd.uplanet.list":{source:"iana"},"application/vnd.uplanet.list-wbxml":{source:"iana"},"application/vnd.uplanet.listcmd":{source:"iana"},"application/vnd.uplanet.listcmd-wbxml":{source:"iana"},"application/vnd.uplanet.signal":{source:"iana"},"application/vnd.uri-map":{source:"iana"},"application/vnd.valve.source.material":{source:"iana"},"application/vnd.vcx":{source:"iana",extensions:["vcx"]},"application/vnd.vd-study":{source:"iana"},"application/vnd.vectorworks":{source:"iana"},"application/vnd.vel+json":{source:"iana",compressible:!0},"application/vnd.verimatrix.vcas":{source:"iana"},"application/vnd.veritone.aion+json":{source:"iana",compressible:!0},"application/vnd.veryant.thin":{source:"iana"},"application/vnd.ves.encrypted":{source:"iana"},"application/vnd.vidsoft.vidconference":{source:"iana"},"application/vnd.visio":{source:"iana",extensions:["vsd","vst","vss","vsw"]},"application/vnd.visionary":{source:"iana",extensions:["vis"]},"application/vnd.vividence.scriptfile":{source:"iana"},"application/vnd.vsf":{source:"iana",extensions:["vsf"]},"application/vnd.wap.sic":{source:"iana"},"application/vnd.wap.slc":{source:"iana"},"application/vnd.wap.wbxml":{source:"iana",charset:"UTF-8",extensions:["wbxml"]},"application/vnd.wap.wmlc":{source:"iana",extensions:["wmlc"]},"application/vnd.wap.wmlscriptc":{source:"iana",extensions:["wmlsc"]},"application/vnd.webturbo":{source:"iana",extensions:["wtb"]},"application/vnd.wfa.dpp":{source:"iana"},"application/vnd.wfa.p2p":{source:"iana"},"application/vnd.wfa.wsc":{source:"iana"},"application/vnd.windows.devicepairing":{source:"iana"},"application/vnd.wmc":{source:"iana"},"application/vnd.wmf.bootstrap":{source:"iana"},"application/vnd.wolfram.mathematica":{source:"iana"},"application/vnd.wolfram.mathematica.package":{source:"iana"},"application/vnd.wolfram.player":{source:"iana",extensions:["nbp"]},"application/vnd.wordperfect":{source:"iana",extensions:["wpd"]},"application/vnd.wqd":{source:"iana",extensions:["wqd"]},"application/vnd.wrq-hp3000-labelled":{source:"iana"},"application/vnd.wt.stf":{source:"iana",extensions:["stf"]},"application/vnd.wv.csp+wbxml":{source:"iana"},"application/vnd.wv.csp+xml":{source:"iana",compressible:!0},"application/vnd.wv.ssp+xml":{source:"iana",compressible:!0},"application/vnd.xacml+json":{source:"iana",compressible:!0},"application/vnd.xara":{source:"iana",extensions:["xar"]},"application/vnd.xfdl":{source:"iana",extensions:["xfdl"]},"application/vnd.xfdl.webform":{source:"iana"},"application/vnd.xmi+xml":{source:"iana",compressible:!0},"application/vnd.xmpie.cpkg":{source:"iana"},"application/vnd.xmpie.dpkg":{source:"iana"},"application/vnd.xmpie.plan":{source:"iana"},"application/vnd.xmpie.ppkg":{source:"iana"},"application/vnd.xmpie.xlim":{source:"iana"},"application/vnd.yamaha.hv-dic":{source:"iana",extensions:["hvd"]},"application/vnd.yamaha.hv-script":{source:"iana",extensions:["hvs"]},"application/vnd.yamaha.hv-voice":{source:"iana",extensions:["hvp"]},"application/vnd.yamaha.openscoreformat":{source:"iana",extensions:["osf"]},"application/vnd.yamaha.openscoreformat.osfpvg+xml":{source:"iana",compressible:!0,extensions:["osfpvg"]},"application/vnd.yamaha.remote-setup":{source:"iana"},"application/vnd.yamaha.smaf-audio":{source:"iana",extensions:["saf"]},"application/vnd.yamaha.smaf-phrase":{source:"iana",extensions:["spf"]},"application/vnd.yamaha.through-ngn":{source:"iana"},"application/vnd.yamaha.tunnel-udpencap":{source:"iana"},"application/vnd.yaoweme":{source:"iana"},"application/vnd.yellowriver-custom-menu":{source:"iana",extensions:["cmp"]},"application/vnd.youtube.yt":{source:"iana"},"application/vnd.zul":{source:"iana",extensions:["zir","zirz"]},"application/vnd.zzazz.deck+xml":{source:"iana",compressible:!0,extensions:["zaz"]},"application/voicexml+xml":{source:"iana",compressible:!0,extensions:["vxml"]},"application/voucher-cms+json":{source:"iana",compressible:!0},"application/vq-rtcpxr":{source:"iana"},"application/wasm":{source:"iana",compressible:!0,extensions:["wasm"]},"application/watcherinfo+xml":{source:"iana",compressible:!0,extensions:["wif"]},"application/webpush-options+json":{source:"iana",compressible:!0},"application/whoispp-query":{source:"iana"},"application/whoispp-response":{source:"iana"},"application/widget":{source:"iana",extensions:["wgt"]},"application/winhlp":{source:"apache",extensions:["hlp"]},"application/wita":{source:"iana"},"application/wordperfect5.1":{source:"iana"},"application/wsdl+xml":{source:"iana",compressible:!0,extensions:["wsdl"]},"application/wspolicy+xml":{source:"iana",compressible:!0,extensions:["wspolicy"]},"application/x-7z-compressed":{source:"apache",compressible:!1,extensions:["7z"]},"application/x-abiword":{source:"apache",extensions:["abw"]},"application/x-ace-compressed":{source:"apache",extensions:["ace"]},"application/x-amf":{source:"apache"},"application/x-apple-diskimage":{source:"apache",extensions:["dmg"]},"application/x-arj":{compressible:!1,extensions:["arj"]},"application/x-authorware-bin":{source:"apache",extensions:["aab","x32","u32","vox"]},"application/x-authorware-map":{source:"apache",extensions:["aam"]},"application/x-authorware-seg":{source:"apache",extensions:["aas"]},"application/x-bcpio":{source:"apache",extensions:["bcpio"]},"application/x-bdoc":{compressible:!1,extensions:["bdoc"]},"application/x-bittorrent":{source:"apache",extensions:["torrent"]},"application/x-blorb":{source:"apache",extensions:["blb","blorb"]},"application/x-bzip":{source:"apache",compressible:!1,extensions:["bz"]},"application/x-bzip2":{source:"apache",compressible:!1,extensions:["bz2","boz"]},"application/x-cbr":{source:"apache",extensions:["cbr","cba","cbt","cbz","cb7"]},"application/x-cdlink":{source:"apache",extensions:["vcd"]},"application/x-cfs-compressed":{source:"apache",extensions:["cfs"]},"application/x-chat":{source:"apache",extensions:["chat"]},"application/x-chess-pgn":{source:"apache",extensions:["pgn"]},"application/x-chrome-extension":{extensions:["crx"]},"application/x-cocoa":{source:"nginx",extensions:["cco"]},"application/x-compress":{source:"apache"},"application/x-conference":{source:"apache",extensions:["nsc"]},"application/x-cpio":{source:"apache",extensions:["cpio"]},"application/x-csh":{source:"apache",extensions:["csh"]},"application/x-deb":{compressible:!1},"application/x-debian-package":{source:"apache",extensions:["deb","udeb"]},"application/x-dgc-compressed":{source:"apache",extensions:["dgc"]},"application/x-director":{source:"apache",extensions:["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"]},"application/x-doom":{source:"apache",extensions:["wad"]},"application/x-dtbncx+xml":{source:"apache",compressible:!0,extensions:["ncx"]},"application/x-dtbook+xml":{source:"apache",compressible:!0,extensions:["dtb"]},"application/x-dtbresource+xml":{source:"apache",compressible:!0,extensions:["res"]},"application/x-dvi":{source:"apache",compressible:!1,extensions:["dvi"]},"application/x-envoy":{source:"apache",extensions:["evy"]},"application/x-eva":{source:"apache",extensions:["eva"]},"application/x-font-bdf":{source:"apache",extensions:["bdf"]},"application/x-font-dos":{source:"apache"},"application/x-font-framemaker":{source:"apache"},"application/x-font-ghostscript":{source:"apache",extensions:["gsf"]},"application/x-font-libgrx":{source:"apache"},"application/x-font-linux-psf":{source:"apache",extensions:["psf"]},"application/x-font-pcf":{source:"apache",extensions:["pcf"]},"application/x-font-snf":{source:"apache",extensions:["snf"]},"application/x-font-speedo":{source:"apache"},"application/x-font-sunos-news":{source:"apache"},"application/x-font-type1":{source:"apache",extensions:["pfa","pfb","pfm","afm"]},"application/x-font-vfont":{source:"apache"},"application/x-freearc":{source:"apache",extensions:["arc"]},"application/x-futuresplash":{source:"apache",extensions:["spl"]},"application/x-gca-compressed":{source:"apache",extensions:["gca"]},"application/x-glulx":{source:"apache",extensions:["ulx"]},"application/x-gnumeric":{source:"apache",extensions:["gnumeric"]},"application/x-gramps-xml":{source:"apache",extensions:["gramps"]},"application/x-gtar":{source:"apache",extensions:["gtar"]},"application/x-gzip":{source:"apache"},"application/x-hdf":{source:"apache",extensions:["hdf"]},"application/x-httpd-php":{compressible:!0,extensions:["php"]},"application/x-install-instructions":{source:"apache",extensions:["install"]},"application/x-iso9660-image":{source:"apache",extensions:["iso"]},"application/x-iwork-keynote-sffkey":{extensions:["key"]},"application/x-iwork-numbers-sffnumbers":{extensions:["numbers"]},"application/x-iwork-pages-sffpages":{extensions:["pages"]},"application/x-java-archive-diff":{source:"nginx",extensions:["jardiff"]},"application/x-java-jnlp-file":{source:"apache",compressible:!1,extensions:["jnlp"]},"application/x-javascript":{compressible:!0},"application/x-keepass2":{extensions:["kdbx"]},"application/x-latex":{source:"apache",compressible:!1,extensions:["latex"]},"application/x-lua-bytecode":{extensions:["luac"]},"application/x-lzh-compressed":{source:"apache",extensions:["lzh","lha"]},"application/x-makeself":{source:"nginx",extensions:["run"]},"application/x-mie":{source:"apache",extensions:["mie"]},"application/x-mobipocket-ebook":{source:"apache",extensions:["prc","mobi"]},"application/x-mpegurl":{compressible:!1},"application/x-ms-application":{source:"apache",extensions:["application"]},"application/x-ms-shortcut":{source:"apache",extensions:["lnk"]},"application/x-ms-wmd":{source:"apache",extensions:["wmd"]},"application/x-ms-wmz":{source:"apache",extensions:["wmz"]},"application/x-ms-xbap":{source:"apache",extensions:["xbap"]},"application/x-msaccess":{source:"apache",extensions:["mdb"]},"application/x-msbinder":{source:"apache",extensions:["obd"]},"application/x-mscardfile":{source:"apache",extensions:["crd"]},"application/x-msclip":{source:"apache",extensions:["clp"]},"application/x-msdos-program":{extensions:["exe"]},"application/x-msdownload":{source:"apache",extensions:["exe","dll","com","bat","msi"]},"application/x-msmediaview":{source:"apache",extensions:["mvb","m13","m14"]},"application/x-msmetafile":{source:"apache",extensions:["wmf","wmz","emf","emz"]},"application/x-msmoney":{source:"apache",extensions:["mny"]},"application/x-mspublisher":{source:"apache",extensions:["pub"]},"application/x-msschedule":{source:"apache",extensions:["scd"]},"application/x-msterminal":{source:"apache",extensions:["trm"]},"application/x-mswrite":{source:"apache",extensions:["wri"]},"application/x-netcdf":{source:"apache",extensions:["nc","cdf"]},"application/x-ns-proxy-autoconfig":{compressible:!0,extensions:["pac"]},"application/x-nzb":{source:"apache",extensions:["nzb"]},"application/x-perl":{source:"nginx",extensions:["pl","pm"]},"application/x-pilot":{source:"nginx",extensions:["prc","pdb"]},"application/x-pkcs12":{source:"apache",compressible:!1,extensions:["p12","pfx"]},"application/x-pkcs7-certificates":{source:"apache",extensions:["p7b","spc"]},"application/x-pkcs7-certreqresp":{source:"apache",extensions:["p7r"]},"application/x-pki-message":{source:"iana"},"application/x-rar-compressed":{source:"apache",compressible:!1,extensions:["rar"]},"application/x-redhat-package-manager":{source:"nginx",extensions:["rpm"]},"application/x-research-info-systems":{source:"apache",extensions:["ris"]},"application/x-sea":{source:"nginx",extensions:["sea"]},"application/x-sh":{source:"apache",compressible:!0,extensions:["sh"]},"application/x-shar":{source:"apache",extensions:["shar"]},"application/x-shockwave-flash":{source:"apache",compressible:!1,extensions:["swf"]},"application/x-silverlight-app":{source:"apache",extensions:["xap"]},"application/x-sql":{source:"apache",extensions:["sql"]},"application/x-stuffit":{source:"apache",compressible:!1,extensions:["sit"]},"application/x-stuffitx":{source:"apache",extensions:["sitx"]},"application/x-subrip":{source:"apache",extensions:["srt"]},"application/x-sv4cpio":{source:"apache",extensions:["sv4cpio"]},"application/x-sv4crc":{source:"apache",extensions:["sv4crc"]},"application/x-t3vm-image":{source:"apache",extensions:["t3"]},"application/x-tads":{source:"apache",extensions:["gam"]},"application/x-tar":{source:"apache",compressible:!0,extensions:["tar"]},"application/x-tcl":{source:"apache",extensions:["tcl","tk"]},"application/x-tex":{source:"apache",extensions:["tex"]},"application/x-tex-tfm":{source:"apache",extensions:["tfm"]},"application/x-texinfo":{source:"apache",extensions:["texinfo","texi"]},"application/x-tgif":{source:"apache",extensions:["obj"]},"application/x-ustar":{source:"apache",extensions:["ustar"]},"application/x-virtualbox-hdd":{compressible:!0,extensions:["hdd"]},"application/x-virtualbox-ova":{compressible:!0,extensions:["ova"]},"application/x-virtualbox-ovf":{compressible:!0,extensions:["ovf"]},"application/x-virtualbox-vbox":{compressible:!0,extensions:["vbox"]},"application/x-virtualbox-vbox-extpack":{compressible:!1,extensions:["vbox-extpack"]},"application/x-virtualbox-vdi":{compressible:!0,extensions:["vdi"]},"application/x-virtualbox-vhd":{compressible:!0,extensions:["vhd"]},"application/x-virtualbox-vmdk":{compressible:!0,extensions:["vmdk"]},"application/x-wais-source":{source:"apache",extensions:["src"]},"application/x-web-app-manifest+json":{compressible:!0,extensions:["webapp"]},"application/x-www-form-urlencoded":{source:"iana",compressible:!0},"application/x-x509-ca-cert":{source:"iana",extensions:["der","crt","pem"]},"application/x-x509-ca-ra-cert":{source:"iana"},"application/x-x509-next-ca-cert":{source:"iana"},"application/x-xfig":{source:"apache",extensions:["fig"]},"application/x-xliff+xml":{source:"apache",compressible:!0,extensions:["xlf"]},"application/x-xpinstall":{source:"apache",compressible:!1,extensions:["xpi"]},"application/x-xz":{source:"apache",extensions:["xz"]},"application/x-zmachine":{source:"apache",extensions:["z1","z2","z3","z4","z5","z6","z7","z8"]},"application/x400-bp":{source:"iana"},"application/xacml+xml":{source:"iana",compressible:!0},"application/xaml+xml":{source:"apache",compressible:!0,extensions:["xaml"]},"application/xcap-att+xml":{source:"iana",compressible:!0,extensions:["xav"]},"application/xcap-caps+xml":{source:"iana",compressible:!0,extensions:["xca"]},"application/xcap-diff+xml":{source:"iana",compressible:!0,extensions:["xdf"]},"application/xcap-el+xml":{source:"iana",compressible:!0,extensions:["xel"]},"application/xcap-error+xml":{source:"iana",compressible:!0},"application/xcap-ns+xml":{source:"iana",compressible:!0,extensions:["xns"]},"application/xcon-conference-info+xml":{source:"iana",compressible:!0},"application/xcon-conference-info-diff+xml":{source:"iana",compressible:!0},"application/xenc+xml":{source:"iana",compressible:!0,extensions:["xenc"]},"application/xhtml+xml":{source:"iana",compressible:!0,extensions:["xhtml","xht"]},"application/xhtml-voice+xml":{source:"apache",compressible:!0},"application/xliff+xml":{source:"iana",compressible:!0,extensions:["xlf"]},"application/xml":{source:"iana",compressible:!0,extensions:["xml","xsl","xsd","rng"]},"application/xml-dtd":{source:"iana",compressible:!0,extensions:["dtd"]},"application/xml-external-parsed-entity":{source:"iana"},"application/xml-patch+xml":{source:"iana",compressible:!0},"application/xmpp+xml":{source:"iana",compressible:!0},"application/xop+xml":{source:"iana",compressible:!0,extensions:["xop"]},"application/xproc+xml":{source:"apache",compressible:!0,extensions:["xpl"]},"application/xslt+xml":{source:"iana",compressible:!0,extensions:["xsl","xslt"]},"application/xspf+xml":{source:"apache",compressible:!0,extensions:["xspf"]},"application/xv+xml":{source:"iana",compressible:!0,extensions:["mxml","xhvml","xvml","xvm"]},"application/yang":{source:"iana",extensions:["yang"]},"application/yang-data+json":{source:"iana",compressible:!0},"application/yang-data+xml":{source:"iana",compressible:!0},"application/yang-patch+json":{source:"iana",compressible:!0},"application/yang-patch+xml":{source:"iana",compressible:!0},"application/yin+xml":{source:"iana",compressible:!0,extensions:["yin"]},"application/zip":{source:"iana",compressible:!1,extensions:["zip"]},"application/zlib":{source:"iana"},"application/zstd":{source:"iana"},"audio/1d-interleaved-parityfec":{source:"iana"},"audio/32kadpcm":{source:"iana"},"audio/3gpp":{source:"iana",compressible:!1,extensions:["3gpp"]},"audio/3gpp2":{source:"iana"},"audio/aac":{source:"iana"},"audio/ac3":{source:"iana"},"audio/adpcm":{source:"apache",extensions:["adp"]},"audio/amr":{source:"iana",extensions:["amr"]},"audio/amr-wb":{source:"iana"},"audio/amr-wb+":{source:"iana"},"audio/aptx":{source:"iana"},"audio/asc":{source:"iana"},"audio/atrac-advanced-lossless":{source:"iana"},"audio/atrac-x":{source:"iana"},"audio/atrac3":{source:"iana"},"audio/basic":{source:"iana",compressible:!1,extensions:["au","snd"]},"audio/bv16":{source:"iana"},"audio/bv32":{source:"iana"},"audio/clearmode":{source:"iana"},"audio/cn":{source:"iana"},"audio/dat12":{source:"iana"},"audio/dls":{source:"iana"},"audio/dsr-es201108":{source:"iana"},"audio/dsr-es202050":{source:"iana"},"audio/dsr-es202211":{source:"iana"},"audio/dsr-es202212":{source:"iana"},"audio/dv":{source:"iana"},"audio/dvi4":{source:"iana"},"audio/eac3":{source:"iana"},"audio/encaprtp":{source:"iana"},"audio/evrc":{source:"iana"},"audio/evrc-qcp":{source:"iana"},"audio/evrc0":{source:"iana"},"audio/evrc1":{source:"iana"},"audio/evrcb":{source:"iana"},"audio/evrcb0":{source:"iana"},"audio/evrcb1":{source:"iana"},"audio/evrcnw":{source:"iana"},"audio/evrcnw0":{source:"iana"},"audio/evrcnw1":{source:"iana"},"audio/evrcwb":{source:"iana"},"audio/evrcwb0":{source:"iana"},"audio/evrcwb1":{source:"iana"},"audio/evs":{source:"iana"},"audio/flexfec":{source:"iana"},"audio/fwdred":{source:"iana"},"audio/g711-0":{source:"iana"},"audio/g719":{source:"iana"},"audio/g722":{source:"iana"},"audio/g7221":{source:"iana"},"audio/g723":{source:"iana"},"audio/g726-16":{source:"iana"},"audio/g726-24":{source:"iana"},"audio/g726-32":{source:"iana"},"audio/g726-40":{source:"iana"},"audio/g728":{source:"iana"},"audio/g729":{source:"iana"},"audio/g7291":{source:"iana"},"audio/g729d":{source:"iana"},"audio/g729e":{source:"iana"},"audio/gsm":{source:"iana"},"audio/gsm-efr":{source:"iana"},"audio/gsm-hr-08":{source:"iana"},"audio/ilbc":{source:"iana"},"audio/ip-mr_v2.5":{source:"iana"},"audio/isac":{source:"apache"},"audio/l16":{source:"iana"},"audio/l20":{source:"iana"},"audio/l24":{source:"iana",compressible:!1},"audio/l8":{source:"iana"},"audio/lpc":{source:"iana"},"audio/melp":{source:"iana"},"audio/melp1200":{source:"iana"},"audio/melp2400":{source:"iana"},"audio/melp600":{source:"iana"},"audio/mhas":{source:"iana"},"audio/midi":{source:"apache",extensions:["mid","midi","kar","rmi"]},"audio/mobile-xmf":{source:"iana",extensions:["mxmf"]},"audio/mp3":{compressible:!1,extensions:["mp3"]},"audio/mp4":{source:"iana",compressible:!1,extensions:["m4a","mp4a"]},"audio/mp4a-latm":{source:"iana"},"audio/mpa":{source:"iana"},"audio/mpa-robust":{source:"iana"},"audio/mpeg":{source:"iana",compressible:!1,extensions:["mpga","mp2","mp2a","mp3","m2a","m3a"]},"audio/mpeg4-generic":{source:"iana"},"audio/musepack":{source:"apache"},"audio/ogg":{source:"iana",compressible:!1,extensions:["oga","ogg","spx","opus"]},"audio/opus":{source:"iana"},"audio/parityfec":{source:"iana"},"audio/pcma":{source:"iana"},"audio/pcma-wb":{source:"iana"},"audio/pcmu":{source:"iana"},"audio/pcmu-wb":{source:"iana"},"audio/prs.sid":{source:"iana"},"audio/qcelp":{source:"iana"},"audio/raptorfec":{source:"iana"},"audio/red":{source:"iana"},"audio/rtp-enc-aescm128":{source:"iana"},"audio/rtp-midi":{source:"iana"},"audio/rtploopback":{source:"iana"},"audio/rtx":{source:"iana"},"audio/s3m":{source:"apache",extensions:["s3m"]},"audio/scip":{source:"iana"},"audio/silk":{source:"apache",extensions:["sil"]},"audio/smv":{source:"iana"},"audio/smv-qcp":{source:"iana"},"audio/smv0":{source:"iana"},"audio/sofa":{source:"iana"},"audio/sp-midi":{source:"iana"},"audio/speex":{source:"iana"},"audio/t140c":{source:"iana"},"audio/t38":{source:"iana"},"audio/telephone-event":{source:"iana"},"audio/tetra_acelp":{source:"iana"},"audio/tetra_acelp_bb":{source:"iana"},"audio/tone":{source:"iana"},"audio/tsvcis":{source:"iana"},"audio/uemclip":{source:"iana"},"audio/ulpfec":{source:"iana"},"audio/usac":{source:"iana"},"audio/vdvi":{source:"iana"},"audio/vmr-wb":{source:"iana"},"audio/vnd.3gpp.iufp":{source:"iana"},"audio/vnd.4sb":{source:"iana"},"audio/vnd.audiokoz":{source:"iana"},"audio/vnd.celp":{source:"iana"},"audio/vnd.cisco.nse":{source:"iana"},"audio/vnd.cmles.radio-events":{source:"iana"},"audio/vnd.cns.anp1":{source:"iana"},"audio/vnd.cns.inf1":{source:"iana"},"audio/vnd.dece.audio":{source:"iana",extensions:["uva","uvva"]},"audio/vnd.digital-winds":{source:"iana",extensions:["eol"]},"audio/vnd.dlna.adts":{source:"iana"},"audio/vnd.dolby.heaac.1":{source:"iana"},"audio/vnd.dolby.heaac.2":{source:"iana"},"audio/vnd.dolby.mlp":{source:"iana"},"audio/vnd.dolby.mps":{source:"iana"},"audio/vnd.dolby.pl2":{source:"iana"},"audio/vnd.dolby.pl2x":{source:"iana"},"audio/vnd.dolby.pl2z":{source:"iana"},"audio/vnd.dolby.pulse.1":{source:"iana"},"audio/vnd.dra":{source:"iana",extensions:["dra"]},"audio/vnd.dts":{source:"iana",extensions:["dts"]},"audio/vnd.dts.hd":{source:"iana",extensions:["dtshd"]},"audio/vnd.dts.uhd":{source:"iana"},"audio/vnd.dvb.file":{source:"iana"},"audio/vnd.everad.plj":{source:"iana"},"audio/vnd.hns.audio":{source:"iana"},"audio/vnd.lucent.voice":{source:"iana",extensions:["lvp"]},"audio/vnd.ms-playready.media.pya":{source:"iana",extensions:["pya"]},"audio/vnd.nokia.mobile-xmf":{source:"iana"},"audio/vnd.nortel.vbk":{source:"iana"},"audio/vnd.nuera.ecelp4800":{source:"iana",extensions:["ecelp4800"]},"audio/vnd.nuera.ecelp7470":{source:"iana",extensions:["ecelp7470"]},"audio/vnd.nuera.ecelp9600":{source:"iana",extensions:["ecelp9600"]},"audio/vnd.octel.sbc":{source:"iana"},"audio/vnd.presonus.multitrack":{source:"iana"},"audio/vnd.qcelp":{source:"iana"},"audio/vnd.rhetorex.32kadpcm":{source:"iana"},"audio/vnd.rip":{source:"iana",extensions:["rip"]},"audio/vnd.rn-realaudio":{compressible:!1},"audio/vnd.sealedmedia.softseal.mpeg":{source:"iana"},"audio/vnd.vmx.cvsd":{source:"iana"},"audio/vnd.wave":{compressible:!1},"audio/vorbis":{source:"iana",compressible:!1},"audio/vorbis-config":{source:"iana"},"audio/wav":{compressible:!1,extensions:["wav"]},"audio/wave":{compressible:!1,extensions:["wav"]},"audio/webm":{source:"apache",compressible:!1,extensions:["weba"]},"audio/x-aac":{source:"apache",compressible:!1,extensions:["aac"]},"audio/x-aiff":{source:"apache",extensions:["aif","aiff","aifc"]},"audio/x-caf":{source:"apache",compressible:!1,extensions:["caf"]},"audio/x-flac":{source:"apache",extensions:["flac"]},"audio/x-m4a":{source:"nginx",extensions:["m4a"]},"audio/x-matroska":{source:"apache",extensions:["mka"]},"audio/x-mpegurl":{source:"apache",extensions:["m3u"]},"audio/x-ms-wax":{source:"apache",extensions:["wax"]},"audio/x-ms-wma":{source:"apache",extensions:["wma"]},"audio/x-pn-realaudio":{source:"apache",extensions:["ram","ra"]},"audio/x-pn-realaudio-plugin":{source:"apache",extensions:["rmp"]},"audio/x-realaudio":{source:"nginx",extensions:["ra"]},"audio/x-tta":{source:"apache"},"audio/x-wav":{source:"apache",extensions:["wav"]},"audio/xm":{source:"apache",extensions:["xm"]},"chemical/x-cdx":{source:"apache",extensions:["cdx"]},"chemical/x-cif":{source:"apache",extensions:["cif"]},"chemical/x-cmdf":{source:"apache",extensions:["cmdf"]},"chemical/x-cml":{source:"apache",extensions:["cml"]},"chemical/x-csml":{source:"apache",extensions:["csml"]},"chemical/x-pdb":{source:"apache"},"chemical/x-xyz":{source:"apache",extensions:["xyz"]},"font/collection":{source:"iana",extensions:["ttc"]},"font/otf":{source:"iana",compressible:!0,extensions:["otf"]},"font/sfnt":{source:"iana"},"font/ttf":{source:"iana",compressible:!0,extensions:["ttf"]},"font/woff":{source:"iana",extensions:["woff"]},"font/woff2":{source:"iana",extensions:["woff2"]},"image/aces":{source:"iana",extensions:["exr"]},"image/apng":{compressible:!1,extensions:["apng"]},"image/avci":{source:"iana",extensions:["avci"]},"image/avcs":{source:"iana",extensions:["avcs"]},"image/avif":{source:"iana",compressible:!1,extensions:["avif"]},"image/bmp":{source:"iana",compressible:!0,extensions:["bmp"]},"image/cgm":{source:"iana",extensions:["cgm"]},"image/dicom-rle":{source:"iana",extensions:["drle"]},"image/emf":{source:"iana",extensions:["emf"]},"image/fits":{source:"iana",extensions:["fits"]},"image/g3fax":{source:"iana",extensions:["g3"]},"image/gif":{source:"iana",compressible:!1,extensions:["gif"]},"image/heic":{source:"iana",extensions:["heic"]},"image/heic-sequence":{source:"iana",extensions:["heics"]},"image/heif":{source:"iana",extensions:["heif"]},"image/heif-sequence":{source:"iana",extensions:["heifs"]},"image/hej2k":{source:"iana",extensions:["hej2"]},"image/hsj2":{source:"iana",extensions:["hsj2"]},"image/ief":{source:"iana",extensions:["ief"]},"image/jls":{source:"iana",extensions:["jls"]},"image/jp2":{source:"iana",compressible:!1,extensions:["jp2","jpg2"]},"image/jpeg":{source:"iana",compressible:!1,extensions:["jpeg","jpg","jpe"]},"image/jph":{source:"iana",extensions:["jph"]},"image/jphc":{source:"iana",extensions:["jhc"]},"image/jpm":{source:"iana",compressible:!1,extensions:["jpm"]},"image/jpx":{source:"iana",compressible:!1,extensions:["jpx","jpf"]},"image/jxr":{source:"iana",extensions:["jxr"]},"image/jxra":{source:"iana",extensions:["jxra"]},"image/jxrs":{source:"iana",extensions:["jxrs"]},"image/jxs":{source:"iana",extensions:["jxs"]},"image/jxsc":{source:"iana",extensions:["jxsc"]},"image/jxsi":{source:"iana",extensions:["jxsi"]},"image/jxss":{source:"iana",extensions:["jxss"]},"image/ktx":{source:"iana",extensions:["ktx"]},"image/ktx2":{source:"iana",extensions:["ktx2"]},"image/naplps":{source:"iana"},"image/pjpeg":{compressible:!1},"image/png":{source:"iana",compressible:!1,extensions:["png"]},"image/prs.btif":{source:"iana",extensions:["btif"]},"image/prs.pti":{source:"iana",extensions:["pti"]},"image/pwg-raster":{source:"iana"},"image/sgi":{source:"apache",extensions:["sgi"]},"image/svg+xml":{source:"iana",compressible:!0,extensions:["svg","svgz"]},"image/t38":{source:"iana",extensions:["t38"]},"image/tiff":{source:"iana",compressible:!1,extensions:["tif","tiff"]},"image/tiff-fx":{source:"iana",extensions:["tfx"]},"image/vnd.adobe.photoshop":{source:"iana",compressible:!0,extensions:["psd"]},"image/vnd.airzip.accelerator.azv":{source:"iana",extensions:["azv"]},"image/vnd.cns.inf2":{source:"iana"},"image/vnd.dece.graphic":{source:"iana",extensions:["uvi","uvvi","uvg","uvvg"]},"image/vnd.djvu":{source:"iana",extensions:["djvu","djv"]},"image/vnd.dvb.subtitle":{source:"iana",extensions:["sub"]},"image/vnd.dwg":{source:"iana",extensions:["dwg"]},"image/vnd.dxf":{source:"iana",extensions:["dxf"]},"image/vnd.fastbidsheet":{source:"iana",extensions:["fbs"]},"image/vnd.fpx":{source:"iana",extensions:["fpx"]},"image/vnd.fst":{source:"iana",extensions:["fst"]},"image/vnd.fujixerox.edmics-mmr":{source:"iana",extensions:["mmr"]},"image/vnd.fujixerox.edmics-rlc":{source:"iana",extensions:["rlc"]},"image/vnd.globalgraphics.pgb":{source:"iana"},"image/vnd.microsoft.icon":{source:"iana",compressible:!0,extensions:["ico"]},"image/vnd.mix":{source:"iana"},"image/vnd.mozilla.apng":{source:"iana"},"image/vnd.ms-dds":{compressible:!0,extensions:["dds"]},"image/vnd.ms-modi":{source:"iana",extensions:["mdi"]},"image/vnd.ms-photo":{source:"apache",extensions:["wdp"]},"image/vnd.net-fpx":{source:"iana",extensions:["npx"]},"image/vnd.pco.b16":{source:"iana",extensions:["b16"]},"image/vnd.radiance":{source:"iana"},"image/vnd.sealed.png":{source:"iana"},"image/vnd.sealedmedia.softseal.gif":{source:"iana"},"image/vnd.sealedmedia.softseal.jpg":{source:"iana"},"image/vnd.svf":{source:"iana"},"image/vnd.tencent.tap":{source:"iana",extensions:["tap"]},"image/vnd.valve.source.texture":{source:"iana",extensions:["vtf"]},"image/vnd.wap.wbmp":{source:"iana",extensions:["wbmp"]},"image/vnd.xiff":{source:"iana",extensions:["xif"]},"image/vnd.zbrush.pcx":{source:"iana",extensions:["pcx"]},"image/webp":{source:"apache",extensions:["webp"]},"image/wmf":{source:"iana",extensions:["wmf"]},"image/x-3ds":{source:"apache",extensions:["3ds"]},"image/x-cmu-raster":{source:"apache",extensions:["ras"]},"image/x-cmx":{source:"apache",extensions:["cmx"]},"image/x-freehand":{source:"apache",extensions:["fh","fhc","fh4","fh5","fh7"]},"image/x-icon":{source:"apache",compressible:!0,extensions:["ico"]},"image/x-jng":{source:"nginx",extensions:["jng"]},"image/x-mrsid-image":{source:"apache",extensions:["sid"]},"image/x-ms-bmp":{source:"nginx",compressible:!0,extensions:["bmp"]},"image/x-pcx":{source:"apache",extensions:["pcx"]},"image/x-pict":{source:"apache",extensions:["pic","pct"]},"image/x-portable-anymap":{source:"apache",extensions:["pnm"]},"image/x-portable-bitmap":{source:"apache",extensions:["pbm"]},"image/x-portable-graymap":{source:"apache",extensions:["pgm"]},"image/x-portable-pixmap":{source:"apache",extensions:["ppm"]},"image/x-rgb":{source:"apache",extensions:["rgb"]},"image/x-tga":{source:"apache",extensions:["tga"]},"image/x-xbitmap":{source:"apache",extensions:["xbm"]},"image/x-xcf":{compressible:!1},"image/x-xpixmap":{source:"apache",extensions:["xpm"]},"image/x-xwindowdump":{source:"apache",extensions:["xwd"]},"message/cpim":{source:"iana"},"message/delivery-status":{source:"iana"},"message/disposition-notification":{source:"iana",extensions:["disposition-notification"]},"message/external-body":{source:"iana"},"message/feedback-report":{source:"iana"},"message/global":{source:"iana",extensions:["u8msg"]},"message/global-delivery-status":{source:"iana",extensions:["u8dsn"]},"message/global-disposition-notification":{source:"iana",extensions:["u8mdn"]},"message/global-headers":{source:"iana",extensions:["u8hdr"]},"message/http":{source:"iana",compressible:!1},"message/imdn+xml":{source:"iana",compressible:!0},"message/news":{source:"iana"},"message/partial":{source:"iana",compressible:!1},"message/rfc822":{source:"iana",compressible:!0,extensions:["eml","mime"]},"message/s-http":{source:"iana"},"message/sip":{source:"iana"},"message/sipfrag":{source:"iana"},"message/tracking-status":{source:"iana"},"message/vnd.si.simp":{source:"iana"},"message/vnd.wfa.wsc":{source:"iana",extensions:["wsc"]},"model/3mf":{source:"iana",extensions:["3mf"]},"model/e57":{source:"iana"},"model/gltf+json":{source:"iana",compressible:!0,extensions:["gltf"]},"model/gltf-binary":{source:"iana",compressible:!0,extensions:["glb"]},"model/iges":{source:"iana",compressible:!1,extensions:["igs","iges"]},"model/mesh":{source:"iana",compressible:!1,extensions:["msh","mesh","silo"]},"model/mtl":{source:"iana",extensions:["mtl"]},"model/obj":{source:"iana",extensions:["obj"]},"model/step":{source:"iana"},"model/step+xml":{source:"iana",compressible:!0,extensions:["stpx"]},"model/step+zip":{source:"iana",compressible:!1,extensions:["stpz"]},"model/step-xml+zip":{source:"iana",compressible:!1,extensions:["stpxz"]},"model/stl":{source:"iana",extensions:["stl"]},"model/vnd.collada+xml":{source:"iana",compressible:!0,extensions:["dae"]},"model/vnd.dwf":{source:"iana",extensions:["dwf"]},"model/vnd.flatland.3dml":{source:"iana"},"model/vnd.gdl":{source:"iana",extensions:["gdl"]},"model/vnd.gs-gdl":{source:"apache"},"model/vnd.gs.gdl":{source:"iana"},"model/vnd.gtw":{source:"iana",extensions:["gtw"]},"model/vnd.moml+xml":{source:"iana",compressible:!0},"model/vnd.mts":{source:"iana",extensions:["mts"]},"model/vnd.opengex":{source:"iana",extensions:["ogex"]},"model/vnd.parasolid.transmit.binary":{source:"iana",extensions:["x_b"]},"model/vnd.parasolid.transmit.text":{source:"iana",extensions:["x_t"]},"model/vnd.pytha.pyox":{source:"iana"},"model/vnd.rosette.annotated-data-model":{source:"iana"},"model/vnd.sap.vds":{source:"iana",extensions:["vds"]},"model/vnd.usdz+zip":{source:"iana",compressible:!1,extensions:["usdz"]},"model/vnd.valve.source.compiled-map":{source:"iana",extensions:["bsp"]},"model/vnd.vtu":{source:"iana",extensions:["vtu"]},"model/vrml":{source:"iana",compressible:!1,extensions:["wrl","vrml"]},"model/x3d+binary":{source:"apache",compressible:!1,extensions:["x3db","x3dbz"]},"model/x3d+fastinfoset":{source:"iana",extensions:["x3db"]},"model/x3d+vrml":{source:"apache",compressible:!1,extensions:["x3dv","x3dvz"]},"model/x3d+xml":{source:"iana",compressible:!0,extensions:["x3d","x3dz"]},"model/x3d-vrml":{source:"iana",extensions:["x3dv"]},"multipart/alternative":{source:"iana",compressible:!1},"multipart/appledouble":{source:"iana"},"multipart/byteranges":{source:"iana"},"multipart/digest":{source:"iana"},"multipart/encrypted":{source:"iana",compressible:!1},"multipart/form-data":{source:"iana",compressible:!1},"multipart/header-set":{source:"iana"},"multipart/mixed":{source:"iana"},"multipart/multilingual":{source:"iana"},"multipart/parallel":{source:"iana"},"multipart/related":{source:"iana",compressible:!1},"multipart/report":{source:"iana"},"multipart/signed":{source:"iana",compressible:!1},"multipart/vnd.bint.med-plus":{source:"iana"},"multipart/voice-message":{source:"iana"},"multipart/x-mixed-replace":{source:"iana"},"text/1d-interleaved-parityfec":{source:"iana"},"text/cache-manifest":{source:"iana",compressible:!0,extensions:["appcache","manifest"]},"text/calendar":{source:"iana",extensions:["ics","ifb"]},"text/calender":{compressible:!0},"text/cmd":{compressible:!0},"text/coffeescript":{extensions:["coffee","litcoffee"]},"text/cql":{source:"iana"},"text/cql-expression":{source:"iana"},"text/cql-identifier":{source:"iana"},"text/css":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["css"]},"text/csv":{source:"iana",compressible:!0,extensions:["csv"]},"text/csv-schema":{source:"iana"},"text/directory":{source:"iana"},"text/dns":{source:"iana"},"text/ecmascript":{source:"iana"},"text/encaprtp":{source:"iana"},"text/enriched":{source:"iana"},"text/fhirpath":{source:"iana"},"text/flexfec":{source:"iana"},"text/fwdred":{source:"iana"},"text/gff3":{source:"iana"},"text/grammar-ref-list":{source:"iana"},"text/html":{source:"iana",compressible:!0,extensions:["html","htm","shtml"]},"text/jade":{extensions:["jade"]},"text/javascript":{source:"iana",compressible:!0},"text/jcr-cnd":{source:"iana"},"text/jsx":{compressible:!0,extensions:["jsx"]},"text/less":{compressible:!0,extensions:["less"]},"text/markdown":{source:"iana",compressible:!0,extensions:["markdown","md"]},"text/mathml":{source:"nginx",extensions:["mml"]},"text/mdx":{compressible:!0,extensions:["mdx"]},"text/mizar":{source:"iana"},"text/n3":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["n3"]},"text/parameters":{source:"iana",charset:"UTF-8"},"text/parityfec":{source:"iana"},"text/plain":{source:"iana",compressible:!0,extensions:["txt","text","conf","def","list","log","in","ini"]},"text/provenance-notation":{source:"iana",charset:"UTF-8"},"text/prs.fallenstein.rst":{source:"iana"},"text/prs.lines.tag":{source:"iana",extensions:["dsc"]},"text/prs.prop.logic":{source:"iana"},"text/raptorfec":{source:"iana"},"text/red":{source:"iana"},"text/rfc822-headers":{source:"iana"},"text/richtext":{source:"iana",compressible:!0,extensions:["rtx"]},"text/rtf":{source:"iana",compressible:!0,extensions:["rtf"]},"text/rtp-enc-aescm128":{source:"iana"},"text/rtploopback":{source:"iana"},"text/rtx":{source:"iana"},"text/sgml":{source:"iana",extensions:["sgml","sgm"]},"text/shaclc":{source:"iana"},"text/shex":{source:"iana",extensions:["shex"]},"text/slim":{extensions:["slim","slm"]},"text/spdx":{source:"iana",extensions:["spdx"]},"text/strings":{source:"iana"},"text/stylus":{extensions:["stylus","styl"]},"text/t140":{source:"iana"},"text/tab-separated-values":{source:"iana",compressible:!0,extensions:["tsv"]},"text/troff":{source:"iana",extensions:["t","tr","roff","man","me","ms"]},"text/turtle":{source:"iana",charset:"UTF-8",extensions:["ttl"]},"text/ulpfec":{source:"iana"},"text/uri-list":{source:"iana",compressible:!0,extensions:["uri","uris","urls"]},"text/vcard":{source:"iana",compressible:!0,extensions:["vcard"]},"text/vnd.a":{source:"iana"},"text/vnd.abc":{source:"iana"},"text/vnd.ascii-art":{source:"iana"},"text/vnd.curl":{source:"iana",extensions:["curl"]},"text/vnd.curl.dcurl":{source:"apache",extensions:["dcurl"]},"text/vnd.curl.mcurl":{source:"apache",extensions:["mcurl"]},"text/vnd.curl.scurl":{source:"apache",extensions:["scurl"]},"text/vnd.debian.copyright":{source:"iana",charset:"UTF-8"},"text/vnd.dmclientscript":{source:"iana"},"text/vnd.dvb.subtitle":{source:"iana",extensions:["sub"]},"text/vnd.esmertec.theme-descriptor":{source:"iana",charset:"UTF-8"},"text/vnd.familysearch.gedcom":{source:"iana",extensions:["ged"]},"text/vnd.ficlab.flt":{source:"iana"},"text/vnd.fly":{source:"iana",extensions:["fly"]},"text/vnd.fmi.flexstor":{source:"iana",extensions:["flx"]},"text/vnd.gml":{source:"iana"},"text/vnd.graphviz":{source:"iana",extensions:["gv"]},"text/vnd.hans":{source:"iana"},"text/vnd.hgl":{source:"iana"},"text/vnd.in3d.3dml":{source:"iana",extensions:["3dml"]},"text/vnd.in3d.spot":{source:"iana",extensions:["spot"]},"text/vnd.iptc.newsml":{source:"iana"},"text/vnd.iptc.nitf":{source:"iana"},"text/vnd.latex-z":{source:"iana"},"text/vnd.motorola.reflex":{source:"iana"},"text/vnd.ms-mediapackage":{source:"iana"},"text/vnd.net2phone.commcenter.command":{source:"iana"},"text/vnd.radisys.msml-basic-layout":{source:"iana"},"text/vnd.senx.warpscript":{source:"iana"},"text/vnd.si.uricatalogue":{source:"iana"},"text/vnd.sosi":{source:"iana"},"text/vnd.sun.j2me.app-descriptor":{source:"iana",charset:"UTF-8",extensions:["jad"]},"text/vnd.trolltech.linguist":{source:"iana",charset:"UTF-8"},"text/vnd.wap.si":{source:"iana"},"text/vnd.wap.sl":{source:"iana"},"text/vnd.wap.wml":{source:"iana",extensions:["wml"]},"text/vnd.wap.wmlscript":{source:"iana",extensions:["wmls"]},"text/vtt":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["vtt"]},"text/x-asm":{source:"apache",extensions:["s","asm"]},"text/x-c":{source:"apache",extensions:["c","cc","cxx","cpp","h","hh","dic"]},"text/x-component":{source:"nginx",extensions:["htc"]},"text/x-fortran":{source:"apache",extensions:["f","for","f77","f90"]},"text/x-gwt-rpc":{compressible:!0},"text/x-handlebars-template":{extensions:["hbs"]},"text/x-java-source":{source:"apache",extensions:["java"]},"text/x-jquery-tmpl":{compressible:!0},"text/x-lua":{extensions:["lua"]},"text/x-markdown":{compressible:!0,extensions:["mkd"]},"text/x-nfo":{source:"apache",extensions:["nfo"]},"text/x-opml":{source:"apache",extensions:["opml"]},"text/x-org":{compressible:!0,extensions:["org"]},"text/x-pascal":{source:"apache",extensions:["p","pas"]},"text/x-processing":{compressible:!0,extensions:["pde"]},"text/x-sass":{extensions:["sass"]},"text/x-scss":{extensions:["scss"]},"text/x-setext":{source:"apache",extensions:["etx"]},"text/x-sfv":{source:"apache",extensions:["sfv"]},"text/x-suse-ymp":{compressible:!0,extensions:["ymp"]},"text/x-uuencode":{source:"apache",extensions:["uu"]},"text/x-vcalendar":{source:"apache",extensions:["vcs"]},"text/x-vcard":{source:"apache",extensions:["vcf"]},"text/xml":{source:"iana",compressible:!0,extensions:["xml"]},"text/xml-external-parsed-entity":{source:"iana"},"text/yaml":{compressible:!0,extensions:["yaml","yml"]},"video/1d-interleaved-parityfec":{source:"iana"},"video/3gpp":{source:"iana",extensions:["3gp","3gpp"]},"video/3gpp-tt":{source:"iana"},"video/3gpp2":{source:"iana",extensions:["3g2"]},"video/av1":{source:"iana"},"video/bmpeg":{source:"iana"},"video/bt656":{source:"iana"},"video/celb":{source:"iana"},"video/dv":{source:"iana"},"video/encaprtp":{source:"iana"},"video/ffv1":{source:"iana"},"video/flexfec":{source:"iana"},"video/h261":{source:"iana",extensions:["h261"]},"video/h263":{source:"iana",extensions:["h263"]},"video/h263-1998":{source:"iana"},"video/h263-2000":{source:"iana"},"video/h264":{source:"iana",extensions:["h264"]},"video/h264-rcdo":{source:"iana"},"video/h264-svc":{source:"iana"},"video/h265":{source:"iana"},"video/iso.segment":{source:"iana",extensions:["m4s"]},"video/jpeg":{source:"iana",extensions:["jpgv"]},"video/jpeg2000":{source:"iana"},"video/jpm":{source:"apache",extensions:["jpm","jpgm"]},"video/jxsv":{source:"iana"},"video/mj2":{source:"iana",extensions:["mj2","mjp2"]},"video/mp1s":{source:"iana"},"video/mp2p":{source:"iana"},"video/mp2t":{source:"iana",extensions:["ts"]},"video/mp4":{source:"iana",compressible:!1,extensions:["mp4","mp4v","mpg4"]},"video/mp4v-es":{source:"iana"},"video/mpeg":{source:"iana",compressible:!1,extensions:["mpeg","mpg","mpe","m1v","m2v"]},"video/mpeg4-generic":{source:"iana"},"video/mpv":{source:"iana"},"video/nv":{source:"iana"},"video/ogg":{source:"iana",compressible:!1,extensions:["ogv"]},"video/parityfec":{source:"iana"},"video/pointer":{source:"iana"},"video/quicktime":{source:"iana",compressible:!1,extensions:["qt","mov"]},"video/raptorfec":{source:"iana"},"video/raw":{source:"iana"},"video/rtp-enc-aescm128":{source:"iana"},"video/rtploopback":{source:"iana"},"video/rtx":{source:"iana"},"video/scip":{source:"iana"},"video/smpte291":{source:"iana"},"video/smpte292m":{source:"iana"},"video/ulpfec":{source:"iana"},"video/vc1":{source:"iana"},"video/vc2":{source:"iana"},"video/vnd.cctv":{source:"iana"},"video/vnd.dece.hd":{source:"iana",extensions:["uvh","uvvh"]},"video/vnd.dece.mobile":{source:"iana",extensions:["uvm","uvvm"]},"video/vnd.dece.mp4":{source:"iana"},"video/vnd.dece.pd":{source:"iana",extensions:["uvp","uvvp"]},"video/vnd.dece.sd":{source:"iana",extensions:["uvs","uvvs"]},"video/vnd.dece.video":{source:"iana",extensions:["uvv","uvvv"]},"video/vnd.directv.mpeg":{source:"iana"},"video/vnd.directv.mpeg-tts":{source:"iana"},"video/vnd.dlna.mpeg-tts":{source:"iana"},"video/vnd.dvb.file":{source:"iana",extensions:["dvb"]},"video/vnd.fvt":{source:"iana",extensions:["fvt"]},"video/vnd.hns.video":{source:"iana"},"video/vnd.iptvforum.1dparityfec-1010":{source:"iana"},"video/vnd.iptvforum.1dparityfec-2005":{source:"iana"},"video/vnd.iptvforum.2dparityfec-1010":{source:"iana"},"video/vnd.iptvforum.2dparityfec-2005":{source:"iana"},"video/vnd.iptvforum.ttsavc":{source:"iana"},"video/vnd.iptvforum.ttsmpeg2":{source:"iana"},"video/vnd.motorola.video":{source:"iana"},"video/vnd.motorola.videop":{source:"iana"},"video/vnd.mpegurl":{source:"iana",extensions:["mxu","m4u"]},"video/vnd.ms-playready.media.pyv":{source:"iana",extensions:["pyv"]},"video/vnd.nokia.interleaved-multimedia":{source:"iana"},"video/vnd.nokia.mp4vr":{source:"iana"},"video/vnd.nokia.videovoip":{source:"iana"},"video/vnd.objectvideo":{source:"iana"},"video/vnd.radgamettools.bink":{source:"iana"},"video/vnd.radgamettools.smacker":{source:"iana"},"video/vnd.sealed.mpeg1":{source:"iana"},"video/vnd.sealed.mpeg4":{source:"iana"},"video/vnd.sealed.swf":{source:"iana"},"video/vnd.sealedmedia.softseal.mov":{source:"iana"},"video/vnd.uvvu.mp4":{source:"iana",extensions:["uvu","uvvu"]},"video/vnd.vivo":{source:"iana",extensions:["viv"]},"video/vnd.youtube.yt":{source:"iana"},"video/vp8":{source:"iana"},"video/vp9":{source:"iana"},"video/webm":{source:"apache",compressible:!1,extensions:["webm"]},"video/x-f4v":{source:"apache",extensions:["f4v"]},"video/x-fli":{source:"apache",extensions:["fli"]},"video/x-flv":{source:"apache",compressible:!1,extensions:["flv"]},"video/x-m4v":{source:"apache",extensions:["m4v"]},"video/x-matroska":{source:"apache",compressible:!1,extensions:["mkv","mk3d","mks"]},"video/x-mng":{source:"apache",extensions:["mng"]},"video/x-ms-asf":{source:"apache",extensions:["asf","asx"]},"video/x-ms-vob":{source:"apache",extensions:["vob"]},"video/x-ms-wm":{source:"apache",extensions:["wm"]},"video/x-ms-wmv":{source:"apache",compressible:!1,extensions:["wmv"]},"video/x-ms-wmx":{source:"apache",extensions:["wmx"]},"video/x-ms-wvx":{source:"apache",extensions:["wvx"]},"video/x-msvideo":{source:"apache",extensions:["avi"]},"video/x-sgi-movie":{source:"apache",extensions:["movie"]},"video/x-smv":{source:"apache",extensions:["smv"]},"x-conference/x-cooltalk":{source:"apache",extensions:["ice"]},"x-shader/x-fragment":{compressible:!0},"x-shader/x-vertex":{compressible:!0}};
3
+ * Copyright (c) 2024 Nathan Bubna; Licensed MIT */s=a,function(e,n){var t={version:"2.14.3",areas:{},apis:{},nsdelim:".",inherit:function(e,n){for(var t in e)n.hasOwnProperty(t)||Object.defineProperty(n,t,Object.getOwnPropertyDescriptor(e,t));return n},stringify:function(e,n){return void 0===e||"function"==typeof e?e+"":JSON.stringify(e,n||t.replace)},parse:function(e,n){try{return JSON.parse(e,n||t.revive)}catch(n){return e}},fn:function(e,n){for(var i in t.storeAPI[e]=n,t.apis)t.apis[i][e]=n},get:function(e,n){return e.getItem(n)},set:function(e,n,t){e.setItem(n,t)},remove:function(e,n){e.removeItem(n)},key:function(e,n){return e.key(n)},length:function(e){return e.length},clear:function(e){e.clear()},Store:function(e,n,i){var s=t.inherit(t.storeAPI,(function(e,n,t){return 0===arguments.length?s.getAll():"function"==typeof n?s.transact(e,n,t):void 0!==n?s.set(e,n,t):"string"==typeof e||"number"==typeof e?s.get(e):"function"==typeof e?s.each(e):e?s.setAll(e,n):s.clear()}));s._id=e;try{var a="__store2_test";n.setItem(a,"ok"),s._area=n,n.removeItem(a)}catch(e){s._area=t.storage("fake")}return s._ns=i||"",t.areas[e]||(t.areas[e]=s._area),t.apis[s._ns+s._id]||(t.apis[s._ns+s._id]=s),s},storeAPI:{area:function(e,n){var i=this[e];return i&&i.area||(i=t.Store(e,n,this._ns),this[e]||(this[e]=i)),i},namespace:function(e,n,i){if(i=i||this._delim||t.nsdelim,!e)return this._ns?this._ns.substring(0,this._ns.length-i.length):"";var s=e,a=this[s];if(!(a&&a.namespace||((a=t.Store(this._id,this._area,this._ns+s+i))._delim=i,this[s]||(this[s]=a),n)))for(var o in t.areas)a.area(o,t.areas[o]);return a},isFake:function(e){return e?(this._real=this._area,this._area=t.storage("fake")):!1===e&&(this._area=this._real||this._area),"fake"===this._area.name},toString:function(){return"store"+(this._ns?"."+this.namespace():"")+"["+this._id+"]"},has:function(e){return this._area.has?this._area.has(this._in(e)):!!(this._in(e)in this._area)},size:function(){return this.keys().length},each:function(e,n){for(var i=0,s=t.length(this._area);i<s;i++){var a=this._out(t.key(this._area,i));if(void 0!==a&&!1===e.call(this,a,this.get(a),n))break;s>t.length(this._area)&&(s--,i--)}return n||this},keys:function(e){return this.each((function(e,n,t){t.push(e)}),e||[])},get:function(e,n){var i,s=t.get(this._area,this._in(e));return"function"==typeof n&&(i=n,n=null),null!==s?t.parse(s,i):null!=n?n:s},getAll:function(e){return this.each((function(e,n,t){t[e]=n}),e||{})},transact:function(e,n,t){var i=this.get(e,t),s=n(i);return this.set(e,void 0===s?i:s),this},set:function(e,n,i){var s,a=this.get(e);return null!=a&&!1===i?n:("function"==typeof i&&(s=i,i=void 0),t.set(this._area,this._in(e),t.stringify(n,s),i)||a)},setAll:function(e,n){var t,i;for(var s in e)i=e[s],this.set(s,i,n)!==i&&(t=!0);return t},add:function(e,n,i){var s=this.get(e);if(s instanceof Array)n=s.concat(n);else if(null!==s){var a=typeof s;if(a===typeof n&&"object"===a){for(var o in n)s[o]=n[o];n=s}else n=s+n}return t.set(this._area,this._in(e),t.stringify(n,i)),n},remove:function(e,n){var i=this.get(e,n);return t.remove(this._area,this._in(e)),i},clear:function(){return this._ns?this.each((function(e){t.remove(this._area,this._in(e))}),1):t.clear(this._area),this},clearAll:function(){var e=this._area;for(var n in t.areas)t.areas.hasOwnProperty(n)&&(this._area=t.areas[n],this.clear());return this._area=e,this},_in:function(e){return"string"!=typeof e&&(e=t.stringify(e)),this._ns?this._ns+e:e},_out:function(e){return this._ns?e&&0===e.indexOf(this._ns)?e.substring(this._ns.length):void 0:e}},storage:function(e){return t.inherit(t.storageAPI,{items:{},name:e})},storageAPI:{length:0,has:function(e){return this.items.hasOwnProperty(e)},key:function(e){var n=0;for(var t in this.items)if(this.has(t)&&e===n++)return t},setItem:function(e,n){this.has(e)||this.length++,this.items[e]=n},removeItem:function(e){this.has(e)&&(delete this.items[e],this.length--)},getItem:function(e){return this.has(e)?this.items[e]:null},clear:function(){for(var e in this.items)this.removeItem(e)}}},i=t.Store("local",function(){try{return localStorage}catch(e){}}());i.local=i,i._=t,i.area("session",function(){try{return sessionStorage}catch(e){}}()),i.area("page",t.storage("page")),"function"==typeof n&&void 0!==n.amd?n("store2",[],(function(){return i})):s.exports?s.exports=i:(e.store&&(t.conflict=e.store),e.store=i)}(n,n&&n.define);var o=t(a.exports);function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}function c(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}function l(e){var n=function(e,n){if("object"!=r(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var i=t.call(e,n||"default");if("object"!=r(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===n?String:Number)(e)}(e,"string");return"symbol"==r(n)?n:n+""}function p(e,n){for(var t=0;t<n.length;t++){var i=n[t];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,l(i.key),i)}}function u(e,n,t){return n&&p(e.prototype,n),t&&p(e,t),Object.defineProperty(e,"prototype",{writable:!1}),e}function d(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function m(e,n){return m=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,n){return e.__proto__=n,e},m(e,n)}function g(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(n&&n.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),n&&m(e,n)}function v(e,n){if(n&&("object"===r(n)||"function"==typeof n))return n;if(void 0!==n)throw new TypeError("Derived constructors may only return object or undefined");return d(e)}function h(e){return h=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},h(e)}function f(e,n,t){return(n=l(n))in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function x(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,i=new Array(n);t<n;t++)i[t]=e[t];return i}function b(e){return function(e){if(Array.isArray(e))return e}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,n){if(e){if("string"==typeof e)return x(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?x(e,n):void 0}}(e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function y(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,i)}return t}function w(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?y(Object(t),!0).forEach((function(n){f(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):y(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}var k={type:"logger",log:function(e){this.output("log",e)},warn:function(e){this.output("warn",e)},error:function(e){this.output("error",e)},output:function(e,n){console&&console[e]&&console[e].apply(console,n)}},S=new(function(){function e(n){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};c(this,e),this.init(n,t)}return u(e,[{key:"init",value:function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.prefix=n.prefix||"i18next:",this.logger=e||k,this.options=n,this.debug=n.debug}},{key:"setDebug",value:function(e){this.debug=e}},{key:"log",value:function(){for(var e=arguments.length,n=new Array(e),t=0;t<e;t++)n[t]=arguments[t];return this.forward(n,"log","",!0)}},{key:"warn",value:function(){for(var e=arguments.length,n=new Array(e),t=0;t<e;t++)n[t]=arguments[t];return this.forward(n,"warn","",!0)}},{key:"error",value:function(){for(var e=arguments.length,n=new Array(e),t=0;t<e;t++)n[t]=arguments[t];return this.forward(n,"error","")}},{key:"deprecate",value:function(){for(var e=arguments.length,n=new Array(e),t=0;t<e;t++)n[t]=arguments[t];return this.forward(n,"warn","WARNING DEPRECATED: ",!0)}},{key:"forward",value:function(e,n,t,i){return i&&!this.debug?null:("string"==typeof e[0]&&(e[0]="".concat(t).concat(this.prefix," ").concat(e[0])),this.logger[n](e))}},{key:"create",value:function(n){return new e(this.logger,w(w({},{prefix:"".concat(this.prefix,":").concat(n,":")}),this.options))}},{key:"clone",value:function(n){return(n=n||this.options).prefix=n.prefix||this.prefix,new e(this.logger,n)}}]),e}()),j=function(){function e(){c(this,e),this.observers={}}return u(e,[{key:"on",value:function(e,n){var t=this;return e.split(" ").forEach((function(e){t.observers[e]=t.observers[e]||[],t.observers[e].push(n)})),this}},{key:"off",value:function(e,n){this.observers[e]&&(n?this.observers[e]=this.observers[e].filter((function(e){return e!==n})):delete this.observers[e])}},{key:"emit",value:function(e){for(var n=arguments.length,t=new Array(n>1?n-1:0),i=1;i<n;i++)t[i-1]=arguments[i];this.observers[e]&&[].concat(this.observers[e]).forEach((function(e){e.apply(void 0,t)}));this.observers["*"]&&[].concat(this.observers["*"]).forEach((function(n){n.apply(n,[e].concat(t))}))}}]),e}();function _(){var e,n,t=new Promise((function(t,i){e=t,n=i}));return t.resolve=e,t.reject=n,t}function C(e){return null==e?"":""+e}function A(e,n,t){function i(e){return e&&e.indexOf("###")>-1?e.replace(/###/g,"."):e}function s(){return!e||"string"==typeof e}for(var a="string"!=typeof n?[].concat(n):n.split(".");a.length>1;){if(s())return{};var o=i(a.shift());!e[o]&&t&&(e[o]=new t),e=Object.prototype.hasOwnProperty.call(e,o)?e[o]:{}}return s()?{}:{obj:e,k:i(a.shift())}}function E(e,n,t){var i=A(e,n,Object);i.obj[i.k]=t}function R(e,n){var t=A(e,n),i=t.obj,s=t.k;if(i)return i[s]}function L(e,n,t){for(var i in n)"__proto__"!==i&&"constructor"!==i&&(i in e?"string"==typeof e[i]||e[i]instanceof String||"string"==typeof n[i]||n[i]instanceof String?t&&(e[i]=n[i]):L(e[i],n[i],t):e[i]=n[i]);return e}function M(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}var I={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#x2F;"};function D(e){return"string"==typeof e?e.replace(/[&<>"'\/]/g,(function(e){return I[e]})):e}var T="undefined"!=typeof window&&window.navigator&&void 0===window.navigator.userAgentData&&window.navigator.userAgent&&window.navigator.userAgent.indexOf("MSIE")>-1,O=[" ",",","?","!",";"];function P(e,n){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:".";if(e){if(e[n])return e[n];for(var i=n.split(t),s=e,a=0;a<i.length;++a){if(!s)return;if("string"==typeof s[i[a]]&&a+1<i.length)return;if(void 0===s[i[a]]){for(var o=2,r=i.slice(a,a+o).join(t),c=s[r];void 0===c&&i.length>a+o;)o++,c=s[r=i.slice(a,a+o).join(t)];if(void 0===c)return;if(null===c)return null;if(n.endsWith(r)){if("string"==typeof c)return c;if(r&&"string"==typeof c[r])return c[r]}var l=i.slice(a+o).join(t);return l?P(c,l,t):void 0}s=s[i[a]]}return s}}function F(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,i)}return t}function N(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?F(Object(t),!0).forEach((function(n){f(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):F(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function q(e){var n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var t,i=h(e);if(n){var s=h(this).constructor;t=Reflect.construct(i,arguments,s)}else t=i.apply(this,arguments);return v(this,t)}}var z=function(e){g(t,j);var n=q(t);function t(e){var i,s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{ns:["translation"],defaultNS:"translation"};return c(this,t),i=n.call(this),T&&j.call(d(i)),i.data=e||{},i.options=s,void 0===i.options.keySeparator&&(i.options.keySeparator="."),void 0===i.options.ignoreJSONStructure&&(i.options.ignoreJSONStructure=!0),i}return u(t,[{key:"addNamespaces",value:function(e){this.options.ns.indexOf(e)<0&&this.options.ns.push(e)}},{key:"removeNamespaces",value:function(e){var n=this.options.ns.indexOf(e);n>-1&&this.options.ns.splice(n,1)}},{key:"getResource",value:function(e,n,t){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},s=void 0!==i.keySeparator?i.keySeparator:this.options.keySeparator,a=void 0!==i.ignoreJSONStructure?i.ignoreJSONStructure:this.options.ignoreJSONStructure,o=[e,n];t&&"string"!=typeof t&&(o=o.concat(t)),t&&"string"==typeof t&&(o=o.concat(s?t.split(s):t)),e.indexOf(".")>-1&&(o=e.split("."));var r=R(this.data,o);return r||!a||"string"!=typeof t?r:P(this.data&&this.data[e]&&this.data[e][n],t,s)}},{key:"addResource",value:function(e,n,t,i){var s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{silent:!1},a=void 0!==s.keySeparator?s.keySeparator:this.options.keySeparator,o=[e,n];t&&(o=o.concat(a?t.split(a):t)),e.indexOf(".")>-1&&(i=n,n=(o=e.split("."))[1]),this.addNamespaces(n),E(this.data,o,i),s.silent||this.emit("added",e,n,t,i)}},{key:"addResources",value:function(e,n,t){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{silent:!1};for(var s in t)"string"!=typeof t[s]&&"[object Array]"!==Object.prototype.toString.apply(t[s])||this.addResource(e,n,s,t[s],{silent:!0});i.silent||this.emit("added",e,n,t)}},{key:"addResourceBundle",value:function(e,n,t,i,s){var a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{silent:!1},o=[e,n];e.indexOf(".")>-1&&(i=t,t=n,n=(o=e.split("."))[1]),this.addNamespaces(n);var r=R(this.data,o)||{};i?L(r,t,s):r=N(N({},r),t),E(this.data,o,r),a.silent||this.emit("added",e,n,t)}},{key:"removeResourceBundle",value:function(e,n){this.hasResourceBundle(e,n)&&delete this.data[e][n],this.removeNamespaces(n),this.emit("removed",e,n)}},{key:"hasResourceBundle",value:function(e,n){return void 0!==this.getResource(e,n)}},{key:"getResourceBundle",value:function(e,n){return n||(n=this.options.defaultNS),"v1"===this.options.compatibilityAPI?N(N({},{}),this.getResource(e,n)):this.getResource(e,n)}},{key:"getDataByLanguage",value:function(e){return this.data[e]}},{key:"hasLanguageSomeTranslations",value:function(e){var n=this.getDataByLanguage(e);return!!(n&&Object.keys(n)||[]).find((function(e){return n[e]&&Object.keys(n[e]).length>0}))}},{key:"toJSON",value:function(){return this.data}}]),t}(),V={processors:{},addPostProcessor:function(e){this.processors[e.name]=e},handle:function(e,n,t,i,s){var a=this;return e.forEach((function(e){a.processors[e]&&(n=a.processors[e].process(n,t,i,s))})),n}};function B(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,i)}return t}function U(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?B(Object(t),!0).forEach((function(n){f(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):B(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function H(e){var n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var t,i=h(e);if(n){var s=h(this).constructor;t=Reflect.construct(i,arguments,s)}else t=i.apply(this,arguments);return v(this,t)}}var W={},$=function(e){g(t,j);var n=H(t);function t(e){var i,s,a,o,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return c(this,t),i=n.call(this),T&&j.call(d(i)),s=["resourceStore","languageUtils","pluralResolver","interpolator","backendConnector","i18nFormat","utils"],a=e,o=d(i),s.forEach((function(e){a[e]&&(o[e]=a[e])})),i.options=r,void 0===i.options.keySeparator&&(i.options.keySeparator="."),i.logger=S.create("translator"),i}return u(t,[{key:"changeLanguage",value:function(e){e&&(this.language=e)}},{key:"exists",value:function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{interpolation:{}};if(null==e)return!1;var t=this.resolve(e,n);return t&&void 0!==t.res}},{key:"extractFromKey",value:function(e,n){var t=void 0!==n.nsSeparator?n.nsSeparator:this.options.nsSeparator;void 0===t&&(t=":");var i=void 0!==n.keySeparator?n.keySeparator:this.options.keySeparator,s=n.ns||this.options.defaultNS||[],a=t&&e.indexOf(t)>-1,o=!(this.options.userDefinedKeySeparator||n.keySeparator||this.options.userDefinedNsSeparator||n.nsSeparator||function(e,n,t){n=n||"",t=t||"";var i=O.filter((function(e){return n.indexOf(e)<0&&t.indexOf(e)<0}));if(0===i.length)return!0;var s=new RegExp("(".concat(i.map((function(e){return"?"===e?"\\?":e})).join("|"),")")),a=!s.test(e);if(!a){var o=e.indexOf(t);o>0&&!s.test(e.substring(0,o))&&(a=!0)}return a}(e,t,i));if(a&&!o){var r=e.match(this.interpolator.nestingRegexp);if(r&&r.length>0)return{key:e,namespaces:s};var c=e.split(t);(t!==i||t===i&&this.options.ns.indexOf(c[0])>-1)&&(s=c.shift()),e=c.join(i)}return"string"==typeof s&&(s=[s]),{key:e,namespaces:s}}},{key:"translate",value:function(e,n,i){var s=this;if("object"!==r(n)&&this.options.overloadTranslationOptionHandler&&(n=this.options.overloadTranslationOptionHandler(arguments)),"object"===r(n)&&(n=U({},n)),n||(n={}),null==e)return"";Array.isArray(e)||(e=[String(e)]);var a=void 0!==n.returnDetails?n.returnDetails:this.options.returnDetails,o=void 0!==n.keySeparator?n.keySeparator:this.options.keySeparator,c=this.extractFromKey(e[e.length-1],n),l=c.key,p=c.namespaces,u=p[p.length-1],d=n.lng||this.language,m=n.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if(d&&"cimode"===d.toLowerCase()){if(m){var g=n.nsSeparator||this.options.nsSeparator;return a?{res:"".concat(u).concat(g).concat(l),usedKey:l,exactUsedKey:l,usedLng:d,usedNS:u}:"".concat(u).concat(g).concat(l)}return a?{res:l,usedKey:l,exactUsedKey:l,usedLng:d,usedNS:u}:l}var v=this.resolve(e,n),h=v&&v.res,f=v&&v.usedKey||l,x=v&&v.exactUsedKey||l,b=Object.prototype.toString.apply(h),y=void 0!==n.joinArrays?n.joinArrays:this.options.joinArrays,w=!this.i18nFormat||this.i18nFormat.handleAsObject;if(w&&h&&("string"!=typeof h&&"boolean"!=typeof h&&"number"!=typeof h)&&["[object Number]","[object Function]","[object RegExp]"].indexOf(b)<0&&("string"!=typeof y||"[object Array]"!==b)){if(!n.returnObjects&&!this.options.returnObjects){this.options.returnedObjectHandler||this.logger.warn("accessing an object - but returnObjects options is not enabled!");var k=this.options.returnedObjectHandler?this.options.returnedObjectHandler(f,h,U(U({},n),{},{ns:p})):"key '".concat(l," (").concat(this.language,")' returned an object instead of string.");return a?(v.res=k,v):k}if(o){var S="[object Array]"===b,j=S?[]:{},_=S?x:f;for(var C in h)if(Object.prototype.hasOwnProperty.call(h,C)){var A="".concat(_).concat(o).concat(C);j[C]=this.translate(A,U(U({},n),{joinArrays:!1,ns:p})),j[C]===A&&(j[C]=h[C])}h=j}}else if(w&&"string"==typeof y&&"[object Array]"===b)(h=h.join(y))&&(h=this.extendTranslation(h,e,n,i));else{var E=!1,R=!1,L=void 0!==n.count&&"string"!=typeof n.count,M=t.hasDefaultValue(n),I=L?this.pluralResolver.getSuffix(d,n.count,n):"",D=n["defaultValue".concat(I)]||n.defaultValue;!this.isValidLookup(h)&&M&&(E=!0,h=D),this.isValidLookup(h)||(R=!0,h=l);var T=(n.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey)&&R?void 0:h,O=M&&D!==h&&this.options.updateMissing;if(R||E||O){if(this.logger.log(O?"updateKey":"missingKey",d,u,l,O?D:h),o){var P=this.resolve(l,U(U({},n),{},{keySeparator:!1}));P&&P.res&&this.logger.warn("Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.")}var F=[],N=this.languageUtils.getFallbackCodes(this.options.fallbackLng,n.lng||this.language);if("fallback"===this.options.saveMissingTo&&N&&N[0])for(var q=0;q<N.length;q++)F.push(N[q]);else"all"===this.options.saveMissingTo?F=this.languageUtils.toResolveHierarchy(n.lng||this.language):F.push(n.lng||this.language);var z=function(e,t,i){var a=M&&i!==h?i:T;s.options.missingKeyHandler?s.options.missingKeyHandler(e,u,t,a,O,n):s.backendConnector&&s.backendConnector.saveMissing&&s.backendConnector.saveMissing(e,u,t,a,O,n),s.emit("missingKey",e,u,t,h)};this.options.saveMissing&&(this.options.saveMissingPlurals&&L?F.forEach((function(e){s.pluralResolver.getSuffixes(e,n).forEach((function(t){z([e],l+t,n["defaultValue".concat(t)]||D)}))})):z(F,l,D))}h=this.extendTranslation(h,e,n,v,i),R&&h===l&&this.options.appendNamespaceToMissingKey&&(h="".concat(u,":").concat(l)),(R||E)&&this.options.parseMissingKeyHandler&&(h="v1"!==this.options.compatibilityAPI?this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey?"".concat(u,":").concat(l):l,E?h:void 0):this.options.parseMissingKeyHandler(h))}return a?(v.res=h,v):h}},{key:"extendTranslation",value:function(e,n,t,i,s){var a=this;if(this.i18nFormat&&this.i18nFormat.parse)e=this.i18nFormat.parse(e,U(U({},this.options.interpolation.defaultVariables),t),i.usedLng,i.usedNS,i.usedKey,{resolved:i});else if(!t.skipInterpolation){t.interpolation&&this.interpolator.init(U(U({},t),{interpolation:U(U({},this.options.interpolation),t.interpolation)}));var o,r="string"==typeof e&&(t&&t.interpolation&&void 0!==t.interpolation.skipOnVariables?t.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables);if(r){var c=e.match(this.interpolator.nestingRegexp);o=c&&c.length}var l=t.replace&&"string"!=typeof t.replace?t.replace:t;if(this.options.interpolation.defaultVariables&&(l=U(U({},this.options.interpolation.defaultVariables),l)),e=this.interpolator.interpolate(e,l,t.lng||this.language,t),r){var p=e.match(this.interpolator.nestingRegexp);o<(p&&p.length)&&(t.nest=!1)}!t.lng&&"v1"!==this.options.compatibilityAPI&&i&&i.res&&(t.lng=i.usedLng),!1!==t.nest&&(e=this.interpolator.nest(e,(function(){for(var e=arguments.length,i=new Array(e),o=0;o<e;o++)i[o]=arguments[o];return s&&s[0]===i[0]&&!t.context?(a.logger.warn("It seems you are nesting recursively key: ".concat(i[0]," in key: ").concat(n[0])),null):a.translate.apply(a,i.concat([n]))}),t)),t.interpolation&&this.interpolator.reset()}var u=t.postProcess||this.options.postProcess,d="string"==typeof u?[u]:u;return null!=e&&d&&d.length&&!1!==t.applyPostProcessor&&(e=V.handle(d,e,n,this.options&&this.options.postProcessPassResolved?U({i18nResolved:i},t):t,this)),e}},{key:"resolve",value:function(e){var n,t,i,s,a,o=this,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return"string"==typeof e&&(e=[e]),e.forEach((function(e){if(!o.isValidLookup(n)){var c=o.extractFromKey(e,r),l=c.key;t=l;var p=c.namespaces;o.options.fallbackNS&&(p=p.concat(o.options.fallbackNS));var u=void 0!==r.count&&"string"!=typeof r.count,d=u&&!r.ordinal&&0===r.count&&o.pluralResolver.shouldUseIntlApi(),m=void 0!==r.context&&("string"==typeof r.context||"number"==typeof r.context)&&""!==r.context,g=r.lngs?r.lngs:o.languageUtils.toResolveHierarchy(r.lng||o.language,r.fallbackLng);p.forEach((function(e){o.isValidLookup(n)||(a=e,!W["".concat(g[0],"-").concat(e)]&&o.utils&&o.utils.hasLoadedNamespace&&!o.utils.hasLoadedNamespace(a)&&(W["".concat(g[0],"-").concat(e)]=!0,o.logger.warn('key "'.concat(t,'" for languages "').concat(g.join(", "),'" won\'t get resolved as namespace "').concat(a,'" was not yet loaded'),"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!")),g.forEach((function(t){if(!o.isValidLookup(n)){s=t;var a,c=[l];if(o.i18nFormat&&o.i18nFormat.addLookupKeys)o.i18nFormat.addLookupKeys(c,l,t,e,r);else{var p;u&&(p=o.pluralResolver.getSuffix(t,r.count,r));var g="".concat(o.options.pluralSeparator,"zero");if(u&&(c.push(l+p),d&&c.push(l+g)),m){var v="".concat(l).concat(o.options.contextSeparator).concat(r.context);c.push(v),u&&(c.push(v+p),d&&c.push(v+g))}}for(;a=c.pop();)o.isValidLookup(n)||(i=a,n=o.getResource(t,e,a,r))}})))}))}})),{res:n,usedKey:t,exactUsedKey:i,usedLng:s,usedNS:a}}},{key:"isValidLookup",value:function(e){return!(void 0===e||!this.options.returnNull&&null===e||!this.options.returnEmptyString&&""===e)}},{key:"getResource",value:function(e,n,t){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return this.i18nFormat&&this.i18nFormat.getResource?this.i18nFormat.getResource(e,n,t,i):this.resourceStore.getResource(e,n,t,i)}}],[{key:"hasDefaultValue",value:function(e){var n="defaultValue";for(var t in e)if(Object.prototype.hasOwnProperty.call(e,t)&&n===t.substring(0,12)&&void 0!==e[t])return!0;return!1}}]),t}();function Y(e){return e.charAt(0).toUpperCase()+e.slice(1)}var K=function(){function e(n){c(this,e),this.options=n,this.supportedLngs=this.options.supportedLngs||!1,this.logger=S.create("languageUtils")}return u(e,[{key:"getScriptPartFromCode",value:function(e){if(!e||e.indexOf("-")<0)return null;var n=e.split("-");return 2===n.length?null:(n.pop(),"x"===n[n.length-1].toLowerCase()?null:this.formatLanguageCode(n.join("-")))}},{key:"getLanguagePartFromCode",value:function(e){if(!e||e.indexOf("-")<0)return e;var n=e.split("-");return this.formatLanguageCode(n[0])}},{key:"formatLanguageCode",value:function(e){if("string"==typeof e&&e.indexOf("-")>-1){var n=["hans","hant","latn","cyrl","cans","mong","arab"],t=e.split("-");return this.options.lowerCaseLng?t=t.map((function(e){return e.toLowerCase()})):2===t.length?(t[0]=t[0].toLowerCase(),t[1]=t[1].toUpperCase(),n.indexOf(t[1].toLowerCase())>-1&&(t[1]=Y(t[1].toLowerCase()))):3===t.length&&(t[0]=t[0].toLowerCase(),2===t[1].length&&(t[1]=t[1].toUpperCase()),"sgn"!==t[0]&&2===t[2].length&&(t[2]=t[2].toUpperCase()),n.indexOf(t[1].toLowerCase())>-1&&(t[1]=Y(t[1].toLowerCase())),n.indexOf(t[2].toLowerCase())>-1&&(t[2]=Y(t[2].toLowerCase()))),t.join("-")}return this.options.cleanCode||this.options.lowerCaseLng?e.toLowerCase():e}},{key:"isSupportedCode",value:function(e){return("languageOnly"===this.options.load||this.options.nonExplicitSupportedLngs)&&(e=this.getLanguagePartFromCode(e)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.indexOf(e)>-1}},{key:"getBestMatchFromCodes",value:function(e){var n,t=this;return e?(e.forEach((function(e){if(!n){var i=t.formatLanguageCode(e);t.options.supportedLngs&&!t.isSupportedCode(i)||(n=i)}})),!n&&this.options.supportedLngs&&e.forEach((function(e){if(!n){var i=t.getLanguagePartFromCode(e);if(t.isSupportedCode(i))return n=i;n=t.options.supportedLngs.find((function(e){return e===i?e:e.indexOf("-")<0&&i.indexOf("-")<0?void 0:0===e.indexOf(i)?e:void 0}))}})),n||(n=this.getFallbackCodes(this.options.fallbackLng)[0]),n):null}},{key:"getFallbackCodes",value:function(e,n){if(!e)return[];if("function"==typeof e&&(e=e(n)),"string"==typeof e&&(e=[e]),"[object Array]"===Object.prototype.toString.apply(e))return e;if(!n)return e.default||[];var t=e[n];return t||(t=e[this.getScriptPartFromCode(n)]),t||(t=e[this.formatLanguageCode(n)]),t||(t=e[this.getLanguagePartFromCode(n)]),t||(t=e.default),t||[]}},{key:"toResolveHierarchy",value:function(e,n){var t=this,i=this.getFallbackCodes(n||this.options.fallbackLng||[],e),s=[],a=function(e){e&&(t.isSupportedCode(e)?s.push(e):t.logger.warn("rejecting language code not found in supportedLngs: ".concat(e)))};return"string"==typeof e&&e.indexOf("-")>-1?("languageOnly"!==this.options.load&&a(this.formatLanguageCode(e)),"languageOnly"!==this.options.load&&"currentOnly"!==this.options.load&&a(this.getScriptPartFromCode(e)),"currentOnly"!==this.options.load&&a(this.getLanguagePartFromCode(e))):"string"==typeof e&&a(this.formatLanguageCode(e)),i.forEach((function(e){s.indexOf(e)<0&&a(t.formatLanguageCode(e))})),s}}]),e}(),X=[{lngs:["ach","ak","am","arn","br","fil","gun","ln","mfe","mg","mi","oc","pt","pt-BR","tg","tl","ti","tr","uz","wa"],nr:[1,2],fc:1},{lngs:["af","an","ast","az","bg","bn","ca","da","de","dev","el","en","eo","es","et","eu","fi","fo","fur","fy","gl","gu","ha","hi","hu","hy","ia","it","kk","kn","ku","lb","mai","ml","mn","mr","nah","nap","nb","ne","nl","nn","no","nso","pa","pap","pms","ps","pt-PT","rm","sco","se","si","so","son","sq","sv","sw","ta","te","tk","ur","yo"],nr:[1,2],fc:2},{lngs:["ay","bo","cgg","fa","ht","id","ja","jbo","ka","km","ko","ky","lo","ms","sah","su","th","tt","ug","vi","wo","zh"],nr:[1],fc:3},{lngs:["be","bs","cnr","dz","hr","ru","sr","uk"],nr:[1,2,5],fc:4},{lngs:["ar"],nr:[0,1,2,3,11,100],fc:5},{lngs:["cs","sk"],nr:[1,2,5],fc:6},{lngs:["csb","pl"],nr:[1,2,5],fc:7},{lngs:["cy"],nr:[1,2,3,8],fc:8},{lngs:["fr"],nr:[1,2],fc:9},{lngs:["ga"],nr:[1,2,3,7,11],fc:10},{lngs:["gd"],nr:[1,2,3,20],fc:11},{lngs:["is"],nr:[1,2],fc:12},{lngs:["jv"],nr:[0,1],fc:13},{lngs:["kw"],nr:[1,2,3,4],fc:14},{lngs:["lt"],nr:[1,2,10],fc:15},{lngs:["lv"],nr:[1,2,0],fc:16},{lngs:["mk"],nr:[1,2],fc:17},{lngs:["mnk"],nr:[0,1,2],fc:18},{lngs:["mt"],nr:[1,2,11,20],fc:19},{lngs:["or"],nr:[2,1],fc:2},{lngs:["ro"],nr:[1,2,20],fc:20},{lngs:["sl"],nr:[5,1,2,3],fc:21},{lngs:["he","iw"],nr:[1,2,20,21],fc:22}],G={1:function(e){return Number(e>1)},2:function(e){return Number(1!=e)},3:function(e){return 0},4:function(e){return Number(e%10==1&&e%100!=11?0:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?1:2)},5:function(e){return Number(0==e?0:1==e?1:2==e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5)},6:function(e){return Number(1==e?0:e>=2&&e<=4?1:2)},7:function(e){return Number(1==e?0:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?1:2)},8:function(e){return Number(1==e?0:2==e?1:8!=e&&11!=e?2:3)},9:function(e){return Number(e>=2)},10:function(e){return Number(1==e?0:2==e?1:e<7?2:e<11?3:4)},11:function(e){return Number(1==e||11==e?0:2==e||12==e?1:e>2&&e<20?2:3)},12:function(e){return Number(e%10!=1||e%100==11)},13:function(e){return Number(0!==e)},14:function(e){return Number(1==e?0:2==e?1:3==e?2:3)},15:function(e){return Number(e%10==1&&e%100!=11?0:e%10>=2&&(e%100<10||e%100>=20)?1:2)},16:function(e){return Number(e%10==1&&e%100!=11?0:0!==e?1:2)},17:function(e){return Number(1==e||e%10==1&&e%100!=11?0:1)},18:function(e){return Number(0==e?0:1==e?1:2)},19:function(e){return Number(1==e?0:0==e||e%100>1&&e%100<11?1:e%100>10&&e%100<20?2:3)},20:function(e){return Number(1==e?0:0==e||e%100>0&&e%100<20?1:2)},21:function(e){return Number(e%100==1?1:e%100==2?2:e%100==3||e%100==4?3:0)},22:function(e){return Number(1==e?0:2==e?1:(e<0||e>10)&&e%10==0?2:3)}},J=["v1","v2","v3"],Q={zero:0,one:1,two:2,few:3,many:4,other:5};var Z=function(){function e(n){var t,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};c(this,e),this.languageUtils=n,this.options=i,this.logger=S.create("pluralResolver"),this.options.compatibilityJSON&&"v4"!==this.options.compatibilityJSON||"undefined"!=typeof Intl&&Intl.PluralRules||(this.options.compatibilityJSON="v3",this.logger.error("Your environment seems not to be Intl API compatible, use an Intl.PluralRules polyfill. Will fallback to the compatibilityJSON v3 format handling.")),this.rules=(t={},X.forEach((function(e){e.lngs.forEach((function(n){t[n]={numbers:e.nr,plurals:G[e.fc]}}))})),t)}return u(e,[{key:"addRule",value:function(e,n){this.rules[e]=n}},{key:"getRule",value:function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(this.shouldUseIntlApi())try{return new Intl.PluralRules(e,{type:n.ordinal?"ordinal":"cardinal"})}catch(e){return}return this.rules[e]||this.rules[this.languageUtils.getLanguagePartFromCode(e)]}},{key:"needsPlural",value:function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},t=this.getRule(e,n);return this.shouldUseIntlApi()?t&&t.resolvedOptions().pluralCategories.length>1:t&&t.numbers.length>1}},{key:"getPluralFormsOfKey",value:function(e,n){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return this.getSuffixes(e,t).map((function(e){return"".concat(n).concat(e)}))}},{key:"getSuffixes",value:function(e){var n=this,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=this.getRule(e,t);return i?this.shouldUseIntlApi()?i.resolvedOptions().pluralCategories.sort((function(e,n){return Q[e]-Q[n]})).map((function(e){return"".concat(n.options.prepend).concat(e)})):i.numbers.map((function(i){return n.getSuffix(e,i,t)})):[]}},{key:"getSuffix",value:function(e,n){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=this.getRule(e,t);return i?this.shouldUseIntlApi()?"".concat(this.options.prepend).concat(i.select(n)):this.getSuffixRetroCompatible(i,n):(this.logger.warn("no plural rule found for: ".concat(e)),"")}},{key:"getSuffixRetroCompatible",value:function(e,n){var t=this,i=e.noAbs?e.plurals(n):e.plurals(Math.abs(n)),s=e.numbers[i];this.options.simplifyPluralSuffix&&2===e.numbers.length&&1===e.numbers[0]&&(2===s?s="plural":1===s&&(s=""));var a=function(){return t.options.prepend&&s.toString()?t.options.prepend+s.toString():s.toString()};return"v1"===this.options.compatibilityJSON?1===s?"":"number"==typeof s?"_plural_".concat(s.toString()):a():"v2"===this.options.compatibilityJSON||this.options.simplifyPluralSuffix&&2===e.numbers.length&&1===e.numbers[0]?a():this.options.prepend&&i.toString()?this.options.prepend+i.toString():i.toString()}},{key:"shouldUseIntlApi",value:function(){return!J.includes(this.options.compatibilityJSON)}}]),e}();function ee(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,i)}return t}function ne(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?ee(Object(t),!0).forEach((function(n){f(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ee(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function te(e,n,t){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:".",s=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],a=function(e,n,t){var i=R(e,t);return void 0!==i?i:R(n,t)}(e,n,t);return!a&&s&&"string"==typeof t&&void 0===(a=P(e,t,i))&&(a=P(n,t,i)),a}var ie=function(){function e(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};c(this,e),this.logger=S.create("interpolator"),this.options=n,this.format=n.interpolation&&n.interpolation.format||function(e){return e},this.init(n)}return u(e,[{key:"init",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};e.interpolation||(e.interpolation={escapeValue:!0});var n=e.interpolation;this.escape=void 0!==n.escape?n.escape:D,this.escapeValue=void 0===n.escapeValue||n.escapeValue,this.useRawValueToEscape=void 0!==n.useRawValueToEscape&&n.useRawValueToEscape,this.prefix=n.prefix?M(n.prefix):n.prefixEscaped||"{{",this.suffix=n.suffix?M(n.suffix):n.suffixEscaped||"}}",this.formatSeparator=n.formatSeparator?n.formatSeparator:n.formatSeparator||",",this.unescapePrefix=n.unescapeSuffix?"":n.unescapePrefix||"-",this.unescapeSuffix=this.unescapePrefix?"":n.unescapeSuffix||"",this.nestingPrefix=n.nestingPrefix?M(n.nestingPrefix):n.nestingPrefixEscaped||M("$t("),this.nestingSuffix=n.nestingSuffix?M(n.nestingSuffix):n.nestingSuffixEscaped||M(")"),this.nestingOptionsSeparator=n.nestingOptionsSeparator?n.nestingOptionsSeparator:n.nestingOptionsSeparator||",",this.maxReplaces=n.maxReplaces?n.maxReplaces:1e3,this.alwaysFormat=void 0!==n.alwaysFormat&&n.alwaysFormat,this.resetRegExp()}},{key:"reset",value:function(){this.options&&this.init(this.options)}},{key:"resetRegExp",value:function(){var e="".concat(this.prefix,"(.+?)").concat(this.suffix);this.regexp=new RegExp(e,"g");var n="".concat(this.prefix).concat(this.unescapePrefix,"(.+?)").concat(this.unescapeSuffix).concat(this.suffix);this.regexpUnescape=new RegExp(n,"g");var t="".concat(this.nestingPrefix,"(.+?)").concat(this.nestingSuffix);this.nestingRegexp=new RegExp(t,"g")}},{key:"interpolate",value:function(e,n,t,i){var s,a,o,r=this,c=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{};function l(e){return e.replace(/\$/g,"$$$$")}var p=function(e){if(e.indexOf(r.formatSeparator)<0){var s=te(n,c,e,r.options.keySeparator,r.options.ignoreJSONStructure);return r.alwaysFormat?r.format(s,void 0,t,ne(ne(ne({},i),n),{},{interpolationkey:e})):s}var a=e.split(r.formatSeparator),o=a.shift().trim(),l=a.join(r.formatSeparator).trim();return r.format(te(n,c,o,r.options.keySeparator,r.options.ignoreJSONStructure),l,t,ne(ne(ne({},i),n),{},{interpolationkey:o}))};this.resetRegExp();var u=i&&i.missingInterpolationHandler||this.options.missingInterpolationHandler,d=i&&i.interpolation&&void 0!==i.interpolation.skipOnVariables?i.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:function(e){return l(e)}},{regex:this.regexp,safeValue:function(e){return r.escapeValue?l(r.escape(e)):l(e)}}].forEach((function(n){for(o=0;s=n.regex.exec(e);){var t=s[1].trim();if(void 0===(a=p(t)))if("function"==typeof u){var c=u(e,s,i);a="string"==typeof c?c:""}else if(i&&Object.prototype.hasOwnProperty.call(i,t))a="";else{if(d){a=s[0];continue}r.logger.warn("missed to pass in variable ".concat(t," for interpolating ").concat(e)),a=""}else"string"==typeof a||r.useRawValueToEscape||(a=C(a));var l=n.safeValue(a);if(e=e.replace(s[0],l),d?(n.regex.lastIndex+=a.length,n.regex.lastIndex-=s[0].length):n.regex.lastIndex=0,++o>=r.maxReplaces)break}})),e}},{key:"nest",value:function(e,n){var t,i,s,a=this,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};function r(e,n){var t=this.nestingOptionsSeparator;if(e.indexOf(t)<0)return e;var i=e.split(new RegExp("".concat(t,"[ ]*{"))),a="{".concat(i[1]);e=i[0];var o=(a=this.interpolate(a,s)).match(/'/g),r=a.match(/"/g);(o&&o.length%2==0&&!r||r.length%2!=0)&&(a=a.replace(/'/g,'"'));try{s=JSON.parse(a),n&&(s=ne(ne({},n),s))}catch(n){return this.logger.warn("failed parsing options string in nesting for key ".concat(e),n),"".concat(e).concat(t).concat(a)}return delete s.defaultValue,e}for(;t=this.nestingRegexp.exec(e);){var c=[];(s=(s=ne({},o)).replace&&"string"!=typeof s.replace?s.replace:s).applyPostProcessor=!1,delete s.defaultValue;var l=!1;if(-1!==t[0].indexOf(this.formatSeparator)&&!/{.*}/.test(t[1])){var p=t[1].split(this.formatSeparator).map((function(e){return e.trim()}));t[1]=p.shift(),c=p,l=!0}if((i=n(r.call(this,t[1].trim(),s),s))&&t[0]===e&&"string"!=typeof i)return i;"string"!=typeof i&&(i=C(i)),i||(this.logger.warn("missed to resolve ".concat(t[1]," for nesting ").concat(e)),i=""),l&&(i=c.reduce((function(e,n){return a.format(e,n,o.lng,ne(ne({},o),{},{interpolationkey:t[1].trim()}))}),i.trim())),e=e.replace(t[0],i),this.regexp.lastIndex=0}return e}}]),e}();function se(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,i)}return t}function ae(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?se(Object(t),!0).forEach((function(n){f(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):se(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function oe(e){var n={};return function(t,i,s){var a=i+JSON.stringify(s),o=n[a];return o||(o=e(i,s),n[a]=o),o(t)}}var re=function(){function e(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};c(this,e),this.logger=S.create("formatter"),this.options=n,this.formats={number:oe((function(e,n){var t=new Intl.NumberFormat(e,ae({},n));return function(e){return t.format(e)}})),currency:oe((function(e,n){var t=new Intl.NumberFormat(e,ae(ae({},n),{},{style:"currency"}));return function(e){return t.format(e)}})),datetime:oe((function(e,n){var t=new Intl.DateTimeFormat(e,ae({},n));return function(e){return t.format(e)}})),relativetime:oe((function(e,n){var t=new Intl.RelativeTimeFormat(e,ae({},n));return function(e){return t.format(e,n.range||"day")}})),list:oe((function(e,n){var t=new Intl.ListFormat(e,ae({},n));return function(e){return t.format(e)}}))},this.init(n)}return u(e,[{key:"init",value:function(e){var n=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{interpolation:{}}).interpolation;this.formatSeparator=n.formatSeparator?n.formatSeparator:n.formatSeparator||","}},{key:"add",value:function(e,n){this.formats[e.toLowerCase().trim()]=n}},{key:"addCached",value:function(e,n){this.formats[e.toLowerCase().trim()]=oe(n)}},{key:"format",value:function(e,n,t){var i=this,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return n.split(this.formatSeparator).reduce((function(e,n){var a=function(e){var n=e.toLowerCase().trim(),t={};if(e.indexOf("(")>-1){var i=e.split("(");n=i[0].toLowerCase().trim();var s=i[1].substring(0,i[1].length-1);"currency"===n&&s.indexOf(":")<0?t.currency||(t.currency=s.trim()):"relativetime"===n&&s.indexOf(":")<0?t.range||(t.range=s.trim()):s.split(";").forEach((function(e){if(e){var n=b(e.split(":")),i=n[0],s=n.slice(1).join(":").trim().replace(/^'+|'+$/g,"");t[i.trim()]||(t[i.trim()]=s),"false"===s&&(t[i.trim()]=!1),"true"===s&&(t[i.trim()]=!0),isNaN(s)||(t[i.trim()]=parseInt(s,10))}}))}return{formatName:n,formatOptions:t}}(n),o=a.formatName,r=a.formatOptions;if(i.formats[o]){var c=e;try{var l=s&&s.formatParams&&s.formatParams[s.interpolationkey]||{},p=l.locale||l.lng||s.locale||s.lng||t;c=i.formats[o](e,p,ae(ae(ae({},r),s),l))}catch(e){i.logger.warn(e)}return c}return i.logger.warn("there was no format function for ".concat(o)),e}),e)}}]),e}();function ce(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,i)}return t}function le(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?ce(Object(t),!0).forEach((function(n){f(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ce(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function pe(e){var n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var t,i=h(e);if(n){var s=h(this).constructor;t=Reflect.construct(i,arguments,s)}else t=i.apply(this,arguments);return v(this,t)}}var ue=function(e){g(t,j);var n=pe(t);function t(e,i,s){var a,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return c(this,t),a=n.call(this),T&&j.call(d(a)),a.backend=e,a.store=i,a.services=s,a.languageUtils=s.languageUtils,a.options=o,a.logger=S.create("backendConnector"),a.waitingReads=[],a.maxParallelReads=o.maxParallelReads||10,a.readingCalls=0,a.maxRetries=o.maxRetries>=0?o.maxRetries:5,a.retryTimeout=o.retryTimeout>=1?o.retryTimeout:350,a.state={},a.queue=[],a.backend&&a.backend.init&&a.backend.init(s,o.backend,o),a}return u(t,[{key:"queueLoad",value:function(e,n,t,i){var s=this,a={},o={},r={},c={};return e.forEach((function(e){var i=!0;n.forEach((function(n){var r="".concat(e,"|").concat(n);!t.reload&&s.store.hasResourceBundle(e,n)?s.state[r]=2:s.state[r]<0||(1===s.state[r]?void 0===o[r]&&(o[r]=!0):(s.state[r]=1,i=!1,void 0===o[r]&&(o[r]=!0),void 0===a[r]&&(a[r]=!0),void 0===c[n]&&(c[n]=!0)))})),i||(r[e]=!0)})),(Object.keys(a).length||Object.keys(o).length)&&this.queue.push({pending:o,pendingCount:Object.keys(o).length,loaded:{},errors:[],callback:i}),{toLoad:Object.keys(a),pending:Object.keys(o),toLoadLanguages:Object.keys(r),toLoadNamespaces:Object.keys(c)}}},{key:"loaded",value:function(e,n,t){var i=e.split("|"),s=i[0],a=i[1];n&&this.emit("failedLoading",s,a,n),t&&this.store.addResourceBundle(s,a,t),this.state[e]=n?-1:2;var o={};this.queue.forEach((function(t){!function(e,n,t,i){var s=A(e,n,Object),a=s.obj,o=s.k;a[o]=a[o]||[],i&&(a[o]=a[o].concat(t)),i||a[o].push(t)}(t.loaded,[s],a),function(e,n){void 0!==e.pending[n]&&(delete e.pending[n],e.pendingCount--)}(t,e),n&&t.errors.push(n),0!==t.pendingCount||t.done||(Object.keys(t.loaded).forEach((function(e){o[e]||(o[e]={});var n=t.loaded[e];n.length&&n.forEach((function(n){void 0===o[e][n]&&(o[e][n]=!0)}))})),t.done=!0,t.errors.length?t.callback(t.errors):t.callback())})),this.emit("loaded",o),this.queue=this.queue.filter((function(e){return!e.done}))}},{key:"read",value:function(e,n,t){var i=this,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:this.retryTimeout,o=arguments.length>5?arguments[5]:void 0;if(!e.length)return o(null,{});if(this.readingCalls>=this.maxParallelReads)this.waitingReads.push({lng:e,ns:n,fcName:t,tried:s,wait:a,callback:o});else{this.readingCalls++;var r=function(r,c){if(i.readingCalls--,i.waitingReads.length>0){var l=i.waitingReads.shift();i.read(l.lng,l.ns,l.fcName,l.tried,l.wait,l.callback)}r&&c&&s<i.maxRetries?setTimeout((function(){i.read.call(i,e,n,t,s+1,2*a,o)}),a):o(r,c)},c=this.backend[t].bind(this.backend);if(2!==c.length)return c(e,n,r);try{var l=c(e,n);l&&"function"==typeof l.then?l.then((function(e){return r(null,e)})).catch(r):r(null,l)}catch(e){r(e)}}}},{key:"prepareLoading",value:function(e,n){var t=this,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},s=arguments.length>3?arguments[3]:void 0;if(!this.backend)return this.logger.warn("No backend was added via i18next.use. Will not load resources."),s&&s();"string"==typeof e&&(e=this.languageUtils.toResolveHierarchy(e)),"string"==typeof n&&(n=[n]);var a=this.queueLoad(e,n,i,s);if(!a.toLoad.length)return a.pending.length||s(),null;a.toLoad.forEach((function(e){t.loadOne(e)}))}},{key:"load",value:function(e,n,t){this.prepareLoading(e,n,{},t)}},{key:"reload",value:function(e,n,t){this.prepareLoading(e,n,{reload:!0},t)}},{key:"loadOne",value:function(e){var n=this,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",i=e.split("|"),s=i[0],a=i[1];this.read(s,a,"read",void 0,void 0,(function(i,o){i&&n.logger.warn("".concat(t,"loading namespace ").concat(a," for language ").concat(s," failed"),i),!i&&o&&n.logger.log("".concat(t,"loaded namespace ").concat(a," for language ").concat(s),o),n.loaded(e,i,o)}))}},{key:"saveMissing",value:function(e,n,t,i,s){var a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{},o=arguments.length>6&&void 0!==arguments[6]?arguments[6]:function(){};if(this.services.utils&&this.services.utils.hasLoadedNamespace&&!this.services.utils.hasLoadedNamespace(n))this.logger.warn('did not save key "'.concat(t,'" as the namespace "').concat(n,'" was not yet loaded'),"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!");else if(null!=t&&""!==t){if(this.backend&&this.backend.create){var r=le(le({},a),{},{isUpdate:s}),c=this.backend.create.bind(this.backend);if(c.length<6)try{var l;(l=5===c.length?c(e,n,t,i,r):c(e,n,t,i))&&"function"==typeof l.then?l.then((function(e){return o(null,e)})).catch(o):o(null,l)}catch(e){o(e)}else c(e,n,t,i,o,r)}e&&e[0]&&this.store.addResource(e[0],n,t,i)}}}]),t}();function de(){return{debug:!1,initImmediate:!0,ns:["translation"],defaultNS:["translation"],fallbackLng:["dev"],fallbackNS:!1,supportedLngs:!1,nonExplicitSupportedLngs:!1,load:"all",preload:!1,simplifyPluralSuffix:!0,keySeparator:".",nsSeparator:":",pluralSeparator:"_",contextSeparator:"_",partialBundledLanguages:!1,saveMissing:!1,updateMissing:!1,saveMissingTo:"fallback",saveMissingPlurals:!0,missingKeyHandler:!1,missingInterpolationHandler:!1,postProcess:!1,postProcessPassResolved:!1,returnNull:!0,returnEmptyString:!0,returnObjects:!1,joinArrays:!1,returnedObjectHandler:!1,parseMissingKeyHandler:!1,appendNamespaceToMissingKey:!1,appendNamespaceToCIMode:!1,overloadTranslationOptionHandler:function(e){var n={};if("object"===r(e[1])&&(n=e[1]),"string"==typeof e[1]&&(n.defaultValue=e[1]),"string"==typeof e[2]&&(n.tDescription=e[2]),"object"===r(e[2])||"object"===r(e[3])){var t=e[3]||e[2];Object.keys(t).forEach((function(e){n[e]=t[e]}))}return n},interpolation:{escapeValue:!0,format:function(e,n,t,i){return e},prefix:"{{",suffix:"}}",formatSeparator:",",unescapePrefix:"-",nestingPrefix:"$t(",nestingSuffix:")",nestingOptionsSeparator:",",maxReplaces:1e3,skipOnVariables:!0}}}function me(e){return"string"==typeof e.ns&&(e.ns=[e.ns]),"string"==typeof e.fallbackLng&&(e.fallbackLng=[e.fallbackLng]),"string"==typeof e.fallbackNS&&(e.fallbackNS=[e.fallbackNS]),e.supportedLngs&&e.supportedLngs.indexOf("cimode")<0&&(e.supportedLngs=e.supportedLngs.concat(["cimode"])),e}function ge(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,i)}return t}function ve(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?ge(Object(t),!0).forEach((function(n){f(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ge(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function he(e){var n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var t,i=h(e);if(n){var s=h(this).constructor;t=Reflect.construct(i,arguments,s)}else t=i.apply(this,arguments);return v(this,t)}}function fe(){}var xe=function(e){g(t,j);var n=he(t);function t(){var e,i,s=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},a=arguments.length>1?arguments[1]:void 0;if(c(this,t),e=n.call(this),T&&j.call(d(e)),e.options=me(s),e.services={},e.logger=S,e.modules={external:[]},i=d(e),Object.getOwnPropertyNames(Object.getPrototypeOf(i)).forEach((function(e){"function"==typeof i[e]&&(i[e]=i[e].bind(i))})),a&&!e.isInitialized&&!s.isClone){if(!e.options.initImmediate)return e.init(s,a),v(e,d(e));setTimeout((function(){e.init(s,a)}),0)}return e}return u(t,[{key:"init",value:function(){var e=this,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0;"function"==typeof n&&(t=n,n={}),!n.defaultNS&&!1!==n.defaultNS&&n.ns&&("string"==typeof n.ns?n.defaultNS=n.ns:n.ns.indexOf("translation")<0&&(n.defaultNS=n.ns[0]));var i=de();function s(e){return e?"function"==typeof e?new e:e:null}if(this.options=ve(ve(ve({},i),this.options),me(n)),"v1"!==this.options.compatibilityAPI&&(this.options.interpolation=ve(ve({},i.interpolation),this.options.interpolation)),void 0!==n.keySeparator&&(this.options.userDefinedKeySeparator=n.keySeparator),void 0!==n.nsSeparator&&(this.options.userDefinedNsSeparator=n.nsSeparator),!this.options.isClone){var a;this.modules.logger?S.init(s(this.modules.logger),this.options):S.init(null,this.options),this.modules.formatter?a=this.modules.formatter:"undefined"!=typeof Intl&&(a=re);var o=new K(this.options);this.store=new z(this.options.resources,this.options);var r=this.services;r.logger=S,r.resourceStore=this.store,r.languageUtils=o,r.pluralResolver=new Z(o,{prepend:this.options.pluralSeparator,compatibilityJSON:this.options.compatibilityJSON,simplifyPluralSuffix:this.options.simplifyPluralSuffix}),!a||this.options.interpolation.format&&this.options.interpolation.format!==i.interpolation.format||(r.formatter=s(a),r.formatter.init(r,this.options),this.options.interpolation.format=r.formatter.format.bind(r.formatter)),r.interpolator=new ie(this.options),r.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},r.backendConnector=new ue(s(this.modules.backend),r.resourceStore,r,this.options),r.backendConnector.on("*",(function(n){for(var t=arguments.length,i=new Array(t>1?t-1:0),s=1;s<t;s++)i[s-1]=arguments[s];e.emit.apply(e,[n].concat(i))})),this.modules.languageDetector&&(r.languageDetector=s(this.modules.languageDetector),r.languageDetector.init&&r.languageDetector.init(r,this.options.detection,this.options)),this.modules.i18nFormat&&(r.i18nFormat=s(this.modules.i18nFormat),r.i18nFormat.init&&r.i18nFormat.init(this)),this.translator=new $(this.services,this.options),this.translator.on("*",(function(n){for(var t=arguments.length,i=new Array(t>1?t-1:0),s=1;s<t;s++)i[s-1]=arguments[s];e.emit.apply(e,[n].concat(i))})),this.modules.external.forEach((function(n){n.init&&n.init(e)}))}if(this.format=this.options.interpolation.format,t||(t=fe),this.options.fallbackLng&&!this.services.languageDetector&&!this.options.lng){var c=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);c.length>0&&"dev"!==c[0]&&(this.options.lng=c[0])}this.services.languageDetector||this.options.lng||this.logger.warn("init: no languageDetector is used and no lng is defined");["getResource","hasResourceBundle","getResourceBundle","getDataByLanguage"].forEach((function(n){e[n]=function(){var t;return(t=e.store)[n].apply(t,arguments)}}));["addResource","addResources","addResourceBundle","removeResourceBundle"].forEach((function(n){e[n]=function(){var t;return(t=e.store)[n].apply(t,arguments),e}}));var l=_(),p=function(){var n=function(n,i){e.isInitialized&&!e.initializedStoreOnce&&e.logger.warn("init: i18next is already initialized. You should call init just once!"),e.isInitialized=!0,e.options.isClone||e.logger.log("initialized",e.options),e.emit("initialized",e.options),l.resolve(i),t(n,i)};if(e.languages&&"v1"!==e.options.compatibilityAPI&&!e.isInitialized)return n(null,e.t.bind(e));e.changeLanguage(e.options.lng,n)};return this.options.resources||!this.options.initImmediate?p():setTimeout(p,0),l}},{key:"loadResources",value:function(e){var n=this,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:fe,i="string"==typeof e?e:this.language;if("function"==typeof e&&(t=e),!this.options.resources||this.options.partialBundledLanguages){if(i&&"cimode"===i.toLowerCase())return t();var s=[],a=function(e){e&&n.services.languageUtils.toResolveHierarchy(e).forEach((function(e){s.indexOf(e)<0&&s.push(e)}))};if(i)a(i);else this.services.languageUtils.getFallbackCodes(this.options.fallbackLng).forEach((function(e){return a(e)}));this.options.preload&&this.options.preload.forEach((function(e){return a(e)})),this.services.backendConnector.load(s,this.options.ns,(function(e){e||n.resolvedLanguage||!n.language||n.setResolvedLanguage(n.language),t(e)}))}else t(null)}},{key:"reloadResources",value:function(e,n,t){var i=_();return e||(e=this.languages),n||(n=this.options.ns),t||(t=fe),this.services.backendConnector.reload(e,n,(function(e){i.resolve(),t(e)})),i}},{key:"use",value:function(e){if(!e)throw new Error("You are passing an undefined module! Please check the object you are passing to i18next.use()");if(!e.type)throw new Error("You are passing a wrong module! Please check the object you are passing to i18next.use()");return"backend"===e.type&&(this.modules.backend=e),("logger"===e.type||e.log&&e.warn&&e.error)&&(this.modules.logger=e),"languageDetector"===e.type&&(this.modules.languageDetector=e),"i18nFormat"===e.type&&(this.modules.i18nFormat=e),"postProcessor"===e.type&&V.addPostProcessor(e),"formatter"===e.type&&(this.modules.formatter=e),"3rdParty"===e.type&&this.modules.external.push(e),this}},{key:"setResolvedLanguage",value:function(e){if(e&&this.languages&&!(["cimode","dev"].indexOf(e)>-1))for(var n=0;n<this.languages.length;n++){var t=this.languages[n];if(!(["cimode","dev"].indexOf(t)>-1)&&this.store.hasLanguageSomeTranslations(t)){this.resolvedLanguage=t;break}}}},{key:"changeLanguage",value:function(e,n){var t=this;this.isLanguageChangingTo=e;var i=_();this.emit("languageChanging",e);var s=function(e){t.language=e,t.languages=t.services.languageUtils.toResolveHierarchy(e),t.resolvedLanguage=void 0,t.setResolvedLanguage(e)},a=function(a){e||a||!t.services.languageDetector||(a=[]);var o="string"==typeof a?a:t.services.languageUtils.getBestMatchFromCodes(a);o&&(t.language||s(o),t.translator.language||t.translator.changeLanguage(o),t.services.languageDetector&&t.services.languageDetector.cacheUserLanguage&&t.services.languageDetector.cacheUserLanguage(o)),t.loadResources(o,(function(e){!function(e,a){a?(s(a),t.translator.changeLanguage(a),t.isLanguageChangingTo=void 0,t.emit("languageChanged",a),t.logger.log("languageChanged",a)):t.isLanguageChangingTo=void 0,i.resolve((function(){return t.t.apply(t,arguments)})),n&&n(e,(function(){return t.t.apply(t,arguments)}))}(e,o)}))};return e||!this.services.languageDetector||this.services.languageDetector.async?!e&&this.services.languageDetector&&this.services.languageDetector.async?0===this.services.languageDetector.detect.length?this.services.languageDetector.detect().then(a):this.services.languageDetector.detect(a):a(e):a(this.services.languageDetector.detect()),i}},{key:"getFixedT",value:function(e,n,t){var i=this,s=function e(n,s){var a;if("object"!==r(s)){for(var o=arguments.length,c=new Array(o>2?o-2:0),l=2;l<o;l++)c[l-2]=arguments[l];a=i.options.overloadTranslationOptionHandler([n,s].concat(c))}else a=ve({},s);a.lng=a.lng||e.lng,a.lngs=a.lngs||e.lngs,a.ns=a.ns||e.ns,a.keyPrefix=a.keyPrefix||t||e.keyPrefix;var p,u=i.options.keySeparator||".";return p=a.keyPrefix&&Array.isArray(n)?n.map((function(e){return"".concat(a.keyPrefix).concat(u).concat(e)})):a.keyPrefix?"".concat(a.keyPrefix).concat(u).concat(n):n,i.t(p,a)};return"string"==typeof e?s.lng=e:s.lngs=e,s.ns=n,s.keyPrefix=t,s}},{key:"t",value:function(){var e;return this.translator&&(e=this.translator).translate.apply(e,arguments)}},{key:"exists",value:function(){var e;return this.translator&&(e=this.translator).exists.apply(e,arguments)}},{key:"setDefaultNamespace",value:function(e){this.options.defaultNS=e}},{key:"hasLoadedNamespace",value:function(e){var n=this,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!this.isInitialized)return this.logger.warn("hasLoadedNamespace: i18next was not initialized",this.languages),!1;if(!this.languages||!this.languages.length)return this.logger.warn("hasLoadedNamespace: i18n.languages were undefined or empty",this.languages),!1;var i=t.lng||this.resolvedLanguage||this.languages[0],s=!!this.options&&this.options.fallbackLng,a=this.languages[this.languages.length-1];if("cimode"===i.toLowerCase())return!0;var o=function(e,t){var i=n.services.backendConnector.state["".concat(e,"|").concat(t)];return-1===i||2===i};if(t.precheck){var r=t.precheck(this,o);if(void 0!==r)return r}return!!this.hasResourceBundle(i,e)||(!(this.services.backendConnector.backend&&(!this.options.resources||this.options.partialBundledLanguages))||!(!o(i,e)||s&&!o(a,e)))}},{key:"loadNamespaces",value:function(e,n){var t=this,i=_();return this.options.ns?("string"==typeof e&&(e=[e]),e.forEach((function(e){t.options.ns.indexOf(e)<0&&t.options.ns.push(e)})),this.loadResources((function(e){i.resolve(),n&&n(e)})),i):(n&&n(),Promise.resolve())}},{key:"loadLanguages",value:function(e,n){var t=_();"string"==typeof e&&(e=[e]);var i=this.options.preload||[],s=e.filter((function(e){return i.indexOf(e)<0}));return s.length?(this.options.preload=i.concat(s),this.loadResources((function(e){t.resolve(),n&&n(e)})),t):(n&&n(),Promise.resolve())}},{key:"dir",value:function(e){if(e||(e=this.resolvedLanguage||(this.languages&&this.languages.length>0?this.languages[0]:this.language)),!e)return"rtl";var n=this.services&&this.services.languageUtils||new K(de());return["ar","shu","sqr","ssh","xaa","yhd","yud","aao","abh","abv","acm","acq","acw","acx","acy","adf","ads","aeb","aec","afb","ajp","apc","apd","arb","arq","ars","ary","arz","auz","avl","ayh","ayl","ayn","ayp","bbz","pga","he","iw","ps","pbt","pbu","pst","prp","prd","ug","ur","ydd","yds","yih","ji","yi","hbo","men","xmn","fa","jpr","peo","pes","prs","dv","sam","ckb"].indexOf(n.getLanguagePartFromCode(e))>-1||e.toLowerCase().indexOf("-arab")>1?"rtl":"ltr"}},{key:"cloneInstance",value:function(){var e=this,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:fe,s=ve(ve(ve({},this.options),n),{isClone:!0}),a=new t(s);void 0===n.debug&&void 0===n.prefix||(a.logger=a.logger.clone(n));return["store","services","language"].forEach((function(n){a[n]=e[n]})),a.services=ve({},this.services),a.services.utils={hasLoadedNamespace:a.hasLoadedNamespace.bind(a)},a.translator=new $(a.services,a.options),a.translator.on("*",(function(e){for(var n=arguments.length,t=new Array(n>1?n-1:0),i=1;i<n;i++)t[i-1]=arguments[i];a.emit.apply(a,[e].concat(t))})),a.init(s,i),a.translator.options=a.options,a.translator.backendConnector.services.utils={hasLoadedNamespace:a.hasLoadedNamespace.bind(a)},a}},{key:"toJSON",value:function(){return{options:this.options,store:this.store,language:this.language,languages:this.languages,resolvedLanguage:this.resolvedLanguage}}}]),t}();f(xe,"createInstance",(function(){return new xe(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1?arguments[1]:void 0)}));var be=xe.createInstance();be.createInstance=xe.createInstance,be.createInstance,be.dir,be.init,be.loadResources,be.reloadResources,be.use,be.changeLanguage,be.getFixedT,be.t,be.exists,be.setDefaultNamespace,be.hasLoadedNamespace,be.loadNamespaces,be.loadLanguages;var ye=[],we=ye.forEach,ke=ye.slice;var Se=/^[\u0009\u0020-\u007e\u0080-\u00ff]+$/,je=function(e,n,t,i){var s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{path:"/",sameSite:"strict"};t&&(s.expires=new Date,s.expires.setTime(s.expires.getTime()+60*t*1e3)),i&&(s.domain=i),document.cookie=function(e,n,t){var i=t||{};i.path=i.path||"/";var s=encodeURIComponent(n),a="".concat(e,"=").concat(s);if(i.maxAge>0){var o=i.maxAge-0;if(Number.isNaN(o))throw new Error("maxAge should be a Number");a+="; Max-Age=".concat(Math.floor(o))}if(i.domain){if(!Se.test(i.domain))throw new TypeError("option domain is invalid");a+="; Domain=".concat(i.domain)}if(i.path){if(!Se.test(i.path))throw new TypeError("option path is invalid");a+="; Path=".concat(i.path)}if(i.expires){if("function"!=typeof i.expires.toUTCString)throw new TypeError("option expires is invalid");a+="; Expires=".concat(i.expires.toUTCString())}if(i.httpOnly&&(a+="; HttpOnly"),i.secure&&(a+="; Secure"),i.sameSite)switch("string"==typeof i.sameSite?i.sameSite.toLowerCase():i.sameSite){case!0:a+="; SameSite=Strict";break;case"lax":a+="; SameSite=Lax";break;case"strict":a+="; SameSite=Strict";break;case"none":a+="; SameSite=None";break;default:throw new TypeError("option sameSite is invalid")}return a}(e,encodeURIComponent(n),s)},_e=function(e){for(var n="".concat(e,"="),t=document.cookie.split(";"),i=0;i<t.length;i++){for(var s=t[i];" "===s.charAt(0);)s=s.substring(1,s.length);if(0===s.indexOf(n))return s.substring(n.length,s.length)}return null},Ce={name:"cookie",lookup:function(e){var n;if(e.lookupCookie&&"undefined"!=typeof document){var t=_e(e.lookupCookie);t&&(n=t)}return n},cacheUserLanguage:function(e,n){n.lookupCookie&&"undefined"!=typeof document&&je(n.lookupCookie,e,n.cookieMinutes,n.cookieDomain,n.cookieOptions)}},Ae={name:"querystring",lookup:function(e){var n;if("undefined"!=typeof window){var t=window.location.search;!window.location.search&&window.location.hash&&window.location.hash.indexOf("?")>-1&&(t=window.location.hash.substring(window.location.hash.indexOf("?")));for(var i=t.substring(1).split("&"),s=0;s<i.length;s++){var a=i[s].indexOf("=");if(a>0)i[s].substring(0,a)===e.lookupQuerystring&&(n=i[s].substring(a+1))}}return n}},Ee=null,Re=function(){if(null!==Ee)return Ee;try{Ee="undefined"!==window&&null!==window.localStorage;var e="i18next.translate.boo";window.localStorage.setItem(e,"foo"),window.localStorage.removeItem(e)}catch(e){Ee=!1}return Ee},Le={name:"localStorage",lookup:function(e){var n;if(e.lookupLocalStorage&&Re()){var t=window.localStorage.getItem(e.lookupLocalStorage);t&&(n=t)}return n},cacheUserLanguage:function(e,n){n.lookupLocalStorage&&Re()&&window.localStorage.setItem(n.lookupLocalStorage,e)}},Me=null,Ie=function(){if(null!==Me)return Me;try{Me="undefined"!==window&&null!==window.sessionStorage;var e="i18next.translate.boo";window.sessionStorage.setItem(e,"foo"),window.sessionStorage.removeItem(e)}catch(e){Me=!1}return Me},De={name:"sessionStorage",lookup:function(e){var n;if(e.lookupSessionStorage&&Ie()){var t=window.sessionStorage.getItem(e.lookupSessionStorage);t&&(n=t)}return n},cacheUserLanguage:function(e,n){n.lookupSessionStorage&&Ie()&&window.sessionStorage.setItem(n.lookupSessionStorage,e)}},Te={name:"navigator",lookup:function(e){var n=[];if("undefined"!=typeof navigator){if(navigator.languages)for(var t=0;t<navigator.languages.length;t++)n.push(navigator.languages[t]);navigator.userLanguage&&n.push(navigator.userLanguage),navigator.language&&n.push(navigator.language)}return n.length>0?n:void 0}},Oe={name:"htmlTag",lookup:function(e){var n,t=e.htmlTag||("undefined"!=typeof document?document.documentElement:null);return t&&"function"==typeof t.getAttribute&&(n=t.getAttribute("lang")),n}},Pe={name:"path",lookup:function(e){var n;if("undefined"!=typeof window){var t=window.location.pathname.match(/\/([a-zA-Z-]*)/g);if(t instanceof Array)if("number"==typeof e.lookupFromPathIndex){if("string"!=typeof t[e.lookupFromPathIndex])return;n=t[e.lookupFromPathIndex].replace("/","")}else n=t[0].replace("/","")}return n}},Fe={name:"subdomain",lookup:function(e){var n="number"==typeof e.lookupFromSubdomainIndex?e.lookupFromSubdomainIndex+1:1,t="undefined"!=typeof window&&window.location&&window.location.hostname&&window.location.hostname.match(/^(\w{2,5})\.(([a-z0-9-]{1,63}\.[a-z]{2,6})|localhost)/i);if(t)return t[n]}};var Ne=function(){function e(n){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};c(this,e),this.type="languageDetector",this.detectors={},this.init(n,t)}return u(e,[{key:"init",value:function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};this.services=e||{languageUtils:{}},this.options=function(e){return we.call(ke.call(arguments,1),(function(n){if(n)for(var t in n)void 0===e[t]&&(e[t]=n[t])})),e}(n,this.options||{},{order:["querystring","cookie","localStorage","sessionStorage","navigator","htmlTag"],lookupQuerystring:"lng",lookupCookie:"i18next",lookupLocalStorage:"i18nextLng",lookupSessionStorage:"i18nextLng",caches:["localStorage"],excludeCacheFor:["cimode"],convertDetectedLanguage:function(e){return e}}),"string"==typeof this.options.convertDetectedLanguage&&this.options.convertDetectedLanguage.indexOf("15897")>-1&&(this.options.convertDetectedLanguage=function(e){return e.replace("-","_")}),this.options.lookupFromUrlIndex&&(this.options.lookupFromPathIndex=this.options.lookupFromUrlIndex),this.i18nOptions=t,this.addDetector(Ce),this.addDetector(Ae),this.addDetector(Le),this.addDetector(De),this.addDetector(Te),this.addDetector(Oe),this.addDetector(Pe),this.addDetector(Fe)}},{key:"addDetector",value:function(e){return this.detectors[e.name]=e,this}},{key:"detect",value:function(e){var n=this;e||(e=this.options.order);var t=[];return e.forEach((function(e){if(n.detectors[e]){var i=n.detectors[e].lookup(n.options);i&&"string"==typeof i&&(i=[i]),i&&(t=t.concat(i))}})),t=t.map((function(e){return n.options.convertDetectedLanguage(e)})),this.services.languageUtils.getBestMatchFromCodes?t:t.length>0?t[0]:null}},{key:"cacheUserLanguage",value:function(e,n){var t=this;n||(n=this.options.caches),n&&(this.options.excludeCacheFor&&this.options.excludeCacheFor.indexOf(e)>-1||n.forEach((function(n){t.detectors[n]&&t.detectors[n].cacheUserLanguage(e,t.options)})))}}]),e}();Ne.type="languageDetector";var qe={progressBar:"Progress Complete",fullScreenTrial:{prompt:"Switching to full screen mode.",buttonText:"Go"},instructions:{intro:{header:"Welcome to ROAR Multichoice!",topText:"In this activity, you're going to help me complete some sentences.",bottomText:""},instructions:{header:"What word completes the sentence?",topText:"Choose the best option to fill in the blank.",bottomText:""},practice:{header:"Let's practice!",topText:"Remember, your job is to choose the right word that fills in the blank.",bottomText:""},postPractice:{header:"Great job!",topText:"Now you're ready to try on your own. Try your best to choose the word that completes the sentence.",bottomText:""},practiceCorrect:{header:"That's right!",topText:"",bottomText:""},break1:{header:"Keep up the good work!",topText:"",bottomText:""},break2:{header:"You are doing great!",topText:"",bottomText:""},break3:{header:"Let's keep going.",topText:"",bottomText:""},break4:{header:"You are an expert at this!",topText:"",bottomText:""},break5:{header:"You can do it!",topText:"",bottomText:""},ending:{header:"You're all done! Thank you for helping me find those words!",topText:"",bottomText:""}}};(new Ne).addDetector({name:"defaultToEnglish",lookup:e=>"en"}),be.use(Ne).init({debug:!1,load:"languageOnly",fallbackLng:"en",detection:{order:["defaultToEnglish","querystring"]},resources:{en:{translation:qe}}});var ze=function(){this.__data__=[],this.size=0};var Ve=function(e,n){return e===n||e!=e&&n!=n},Be=Ve;var Ue=function(e,n){for(var t=e.length;t--;)if(Be(e[t][0],n))return t;return-1},He=Ue,We=Array.prototype.splice;var $e=Ue;var Ye=Ue;var Ke=Ue;var Xe=ze,Ge=function(e){var n=this.__data__,t=He(n,e);return!(t<0)&&(t==n.length-1?n.pop():We.call(n,t,1),--this.size,!0)},Je=function(e){var n=this.__data__,t=$e(n,e);return t<0?void 0:n[t][1]},Qe=function(e){return Ye(this.__data__,e)>-1},Ze=function(e,n){var t=this.__data__,i=Ke(t,e);return i<0?(++this.size,t.push([e,n])):t[i][1]=n,this};function en(e){var n=-1,t=null==e?0:e.length;for(this.clear();++n<t;){var i=e[n];this.set(i[0],i[1])}}en.prototype.clear=Xe,en.prototype.delete=Ge,en.prototype.get=Je,en.prototype.has=Qe,en.prototype.set=Ze;var nn=en,tn=nn;var sn=function(){this.__data__=new tn,this.size=0};var an=function(e){var n=this.__data__,t=n.delete(e);return this.size=n.size,t};var on=function(e){return this.__data__.get(e)};var rn=function(e){return this.__data__.has(e)},cn="object"==typeof n&&n&&n.Object===Object&&n,ln=cn,pn="object"==typeof self&&self&&self.Object===Object&&self,un=ln||pn||Function("return this")(),dn=un.Symbol,mn=dn,gn=Object.prototype,vn=gn.hasOwnProperty,hn=gn.toString,fn=mn?mn.toStringTag:void 0;var xn=function(e){var n=vn.call(e,fn),t=e[fn];try{e[fn]=void 0;var i=!0}catch(e){}var s=hn.call(e);return i&&(n?e[fn]=t:delete e[fn]),s},bn=Object.prototype.toString;var yn=xn,wn=function(e){return bn.call(e)},kn=dn?dn.toStringTag:void 0;var Sn=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":kn&&kn in Object(e)?yn(e):wn(e)};var jn=function(e){var n=typeof e;return null!=e&&("object"==n||"function"==n)},_n=Sn,Cn=jn;var An,En=function(e){if(!Cn(e))return!1;var n=_n(e);return"[object Function]"==n||"[object GeneratorFunction]"==n||"[object AsyncFunction]"==n||"[object Proxy]"==n},Rn=un["__core-js_shared__"],Ln=(An=/[^.]+$/.exec(Rn&&Rn.keys&&Rn.keys.IE_PROTO||""))?"Symbol(src)_1."+An:"";var Mn=function(e){return!!Ln&&Ln in e},In=Function.prototype.toString;var Dn=function(e){if(null!=e){try{return In.call(e)}catch(e){}try{return e+""}catch(e){}}return""},Tn=En,On=Mn,Pn=jn,Fn=Dn,Nn=/^\[object .+?Constructor\]$/,qn=Function.prototype,zn=Object.prototype,Vn=qn.toString,Bn=zn.hasOwnProperty,Un=RegExp("^"+Vn.call(Bn).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");var Hn=function(e){return!(!Pn(e)||On(e))&&(Tn(e)?Un:Nn).test(Fn(e))},Wn=function(e,n){return null==e?void 0:e[n]};var $n=function(e,n){var t=Wn(e,n);return Hn(t)?t:void 0},Yn=$n(un,"Map"),Kn=$n(Object,"create"),Xn=Kn;var Gn=function(){this.__data__=Xn?Xn(null):{},this.size=0};var Jn=function(e){var n=this.has(e)&&delete this.__data__[e];return this.size-=n?1:0,n},Qn=Kn,Zn=Object.prototype.hasOwnProperty;var et=function(e){var n=this.__data__;if(Qn){var t=n[e];return"__lodash_hash_undefined__"===t?void 0:t}return Zn.call(n,e)?n[e]:void 0},nt=Kn,tt=Object.prototype.hasOwnProperty;var it=Kn;var st=Gn,at=Jn,ot=et,rt=function(e){var n=this.__data__;return nt?void 0!==n[e]:tt.call(n,e)},ct=function(e,n){var t=this.__data__;return this.size+=this.has(e)?0:1,t[e]=it&&void 0===n?"__lodash_hash_undefined__":n,this};function lt(e){var n=-1,t=null==e?0:e.length;for(this.clear();++n<t;){var i=e[n];this.set(i[0],i[1])}}lt.prototype.clear=st,lt.prototype.delete=at,lt.prototype.get=ot,lt.prototype.has=rt,lt.prototype.set=ct;var pt=lt,ut=nn,dt=Yn;var mt=function(e){var n=typeof e;return"string"==n||"number"==n||"symbol"==n||"boolean"==n?"__proto__"!==e:null===e};var gt=function(e,n){var t=e.__data__;return mt(n)?t["string"==typeof n?"string":"hash"]:t.map},vt=gt;var ht=gt;var ft=gt;var xt=gt;var bt=function(){this.size=0,this.__data__={hash:new pt,map:new(dt||ut),string:new pt}},yt=function(e){var n=vt(this,e).delete(e);return this.size-=n?1:0,n},wt=function(e){return ht(this,e).get(e)},kt=function(e){return ft(this,e).has(e)},St=function(e,n){var t=xt(this,e),i=t.size;return t.set(e,n),this.size+=t.size==i?0:1,this};function jt(e){var n=-1,t=null==e?0:e.length;for(this.clear();++n<t;){var i=e[n];this.set(i[0],i[1])}}jt.prototype.clear=bt,jt.prototype.delete=yt,jt.prototype.get=wt,jt.prototype.has=kt,jt.prototype.set=St;var _t=jt,Ct=nn,At=Yn,Et=_t;var Rt=nn,Lt=sn,Mt=an,It=on,Dt=rn,Tt=function(e,n){var t=this.__data__;if(t instanceof Ct){var i=t.__data__;if(!At||i.length<199)return i.push([e,n]),this.size=++t.size,this;t=this.__data__=new Et(i)}return t.set(e,n),this.size=t.size,this};function Ot(e){var n=this.__data__=new Rt(e);this.size=n.size}Ot.prototype.clear=Lt,Ot.prototype.delete=Mt,Ot.prototype.get=It,Ot.prototype.has=Dt,Ot.prototype.set=Tt;var Pt=Ot;var Ft=_t,Nt=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this},qt=function(e){return this.__data__.has(e)};function zt(e){var n=-1,t=null==e?0:e.length;for(this.__data__=new Ft;++n<t;)this.add(e[n])}zt.prototype.add=zt.prototype.push=Nt,zt.prototype.has=qt;var Vt=zt,Bt=function(e,n){for(var t=-1,i=null==e?0:e.length;++t<i;)if(n(e[t],t,e))return!0;return!1},Ut=function(e,n){return e.has(n)};var Ht=function(e,n,t,i,s,a){var o=1&t,r=e.length,c=n.length;if(r!=c&&!(o&&c>r))return!1;var l=a.get(e),p=a.get(n);if(l&&p)return l==n&&p==e;var u=-1,d=!0,m=2&t?new Vt:void 0;for(a.set(e,n),a.set(n,e);++u<r;){var g=e[u],v=n[u];if(i)var h=o?i(v,g,u,n,e,a):i(g,v,u,e,n,a);if(void 0!==h){if(h)continue;d=!1;break}if(m){if(!Bt(n,(function(e,n){if(!Ut(m,n)&&(g===e||s(g,e,t,i,a)))return m.push(n)}))){d=!1;break}}else if(g!==v&&!s(g,v,t,i,a)){d=!1;break}}return a.delete(e),a.delete(n),d};var Wt=un.Uint8Array,$t=Ve,Yt=Ht,Kt=function(e){var n=-1,t=Array(e.size);return e.forEach((function(e,i){t[++n]=[i,e]})),t},Xt=function(e){var n=-1,t=Array(e.size);return e.forEach((function(e){t[++n]=e})),t},Gt=dn?dn.prototype:void 0,Jt=Gt?Gt.valueOf:void 0;var Qt=function(e,n,t,i,s,a,o){switch(t){case"[object DataView]":if(e.byteLength!=n.byteLength||e.byteOffset!=n.byteOffset)return!1;e=e.buffer,n=n.buffer;case"[object ArrayBuffer]":return!(e.byteLength!=n.byteLength||!a(new Wt(e),new Wt(n)));case"[object Boolean]":case"[object Date]":case"[object Number]":return $t(+e,+n);case"[object Error]":return e.name==n.name&&e.message==n.message;case"[object RegExp]":case"[object String]":return e==n+"";case"[object Map]":var r=Kt;case"[object Set]":var c=1&i;if(r||(r=Xt),e.size!=n.size&&!c)return!1;var l=o.get(e);if(l)return l==n;i|=2,o.set(e,n);var p=Yt(r(e),r(n),i,s,a,o);return o.delete(e),p;case"[object Symbol]":if(Jt)return Jt.call(e)==Jt.call(n)}return!1};var Zt=function(e,n){for(var t=-1,i=n.length,s=e.length;++t<i;)e[s+t]=n[t];return e},ei=Array.isArray,ni=Zt,ti=ei;var ii=function(e,n,t){var i=n(e);return ti(e)?i:ni(i,t(e))};var si=function(){return[]},ai=function(e,n){for(var t=-1,i=null==e?0:e.length,s=0,a=[];++t<i;){var o=e[t];n(o,t,e)&&(a[s++]=o)}return a},oi=si,ri=Object.prototype.propertyIsEnumerable,ci=Object.getOwnPropertySymbols,li=ci?function(e){return null==e?[]:(e=Object(e),ai(ci(e),(function(n){return ri.call(e,n)})))}:oi;var pi=function(e,n){for(var t=-1,i=Array(e);++t<e;)i[t]=n(t);return i};var ui=function(e){return null!=e&&"object"==typeof e},di=Sn,mi=ui;var gi=function(e){return mi(e)&&"[object Arguments]"==di(e)},vi=ui,hi=Object.prototype,fi=hi.hasOwnProperty,xi=hi.propertyIsEnumerable,bi=gi(function(){return arguments}())?gi:function(e){return vi(e)&&fi.call(e,"callee")&&!xi.call(e,"callee")},yi={exports:{}};var wi=function(){return!1};!function(e,n){var t=un,i=wi,s=n&&!n.nodeType&&n,a=s&&e&&!e.nodeType&&e,o=a&&a.exports===s?t.Buffer:void 0,r=(o?o.isBuffer:void 0)||i;e.exports=r}(yi,yi.exports);var ki=yi.exports,Si=/^(?:0|[1-9]\d*)$/;var ji=function(e,n){var t=typeof e;return!!(n=null==n?9007199254740991:n)&&("number"==t||"symbol"!=t&&Si.test(e))&&e>-1&&e%1==0&&e<n};var _i=function(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991},Ci=Sn,Ai=_i,Ei=ui,Ri={};Ri["[object Float32Array]"]=Ri["[object Float64Array]"]=Ri["[object Int8Array]"]=Ri["[object Int16Array]"]=Ri["[object Int32Array]"]=Ri["[object Uint8Array]"]=Ri["[object Uint8ClampedArray]"]=Ri["[object Uint16Array]"]=Ri["[object Uint32Array]"]=!0,Ri["[object Arguments]"]=Ri["[object Array]"]=Ri["[object ArrayBuffer]"]=Ri["[object Boolean]"]=Ri["[object DataView]"]=Ri["[object Date]"]=Ri["[object Error]"]=Ri["[object Function]"]=Ri["[object Map]"]=Ri["[object Number]"]=Ri["[object Object]"]=Ri["[object RegExp]"]=Ri["[object Set]"]=Ri["[object String]"]=Ri["[object WeakMap]"]=!1;var Li=function(e){return Ei(e)&&Ai(e.length)&&!!Ri[Ci(e)]};var Mi=function(e){return function(n){return e(n)}},Ii={exports:{}};!function(e,n){var t=cn,i=n&&!n.nodeType&&n,s=i&&e&&!e.nodeType&&e,a=s&&s.exports===i&&t.process,o=function(){try{var e=s&&s.require&&s.require("util").types;return e||a&&a.binding&&a.binding("util")}catch(e){}}();e.exports=o}(Ii,Ii.exports);var Di=Ii.exports,Ti=Li,Oi=Mi,Pi=Di&&Di.isTypedArray,Fi=Pi?Oi(Pi):Ti,Ni=pi,qi=bi,zi=ei,Vi=ki,Bi=ji,Ui=Fi,Hi=Object.prototype.hasOwnProperty;var Wi=function(e,n){var t=zi(e),i=!t&&qi(e),s=!t&&!i&&Vi(e),a=!t&&!i&&!s&&Ui(e),o=t||i||s||a,r=o?Ni(e.length,String):[],c=r.length;for(var l in e)!n&&!Hi.call(e,l)||o&&("length"==l||s&&("offset"==l||"parent"==l)||a&&("buffer"==l||"byteLength"==l||"byteOffset"==l)||Bi(l,c))||r.push(l);return r},$i=Object.prototype;var Yi=function(e){var n=e&&e.constructor;return e===("function"==typeof n&&n.prototype||$i)};var Ki=function(e,n){return function(t){return e(n(t))}},Xi=Ki(Object.keys,Object),Gi=Yi,Ji=Xi,Qi=Object.prototype.hasOwnProperty;var Zi=En,es=_i;var ns=function(e){return null!=e&&es(e.length)&&!Zi(e)},ts=Wi,is=function(e){if(!Gi(e))return Ji(e);var n=[];for(var t in Object(e))Qi.call(e,t)&&"constructor"!=t&&n.push(t);return n},ss=ns;var as=function(e){return ss(e)?ts(e):is(e)},os=ii,rs=li,cs=as;var ls=function(e){return os(e,cs,rs)},ps=Object.prototype.hasOwnProperty;var us=function(e,n,t,i,s,a){var o=1&t,r=ls(e),c=r.length;if(c!=ls(n).length&&!o)return!1;for(var l=c;l--;){var p=r[l];if(!(o?p in n:ps.call(n,p)))return!1}var u=a.get(e),d=a.get(n);if(u&&d)return u==n&&d==e;var m=!0;a.set(e,n),a.set(n,e);for(var g=o;++l<c;){var v=e[p=r[l]],h=n[p];if(i)var f=o?i(h,v,p,n,e,a):i(v,h,p,e,n,a);if(!(void 0===f?v===h||s(v,h,t,i,a):f)){m=!1;break}g||(g="constructor"==p)}if(m&&!g){var x=e.constructor,b=n.constructor;x==b||!("constructor"in e)||!("constructor"in n)||"function"==typeof x&&x instanceof x&&"function"==typeof b&&b instanceof b||(m=!1)}return a.delete(e),a.delete(n),m},ds=$n(un,"DataView"),ms=Yn,gs=$n(un,"Promise"),vs=$n(un,"Set"),hs=$n(un,"WeakMap"),fs=Sn,xs=Dn,bs="[object Map]",ys="[object Promise]",ws="[object Set]",ks="[object WeakMap]",Ss="[object DataView]",js=xs(ds),_s=xs(ms),Cs=xs(gs),As=xs(vs),Es=xs(hs),Rs=fs;(ds&&Rs(new ds(new ArrayBuffer(1)))!=Ss||ms&&Rs(new ms)!=bs||gs&&Rs(gs.resolve())!=ys||vs&&Rs(new vs)!=ws||hs&&Rs(new hs)!=ks)&&(Rs=function(e){var n=fs(e),t="[object Object]"==n?e.constructor:void 0,i=t?xs(t):"";if(i)switch(i){case js:return Ss;case _s:return bs;case Cs:return ys;case As:return ws;case Es:return ks}return n});var Ls=Pt,Ms=Ht,Is=Qt,Ds=us,Ts=Rs,Os=ei,Ps=ki,Fs=Fi,Ns="[object Arguments]",qs="[object Array]",zs="[object Object]",Vs=Object.prototype.hasOwnProperty;var Bs=function(e,n,t,i,s,a){var o=Os(e),r=Os(n),c=o?qs:Ts(e),l=r?qs:Ts(n),p=(c=c==Ns?zs:c)==zs,u=(l=l==Ns?zs:l)==zs,d=c==l;if(d&&Ps(e)){if(!Ps(n))return!1;o=!0,p=!1}if(d&&!p)return a||(a=new Ls),o||Fs(e)?Ms(e,n,t,i,s,a):Is(e,n,c,t,i,s,a);if(!(1&t)){var m=p&&Vs.call(e,"__wrapped__"),g=u&&Vs.call(n,"__wrapped__");if(m||g){var v=m?e.value():e,h=g?n.value():n;return a||(a=new Ls),s(v,h,t,i,a)}}return!!d&&(a||(a=new Ls),Ds(e,n,t,i,s,a))},Us=ui;var Hs=function e(n,t,i,s,a){return n===t||(null==n||null==t||!Us(n)&&!Us(t)?n!=n&&t!=t:Bs(n,t,i,s,e,a))},Ws=Pt,$s=Hs;var Ys=jn;var Ks=function(e){return e==e&&!Ys(e)},Xs=Ks,Gs=as;var Js=function(e,n){return function(t){return null!=t&&(t[e]===n&&(void 0!==n||e in Object(t)))}},Qs=function(e,n,t,i){var s=t.length,a=s,o=!i;if(null==e)return!a;for(e=Object(e);s--;){var r=t[s];if(o&&r[2]?r[1]!==e[r[0]]:!(r[0]in e))return!1}for(;++s<a;){var c=(r=t[s])[0],l=e[c],p=r[1];if(o&&r[2]){if(void 0===l&&!(c in e))return!1}else{var u=new Ws;if(i)var d=i(l,p,c,e,n,u);if(!(void 0===d?$s(p,l,3,i,u):d))return!1}}return!0},Zs=function(e){for(var n=Gs(e),t=n.length;t--;){var i=n[t],s=e[i];n[t]=[i,s,Xs(s)]}return n},ea=Js;var na=function(e){var n=Zs(e);return 1==n.length&&n[0][2]?ea(n[0][0],n[0][1]):function(t){return t===e||Qs(t,e,n)}},ta=Sn,ia=ui;var sa=function(e){return"symbol"==typeof e||ia(e)&&"[object Symbol]"==ta(e)},aa=ei,oa=sa,ra=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,ca=/^\w*$/;var la=function(e,n){if(aa(e))return!1;var t=typeof e;return!("number"!=t&&"symbol"!=t&&"boolean"!=t&&null!=e&&!oa(e))||(ca.test(e)||!ra.test(e)||null!=n&&e in Object(n))},pa=_t;function ua(e,n){if("function"!=typeof e||null!=n&&"function"!=typeof n)throw new TypeError("Expected a function");var t=function(){var i=arguments,s=n?n.apply(this,i):i[0],a=t.cache;if(a.has(s))return a.get(s);var o=e.apply(this,i);return t.cache=a.set(s,o)||a,o};return t.cache=new(ua.Cache||pa),t}ua.Cache=pa;var da=ua;var ma=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,ga=/\\(\\)?/g,va=function(e){var n=da(e,(function(e){return 500===t.size&&t.clear(),e})),t=n.cache;return n}((function(e){var n=[];return 46===e.charCodeAt(0)&&n.push(""),e.replace(ma,(function(e,t,i,s){n.push(i?s.replace(ga,"$1"):t||e)})),n}));var ha=function(e,n){for(var t=-1,i=null==e?0:e.length,s=Array(i);++t<i;)s[t]=n(e[t],t,e);return s},fa=ha,xa=ei,ba=sa,ya=dn?dn.prototype:void 0,wa=ya?ya.toString:void 0;var ka=function e(n){if("string"==typeof n)return n;if(xa(n))return fa(n,e)+"";if(ba(n))return wa?wa.call(n):"";var t=n+"";return"0"==t&&1/n==-1/0?"-0":t},Sa=ka;var ja=ei,_a=la,Ca=va,Aa=function(e){return null==e?"":Sa(e)};var Ea=function(e,n){return ja(e)?e:_a(e,n)?[e]:Ca(Aa(e))},Ra=sa;var La=function(e){if("string"==typeof e||Ra(e))return e;var n=e+"";return"0"==n&&1/e==-1/0?"-0":n},Ma=Ea,Ia=La;var Da=function(e,n){for(var t=0,i=(n=Ma(n,e)).length;null!=e&&t<i;)e=e[Ia(n[t++])];return t&&t==i?e:void 0},Ta=Da;var Oa=function(e,n,t){var i=null==e?void 0:Ta(e,n);return void 0===i?t:i};var Pa=Ea,Fa=bi,Na=ei,qa=ji,za=_i,Va=La;var Ba=function(e,n,t){for(var i=-1,s=(n=Pa(n,e)).length,a=!1;++i<s;){var o=Va(n[i]);if(!(a=null!=e&&t(e,o)))break;e=e[o]}return a||++i!=s?a:!!(s=null==e?0:e.length)&&za(s)&&qa(o,s)&&(Na(e)||Fa(e))},Ua=function(e,n){return null!=e&&n in Object(e)},Ha=Ba;var Wa=function(e,n){return null!=e&&Ha(e,n,Ua)},$a=Hs,Ya=Oa,Ka=Wa,Xa=la,Ga=Ks,Ja=Js,Qa=La;var Za=function(e,n){return Xa(e)&&Ga(n)?Ja(Qa(e),n):function(t){var i=Ya(t,e);return void 0===i&&i===n?Ka(t,e):$a(n,i,3)}};var eo=Da;var no=function(e){return function(n){return eo(n,e)}},to=function(e){return function(n){return null==n?void 0:n[e]}},io=no,so=la,ao=La;var oo=function(e){return so(e)?to(ao(e)):io(e)},ro=na,co=Za,lo=function(e){return e},po=ei,uo=oo;var mo=function(e){return"function"==typeof e?e:null==e?lo:"object"==typeof e?po(e)?co(e[0],e[1]):ro(e):uo(e)};var go=function(e){if("function"!=typeof e)throw new TypeError("Expected a function");return function(){var n=arguments;switch(n.length){case 0:return!e.call(this);case 1:return!e.call(this,n[0]);case 2:return!e.call(this,n[0],n[1]);case 3:return!e.call(this,n[0],n[1],n[2])}return!e.apply(this,n)}},vo=$n,ho=function(){try{var e=vo(Object,"defineProperty");return e({},"",{}),e}catch(e){}}();var fo=function(e,n,t){"__proto__"==n&&ho?ho(e,n,{configurable:!0,enumerable:!0,value:t,writable:!0}):e[n]=t},xo=Ve,bo=Object.prototype.hasOwnProperty;var yo=function(e,n,t){var i=e[n];bo.call(e,n)&&xo(i,t)&&(void 0!==t||n in e)||fo(e,n,t)},wo=Ea,ko=ji,So=jn,jo=La;var _o=function(e,n,t,i){if(!So(e))return e;for(var s=-1,a=(n=wo(n,e)).length,o=a-1,r=e;null!=r&&++s<a;){var c=jo(n[s]),l=t;if("__proto__"===c||"constructor"===c||"prototype"===c)return e;if(s!=o){var p=r[c];void 0===(l=i?i(p,c,r):void 0)&&(l=So(p)?p:ko(n[s+1])?[]:{})}yo(r,c,l),r=r[c]}return e},Co=Da,Ao=_o,Eo=Ea;var Ro=function(e,n,t){for(var i=-1,s=n.length,a={};++i<s;){var o=n[i],r=Co(e,o);t(r,o)&&Ao(a,Eo(o,e),r)}return a},Lo=Ki(Object.getPrototypeOf,Object),Mo=Zt,Io=Lo,Do=li,To=si,Oo=Object.getOwnPropertySymbols?function(e){for(var n=[];e;)Mo(n,Do(e)),e=Io(e);return n}:To;var Po=jn,Fo=Yi,No=function(e){var n=[];if(null!=e)for(var t in Object(e))n.push(t);return n},qo=Object.prototype.hasOwnProperty;var zo=Wi,Vo=function(e){if(!Po(e))return No(e);var n=Fo(e),t=[];for(var i in e)("constructor"!=i||!n&&qo.call(e,i))&&t.push(i);return t},Bo=ns;var Uo=ii,Ho=Oo,Wo=function(e){return Bo(e)?zo(e,!0):Vo(e)};var $o=ha,Yo=mo,Ko=Ro,Xo=function(e){return Uo(e,Wo,Ho)};var Go=function(e,n){if(null==e)return{};var t=$o(Xo(e),(function(e){return[e]}));return n=Yo(n),Ko(e,t,(function(e,t){return n(e,t[0])}))},Jo=mo,Qo=go,Zo=Go;var er=t((function(e,n){return Zo(e,Qo(Jo(n)))}));var nr=t((function(e){return null===e}));var tr=t((function(e){return void 0===e}));function ir(e){if("string"!=typeof e)throw new TypeError("Path must be a string. Received "+JSON.stringify(e))}function sr(e,n){for(var t,i="",s=0,a=-1,o=0,r=0;r<=e.length;++r){if(r<e.length)t=e.charCodeAt(r);else{if(47===t)break;t=47}if(47===t){if(a===r-1||1===o);else if(a!==r-1&&2===o){if(i.length<2||2!==s||46!==i.charCodeAt(i.length-1)||46!==i.charCodeAt(i.length-2))if(i.length>2){var c=i.lastIndexOf("/");if(c!==i.length-1){-1===c?(i="",s=0):s=(i=i.slice(0,c)).length-1-i.lastIndexOf("/"),a=r,o=0;continue}}else if(2===i.length||1===i.length){i="",s=0,a=r,o=0;continue}n&&(i.length>0?i+="/..":i="..",s=2)}else i.length>0?i+="/"+e.slice(a+1,r):i=e.slice(a+1,r),s=r-a-1;a=r,o=0}else 46===t&&-1!==o?++o:o=-1}return i}var ar={resolve:function(){for(var e,n="",t=!1,i=arguments.length-1;i>=-1&&!t;i--){var s;i>=0?s=arguments[i]:(void 0===e&&(e=process.cwd()),s=e),ir(s),0!==s.length&&(n=s+"/"+n,t=47===s.charCodeAt(0))}return n=sr(n,!t),t?n.length>0?"/"+n:"/":n.length>0?n:"."},normalize:function(e){if(ir(e),0===e.length)return".";var n=47===e.charCodeAt(0),t=47===e.charCodeAt(e.length-1);return 0!==(e=sr(e,!n)).length||n||(e="."),e.length>0&&t&&(e+="/"),n?"/"+e:e},isAbsolute:function(e){return ir(e),e.length>0&&47===e.charCodeAt(0)},join:function(){if(0===arguments.length)return".";for(var e,n=0;n<arguments.length;++n){var t=arguments[n];ir(t),t.length>0&&(void 0===e?e=t:e+="/"+t)}return void 0===e?".":ar.normalize(e)},relative:function(e,n){if(ir(e),ir(n),e===n)return"";if((e=ar.resolve(e))===(n=ar.resolve(n)))return"";for(var t=1;t<e.length&&47===e.charCodeAt(t);++t);for(var i=e.length,s=i-t,a=1;a<n.length&&47===n.charCodeAt(a);++a);for(var o=n.length-a,r=s<o?s:o,c=-1,l=0;l<=r;++l){if(l===r){if(o>r){if(47===n.charCodeAt(a+l))return n.slice(a+l+1);if(0===l)return n.slice(a+l)}else s>r&&(47===e.charCodeAt(t+l)?c=l:0===l&&(c=0));break}var p=e.charCodeAt(t+l);if(p!==n.charCodeAt(a+l))break;47===p&&(c=l)}var u="";for(l=t+c+1;l<=i;++l)l!==i&&47!==e.charCodeAt(l)||(0===u.length?u+="..":u+="/..");return u.length>0?u+n.slice(a+c):(a+=c,47===n.charCodeAt(a)&&++a,n.slice(a))},_makeLong:function(e){return e},dirname:function(e){if(ir(e),0===e.length)return".";for(var n=e.charCodeAt(0),t=47===n,i=-1,s=!0,a=e.length-1;a>=1;--a)if(47===(n=e.charCodeAt(a))){if(!s){i=a;break}}else s=!1;return-1===i?t?"/":".":t&&1===i?"//":e.slice(0,i)},basename:function(e,n){if(void 0!==n&&"string"!=typeof n)throw new TypeError('"ext" argument must be a string');ir(e);var t,i=0,s=-1,a=!0;if(void 0!==n&&n.length>0&&n.length<=e.length){if(n.length===e.length&&n===e)return"";var o=n.length-1,r=-1;for(t=e.length-1;t>=0;--t){var c=e.charCodeAt(t);if(47===c){if(!a){i=t+1;break}}else-1===r&&(a=!1,r=t+1),o>=0&&(c===n.charCodeAt(o)?-1==--o&&(s=t):(o=-1,s=r))}return i===s?s=r:-1===s&&(s=e.length),e.slice(i,s)}for(t=e.length-1;t>=0;--t)if(47===e.charCodeAt(t)){if(!a){i=t+1;break}}else-1===s&&(a=!1,s=t+1);return-1===s?"":e.slice(i,s)},extname:function(e){ir(e);for(var n=-1,t=0,i=-1,s=!0,a=0,o=e.length-1;o>=0;--o){var r=e.charCodeAt(o);if(47!==r)-1===i&&(s=!1,i=o+1),46===r?-1===n?n=o:1!==a&&(a=1):-1!==n&&(a=-1);else if(!s){t=o+1;break}}return-1===n||-1===i||0===a||1===a&&n===i-1&&n===t+1?"":e.slice(n,i)},format:function(e){if(null===e||"object"!=typeof e)throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof e);return function(e,n){var t=n.dir||n.root,i=n.base||(n.name||"")+(n.ext||"");return t?t===n.root?t+i:t+e+i:i}("/",e)},parse:function(e){ir(e);var n={root:"",dir:"",base:"",ext:"",name:""};if(0===e.length)return n;var t,i=e.charCodeAt(0),s=47===i;s?(n.root="/",t=1):t=0;for(var a=-1,o=0,r=-1,c=!0,l=e.length-1,p=0;l>=t;--l)if(47!==(i=e.charCodeAt(l)))-1===r&&(c=!1,r=l+1),46===i?-1===a?a=l:1!==p&&(p=1):-1!==a&&(p=-1);else if(!c){o=l+1;break}return-1===a||-1===r||0===p||1===p&&a===r-1&&a===o+1?-1!==r&&(n.base=n.name=0===o&&s?e.slice(1,r):e.slice(o,r)):(0===o&&s?(n.name=e.slice(1,a),n.base=e.slice(1,r)):(n.name=e.slice(o,a),n.base=e.slice(o,r)),n.ext=e.slice(a,r)),o>0?n.dir=e.slice(0,o-1):s&&(n.dir="/"),n},sep:"/",delimiter:":",win32:null,posix:null};ar.posix=ar;var or={"application/1d-interleaved-parityfec":{source:"iana"},"application/3gpdash-qoe-report+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/3gpp-ims+xml":{source:"iana",compressible:!0},"application/3gpphal+json":{source:"iana",compressible:!0},"application/3gpphalforms+json":{source:"iana",compressible:!0},"application/a2l":{source:"iana"},"application/ace+cbor":{source:"iana"},"application/activemessage":{source:"iana"},"application/activity+json":{source:"iana",compressible:!0},"application/alto-costmap+json":{source:"iana",compressible:!0},"application/alto-costmapfilter+json":{source:"iana",compressible:!0},"application/alto-directory+json":{source:"iana",compressible:!0},"application/alto-endpointcost+json":{source:"iana",compressible:!0},"application/alto-endpointcostparams+json":{source:"iana",compressible:!0},"application/alto-endpointprop+json":{source:"iana",compressible:!0},"application/alto-endpointpropparams+json":{source:"iana",compressible:!0},"application/alto-error+json":{source:"iana",compressible:!0},"application/alto-networkmap+json":{source:"iana",compressible:!0},"application/alto-networkmapfilter+json":{source:"iana",compressible:!0},"application/alto-updatestreamcontrol+json":{source:"iana",compressible:!0},"application/alto-updatestreamparams+json":{source:"iana",compressible:!0},"application/aml":{source:"iana"},"application/andrew-inset":{source:"iana",extensions:["ez"]},"application/applefile":{source:"iana"},"application/applixware":{source:"apache",extensions:["aw"]},"application/at+jwt":{source:"iana"},"application/atf":{source:"iana"},"application/atfx":{source:"iana"},"application/atom+xml":{source:"iana",compressible:!0,extensions:["atom"]},"application/atomcat+xml":{source:"iana",compressible:!0,extensions:["atomcat"]},"application/atomdeleted+xml":{source:"iana",compressible:!0,extensions:["atomdeleted"]},"application/atomicmail":{source:"iana"},"application/atomsvc+xml":{source:"iana",compressible:!0,extensions:["atomsvc"]},"application/atsc-dwd+xml":{source:"iana",compressible:!0,extensions:["dwd"]},"application/atsc-dynamic-event-message":{source:"iana"},"application/atsc-held+xml":{source:"iana",compressible:!0,extensions:["held"]},"application/atsc-rdt+json":{source:"iana",compressible:!0},"application/atsc-rsat+xml":{source:"iana",compressible:!0,extensions:["rsat"]},"application/atxml":{source:"iana"},"application/auth-policy+xml":{source:"iana",compressible:!0},"application/bacnet-xdd+zip":{source:"iana",compressible:!1},"application/batch-smtp":{source:"iana"},"application/bdoc":{compressible:!1,extensions:["bdoc"]},"application/beep+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/calendar+json":{source:"iana",compressible:!0},"application/calendar+xml":{source:"iana",compressible:!0,extensions:["xcs"]},"application/call-completion":{source:"iana"},"application/cals-1840":{source:"iana"},"application/captive+json":{source:"iana",compressible:!0},"application/cbor":{source:"iana"},"application/cbor-seq":{source:"iana"},"application/cccex":{source:"iana"},"application/ccmp+xml":{source:"iana",compressible:!0},"application/ccxml+xml":{source:"iana",compressible:!0,extensions:["ccxml"]},"application/cdfx+xml":{source:"iana",compressible:!0,extensions:["cdfx"]},"application/cdmi-capability":{source:"iana",extensions:["cdmia"]},"application/cdmi-container":{source:"iana",extensions:["cdmic"]},"application/cdmi-domain":{source:"iana",extensions:["cdmid"]},"application/cdmi-object":{source:"iana",extensions:["cdmio"]},"application/cdmi-queue":{source:"iana",extensions:["cdmiq"]},"application/cdni":{source:"iana"},"application/cea":{source:"iana"},"application/cea-2018+xml":{source:"iana",compressible:!0},"application/cellml+xml":{source:"iana",compressible:!0},"application/cfw":{source:"iana"},"application/city+json":{source:"iana",compressible:!0},"application/clr":{source:"iana"},"application/clue+xml":{source:"iana",compressible:!0},"application/clue_info+xml":{source:"iana",compressible:!0},"application/cms":{source:"iana"},"application/cnrp+xml":{source:"iana",compressible:!0},"application/coap-group+json":{source:"iana",compressible:!0},"application/coap-payload":{source:"iana"},"application/commonground":{source:"iana"},"application/conference-info+xml":{source:"iana",compressible:!0},"application/cose":{source:"iana"},"application/cose-key":{source:"iana"},"application/cose-key-set":{source:"iana"},"application/cpl+xml":{source:"iana",compressible:!0,extensions:["cpl"]},"application/csrattrs":{source:"iana"},"application/csta+xml":{source:"iana",compressible:!0},"application/cstadata+xml":{source:"iana",compressible:!0},"application/csvm+json":{source:"iana",compressible:!0},"application/cu-seeme":{source:"apache",extensions:["cu"]},"application/cwt":{source:"iana"},"application/cybercash":{source:"iana"},"application/dart":{compressible:!0},"application/dash+xml":{source:"iana",compressible:!0,extensions:["mpd"]},"application/dash-patch+xml":{source:"iana",compressible:!0,extensions:["mpp"]},"application/dashdelta":{source:"iana"},"application/davmount+xml":{source:"iana",compressible:!0,extensions:["davmount"]},"application/dca-rft":{source:"iana"},"application/dcd":{source:"iana"},"application/dec-dx":{source:"iana"},"application/dialog-info+xml":{source:"iana",compressible:!0},"application/dicom":{source:"iana"},"application/dicom+json":{source:"iana",compressible:!0},"application/dicom+xml":{source:"iana",compressible:!0},"application/dii":{source:"iana"},"application/dit":{source:"iana"},"application/dns":{source:"iana"},"application/dns+json":{source:"iana",compressible:!0},"application/dns-message":{source:"iana"},"application/docbook+xml":{source:"apache",compressible:!0,extensions:["dbk"]},"application/dots+cbor":{source:"iana"},"application/dskpp+xml":{source:"iana",compressible:!0},"application/dssc+der":{source:"iana",extensions:["dssc"]},"application/dssc+xml":{source:"iana",compressible:!0,extensions:["xdssc"]},"application/dvcs":{source:"iana"},"application/ecmascript":{source:"iana",compressible:!0,extensions:["es","ecma"]},"application/edi-consent":{source:"iana"},"application/edi-x12":{source:"iana",compressible:!1},"application/edifact":{source:"iana",compressible:!1},"application/efi":{source:"iana"},"application/elm+json":{source:"iana",charset:"UTF-8",compressible:!0},"application/elm+xml":{source:"iana",compressible:!0},"application/emergencycalldata.cap+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/emergencycalldata.comment+xml":{source:"iana",compressible:!0},"application/emergencycalldata.control+xml":{source:"iana",compressible:!0},"application/emergencycalldata.deviceinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.ecall.msd":{source:"iana"},"application/emergencycalldata.providerinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.serviceinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.subscriberinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.veds+xml":{source:"iana",compressible:!0},"application/emma+xml":{source:"iana",compressible:!0,extensions:["emma"]},"application/emotionml+xml":{source:"iana",compressible:!0,extensions:["emotionml"]},"application/encaprtp":{source:"iana"},"application/epp+xml":{source:"iana",compressible:!0},"application/epub+zip":{source:"iana",compressible:!1,extensions:["epub"]},"application/eshop":{source:"iana"},"application/exi":{source:"iana",extensions:["exi"]},"application/expect-ct-report+json":{source:"iana",compressible:!0},"application/express":{source:"iana",extensions:["exp"]},"application/fastinfoset":{source:"iana"},"application/fastsoap":{source:"iana"},"application/fdt+xml":{source:"iana",compressible:!0,extensions:["fdt"]},"application/fhir+json":{source:"iana",charset:"UTF-8",compressible:!0},"application/fhir+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/fido.trusted-apps+json":{compressible:!0},"application/fits":{source:"iana"},"application/flexfec":{source:"iana"},"application/font-sfnt":{source:"iana"},"application/font-tdpfr":{source:"iana",extensions:["pfr"]},"application/font-woff":{source:"iana",compressible:!1},"application/framework-attributes+xml":{source:"iana",compressible:!0},"application/geo+json":{source:"iana",compressible:!0,extensions:["geojson"]},"application/geo+json-seq":{source:"iana"},"application/geopackage+sqlite3":{source:"iana"},"application/geoxacml+xml":{source:"iana",compressible:!0},"application/gltf-buffer":{source:"iana"},"application/gml+xml":{source:"iana",compressible:!0,extensions:["gml"]},"application/gpx+xml":{source:"apache",compressible:!0,extensions:["gpx"]},"application/gxf":{source:"apache",extensions:["gxf"]},"application/gzip":{source:"iana",compressible:!1,extensions:["gz"]},"application/h224":{source:"iana"},"application/held+xml":{source:"iana",compressible:!0},"application/hjson":{extensions:["hjson"]},"application/http":{source:"iana"},"application/hyperstudio":{source:"iana",extensions:["stk"]},"application/ibe-key-request+xml":{source:"iana",compressible:!0},"application/ibe-pkg-reply+xml":{source:"iana",compressible:!0},"application/ibe-pp-data":{source:"iana"},"application/iges":{source:"iana"},"application/im-iscomposing+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/index":{source:"iana"},"application/index.cmd":{source:"iana"},"application/index.obj":{source:"iana"},"application/index.response":{source:"iana"},"application/index.vnd":{source:"iana"},"application/inkml+xml":{source:"iana",compressible:!0,extensions:["ink","inkml"]},"application/iotp":{source:"iana"},"application/ipfix":{source:"iana",extensions:["ipfix"]},"application/ipp":{source:"iana"},"application/isup":{source:"iana"},"application/its+xml":{source:"iana",compressible:!0,extensions:["its"]},"application/java-archive":{source:"apache",compressible:!1,extensions:["jar","war","ear"]},"application/java-serialized-object":{source:"apache",compressible:!1,extensions:["ser"]},"application/java-vm":{source:"apache",compressible:!1,extensions:["class"]},"application/javascript":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["js","mjs"]},"application/jf2feed+json":{source:"iana",compressible:!0},"application/jose":{source:"iana"},"application/jose+json":{source:"iana",compressible:!0},"application/jrd+json":{source:"iana",compressible:!0},"application/jscalendar+json":{source:"iana",compressible:!0},"application/json":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["json","map"]},"application/json-patch+json":{source:"iana",compressible:!0},"application/json-seq":{source:"iana"},"application/json5":{extensions:["json5"]},"application/jsonml+json":{source:"apache",compressible:!0,extensions:["jsonml"]},"application/jwk+json":{source:"iana",compressible:!0},"application/jwk-set+json":{source:"iana",compressible:!0},"application/jwt":{source:"iana"},"application/kpml-request+xml":{source:"iana",compressible:!0},"application/kpml-response+xml":{source:"iana",compressible:!0},"application/ld+json":{source:"iana",compressible:!0,extensions:["jsonld"]},"application/lgr+xml":{source:"iana",compressible:!0,extensions:["lgr"]},"application/link-format":{source:"iana"},"application/load-control+xml":{source:"iana",compressible:!0},"application/lost+xml":{source:"iana",compressible:!0,extensions:["lostxml"]},"application/lostsync+xml":{source:"iana",compressible:!0},"application/lpf+zip":{source:"iana",compressible:!1},"application/lxf":{source:"iana"},"application/mac-binhex40":{source:"iana",extensions:["hqx"]},"application/mac-compactpro":{source:"apache",extensions:["cpt"]},"application/macwriteii":{source:"iana"},"application/mads+xml":{source:"iana",compressible:!0,extensions:["mads"]},"application/manifest+json":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["webmanifest"]},"application/marc":{source:"iana",extensions:["mrc"]},"application/marcxml+xml":{source:"iana",compressible:!0,extensions:["mrcx"]},"application/mathematica":{source:"iana",extensions:["ma","nb","mb"]},"application/mathml+xml":{source:"iana",compressible:!0,extensions:["mathml"]},"application/mathml-content+xml":{source:"iana",compressible:!0},"application/mathml-presentation+xml":{source:"iana",compressible:!0},"application/mbms-associated-procedure-description+xml":{source:"iana",compressible:!0},"application/mbms-deregister+xml":{source:"iana",compressible:!0},"application/mbms-envelope+xml":{source:"iana",compressible:!0},"application/mbms-msk+xml":{source:"iana",compressible:!0},"application/mbms-msk-response+xml":{source:"iana",compressible:!0},"application/mbms-protection-description+xml":{source:"iana",compressible:!0},"application/mbms-reception-report+xml":{source:"iana",compressible:!0},"application/mbms-register+xml":{source:"iana",compressible:!0},"application/mbms-register-response+xml":{source:"iana",compressible:!0},"application/mbms-schedule+xml":{source:"iana",compressible:!0},"application/mbms-user-service-description+xml":{source:"iana",compressible:!0},"application/mbox":{source:"iana",extensions:["mbox"]},"application/media-policy-dataset+xml":{source:"iana",compressible:!0,extensions:["mpf"]},"application/media_control+xml":{source:"iana",compressible:!0},"application/mediaservercontrol+xml":{source:"iana",compressible:!0,extensions:["mscml"]},"application/merge-patch+json":{source:"iana",compressible:!0},"application/metalink+xml":{source:"apache",compressible:!0,extensions:["metalink"]},"application/metalink4+xml":{source:"iana",compressible:!0,extensions:["meta4"]},"application/mets+xml":{source:"iana",compressible:!0,extensions:["mets"]},"application/mf4":{source:"iana"},"application/mikey":{source:"iana"},"application/mipc":{source:"iana"},"application/missing-blocks+cbor-seq":{source:"iana"},"application/mmt-aei+xml":{source:"iana",compressible:!0,extensions:["maei"]},"application/mmt-usd+xml":{source:"iana",compressible:!0,extensions:["musd"]},"application/mods+xml":{source:"iana",compressible:!0,extensions:["mods"]},"application/moss-keys":{source:"iana"},"application/moss-signature":{source:"iana"},"application/mosskey-data":{source:"iana"},"application/mosskey-request":{source:"iana"},"application/mp21":{source:"iana",extensions:["m21","mp21"]},"application/mp4":{source:"iana",extensions:["mp4s","m4p"]},"application/mpeg4-generic":{source:"iana"},"application/mpeg4-iod":{source:"iana"},"application/mpeg4-iod-xmt":{source:"iana"},"application/mrb-consumer+xml":{source:"iana",compressible:!0},"application/mrb-publish+xml":{source:"iana",compressible:!0},"application/msc-ivr+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/msc-mixer+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/msword":{source:"iana",compressible:!1,extensions:["doc","dot"]},"application/mud+json":{source:"iana",compressible:!0},"application/multipart-core":{source:"iana"},"application/mxf":{source:"iana",extensions:["mxf"]},"application/n-quads":{source:"iana",extensions:["nq"]},"application/n-triples":{source:"iana",extensions:["nt"]},"application/nasdata":{source:"iana"},"application/news-checkgroups":{source:"iana",charset:"US-ASCII"},"application/news-groupinfo":{source:"iana",charset:"US-ASCII"},"application/news-transmission":{source:"iana"},"application/nlsml+xml":{source:"iana",compressible:!0},"application/node":{source:"iana",extensions:["cjs"]},"application/nss":{source:"iana"},"application/oauth-authz-req+jwt":{source:"iana"},"application/oblivious-dns-message":{source:"iana"},"application/ocsp-request":{source:"iana"},"application/ocsp-response":{source:"iana"},"application/octet-stream":{source:"iana",compressible:!1,extensions:["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"]},"application/oda":{source:"iana",extensions:["oda"]},"application/odm+xml":{source:"iana",compressible:!0},"application/odx":{source:"iana"},"application/oebps-package+xml":{source:"iana",compressible:!0,extensions:["opf"]},"application/ogg":{source:"iana",compressible:!1,extensions:["ogx"]},"application/omdoc+xml":{source:"apache",compressible:!0,extensions:["omdoc"]},"application/onenote":{source:"apache",extensions:["onetoc","onetoc2","onetmp","onepkg"]},"application/opc-nodeset+xml":{source:"iana",compressible:!0},"application/oscore":{source:"iana"},"application/oxps":{source:"iana",extensions:["oxps"]},"application/p21":{source:"iana"},"application/p21+zip":{source:"iana",compressible:!1},"application/p2p-overlay+xml":{source:"iana",compressible:!0,extensions:["relo"]},"application/parityfec":{source:"iana"},"application/passport":{source:"iana"},"application/patch-ops-error+xml":{source:"iana",compressible:!0,extensions:["xer"]},"application/pdf":{source:"iana",compressible:!1,extensions:["pdf"]},"application/pdx":{source:"iana"},"application/pem-certificate-chain":{source:"iana"},"application/pgp-encrypted":{source:"iana",compressible:!1,extensions:["pgp"]},"application/pgp-keys":{source:"iana",extensions:["asc"]},"application/pgp-signature":{source:"iana",extensions:["asc","sig"]},"application/pics-rules":{source:"apache",extensions:["prf"]},"application/pidf+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/pidf-diff+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/pkcs10":{source:"iana",extensions:["p10"]},"application/pkcs12":{source:"iana"},"application/pkcs7-mime":{source:"iana",extensions:["p7m","p7c"]},"application/pkcs7-signature":{source:"iana",extensions:["p7s"]},"application/pkcs8":{source:"iana",extensions:["p8"]},"application/pkcs8-encrypted":{source:"iana"},"application/pkix-attr-cert":{source:"iana",extensions:["ac"]},"application/pkix-cert":{source:"iana",extensions:["cer"]},"application/pkix-crl":{source:"iana",extensions:["crl"]},"application/pkix-pkipath":{source:"iana",extensions:["pkipath"]},"application/pkixcmp":{source:"iana",extensions:["pki"]},"application/pls+xml":{source:"iana",compressible:!0,extensions:["pls"]},"application/poc-settings+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/postscript":{source:"iana",compressible:!0,extensions:["ai","eps","ps"]},"application/ppsp-tracker+json":{source:"iana",compressible:!0},"application/problem+json":{source:"iana",compressible:!0},"application/problem+xml":{source:"iana",compressible:!0},"application/provenance+xml":{source:"iana",compressible:!0,extensions:["provx"]},"application/prs.alvestrand.titrax-sheet":{source:"iana"},"application/prs.cww":{source:"iana",extensions:["cww"]},"application/prs.cyn":{source:"iana",charset:"7-BIT"},"application/prs.hpub+zip":{source:"iana",compressible:!1},"application/prs.nprend":{source:"iana"},"application/prs.plucker":{source:"iana"},"application/prs.rdf-xml-crypt":{source:"iana"},"application/prs.xsf+xml":{source:"iana",compressible:!0},"application/pskc+xml":{source:"iana",compressible:!0,extensions:["pskcxml"]},"application/pvd+json":{source:"iana",compressible:!0},"application/qsig":{source:"iana"},"application/raml+yaml":{compressible:!0,extensions:["raml"]},"application/raptorfec":{source:"iana"},"application/rdap+json":{source:"iana",compressible:!0},"application/rdf+xml":{source:"iana",compressible:!0,extensions:["rdf","owl"]},"application/reginfo+xml":{source:"iana",compressible:!0,extensions:["rif"]},"application/relax-ng-compact-syntax":{source:"iana",extensions:["rnc"]},"application/remote-printing":{source:"iana"},"application/reputon+json":{source:"iana",compressible:!0},"application/resource-lists+xml":{source:"iana",compressible:!0,extensions:["rl"]},"application/resource-lists-diff+xml":{source:"iana",compressible:!0,extensions:["rld"]},"application/rfc+xml":{source:"iana",compressible:!0},"application/riscos":{source:"iana"},"application/rlmi+xml":{source:"iana",compressible:!0},"application/rls-services+xml":{source:"iana",compressible:!0,extensions:["rs"]},"application/route-apd+xml":{source:"iana",compressible:!0,extensions:["rapd"]},"application/route-s-tsid+xml":{source:"iana",compressible:!0,extensions:["sls"]},"application/route-usd+xml":{source:"iana",compressible:!0,extensions:["rusd"]},"application/rpki-ghostbusters":{source:"iana",extensions:["gbr"]},"application/rpki-manifest":{source:"iana",extensions:["mft"]},"application/rpki-publication":{source:"iana"},"application/rpki-roa":{source:"iana",extensions:["roa"]},"application/rpki-updown":{source:"iana"},"application/rsd+xml":{source:"apache",compressible:!0,extensions:["rsd"]},"application/rss+xml":{source:"apache",compressible:!0,extensions:["rss"]},"application/rtf":{source:"iana",compressible:!0,extensions:["rtf"]},"application/rtploopback":{source:"iana"},"application/rtx":{source:"iana"},"application/samlassertion+xml":{source:"iana",compressible:!0},"application/samlmetadata+xml":{source:"iana",compressible:!0},"application/sarif+json":{source:"iana",compressible:!0},"application/sarif-external-properties+json":{source:"iana",compressible:!0},"application/sbe":{source:"iana"},"application/sbml+xml":{source:"iana",compressible:!0,extensions:["sbml"]},"application/scaip+xml":{source:"iana",compressible:!0},"application/scim+json":{source:"iana",compressible:!0},"application/scvp-cv-request":{source:"iana",extensions:["scq"]},"application/scvp-cv-response":{source:"iana",extensions:["scs"]},"application/scvp-vp-request":{source:"iana",extensions:["spq"]},"application/scvp-vp-response":{source:"iana",extensions:["spp"]},"application/sdp":{source:"iana",extensions:["sdp"]},"application/secevent+jwt":{source:"iana"},"application/senml+cbor":{source:"iana"},"application/senml+json":{source:"iana",compressible:!0},"application/senml+xml":{source:"iana",compressible:!0,extensions:["senmlx"]},"application/senml-etch+cbor":{source:"iana"},"application/senml-etch+json":{source:"iana",compressible:!0},"application/senml-exi":{source:"iana"},"application/sensml+cbor":{source:"iana"},"application/sensml+json":{source:"iana",compressible:!0},"application/sensml+xml":{source:"iana",compressible:!0,extensions:["sensmlx"]},"application/sensml-exi":{source:"iana"},"application/sep+xml":{source:"iana",compressible:!0},"application/sep-exi":{source:"iana"},"application/session-info":{source:"iana"},"application/set-payment":{source:"iana"},"application/set-payment-initiation":{source:"iana",extensions:["setpay"]},"application/set-registration":{source:"iana"},"application/set-registration-initiation":{source:"iana",extensions:["setreg"]},"application/sgml":{source:"iana"},"application/sgml-open-catalog":{source:"iana"},"application/shf+xml":{source:"iana",compressible:!0,extensions:["shf"]},"application/sieve":{source:"iana",extensions:["siv","sieve"]},"application/simple-filter+xml":{source:"iana",compressible:!0},"application/simple-message-summary":{source:"iana"},"application/simplesymbolcontainer":{source:"iana"},"application/sipc":{source:"iana"},"application/slate":{source:"iana"},"application/smil":{source:"iana"},"application/smil+xml":{source:"iana",compressible:!0,extensions:["smi","smil"]},"application/smpte336m":{source:"iana"},"application/soap+fastinfoset":{source:"iana"},"application/soap+xml":{source:"iana",compressible:!0},"application/sparql-query":{source:"iana",extensions:["rq"]},"application/sparql-results+xml":{source:"iana",compressible:!0,extensions:["srx"]},"application/spdx+json":{source:"iana",compressible:!0},"application/spirits-event+xml":{source:"iana",compressible:!0},"application/sql":{source:"iana"},"application/srgs":{source:"iana",extensions:["gram"]},"application/srgs+xml":{source:"iana",compressible:!0,extensions:["grxml"]},"application/sru+xml":{source:"iana",compressible:!0,extensions:["sru"]},"application/ssdl+xml":{source:"apache",compressible:!0,extensions:["ssdl"]},"application/ssml+xml":{source:"iana",compressible:!0,extensions:["ssml"]},"application/stix+json":{source:"iana",compressible:!0},"application/swid+xml":{source:"iana",compressible:!0,extensions:["swidtag"]},"application/tamp-apex-update":{source:"iana"},"application/tamp-apex-update-confirm":{source:"iana"},"application/tamp-community-update":{source:"iana"},"application/tamp-community-update-confirm":{source:"iana"},"application/tamp-error":{source:"iana"},"application/tamp-sequence-adjust":{source:"iana"},"application/tamp-sequence-adjust-confirm":{source:"iana"},"application/tamp-status-query":{source:"iana"},"application/tamp-status-response":{source:"iana"},"application/tamp-update":{source:"iana"},"application/tamp-update-confirm":{source:"iana"},"application/tar":{compressible:!0},"application/taxii+json":{source:"iana",compressible:!0},"application/td+json":{source:"iana",compressible:!0},"application/tei+xml":{source:"iana",compressible:!0,extensions:["tei","teicorpus"]},"application/tetra_isi":{source:"iana"},"application/thraud+xml":{source:"iana",compressible:!0,extensions:["tfi"]},"application/timestamp-query":{source:"iana"},"application/timestamp-reply":{source:"iana"},"application/timestamped-data":{source:"iana",extensions:["tsd"]},"application/tlsrpt+gzip":{source:"iana"},"application/tlsrpt+json":{source:"iana",compressible:!0},"application/tnauthlist":{source:"iana"},"application/token-introspection+jwt":{source:"iana"},"application/toml":{compressible:!0,extensions:["toml"]},"application/trickle-ice-sdpfrag":{source:"iana"},"application/trig":{source:"iana",extensions:["trig"]},"application/ttml+xml":{source:"iana",compressible:!0,extensions:["ttml"]},"application/tve-trigger":{source:"iana"},"application/tzif":{source:"iana"},"application/tzif-leap":{source:"iana"},"application/ubjson":{compressible:!1,extensions:["ubj"]},"application/ulpfec":{source:"iana"},"application/urc-grpsheet+xml":{source:"iana",compressible:!0},"application/urc-ressheet+xml":{source:"iana",compressible:!0,extensions:["rsheet"]},"application/urc-targetdesc+xml":{source:"iana",compressible:!0,extensions:["td"]},"application/urc-uisocketdesc+xml":{source:"iana",compressible:!0},"application/vcard+json":{source:"iana",compressible:!0},"application/vcard+xml":{source:"iana",compressible:!0},"application/vemmi":{source:"iana"},"application/vividence.scriptfile":{source:"apache"},"application/vnd.1000minds.decision-model+xml":{source:"iana",compressible:!0,extensions:["1km"]},"application/vnd.3gpp-prose+xml":{source:"iana",compressible:!0},"application/vnd.3gpp-prose-pc3ch+xml":{source:"iana",compressible:!0},"application/vnd.3gpp-v2x-local-service-information":{source:"iana"},"application/vnd.3gpp.5gnas":{source:"iana"},"application/vnd.3gpp.access-transfer-events+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.bsf+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.gmop+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.gtpc":{source:"iana"},"application/vnd.3gpp.interworking-data":{source:"iana"},"application/vnd.3gpp.lpp":{source:"iana"},"application/vnd.3gpp.mc-signalling-ear":{source:"iana"},"application/vnd.3gpp.mcdata-affiliation-command+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-payload":{source:"iana"},"application/vnd.3gpp.mcdata-service-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-signalling":{source:"iana"},"application/vnd.3gpp.mcdata-ue-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-user-profile+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-affiliation-command+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-floor-request+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-location-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-mbms-usage-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-service-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-signed+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-ue-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-ue-init-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-user-profile+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-affiliation-command+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-affiliation-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-location-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-mbms-usage-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-service-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-transmission-request+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-ue-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-user-profile+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mid-call+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.ngap":{source:"iana"},"application/vnd.3gpp.pfcp":{source:"iana"},"application/vnd.3gpp.pic-bw-large":{source:"iana",extensions:["plb"]},"application/vnd.3gpp.pic-bw-small":{source:"iana",extensions:["psb"]},"application/vnd.3gpp.pic-bw-var":{source:"iana",extensions:["pvb"]},"application/vnd.3gpp.s1ap":{source:"iana"},"application/vnd.3gpp.sms":{source:"iana"},"application/vnd.3gpp.sms+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.srvcc-ext+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.srvcc-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.state-and-event-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.ussd+xml":{source:"iana",compressible:!0},"application/vnd.3gpp2.bcmcsinfo+xml":{source:"iana",compressible:!0},"application/vnd.3gpp2.sms":{source:"iana"},"application/vnd.3gpp2.tcap":{source:"iana",extensions:["tcap"]},"application/vnd.3lightssoftware.imagescal":{source:"iana"},"application/vnd.3m.post-it-notes":{source:"iana",extensions:["pwn"]},"application/vnd.accpac.simply.aso":{source:"iana",extensions:["aso"]},"application/vnd.accpac.simply.imp":{source:"iana",extensions:["imp"]},"application/vnd.acucobol":{source:"iana",extensions:["acu"]},"application/vnd.acucorp":{source:"iana",extensions:["atc","acutc"]},"application/vnd.adobe.air-application-installer-package+zip":{source:"apache",compressible:!1,extensions:["air"]},"application/vnd.adobe.flash.movie":{source:"iana"},"application/vnd.adobe.formscentral.fcdt":{source:"iana",extensions:["fcdt"]},"application/vnd.adobe.fxp":{source:"iana",extensions:["fxp","fxpl"]},"application/vnd.adobe.partial-upload":{source:"iana"},"application/vnd.adobe.xdp+xml":{source:"iana",compressible:!0,extensions:["xdp"]},"application/vnd.adobe.xfdf":{source:"iana",extensions:["xfdf"]},"application/vnd.aether.imp":{source:"iana"},"application/vnd.afpc.afplinedata":{source:"iana"},"application/vnd.afpc.afplinedata-pagedef":{source:"iana"},"application/vnd.afpc.cmoca-cmresource":{source:"iana"},"application/vnd.afpc.foca-charset":{source:"iana"},"application/vnd.afpc.foca-codedfont":{source:"iana"},"application/vnd.afpc.foca-codepage":{source:"iana"},"application/vnd.afpc.modca":{source:"iana"},"application/vnd.afpc.modca-cmtable":{source:"iana"},"application/vnd.afpc.modca-formdef":{source:"iana"},"application/vnd.afpc.modca-mediummap":{source:"iana"},"application/vnd.afpc.modca-objectcontainer":{source:"iana"},"application/vnd.afpc.modca-overlay":{source:"iana"},"application/vnd.afpc.modca-pagesegment":{source:"iana"},"application/vnd.age":{source:"iana",extensions:["age"]},"application/vnd.ah-barcode":{source:"iana"},"application/vnd.ahead.space":{source:"iana",extensions:["ahead"]},"application/vnd.airzip.filesecure.azf":{source:"iana",extensions:["azf"]},"application/vnd.airzip.filesecure.azs":{source:"iana",extensions:["azs"]},"application/vnd.amadeus+json":{source:"iana",compressible:!0},"application/vnd.amazon.ebook":{source:"apache",extensions:["azw"]},"application/vnd.amazon.mobi8-ebook":{source:"iana"},"application/vnd.americandynamics.acc":{source:"iana",extensions:["acc"]},"application/vnd.amiga.ami":{source:"iana",extensions:["ami"]},"application/vnd.amundsen.maze+xml":{source:"iana",compressible:!0},"application/vnd.android.ota":{source:"iana"},"application/vnd.android.package-archive":{source:"apache",compressible:!1,extensions:["apk"]},"application/vnd.anki":{source:"iana"},"application/vnd.anser-web-certificate-issue-initiation":{source:"iana",extensions:["cii"]},"application/vnd.anser-web-funds-transfer-initiation":{source:"apache",extensions:["fti"]},"application/vnd.antix.game-component":{source:"iana",extensions:["atx"]},"application/vnd.apache.arrow.file":{source:"iana"},"application/vnd.apache.arrow.stream":{source:"iana"},"application/vnd.apache.thrift.binary":{source:"iana"},"application/vnd.apache.thrift.compact":{source:"iana"},"application/vnd.apache.thrift.json":{source:"iana"},"application/vnd.api+json":{source:"iana",compressible:!0},"application/vnd.aplextor.warrp+json":{source:"iana",compressible:!0},"application/vnd.apothekende.reservation+json":{source:"iana",compressible:!0},"application/vnd.apple.installer+xml":{source:"iana",compressible:!0,extensions:["mpkg"]},"application/vnd.apple.keynote":{source:"iana",extensions:["key"]},"application/vnd.apple.mpegurl":{source:"iana",extensions:["m3u8"]},"application/vnd.apple.numbers":{source:"iana",extensions:["numbers"]},"application/vnd.apple.pages":{source:"iana",extensions:["pages"]},"application/vnd.apple.pkpass":{compressible:!1,extensions:["pkpass"]},"application/vnd.arastra.swi":{source:"iana"},"application/vnd.aristanetworks.swi":{source:"iana",extensions:["swi"]},"application/vnd.artisan+json":{source:"iana",compressible:!0},"application/vnd.artsquare":{source:"iana"},"application/vnd.astraea-software.iota":{source:"iana",extensions:["iota"]},"application/vnd.audiograph":{source:"iana",extensions:["aep"]},"application/vnd.autopackage":{source:"iana"},"application/vnd.avalon+json":{source:"iana",compressible:!0},"application/vnd.avistar+xml":{source:"iana",compressible:!0},"application/vnd.balsamiq.bmml+xml":{source:"iana",compressible:!0,extensions:["bmml"]},"application/vnd.balsamiq.bmpr":{source:"iana"},"application/vnd.banana-accounting":{source:"iana"},"application/vnd.bbf.usp.error":{source:"iana"},"application/vnd.bbf.usp.msg":{source:"iana"},"application/vnd.bbf.usp.msg+json":{source:"iana",compressible:!0},"application/vnd.bekitzur-stech+json":{source:"iana",compressible:!0},"application/vnd.bint.med-content":{source:"iana"},"application/vnd.biopax.rdf+xml":{source:"iana",compressible:!0},"application/vnd.blink-idb-value-wrapper":{source:"iana"},"application/vnd.blueice.multipass":{source:"iana",extensions:["mpm"]},"application/vnd.bluetooth.ep.oob":{source:"iana"},"application/vnd.bluetooth.le.oob":{source:"iana"},"application/vnd.bmi":{source:"iana",extensions:["bmi"]},"application/vnd.bpf":{source:"iana"},"application/vnd.bpf3":{source:"iana"},"application/vnd.businessobjects":{source:"iana",extensions:["rep"]},"application/vnd.byu.uapi+json":{source:"iana",compressible:!0},"application/vnd.cab-jscript":{source:"iana"},"application/vnd.canon-cpdl":{source:"iana"},"application/vnd.canon-lips":{source:"iana"},"application/vnd.capasystems-pg+json":{source:"iana",compressible:!0},"application/vnd.cendio.thinlinc.clientconf":{source:"iana"},"application/vnd.century-systems.tcp_stream":{source:"iana"},"application/vnd.chemdraw+xml":{source:"iana",compressible:!0,extensions:["cdxml"]},"application/vnd.chess-pgn":{source:"iana"},"application/vnd.chipnuts.karaoke-mmd":{source:"iana",extensions:["mmd"]},"application/vnd.ciedi":{source:"iana"},"application/vnd.cinderella":{source:"iana",extensions:["cdy"]},"application/vnd.cirpack.isdn-ext":{source:"iana"},"application/vnd.citationstyles.style+xml":{source:"iana",compressible:!0,extensions:["csl"]},"application/vnd.claymore":{source:"iana",extensions:["cla"]},"application/vnd.cloanto.rp9":{source:"iana",extensions:["rp9"]},"application/vnd.clonk.c4group":{source:"iana",extensions:["c4g","c4d","c4f","c4p","c4u"]},"application/vnd.cluetrust.cartomobile-config":{source:"iana",extensions:["c11amc"]},"application/vnd.cluetrust.cartomobile-config-pkg":{source:"iana",extensions:["c11amz"]},"application/vnd.coffeescript":{source:"iana"},"application/vnd.collabio.xodocuments.document":{source:"iana"},"application/vnd.collabio.xodocuments.document-template":{source:"iana"},"application/vnd.collabio.xodocuments.presentation":{source:"iana"},"application/vnd.collabio.xodocuments.presentation-template":{source:"iana"},"application/vnd.collabio.xodocuments.spreadsheet":{source:"iana"},"application/vnd.collabio.xodocuments.spreadsheet-template":{source:"iana"},"application/vnd.collection+json":{source:"iana",compressible:!0},"application/vnd.collection.doc+json":{source:"iana",compressible:!0},"application/vnd.collection.next+json":{source:"iana",compressible:!0},"application/vnd.comicbook+zip":{source:"iana",compressible:!1},"application/vnd.comicbook-rar":{source:"iana"},"application/vnd.commerce-battelle":{source:"iana"},"application/vnd.commonspace":{source:"iana",extensions:["csp"]},"application/vnd.contact.cmsg":{source:"iana",extensions:["cdbcmsg"]},"application/vnd.coreos.ignition+json":{source:"iana",compressible:!0},"application/vnd.cosmocaller":{source:"iana",extensions:["cmc"]},"application/vnd.crick.clicker":{source:"iana",extensions:["clkx"]},"application/vnd.crick.clicker.keyboard":{source:"iana",extensions:["clkk"]},"application/vnd.crick.clicker.palette":{source:"iana",extensions:["clkp"]},"application/vnd.crick.clicker.template":{source:"iana",extensions:["clkt"]},"application/vnd.crick.clicker.wordbank":{source:"iana",extensions:["clkw"]},"application/vnd.criticaltools.wbs+xml":{source:"iana",compressible:!0,extensions:["wbs"]},"application/vnd.cryptii.pipe+json":{source:"iana",compressible:!0},"application/vnd.crypto-shade-file":{source:"iana"},"application/vnd.cryptomator.encrypted":{source:"iana"},"application/vnd.cryptomator.vault":{source:"iana"},"application/vnd.ctc-posml":{source:"iana",extensions:["pml"]},"application/vnd.ctct.ws+xml":{source:"iana",compressible:!0},"application/vnd.cups-pdf":{source:"iana"},"application/vnd.cups-postscript":{source:"iana"},"application/vnd.cups-ppd":{source:"iana",extensions:["ppd"]},"application/vnd.cups-raster":{source:"iana"},"application/vnd.cups-raw":{source:"iana"},"application/vnd.curl":{source:"iana"},"application/vnd.curl.car":{source:"apache",extensions:["car"]},"application/vnd.curl.pcurl":{source:"apache",extensions:["pcurl"]},"application/vnd.cyan.dean.root+xml":{source:"iana",compressible:!0},"application/vnd.cybank":{source:"iana"},"application/vnd.cyclonedx+json":{source:"iana",compressible:!0},"application/vnd.cyclonedx+xml":{source:"iana",compressible:!0},"application/vnd.d2l.coursepackage1p0+zip":{source:"iana",compressible:!1},"application/vnd.d3m-dataset":{source:"iana"},"application/vnd.d3m-problem":{source:"iana"},"application/vnd.dart":{source:"iana",compressible:!0,extensions:["dart"]},"application/vnd.data-vision.rdz":{source:"iana",extensions:["rdz"]},"application/vnd.datapackage+json":{source:"iana",compressible:!0},"application/vnd.dataresource+json":{source:"iana",compressible:!0},"application/vnd.dbf":{source:"iana",extensions:["dbf"]},"application/vnd.debian.binary-package":{source:"iana"},"application/vnd.dece.data":{source:"iana",extensions:["uvf","uvvf","uvd","uvvd"]},"application/vnd.dece.ttml+xml":{source:"iana",compressible:!0,extensions:["uvt","uvvt"]},"application/vnd.dece.unspecified":{source:"iana",extensions:["uvx","uvvx"]},"application/vnd.dece.zip":{source:"iana",extensions:["uvz","uvvz"]},"application/vnd.denovo.fcselayout-link":{source:"iana",extensions:["fe_launch"]},"application/vnd.desmume.movie":{source:"iana"},"application/vnd.dir-bi.plate-dl-nosuffix":{source:"iana"},"application/vnd.dm.delegation+xml":{source:"iana",compressible:!0},"application/vnd.dna":{source:"iana",extensions:["dna"]},"application/vnd.document+json":{source:"iana",compressible:!0},"application/vnd.dolby.mlp":{source:"apache",extensions:["mlp"]},"application/vnd.dolby.mobile.1":{source:"iana"},"application/vnd.dolby.mobile.2":{source:"iana"},"application/vnd.doremir.scorecloud-binary-document":{source:"iana"},"application/vnd.dpgraph":{source:"iana",extensions:["dpg"]},"application/vnd.dreamfactory":{source:"iana",extensions:["dfac"]},"application/vnd.drive+json":{source:"iana",compressible:!0},"application/vnd.ds-keypoint":{source:"apache",extensions:["kpxx"]},"application/vnd.dtg.local":{source:"iana"},"application/vnd.dtg.local.flash":{source:"iana"},"application/vnd.dtg.local.html":{source:"iana"},"application/vnd.dvb.ait":{source:"iana",extensions:["ait"]},"application/vnd.dvb.dvbisl+xml":{source:"iana",compressible:!0},"application/vnd.dvb.dvbj":{source:"iana"},"application/vnd.dvb.esgcontainer":{source:"iana"},"application/vnd.dvb.ipdcdftnotifaccess":{source:"iana"},"application/vnd.dvb.ipdcesgaccess":{source:"iana"},"application/vnd.dvb.ipdcesgaccess2":{source:"iana"},"application/vnd.dvb.ipdcesgpdd":{source:"iana"},"application/vnd.dvb.ipdcroaming":{source:"iana"},"application/vnd.dvb.iptv.alfec-base":{source:"iana"},"application/vnd.dvb.iptv.alfec-enhancement":{source:"iana"},"application/vnd.dvb.notif-aggregate-root+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-container+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-generic+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-ia-msglist+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-ia-registration-request+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-ia-registration-response+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-init+xml":{source:"iana",compressible:!0},"application/vnd.dvb.pfr":{source:"iana"},"application/vnd.dvb.service":{source:"iana",extensions:["svc"]},"application/vnd.dxr":{source:"iana"},"application/vnd.dynageo":{source:"iana",extensions:["geo"]},"application/vnd.dzr":{source:"iana"},"application/vnd.easykaraoke.cdgdownload":{source:"iana"},"application/vnd.ecdis-update":{source:"iana"},"application/vnd.ecip.rlp":{source:"iana"},"application/vnd.eclipse.ditto+json":{source:"iana",compressible:!0},"application/vnd.ecowin.chart":{source:"iana",extensions:["mag"]},"application/vnd.ecowin.filerequest":{source:"iana"},"application/vnd.ecowin.fileupdate":{source:"iana"},"application/vnd.ecowin.series":{source:"iana"},"application/vnd.ecowin.seriesrequest":{source:"iana"},"application/vnd.ecowin.seriesupdate":{source:"iana"},"application/vnd.efi.img":{source:"iana"},"application/vnd.efi.iso":{source:"iana"},"application/vnd.emclient.accessrequest+xml":{source:"iana",compressible:!0},"application/vnd.enliven":{source:"iana",extensions:["nml"]},"application/vnd.enphase.envoy":{source:"iana"},"application/vnd.eprints.data+xml":{source:"iana",compressible:!0},"application/vnd.epson.esf":{source:"iana",extensions:["esf"]},"application/vnd.epson.msf":{source:"iana",extensions:["msf"]},"application/vnd.epson.quickanime":{source:"iana",extensions:["qam"]},"application/vnd.epson.salt":{source:"iana",extensions:["slt"]},"application/vnd.epson.ssf":{source:"iana",extensions:["ssf"]},"application/vnd.ericsson.quickcall":{source:"iana"},"application/vnd.espass-espass+zip":{source:"iana",compressible:!1},"application/vnd.eszigno3+xml":{source:"iana",compressible:!0,extensions:["es3","et3"]},"application/vnd.etsi.aoc+xml":{source:"iana",compressible:!0},"application/vnd.etsi.asic-e+zip":{source:"iana",compressible:!1},"application/vnd.etsi.asic-s+zip":{source:"iana",compressible:!1},"application/vnd.etsi.cug+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvcommand+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvdiscovery+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvprofile+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsad-bc+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsad-cod+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsad-npvr+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvservice+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsync+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvueprofile+xml":{source:"iana",compressible:!0},"application/vnd.etsi.mcid+xml":{source:"iana",compressible:!0},"application/vnd.etsi.mheg5":{source:"iana"},"application/vnd.etsi.overload-control-policy-dataset+xml":{source:"iana",compressible:!0},"application/vnd.etsi.pstn+xml":{source:"iana",compressible:!0},"application/vnd.etsi.sci+xml":{source:"iana",compressible:!0},"application/vnd.etsi.simservs+xml":{source:"iana",compressible:!0},"application/vnd.etsi.timestamp-token":{source:"iana"},"application/vnd.etsi.tsl+xml":{source:"iana",compressible:!0},"application/vnd.etsi.tsl.der":{source:"iana"},"application/vnd.eu.kasparian.car+json":{source:"iana",compressible:!0},"application/vnd.eudora.data":{source:"iana"},"application/vnd.evolv.ecig.profile":{source:"iana"},"application/vnd.evolv.ecig.settings":{source:"iana"},"application/vnd.evolv.ecig.theme":{source:"iana"},"application/vnd.exstream-empower+zip":{source:"iana",compressible:!1},"application/vnd.exstream-package":{source:"iana"},"application/vnd.ezpix-album":{source:"iana",extensions:["ez2"]},"application/vnd.ezpix-package":{source:"iana",extensions:["ez3"]},"application/vnd.f-secure.mobile":{source:"iana"},"application/vnd.familysearch.gedcom+zip":{source:"iana",compressible:!1},"application/vnd.fastcopy-disk-image":{source:"iana"},"application/vnd.fdf":{source:"iana",extensions:["fdf"]},"application/vnd.fdsn.mseed":{source:"iana",extensions:["mseed"]},"application/vnd.fdsn.seed":{source:"iana",extensions:["seed","dataless"]},"application/vnd.ffsns":{source:"iana"},"application/vnd.ficlab.flb+zip":{source:"iana",compressible:!1},"application/vnd.filmit.zfc":{source:"iana"},"application/vnd.fints":{source:"iana"},"application/vnd.firemonkeys.cloudcell":{source:"iana"},"application/vnd.flographit":{source:"iana",extensions:["gph"]},"application/vnd.fluxtime.clip":{source:"iana",extensions:["ftc"]},"application/vnd.font-fontforge-sfd":{source:"iana"},"application/vnd.framemaker":{source:"iana",extensions:["fm","frame","maker","book"]},"application/vnd.frogans.fnc":{source:"iana",extensions:["fnc"]},"application/vnd.frogans.ltf":{source:"iana",extensions:["ltf"]},"application/vnd.fsc.weblaunch":{source:"iana",extensions:["fsc"]},"application/vnd.fujifilm.fb.docuworks":{source:"iana"},"application/vnd.fujifilm.fb.docuworks.binder":{source:"iana"},"application/vnd.fujifilm.fb.docuworks.container":{source:"iana"},"application/vnd.fujifilm.fb.jfi+xml":{source:"iana",compressible:!0},"application/vnd.fujitsu.oasys":{source:"iana",extensions:["oas"]},"application/vnd.fujitsu.oasys2":{source:"iana",extensions:["oa2"]},"application/vnd.fujitsu.oasys3":{source:"iana",extensions:["oa3"]},"application/vnd.fujitsu.oasysgp":{source:"iana",extensions:["fg5"]},"application/vnd.fujitsu.oasysprs":{source:"iana",extensions:["bh2"]},"application/vnd.fujixerox.art-ex":{source:"iana"},"application/vnd.fujixerox.art4":{source:"iana"},"application/vnd.fujixerox.ddd":{source:"iana",extensions:["ddd"]},"application/vnd.fujixerox.docuworks":{source:"iana",extensions:["xdw"]},"application/vnd.fujixerox.docuworks.binder":{source:"iana",extensions:["xbd"]},"application/vnd.fujixerox.docuworks.container":{source:"iana"},"application/vnd.fujixerox.hbpl":{source:"iana"},"application/vnd.fut-misnet":{source:"iana"},"application/vnd.futoin+cbor":{source:"iana"},"application/vnd.futoin+json":{source:"iana",compressible:!0},"application/vnd.fuzzysheet":{source:"iana",extensions:["fzs"]},"application/vnd.genomatix.tuxedo":{source:"iana",extensions:["txd"]},"application/vnd.gentics.grd+json":{source:"iana",compressible:!0},"application/vnd.geo+json":{source:"iana",compressible:!0},"application/vnd.geocube+xml":{source:"iana",compressible:!0},"application/vnd.geogebra.file":{source:"iana",extensions:["ggb"]},"application/vnd.geogebra.slides":{source:"iana"},"application/vnd.geogebra.tool":{source:"iana",extensions:["ggt"]},"application/vnd.geometry-explorer":{source:"iana",extensions:["gex","gre"]},"application/vnd.geonext":{source:"iana",extensions:["gxt"]},"application/vnd.geoplan":{source:"iana",extensions:["g2w"]},"application/vnd.geospace":{source:"iana",extensions:["g3w"]},"application/vnd.gerber":{source:"iana"},"application/vnd.globalplatform.card-content-mgt":{source:"iana"},"application/vnd.globalplatform.card-content-mgt-response":{source:"iana"},"application/vnd.gmx":{source:"iana",extensions:["gmx"]},"application/vnd.google-apps.document":{compressible:!1,extensions:["gdoc"]},"application/vnd.google-apps.presentation":{compressible:!1,extensions:["gslides"]},"application/vnd.google-apps.spreadsheet":{compressible:!1,extensions:["gsheet"]},"application/vnd.google-earth.kml+xml":{source:"iana",compressible:!0,extensions:["kml"]},"application/vnd.google-earth.kmz":{source:"iana",compressible:!1,extensions:["kmz"]},"application/vnd.gov.sk.e-form+xml":{source:"iana",compressible:!0},"application/vnd.gov.sk.e-form+zip":{source:"iana",compressible:!1},"application/vnd.gov.sk.xmldatacontainer+xml":{source:"iana",compressible:!0},"application/vnd.grafeq":{source:"iana",extensions:["gqf","gqs"]},"application/vnd.gridmp":{source:"iana"},"application/vnd.groove-account":{source:"iana",extensions:["gac"]},"application/vnd.groove-help":{source:"iana",extensions:["ghf"]},"application/vnd.groove-identity-message":{source:"iana",extensions:["gim"]},"application/vnd.groove-injector":{source:"iana",extensions:["grv"]},"application/vnd.groove-tool-message":{source:"iana",extensions:["gtm"]},"application/vnd.groove-tool-template":{source:"iana",extensions:["tpl"]},"application/vnd.groove-vcard":{source:"iana",extensions:["vcg"]},"application/vnd.hal+json":{source:"iana",compressible:!0},"application/vnd.hal+xml":{source:"iana",compressible:!0,extensions:["hal"]},"application/vnd.handheld-entertainment+xml":{source:"iana",compressible:!0,extensions:["zmm"]},"application/vnd.hbci":{source:"iana",extensions:["hbci"]},"application/vnd.hc+json":{source:"iana",compressible:!0},"application/vnd.hcl-bireports":{source:"iana"},"application/vnd.hdt":{source:"iana"},"application/vnd.heroku+json":{source:"iana",compressible:!0},"application/vnd.hhe.lesson-player":{source:"iana",extensions:["les"]},"application/vnd.hl7cda+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.hl7v2+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.hp-hpgl":{source:"iana",extensions:["hpgl"]},"application/vnd.hp-hpid":{source:"iana",extensions:["hpid"]},"application/vnd.hp-hps":{source:"iana",extensions:["hps"]},"application/vnd.hp-jlyt":{source:"iana",extensions:["jlt"]},"application/vnd.hp-pcl":{source:"iana",extensions:["pcl"]},"application/vnd.hp-pclxl":{source:"iana",extensions:["pclxl"]},"application/vnd.httphone":{source:"iana"},"application/vnd.hydrostatix.sof-data":{source:"iana",extensions:["sfd-hdstx"]},"application/vnd.hyper+json":{source:"iana",compressible:!0},"application/vnd.hyper-item+json":{source:"iana",compressible:!0},"application/vnd.hyperdrive+json":{source:"iana",compressible:!0},"application/vnd.hzn-3d-crossword":{source:"iana"},"application/vnd.ibm.afplinedata":{source:"iana"},"application/vnd.ibm.electronic-media":{source:"iana"},"application/vnd.ibm.minipay":{source:"iana",extensions:["mpy"]},"application/vnd.ibm.modcap":{source:"iana",extensions:["afp","listafp","list3820"]},"application/vnd.ibm.rights-management":{source:"iana",extensions:["irm"]},"application/vnd.ibm.secure-container":{source:"iana",extensions:["sc"]},"application/vnd.iccprofile":{source:"iana",extensions:["icc","icm"]},"application/vnd.ieee.1905":{source:"iana"},"application/vnd.igloader":{source:"iana",extensions:["igl"]},"application/vnd.imagemeter.folder+zip":{source:"iana",compressible:!1},"application/vnd.imagemeter.image+zip":{source:"iana",compressible:!1},"application/vnd.immervision-ivp":{source:"iana",extensions:["ivp"]},"application/vnd.immervision-ivu":{source:"iana",extensions:["ivu"]},"application/vnd.ims.imsccv1p1":{source:"iana"},"application/vnd.ims.imsccv1p2":{source:"iana"},"application/vnd.ims.imsccv1p3":{source:"iana"},"application/vnd.ims.lis.v2.result+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolconsumerprofile+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolproxy+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolproxy.id+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolsettings+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolsettings.simple+json":{source:"iana",compressible:!0},"application/vnd.informedcontrol.rms+xml":{source:"iana",compressible:!0},"application/vnd.informix-visionary":{source:"iana"},"application/vnd.infotech.project":{source:"iana"},"application/vnd.infotech.project+xml":{source:"iana",compressible:!0},"application/vnd.innopath.wamp.notification":{source:"iana"},"application/vnd.insors.igm":{source:"iana",extensions:["igm"]},"application/vnd.intercon.formnet":{source:"iana",extensions:["xpw","xpx"]},"application/vnd.intergeo":{source:"iana",extensions:["i2g"]},"application/vnd.intertrust.digibox":{source:"iana"},"application/vnd.intertrust.nncp":{source:"iana"},"application/vnd.intu.qbo":{source:"iana",extensions:["qbo"]},"application/vnd.intu.qfx":{source:"iana",extensions:["qfx"]},"application/vnd.iptc.g2.catalogitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.conceptitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.knowledgeitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.newsitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.newsmessage+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.packageitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.planningitem+xml":{source:"iana",compressible:!0},"application/vnd.ipunplugged.rcprofile":{source:"iana",extensions:["rcprofile"]},"application/vnd.irepository.package+xml":{source:"iana",compressible:!0,extensions:["irp"]},"application/vnd.is-xpr":{source:"iana",extensions:["xpr"]},"application/vnd.isac.fcs":{source:"iana",extensions:["fcs"]},"application/vnd.iso11783-10+zip":{source:"iana",compressible:!1},"application/vnd.jam":{source:"iana",extensions:["jam"]},"application/vnd.japannet-directory-service":{source:"iana"},"application/vnd.japannet-jpnstore-wakeup":{source:"iana"},"application/vnd.japannet-payment-wakeup":{source:"iana"},"application/vnd.japannet-registration":{source:"iana"},"application/vnd.japannet-registration-wakeup":{source:"iana"},"application/vnd.japannet-setstore-wakeup":{source:"iana"},"application/vnd.japannet-verification":{source:"iana"},"application/vnd.japannet-verification-wakeup":{source:"iana"},"application/vnd.jcp.javame.midlet-rms":{source:"iana",extensions:["rms"]},"application/vnd.jisp":{source:"iana",extensions:["jisp"]},"application/vnd.joost.joda-archive":{source:"iana",extensions:["joda"]},"application/vnd.jsk.isdn-ngn":{source:"iana"},"application/vnd.kahootz":{source:"iana",extensions:["ktz","ktr"]},"application/vnd.kde.karbon":{source:"iana",extensions:["karbon"]},"application/vnd.kde.kchart":{source:"iana",extensions:["chrt"]},"application/vnd.kde.kformula":{source:"iana",extensions:["kfo"]},"application/vnd.kde.kivio":{source:"iana",extensions:["flw"]},"application/vnd.kde.kontour":{source:"iana",extensions:["kon"]},"application/vnd.kde.kpresenter":{source:"iana",extensions:["kpr","kpt"]},"application/vnd.kde.kspread":{source:"iana",extensions:["ksp"]},"application/vnd.kde.kword":{source:"iana",extensions:["kwd","kwt"]},"application/vnd.kenameaapp":{source:"iana",extensions:["htke"]},"application/vnd.kidspiration":{source:"iana",extensions:["kia"]},"application/vnd.kinar":{source:"iana",extensions:["kne","knp"]},"application/vnd.koan":{source:"iana",extensions:["skp","skd","skt","skm"]},"application/vnd.kodak-descriptor":{source:"iana",extensions:["sse"]},"application/vnd.las":{source:"iana"},"application/vnd.las.las+json":{source:"iana",compressible:!0},"application/vnd.las.las+xml":{source:"iana",compressible:!0,extensions:["lasxml"]},"application/vnd.laszip":{source:"iana"},"application/vnd.leap+json":{source:"iana",compressible:!0},"application/vnd.liberty-request+xml":{source:"iana",compressible:!0},"application/vnd.llamagraphics.life-balance.desktop":{source:"iana",extensions:["lbd"]},"application/vnd.llamagraphics.life-balance.exchange+xml":{source:"iana",compressible:!0,extensions:["lbe"]},"application/vnd.logipipe.circuit+zip":{source:"iana",compressible:!1},"application/vnd.loom":{source:"iana"},"application/vnd.lotus-1-2-3":{source:"iana",extensions:["123"]},"application/vnd.lotus-approach":{source:"iana",extensions:["apr"]},"application/vnd.lotus-freelance":{source:"iana",extensions:["pre"]},"application/vnd.lotus-notes":{source:"iana",extensions:["nsf"]},"application/vnd.lotus-organizer":{source:"iana",extensions:["org"]},"application/vnd.lotus-screencam":{source:"iana",extensions:["scm"]},"application/vnd.lotus-wordpro":{source:"iana",extensions:["lwp"]},"application/vnd.macports.portpkg":{source:"iana",extensions:["portpkg"]},"application/vnd.mapbox-vector-tile":{source:"iana",extensions:["mvt"]},"application/vnd.marlin.drm.actiontoken+xml":{source:"iana",compressible:!0},"application/vnd.marlin.drm.conftoken+xml":{source:"iana",compressible:!0},"application/vnd.marlin.drm.license+xml":{source:"iana",compressible:!0},"application/vnd.marlin.drm.mdcf":{source:"iana"},"application/vnd.mason+json":{source:"iana",compressible:!0},"application/vnd.maxar.archive.3tz+zip":{source:"iana",compressible:!1},"application/vnd.maxmind.maxmind-db":{source:"iana"},"application/vnd.mcd":{source:"iana",extensions:["mcd"]},"application/vnd.medcalcdata":{source:"iana",extensions:["mc1"]},"application/vnd.mediastation.cdkey":{source:"iana",extensions:["cdkey"]},"application/vnd.meridian-slingshot":{source:"iana"},"application/vnd.mfer":{source:"iana",extensions:["mwf"]},"application/vnd.mfmp":{source:"iana",extensions:["mfm"]},"application/vnd.micro+json":{source:"iana",compressible:!0},"application/vnd.micrografx.flo":{source:"iana",extensions:["flo"]},"application/vnd.micrografx.igx":{source:"iana",extensions:["igx"]},"application/vnd.microsoft.portable-executable":{source:"iana"},"application/vnd.microsoft.windows.thumbnail-cache":{source:"iana"},"application/vnd.miele+json":{source:"iana",compressible:!0},"application/vnd.mif":{source:"iana",extensions:["mif"]},"application/vnd.minisoft-hp3000-save":{source:"iana"},"application/vnd.mitsubishi.misty-guard.trustweb":{source:"iana"},"application/vnd.mobius.daf":{source:"iana",extensions:["daf"]},"application/vnd.mobius.dis":{source:"iana",extensions:["dis"]},"application/vnd.mobius.mbk":{source:"iana",extensions:["mbk"]},"application/vnd.mobius.mqy":{source:"iana",extensions:["mqy"]},"application/vnd.mobius.msl":{source:"iana",extensions:["msl"]},"application/vnd.mobius.plc":{source:"iana",extensions:["plc"]},"application/vnd.mobius.txf":{source:"iana",extensions:["txf"]},"application/vnd.mophun.application":{source:"iana",extensions:["mpn"]},"application/vnd.mophun.certificate":{source:"iana",extensions:["mpc"]},"application/vnd.motorola.flexsuite":{source:"iana"},"application/vnd.motorola.flexsuite.adsi":{source:"iana"},"application/vnd.motorola.flexsuite.fis":{source:"iana"},"application/vnd.motorola.flexsuite.gotap":{source:"iana"},"application/vnd.motorola.flexsuite.kmr":{source:"iana"},"application/vnd.motorola.flexsuite.ttc":{source:"iana"},"application/vnd.motorola.flexsuite.wem":{source:"iana"},"application/vnd.motorola.iprm":{source:"iana"},"application/vnd.mozilla.xul+xml":{source:"iana",compressible:!0,extensions:["xul"]},"application/vnd.ms-3mfdocument":{source:"iana"},"application/vnd.ms-artgalry":{source:"iana",extensions:["cil"]},"application/vnd.ms-asf":{source:"iana"},"application/vnd.ms-cab-compressed":{source:"iana",extensions:["cab"]},"application/vnd.ms-color.iccprofile":{source:"apache"},"application/vnd.ms-excel":{source:"iana",compressible:!1,extensions:["xls","xlm","xla","xlc","xlt","xlw"]},"application/vnd.ms-excel.addin.macroenabled.12":{source:"iana",extensions:["xlam"]},"application/vnd.ms-excel.sheet.binary.macroenabled.12":{source:"iana",extensions:["xlsb"]},"application/vnd.ms-excel.sheet.macroenabled.12":{source:"iana",extensions:["xlsm"]},"application/vnd.ms-excel.template.macroenabled.12":{source:"iana",extensions:["xltm"]},"application/vnd.ms-fontobject":{source:"iana",compressible:!0,extensions:["eot"]},"application/vnd.ms-htmlhelp":{source:"iana",extensions:["chm"]},"application/vnd.ms-ims":{source:"iana",extensions:["ims"]},"application/vnd.ms-lrm":{source:"iana",extensions:["lrm"]},"application/vnd.ms-office.activex+xml":{source:"iana",compressible:!0},"application/vnd.ms-officetheme":{source:"iana",extensions:["thmx"]},"application/vnd.ms-opentype":{source:"apache",compressible:!0},"application/vnd.ms-outlook":{compressible:!1,extensions:["msg"]},"application/vnd.ms-package.obfuscated-opentype":{source:"apache"},"application/vnd.ms-pki.seccat":{source:"apache",extensions:["cat"]},"application/vnd.ms-pki.stl":{source:"apache",extensions:["stl"]},"application/vnd.ms-playready.initiator+xml":{source:"iana",compressible:!0},"application/vnd.ms-powerpoint":{source:"iana",compressible:!1,extensions:["ppt","pps","pot"]},"application/vnd.ms-powerpoint.addin.macroenabled.12":{source:"iana",extensions:["ppam"]},"application/vnd.ms-powerpoint.presentation.macroenabled.12":{source:"iana",extensions:["pptm"]},"application/vnd.ms-powerpoint.slide.macroenabled.12":{source:"iana",extensions:["sldm"]},"application/vnd.ms-powerpoint.slideshow.macroenabled.12":{source:"iana",extensions:["ppsm"]},"application/vnd.ms-powerpoint.template.macroenabled.12":{source:"iana",extensions:["potm"]},"application/vnd.ms-printdevicecapabilities+xml":{source:"iana",compressible:!0},"application/vnd.ms-printing.printticket+xml":{source:"apache",compressible:!0},"application/vnd.ms-printschematicket+xml":{source:"iana",compressible:!0},"application/vnd.ms-project":{source:"iana",extensions:["mpp","mpt"]},"application/vnd.ms-tnef":{source:"iana"},"application/vnd.ms-windows.devicepairing":{source:"iana"},"application/vnd.ms-windows.nwprinting.oob":{source:"iana"},"application/vnd.ms-windows.printerpairing":{source:"iana"},"application/vnd.ms-windows.wsd.oob":{source:"iana"},"application/vnd.ms-wmdrm.lic-chlg-req":{source:"iana"},"application/vnd.ms-wmdrm.lic-resp":{source:"iana"},"application/vnd.ms-wmdrm.meter-chlg-req":{source:"iana"},"application/vnd.ms-wmdrm.meter-resp":{source:"iana"},"application/vnd.ms-word.document.macroenabled.12":{source:"iana",extensions:["docm"]},"application/vnd.ms-word.template.macroenabled.12":{source:"iana",extensions:["dotm"]},"application/vnd.ms-works":{source:"iana",extensions:["wps","wks","wcm","wdb"]},"application/vnd.ms-wpl":{source:"iana",extensions:["wpl"]},"application/vnd.ms-xpsdocument":{source:"iana",compressible:!1,extensions:["xps"]},"application/vnd.msa-disk-image":{source:"iana"},"application/vnd.mseq":{source:"iana",extensions:["mseq"]},"application/vnd.msign":{source:"iana"},"application/vnd.multiad.creator":{source:"iana"},"application/vnd.multiad.creator.cif":{source:"iana"},"application/vnd.music-niff":{source:"iana"},"application/vnd.musician":{source:"iana",extensions:["mus"]},"application/vnd.muvee.style":{source:"iana",extensions:["msty"]},"application/vnd.mynfc":{source:"iana",extensions:["taglet"]},"application/vnd.nacamar.ybrid+json":{source:"iana",compressible:!0},"application/vnd.ncd.control":{source:"iana"},"application/vnd.ncd.reference":{source:"iana"},"application/vnd.nearst.inv+json":{source:"iana",compressible:!0},"application/vnd.nebumind.line":{source:"iana"},"application/vnd.nervana":{source:"iana"},"application/vnd.netfpx":{source:"iana"},"application/vnd.neurolanguage.nlu":{source:"iana",extensions:["nlu"]},"application/vnd.nimn":{source:"iana"},"application/vnd.nintendo.nitro.rom":{source:"iana"},"application/vnd.nintendo.snes.rom":{source:"iana"},"application/vnd.nitf":{source:"iana",extensions:["ntf","nitf"]},"application/vnd.noblenet-directory":{source:"iana",extensions:["nnd"]},"application/vnd.noblenet-sealer":{source:"iana",extensions:["nns"]},"application/vnd.noblenet-web":{source:"iana",extensions:["nnw"]},"application/vnd.nokia.catalogs":{source:"iana"},"application/vnd.nokia.conml+wbxml":{source:"iana"},"application/vnd.nokia.conml+xml":{source:"iana",compressible:!0},"application/vnd.nokia.iptv.config+xml":{source:"iana",compressible:!0},"application/vnd.nokia.isds-radio-presets":{source:"iana"},"application/vnd.nokia.landmark+wbxml":{source:"iana"},"application/vnd.nokia.landmark+xml":{source:"iana",compressible:!0},"application/vnd.nokia.landmarkcollection+xml":{source:"iana",compressible:!0},"application/vnd.nokia.n-gage.ac+xml":{source:"iana",compressible:!0,extensions:["ac"]},"application/vnd.nokia.n-gage.data":{source:"iana",extensions:["ngdat"]},"application/vnd.nokia.n-gage.symbian.install":{source:"iana",extensions:["n-gage"]},"application/vnd.nokia.ncd":{source:"iana"},"application/vnd.nokia.pcd+wbxml":{source:"iana"},"application/vnd.nokia.pcd+xml":{source:"iana",compressible:!0},"application/vnd.nokia.radio-preset":{source:"iana",extensions:["rpst"]},"application/vnd.nokia.radio-presets":{source:"iana",extensions:["rpss"]},"application/vnd.novadigm.edm":{source:"iana",extensions:["edm"]},"application/vnd.novadigm.edx":{source:"iana",extensions:["edx"]},"application/vnd.novadigm.ext":{source:"iana",extensions:["ext"]},"application/vnd.ntt-local.content-share":{source:"iana"},"application/vnd.ntt-local.file-transfer":{source:"iana"},"application/vnd.ntt-local.ogw_remote-access":{source:"iana"},"application/vnd.ntt-local.sip-ta_remote":{source:"iana"},"application/vnd.ntt-local.sip-ta_tcp_stream":{source:"iana"},"application/vnd.oasis.opendocument.chart":{source:"iana",extensions:["odc"]},"application/vnd.oasis.opendocument.chart-template":{source:"iana",extensions:["otc"]},"application/vnd.oasis.opendocument.database":{source:"iana",extensions:["odb"]},"application/vnd.oasis.opendocument.formula":{source:"iana",extensions:["odf"]},"application/vnd.oasis.opendocument.formula-template":{source:"iana",extensions:["odft"]},"application/vnd.oasis.opendocument.graphics":{source:"iana",compressible:!1,extensions:["odg"]},"application/vnd.oasis.opendocument.graphics-template":{source:"iana",extensions:["otg"]},"application/vnd.oasis.opendocument.image":{source:"iana",extensions:["odi"]},"application/vnd.oasis.opendocument.image-template":{source:"iana",extensions:["oti"]},"application/vnd.oasis.opendocument.presentation":{source:"iana",compressible:!1,extensions:["odp"]},"application/vnd.oasis.opendocument.presentation-template":{source:"iana",extensions:["otp"]},"application/vnd.oasis.opendocument.spreadsheet":{source:"iana",compressible:!1,extensions:["ods"]},"application/vnd.oasis.opendocument.spreadsheet-template":{source:"iana",extensions:["ots"]},"application/vnd.oasis.opendocument.text":{source:"iana",compressible:!1,extensions:["odt"]},"application/vnd.oasis.opendocument.text-master":{source:"iana",extensions:["odm"]},"application/vnd.oasis.opendocument.text-template":{source:"iana",extensions:["ott"]},"application/vnd.oasis.opendocument.text-web":{source:"iana",extensions:["oth"]},"application/vnd.obn":{source:"iana"},"application/vnd.ocf+cbor":{source:"iana"},"application/vnd.oci.image.manifest.v1+json":{source:"iana",compressible:!0},"application/vnd.oftn.l10n+json":{source:"iana",compressible:!0},"application/vnd.oipf.contentaccessdownload+xml":{source:"iana",compressible:!0},"application/vnd.oipf.contentaccessstreaming+xml":{source:"iana",compressible:!0},"application/vnd.oipf.cspg-hexbinary":{source:"iana"},"application/vnd.oipf.dae.svg+xml":{source:"iana",compressible:!0},"application/vnd.oipf.dae.xhtml+xml":{source:"iana",compressible:!0},"application/vnd.oipf.mippvcontrolmessage+xml":{source:"iana",compressible:!0},"application/vnd.oipf.pae.gem":{source:"iana"},"application/vnd.oipf.spdiscovery+xml":{source:"iana",compressible:!0},"application/vnd.oipf.spdlist+xml":{source:"iana",compressible:!0},"application/vnd.oipf.ueprofile+xml":{source:"iana",compressible:!0},"application/vnd.oipf.userprofile+xml":{source:"iana",compressible:!0},"application/vnd.olpc-sugar":{source:"iana",extensions:["xo"]},"application/vnd.oma-scws-config":{source:"iana"},"application/vnd.oma-scws-http-request":{source:"iana"},"application/vnd.oma-scws-http-response":{source:"iana"},"application/vnd.oma.bcast.associated-procedure-parameter+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.drm-trigger+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.imd+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.ltkm":{source:"iana"},"application/vnd.oma.bcast.notification+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.provisioningtrigger":{source:"iana"},"application/vnd.oma.bcast.sgboot":{source:"iana"},"application/vnd.oma.bcast.sgdd+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.sgdu":{source:"iana"},"application/vnd.oma.bcast.simple-symbol-container":{source:"iana"},"application/vnd.oma.bcast.smartcard-trigger+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.sprov+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.stkm":{source:"iana"},"application/vnd.oma.cab-address-book+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-feature-handler+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-pcc+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-subs-invite+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-user-prefs+xml":{source:"iana",compressible:!0},"application/vnd.oma.dcd":{source:"iana"},"application/vnd.oma.dcdc":{source:"iana"},"application/vnd.oma.dd2+xml":{source:"iana",compressible:!0,extensions:["dd2"]},"application/vnd.oma.drm.risd+xml":{source:"iana",compressible:!0},"application/vnd.oma.group-usage-list+xml":{source:"iana",compressible:!0},"application/vnd.oma.lwm2m+cbor":{source:"iana"},"application/vnd.oma.lwm2m+json":{source:"iana",compressible:!0},"application/vnd.oma.lwm2m+tlv":{source:"iana"},"application/vnd.oma.pal+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.detailed-progress-report+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.final-report+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.groups+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.invocation-descriptor+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.optimized-progress-report+xml":{source:"iana",compressible:!0},"application/vnd.oma.push":{source:"iana"},"application/vnd.oma.scidm.messages+xml":{source:"iana",compressible:!0},"application/vnd.oma.xcap-directory+xml":{source:"iana",compressible:!0},"application/vnd.omads-email+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.omads-file+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.omads-folder+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.omaloc-supl-init":{source:"iana"},"application/vnd.onepager":{source:"iana"},"application/vnd.onepagertamp":{source:"iana"},"application/vnd.onepagertamx":{source:"iana"},"application/vnd.onepagertat":{source:"iana"},"application/vnd.onepagertatp":{source:"iana"},"application/vnd.onepagertatx":{source:"iana"},"application/vnd.openblox.game+xml":{source:"iana",compressible:!0,extensions:["obgx"]},"application/vnd.openblox.game-binary":{source:"iana"},"application/vnd.openeye.oeb":{source:"iana"},"application/vnd.openofficeorg.extension":{source:"apache",extensions:["oxt"]},"application/vnd.openstreetmap.data+xml":{source:"iana",compressible:!0,extensions:["osm"]},"application/vnd.opentimestamps.ots":{source:"iana"},"application/vnd.openxmlformats-officedocument.custom-properties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.customxmlproperties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawing+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.chart+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.extended-properties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.comments+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.presentation":{source:"iana",compressible:!1,extensions:["pptx"]},"application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.presprops+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slide":{source:"iana",extensions:["sldx"]},"application/vnd.openxmlformats-officedocument.presentationml.slide+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slideshow":{source:"iana",extensions:["ppsx"]},"application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.tags+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.template":{source:"iana",extensions:["potx"]},"application/vnd.openxmlformats-officedocument.presentationml.template.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{source:"iana",compressible:!1,extensions:["xlsx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.template":{source:"iana",extensions:["xltx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.theme+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.themeoverride+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.vmldrawing":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.document":{source:"iana",compressible:!1,extensions:["docx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.template":{source:"iana",extensions:["dotx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-package.core-properties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-package.relationships+xml":{source:"iana",compressible:!0},"application/vnd.oracle.resource+json":{source:"iana",compressible:!0},"application/vnd.orange.indata":{source:"iana"},"application/vnd.osa.netdeploy":{source:"iana"},"application/vnd.osgeo.mapguide.package":{source:"iana",extensions:["mgp"]},"application/vnd.osgi.bundle":{source:"iana"},"application/vnd.osgi.dp":{source:"iana",extensions:["dp"]},"application/vnd.osgi.subsystem":{source:"iana",extensions:["esa"]},"application/vnd.otps.ct-kip+xml":{source:"iana",compressible:!0},"application/vnd.oxli.countgraph":{source:"iana"},"application/vnd.pagerduty+json":{source:"iana",compressible:!0},"application/vnd.palm":{source:"iana",extensions:["pdb","pqa","oprc"]},"application/vnd.panoply":{source:"iana"},"application/vnd.paos.xml":{source:"iana"},"application/vnd.patentdive":{source:"iana"},"application/vnd.patientecommsdoc":{source:"iana"},"application/vnd.pawaafile":{source:"iana",extensions:["paw"]},"application/vnd.pcos":{source:"iana"},"application/vnd.pg.format":{source:"iana",extensions:["str"]},"application/vnd.pg.osasli":{source:"iana",extensions:["ei6"]},"application/vnd.piaccess.application-licence":{source:"iana"},"application/vnd.picsel":{source:"iana",extensions:["efif"]},"application/vnd.pmi.widget":{source:"iana",extensions:["wg"]},"application/vnd.poc.group-advertisement+xml":{source:"iana",compressible:!0},"application/vnd.pocketlearn":{source:"iana",extensions:["plf"]},"application/vnd.powerbuilder6":{source:"iana",extensions:["pbd"]},"application/vnd.powerbuilder6-s":{source:"iana"},"application/vnd.powerbuilder7":{source:"iana"},"application/vnd.powerbuilder7-s":{source:"iana"},"application/vnd.powerbuilder75":{source:"iana"},"application/vnd.powerbuilder75-s":{source:"iana"},"application/vnd.preminet":{source:"iana"},"application/vnd.previewsystems.box":{source:"iana",extensions:["box"]},"application/vnd.proteus.magazine":{source:"iana",extensions:["mgz"]},"application/vnd.psfs":{source:"iana"},"application/vnd.publishare-delta-tree":{source:"iana",extensions:["qps"]},"application/vnd.pvi.ptid1":{source:"iana",extensions:["ptid"]},"application/vnd.pwg-multiplexed":{source:"iana"},"application/vnd.pwg-xhtml-print+xml":{source:"iana",compressible:!0},"application/vnd.qualcomm.brew-app-res":{source:"iana"},"application/vnd.quarantainenet":{source:"iana"},"application/vnd.quark.quarkxpress":{source:"iana",extensions:["qxd","qxt","qwd","qwt","qxl","qxb"]},"application/vnd.quobject-quoxdocument":{source:"iana"},"application/vnd.radisys.moml+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-conf+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-conn+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-dialog+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-stream+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-conf+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-base+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-fax-detect+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-fax-sendrecv+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-group+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-speech+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-transform+xml":{source:"iana",compressible:!0},"application/vnd.rainstor.data":{source:"iana"},"application/vnd.rapid":{source:"iana"},"application/vnd.rar":{source:"iana",extensions:["rar"]},"application/vnd.realvnc.bed":{source:"iana",extensions:["bed"]},"application/vnd.recordare.musicxml":{source:"iana",extensions:["mxl"]},"application/vnd.recordare.musicxml+xml":{source:"iana",compressible:!0,extensions:["musicxml"]},"application/vnd.renlearn.rlprint":{source:"iana"},"application/vnd.resilient.logic":{source:"iana"},"application/vnd.restful+json":{source:"iana",compressible:!0},"application/vnd.rig.cryptonote":{source:"iana",extensions:["cryptonote"]},"application/vnd.rim.cod":{source:"apache",extensions:["cod"]},"application/vnd.rn-realmedia":{source:"apache",extensions:["rm"]},"application/vnd.rn-realmedia-vbr":{source:"apache",extensions:["rmvb"]},"application/vnd.route66.link66+xml":{source:"iana",compressible:!0,extensions:["link66"]},"application/vnd.rs-274x":{source:"iana"},"application/vnd.ruckus.download":{source:"iana"},"application/vnd.s3sms":{source:"iana"},"application/vnd.sailingtracker.track":{source:"iana",extensions:["st"]},"application/vnd.sar":{source:"iana"},"application/vnd.sbm.cid":{source:"iana"},"application/vnd.sbm.mid2":{source:"iana"},"application/vnd.scribus":{source:"iana"},"application/vnd.sealed.3df":{source:"iana"},"application/vnd.sealed.csf":{source:"iana"},"application/vnd.sealed.doc":{source:"iana"},"application/vnd.sealed.eml":{source:"iana"},"application/vnd.sealed.mht":{source:"iana"},"application/vnd.sealed.net":{source:"iana"},"application/vnd.sealed.ppt":{source:"iana"},"application/vnd.sealed.tiff":{source:"iana"},"application/vnd.sealed.xls":{source:"iana"},"application/vnd.sealedmedia.softseal.html":{source:"iana"},"application/vnd.sealedmedia.softseal.pdf":{source:"iana"},"application/vnd.seemail":{source:"iana",extensions:["see"]},"application/vnd.seis+json":{source:"iana",compressible:!0},"application/vnd.sema":{source:"iana",extensions:["sema"]},"application/vnd.semd":{source:"iana",extensions:["semd"]},"application/vnd.semf":{source:"iana",extensions:["semf"]},"application/vnd.shade-save-file":{source:"iana"},"application/vnd.shana.informed.formdata":{source:"iana",extensions:["ifm"]},"application/vnd.shana.informed.formtemplate":{source:"iana",extensions:["itp"]},"application/vnd.shana.informed.interchange":{source:"iana",extensions:["iif"]},"application/vnd.shana.informed.package":{source:"iana",extensions:["ipk"]},"application/vnd.shootproof+json":{source:"iana",compressible:!0},"application/vnd.shopkick+json":{source:"iana",compressible:!0},"application/vnd.shp":{source:"iana"},"application/vnd.shx":{source:"iana"},"application/vnd.sigrok.session":{source:"iana"},"application/vnd.simtech-mindmapper":{source:"iana",extensions:["twd","twds"]},"application/vnd.siren+json":{source:"iana",compressible:!0},"application/vnd.smaf":{source:"iana",extensions:["mmf"]},"application/vnd.smart.notebook":{source:"iana"},"application/vnd.smart.teacher":{source:"iana",extensions:["teacher"]},"application/vnd.snesdev-page-table":{source:"iana"},"application/vnd.software602.filler.form+xml":{source:"iana",compressible:!0,extensions:["fo"]},"application/vnd.software602.filler.form-xml-zip":{source:"iana"},"application/vnd.solent.sdkm+xml":{source:"iana",compressible:!0,extensions:["sdkm","sdkd"]},"application/vnd.spotfire.dxp":{source:"iana",extensions:["dxp"]},"application/vnd.spotfire.sfs":{source:"iana",extensions:["sfs"]},"application/vnd.sqlite3":{source:"iana"},"application/vnd.sss-cod":{source:"iana"},"application/vnd.sss-dtf":{source:"iana"},"application/vnd.sss-ntf":{source:"iana"},"application/vnd.stardivision.calc":{source:"apache",extensions:["sdc"]},"application/vnd.stardivision.draw":{source:"apache",extensions:["sda"]},"application/vnd.stardivision.impress":{source:"apache",extensions:["sdd"]},"application/vnd.stardivision.math":{source:"apache",extensions:["smf"]},"application/vnd.stardivision.writer":{source:"apache",extensions:["sdw","vor"]},"application/vnd.stardivision.writer-global":{source:"apache",extensions:["sgl"]},"application/vnd.stepmania.package":{source:"iana",extensions:["smzip"]},"application/vnd.stepmania.stepchart":{source:"iana",extensions:["sm"]},"application/vnd.street-stream":{source:"iana"},"application/vnd.sun.wadl+xml":{source:"iana",compressible:!0,extensions:["wadl"]},"application/vnd.sun.xml.calc":{source:"apache",extensions:["sxc"]},"application/vnd.sun.xml.calc.template":{source:"apache",extensions:["stc"]},"application/vnd.sun.xml.draw":{source:"apache",extensions:["sxd"]},"application/vnd.sun.xml.draw.template":{source:"apache",extensions:["std"]},"application/vnd.sun.xml.impress":{source:"apache",extensions:["sxi"]},"application/vnd.sun.xml.impress.template":{source:"apache",extensions:["sti"]},"application/vnd.sun.xml.math":{source:"apache",extensions:["sxm"]},"application/vnd.sun.xml.writer":{source:"apache",extensions:["sxw"]},"application/vnd.sun.xml.writer.global":{source:"apache",extensions:["sxg"]},"application/vnd.sun.xml.writer.template":{source:"apache",extensions:["stw"]},"application/vnd.sus-calendar":{source:"iana",extensions:["sus","susp"]},"application/vnd.svd":{source:"iana",extensions:["svd"]},"application/vnd.swiftview-ics":{source:"iana"},"application/vnd.sycle+xml":{source:"iana",compressible:!0},"application/vnd.syft+json":{source:"iana",compressible:!0},"application/vnd.symbian.install":{source:"apache",extensions:["sis","sisx"]},"application/vnd.syncml+xml":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["xsm"]},"application/vnd.syncml.dm+wbxml":{source:"iana",charset:"UTF-8",extensions:["bdm"]},"application/vnd.syncml.dm+xml":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["xdm"]},"application/vnd.syncml.dm.notification":{source:"iana"},"application/vnd.syncml.dmddf+wbxml":{source:"iana"},"application/vnd.syncml.dmddf+xml":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["ddf"]},"application/vnd.syncml.dmtnds+wbxml":{source:"iana"},"application/vnd.syncml.dmtnds+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.syncml.ds.notification":{source:"iana"},"application/vnd.tableschema+json":{source:"iana",compressible:!0},"application/vnd.tao.intent-module-archive":{source:"iana",extensions:["tao"]},"application/vnd.tcpdump.pcap":{source:"iana",extensions:["pcap","cap","dmp"]},"application/vnd.think-cell.ppttc+json":{source:"iana",compressible:!0},"application/vnd.tmd.mediaflex.api+xml":{source:"iana",compressible:!0},"application/vnd.tml":{source:"iana"},"application/vnd.tmobile-livetv":{source:"iana",extensions:["tmo"]},"application/vnd.tri.onesource":{source:"iana"},"application/vnd.trid.tpt":{source:"iana",extensions:["tpt"]},"application/vnd.triscape.mxs":{source:"iana",extensions:["mxs"]},"application/vnd.trueapp":{source:"iana",extensions:["tra"]},"application/vnd.truedoc":{source:"iana"},"application/vnd.ubisoft.webplayer":{source:"iana"},"application/vnd.ufdl":{source:"iana",extensions:["ufd","ufdl"]},"application/vnd.uiq.theme":{source:"iana",extensions:["utz"]},"application/vnd.umajin":{source:"iana",extensions:["umj"]},"application/vnd.unity":{source:"iana",extensions:["unityweb"]},"application/vnd.uoml+xml":{source:"iana",compressible:!0,extensions:["uoml"]},"application/vnd.uplanet.alert":{source:"iana"},"application/vnd.uplanet.alert-wbxml":{source:"iana"},"application/vnd.uplanet.bearer-choice":{source:"iana"},"application/vnd.uplanet.bearer-choice-wbxml":{source:"iana"},"application/vnd.uplanet.cacheop":{source:"iana"},"application/vnd.uplanet.cacheop-wbxml":{source:"iana"},"application/vnd.uplanet.channel":{source:"iana"},"application/vnd.uplanet.channel-wbxml":{source:"iana"},"application/vnd.uplanet.list":{source:"iana"},"application/vnd.uplanet.list-wbxml":{source:"iana"},"application/vnd.uplanet.listcmd":{source:"iana"},"application/vnd.uplanet.listcmd-wbxml":{source:"iana"},"application/vnd.uplanet.signal":{source:"iana"},"application/vnd.uri-map":{source:"iana"},"application/vnd.valve.source.material":{source:"iana"},"application/vnd.vcx":{source:"iana",extensions:["vcx"]},"application/vnd.vd-study":{source:"iana"},"application/vnd.vectorworks":{source:"iana"},"application/vnd.vel+json":{source:"iana",compressible:!0},"application/vnd.verimatrix.vcas":{source:"iana"},"application/vnd.veritone.aion+json":{source:"iana",compressible:!0},"application/vnd.veryant.thin":{source:"iana"},"application/vnd.ves.encrypted":{source:"iana"},"application/vnd.vidsoft.vidconference":{source:"iana"},"application/vnd.visio":{source:"iana",extensions:["vsd","vst","vss","vsw"]},"application/vnd.visionary":{source:"iana",extensions:["vis"]},"application/vnd.vividence.scriptfile":{source:"iana"},"application/vnd.vsf":{source:"iana",extensions:["vsf"]},"application/vnd.wap.sic":{source:"iana"},"application/vnd.wap.slc":{source:"iana"},"application/vnd.wap.wbxml":{source:"iana",charset:"UTF-8",extensions:["wbxml"]},"application/vnd.wap.wmlc":{source:"iana",extensions:["wmlc"]},"application/vnd.wap.wmlscriptc":{source:"iana",extensions:["wmlsc"]},"application/vnd.webturbo":{source:"iana",extensions:["wtb"]},"application/vnd.wfa.dpp":{source:"iana"},"application/vnd.wfa.p2p":{source:"iana"},"application/vnd.wfa.wsc":{source:"iana"},"application/vnd.windows.devicepairing":{source:"iana"},"application/vnd.wmc":{source:"iana"},"application/vnd.wmf.bootstrap":{source:"iana"},"application/vnd.wolfram.mathematica":{source:"iana"},"application/vnd.wolfram.mathematica.package":{source:"iana"},"application/vnd.wolfram.player":{source:"iana",extensions:["nbp"]},"application/vnd.wordperfect":{source:"iana",extensions:["wpd"]},"application/vnd.wqd":{source:"iana",extensions:["wqd"]},"application/vnd.wrq-hp3000-labelled":{source:"iana"},"application/vnd.wt.stf":{source:"iana",extensions:["stf"]},"application/vnd.wv.csp+wbxml":{source:"iana"},"application/vnd.wv.csp+xml":{source:"iana",compressible:!0},"application/vnd.wv.ssp+xml":{source:"iana",compressible:!0},"application/vnd.xacml+json":{source:"iana",compressible:!0},"application/vnd.xara":{source:"iana",extensions:["xar"]},"application/vnd.xfdl":{source:"iana",extensions:["xfdl"]},"application/vnd.xfdl.webform":{source:"iana"},"application/vnd.xmi+xml":{source:"iana",compressible:!0},"application/vnd.xmpie.cpkg":{source:"iana"},"application/vnd.xmpie.dpkg":{source:"iana"},"application/vnd.xmpie.plan":{source:"iana"},"application/vnd.xmpie.ppkg":{source:"iana"},"application/vnd.xmpie.xlim":{source:"iana"},"application/vnd.yamaha.hv-dic":{source:"iana",extensions:["hvd"]},"application/vnd.yamaha.hv-script":{source:"iana",extensions:["hvs"]},"application/vnd.yamaha.hv-voice":{source:"iana",extensions:["hvp"]},"application/vnd.yamaha.openscoreformat":{source:"iana",extensions:["osf"]},"application/vnd.yamaha.openscoreformat.osfpvg+xml":{source:"iana",compressible:!0,extensions:["osfpvg"]},"application/vnd.yamaha.remote-setup":{source:"iana"},"application/vnd.yamaha.smaf-audio":{source:"iana",extensions:["saf"]},"application/vnd.yamaha.smaf-phrase":{source:"iana",extensions:["spf"]},"application/vnd.yamaha.through-ngn":{source:"iana"},"application/vnd.yamaha.tunnel-udpencap":{source:"iana"},"application/vnd.yaoweme":{source:"iana"},"application/vnd.yellowriver-custom-menu":{source:"iana",extensions:["cmp"]},"application/vnd.youtube.yt":{source:"iana"},"application/vnd.zul":{source:"iana",extensions:["zir","zirz"]},"application/vnd.zzazz.deck+xml":{source:"iana",compressible:!0,extensions:["zaz"]},"application/voicexml+xml":{source:"iana",compressible:!0,extensions:["vxml"]},"application/voucher-cms+json":{source:"iana",compressible:!0},"application/vq-rtcpxr":{source:"iana"},"application/wasm":{source:"iana",compressible:!0,extensions:["wasm"]},"application/watcherinfo+xml":{source:"iana",compressible:!0,extensions:["wif"]},"application/webpush-options+json":{source:"iana",compressible:!0},"application/whoispp-query":{source:"iana"},"application/whoispp-response":{source:"iana"},"application/widget":{source:"iana",extensions:["wgt"]},"application/winhlp":{source:"apache",extensions:["hlp"]},"application/wita":{source:"iana"},"application/wordperfect5.1":{source:"iana"},"application/wsdl+xml":{source:"iana",compressible:!0,extensions:["wsdl"]},"application/wspolicy+xml":{source:"iana",compressible:!0,extensions:["wspolicy"]},"application/x-7z-compressed":{source:"apache",compressible:!1,extensions:["7z"]},"application/x-abiword":{source:"apache",extensions:["abw"]},"application/x-ace-compressed":{source:"apache",extensions:["ace"]},"application/x-amf":{source:"apache"},"application/x-apple-diskimage":{source:"apache",extensions:["dmg"]},"application/x-arj":{compressible:!1,extensions:["arj"]},"application/x-authorware-bin":{source:"apache",extensions:["aab","x32","u32","vox"]},"application/x-authorware-map":{source:"apache",extensions:["aam"]},"application/x-authorware-seg":{source:"apache",extensions:["aas"]},"application/x-bcpio":{source:"apache",extensions:["bcpio"]},"application/x-bdoc":{compressible:!1,extensions:["bdoc"]},"application/x-bittorrent":{source:"apache",extensions:["torrent"]},"application/x-blorb":{source:"apache",extensions:["blb","blorb"]},"application/x-bzip":{source:"apache",compressible:!1,extensions:["bz"]},"application/x-bzip2":{source:"apache",compressible:!1,extensions:["bz2","boz"]},"application/x-cbr":{source:"apache",extensions:["cbr","cba","cbt","cbz","cb7"]},"application/x-cdlink":{source:"apache",extensions:["vcd"]},"application/x-cfs-compressed":{source:"apache",extensions:["cfs"]},"application/x-chat":{source:"apache",extensions:["chat"]},"application/x-chess-pgn":{source:"apache",extensions:["pgn"]},"application/x-chrome-extension":{extensions:["crx"]},"application/x-cocoa":{source:"nginx",extensions:["cco"]},"application/x-compress":{source:"apache"},"application/x-conference":{source:"apache",extensions:["nsc"]},"application/x-cpio":{source:"apache",extensions:["cpio"]},"application/x-csh":{source:"apache",extensions:["csh"]},"application/x-deb":{compressible:!1},"application/x-debian-package":{source:"apache",extensions:["deb","udeb"]},"application/x-dgc-compressed":{source:"apache",extensions:["dgc"]},"application/x-director":{source:"apache",extensions:["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"]},"application/x-doom":{source:"apache",extensions:["wad"]},"application/x-dtbncx+xml":{source:"apache",compressible:!0,extensions:["ncx"]},"application/x-dtbook+xml":{source:"apache",compressible:!0,extensions:["dtb"]},"application/x-dtbresource+xml":{source:"apache",compressible:!0,extensions:["res"]},"application/x-dvi":{source:"apache",compressible:!1,extensions:["dvi"]},"application/x-envoy":{source:"apache",extensions:["evy"]},"application/x-eva":{source:"apache",extensions:["eva"]},"application/x-font-bdf":{source:"apache",extensions:["bdf"]},"application/x-font-dos":{source:"apache"},"application/x-font-framemaker":{source:"apache"},"application/x-font-ghostscript":{source:"apache",extensions:["gsf"]},"application/x-font-libgrx":{source:"apache"},"application/x-font-linux-psf":{source:"apache",extensions:["psf"]},"application/x-font-pcf":{source:"apache",extensions:["pcf"]},"application/x-font-snf":{source:"apache",extensions:["snf"]},"application/x-font-speedo":{source:"apache"},"application/x-font-sunos-news":{source:"apache"},"application/x-font-type1":{source:"apache",extensions:["pfa","pfb","pfm","afm"]},"application/x-font-vfont":{source:"apache"},"application/x-freearc":{source:"apache",extensions:["arc"]},"application/x-futuresplash":{source:"apache",extensions:["spl"]},"application/x-gca-compressed":{source:"apache",extensions:["gca"]},"application/x-glulx":{source:"apache",extensions:["ulx"]},"application/x-gnumeric":{source:"apache",extensions:["gnumeric"]},"application/x-gramps-xml":{source:"apache",extensions:["gramps"]},"application/x-gtar":{source:"apache",extensions:["gtar"]},"application/x-gzip":{source:"apache"},"application/x-hdf":{source:"apache",extensions:["hdf"]},"application/x-httpd-php":{compressible:!0,extensions:["php"]},"application/x-install-instructions":{source:"apache",extensions:["install"]},"application/x-iso9660-image":{source:"apache",extensions:["iso"]},"application/x-iwork-keynote-sffkey":{extensions:["key"]},"application/x-iwork-numbers-sffnumbers":{extensions:["numbers"]},"application/x-iwork-pages-sffpages":{extensions:["pages"]},"application/x-java-archive-diff":{source:"nginx",extensions:["jardiff"]},"application/x-java-jnlp-file":{source:"apache",compressible:!1,extensions:["jnlp"]},"application/x-javascript":{compressible:!0},"application/x-keepass2":{extensions:["kdbx"]},"application/x-latex":{source:"apache",compressible:!1,extensions:["latex"]},"application/x-lua-bytecode":{extensions:["luac"]},"application/x-lzh-compressed":{source:"apache",extensions:["lzh","lha"]},"application/x-makeself":{source:"nginx",extensions:["run"]},"application/x-mie":{source:"apache",extensions:["mie"]},"application/x-mobipocket-ebook":{source:"apache",extensions:["prc","mobi"]},"application/x-mpegurl":{compressible:!1},"application/x-ms-application":{source:"apache",extensions:["application"]},"application/x-ms-shortcut":{source:"apache",extensions:["lnk"]},"application/x-ms-wmd":{source:"apache",extensions:["wmd"]},"application/x-ms-wmz":{source:"apache",extensions:["wmz"]},"application/x-ms-xbap":{source:"apache",extensions:["xbap"]},"application/x-msaccess":{source:"apache",extensions:["mdb"]},"application/x-msbinder":{source:"apache",extensions:["obd"]},"application/x-mscardfile":{source:"apache",extensions:["crd"]},"application/x-msclip":{source:"apache",extensions:["clp"]},"application/x-msdos-program":{extensions:["exe"]},"application/x-msdownload":{source:"apache",extensions:["exe","dll","com","bat","msi"]},"application/x-msmediaview":{source:"apache",extensions:["mvb","m13","m14"]},"application/x-msmetafile":{source:"apache",extensions:["wmf","wmz","emf","emz"]},"application/x-msmoney":{source:"apache",extensions:["mny"]},"application/x-mspublisher":{source:"apache",extensions:["pub"]},"application/x-msschedule":{source:"apache",extensions:["scd"]},"application/x-msterminal":{source:"apache",extensions:["trm"]},"application/x-mswrite":{source:"apache",extensions:["wri"]},"application/x-netcdf":{source:"apache",extensions:["nc","cdf"]},"application/x-ns-proxy-autoconfig":{compressible:!0,extensions:["pac"]},"application/x-nzb":{source:"apache",extensions:["nzb"]},"application/x-perl":{source:"nginx",extensions:["pl","pm"]},"application/x-pilot":{source:"nginx",extensions:["prc","pdb"]},"application/x-pkcs12":{source:"apache",compressible:!1,extensions:["p12","pfx"]},"application/x-pkcs7-certificates":{source:"apache",extensions:["p7b","spc"]},"application/x-pkcs7-certreqresp":{source:"apache",extensions:["p7r"]},"application/x-pki-message":{source:"iana"},"application/x-rar-compressed":{source:"apache",compressible:!1,extensions:["rar"]},"application/x-redhat-package-manager":{source:"nginx",extensions:["rpm"]},"application/x-research-info-systems":{source:"apache",extensions:["ris"]},"application/x-sea":{source:"nginx",extensions:["sea"]},"application/x-sh":{source:"apache",compressible:!0,extensions:["sh"]},"application/x-shar":{source:"apache",extensions:["shar"]},"application/x-shockwave-flash":{source:"apache",compressible:!1,extensions:["swf"]},"application/x-silverlight-app":{source:"apache",extensions:["xap"]},"application/x-sql":{source:"apache",extensions:["sql"]},"application/x-stuffit":{source:"apache",compressible:!1,extensions:["sit"]},"application/x-stuffitx":{source:"apache",extensions:["sitx"]},"application/x-subrip":{source:"apache",extensions:["srt"]},"application/x-sv4cpio":{source:"apache",extensions:["sv4cpio"]},"application/x-sv4crc":{source:"apache",extensions:["sv4crc"]},"application/x-t3vm-image":{source:"apache",extensions:["t3"]},"application/x-tads":{source:"apache",extensions:["gam"]},"application/x-tar":{source:"apache",compressible:!0,extensions:["tar"]},"application/x-tcl":{source:"apache",extensions:["tcl","tk"]},"application/x-tex":{source:"apache",extensions:["tex"]},"application/x-tex-tfm":{source:"apache",extensions:["tfm"]},"application/x-texinfo":{source:"apache",extensions:["texinfo","texi"]},"application/x-tgif":{source:"apache",extensions:["obj"]},"application/x-ustar":{source:"apache",extensions:["ustar"]},"application/x-virtualbox-hdd":{compressible:!0,extensions:["hdd"]},"application/x-virtualbox-ova":{compressible:!0,extensions:["ova"]},"application/x-virtualbox-ovf":{compressible:!0,extensions:["ovf"]},"application/x-virtualbox-vbox":{compressible:!0,extensions:["vbox"]},"application/x-virtualbox-vbox-extpack":{compressible:!1,extensions:["vbox-extpack"]},"application/x-virtualbox-vdi":{compressible:!0,extensions:["vdi"]},"application/x-virtualbox-vhd":{compressible:!0,extensions:["vhd"]},"application/x-virtualbox-vmdk":{compressible:!0,extensions:["vmdk"]},"application/x-wais-source":{source:"apache",extensions:["src"]},"application/x-web-app-manifest+json":{compressible:!0,extensions:["webapp"]},"application/x-www-form-urlencoded":{source:"iana",compressible:!0},"application/x-x509-ca-cert":{source:"iana",extensions:["der","crt","pem"]},"application/x-x509-ca-ra-cert":{source:"iana"},"application/x-x509-next-ca-cert":{source:"iana"},"application/x-xfig":{source:"apache",extensions:["fig"]},"application/x-xliff+xml":{source:"apache",compressible:!0,extensions:["xlf"]},"application/x-xpinstall":{source:"apache",compressible:!1,extensions:["xpi"]},"application/x-xz":{source:"apache",extensions:["xz"]},"application/x-zmachine":{source:"apache",extensions:["z1","z2","z3","z4","z5","z6","z7","z8"]},"application/x400-bp":{source:"iana"},"application/xacml+xml":{source:"iana",compressible:!0},"application/xaml+xml":{source:"apache",compressible:!0,extensions:["xaml"]},"application/xcap-att+xml":{source:"iana",compressible:!0,extensions:["xav"]},"application/xcap-caps+xml":{source:"iana",compressible:!0,extensions:["xca"]},"application/xcap-diff+xml":{source:"iana",compressible:!0,extensions:["xdf"]},"application/xcap-el+xml":{source:"iana",compressible:!0,extensions:["xel"]},"application/xcap-error+xml":{source:"iana",compressible:!0},"application/xcap-ns+xml":{source:"iana",compressible:!0,extensions:["xns"]},"application/xcon-conference-info+xml":{source:"iana",compressible:!0},"application/xcon-conference-info-diff+xml":{source:"iana",compressible:!0},"application/xenc+xml":{source:"iana",compressible:!0,extensions:["xenc"]},"application/xhtml+xml":{source:"iana",compressible:!0,extensions:["xhtml","xht"]},"application/xhtml-voice+xml":{source:"apache",compressible:!0},"application/xliff+xml":{source:"iana",compressible:!0,extensions:["xlf"]},"application/xml":{source:"iana",compressible:!0,extensions:["xml","xsl","xsd","rng"]},"application/xml-dtd":{source:"iana",compressible:!0,extensions:["dtd"]},"application/xml-external-parsed-entity":{source:"iana"},"application/xml-patch+xml":{source:"iana",compressible:!0},"application/xmpp+xml":{source:"iana",compressible:!0},"application/xop+xml":{source:"iana",compressible:!0,extensions:["xop"]},"application/xproc+xml":{source:"apache",compressible:!0,extensions:["xpl"]},"application/xslt+xml":{source:"iana",compressible:!0,extensions:["xsl","xslt"]},"application/xspf+xml":{source:"apache",compressible:!0,extensions:["xspf"]},"application/xv+xml":{source:"iana",compressible:!0,extensions:["mxml","xhvml","xvml","xvm"]},"application/yang":{source:"iana",extensions:["yang"]},"application/yang-data+json":{source:"iana",compressible:!0},"application/yang-data+xml":{source:"iana",compressible:!0},"application/yang-patch+json":{source:"iana",compressible:!0},"application/yang-patch+xml":{source:"iana",compressible:!0},"application/yin+xml":{source:"iana",compressible:!0,extensions:["yin"]},"application/zip":{source:"iana",compressible:!1,extensions:["zip"]},"application/zlib":{source:"iana"},"application/zstd":{source:"iana"},"audio/1d-interleaved-parityfec":{source:"iana"},"audio/32kadpcm":{source:"iana"},"audio/3gpp":{source:"iana",compressible:!1,extensions:["3gpp"]},"audio/3gpp2":{source:"iana"},"audio/aac":{source:"iana"},"audio/ac3":{source:"iana"},"audio/adpcm":{source:"apache",extensions:["adp"]},"audio/amr":{source:"iana",extensions:["amr"]},"audio/amr-wb":{source:"iana"},"audio/amr-wb+":{source:"iana"},"audio/aptx":{source:"iana"},"audio/asc":{source:"iana"},"audio/atrac-advanced-lossless":{source:"iana"},"audio/atrac-x":{source:"iana"},"audio/atrac3":{source:"iana"},"audio/basic":{source:"iana",compressible:!1,extensions:["au","snd"]},"audio/bv16":{source:"iana"},"audio/bv32":{source:"iana"},"audio/clearmode":{source:"iana"},"audio/cn":{source:"iana"},"audio/dat12":{source:"iana"},"audio/dls":{source:"iana"},"audio/dsr-es201108":{source:"iana"},"audio/dsr-es202050":{source:"iana"},"audio/dsr-es202211":{source:"iana"},"audio/dsr-es202212":{source:"iana"},"audio/dv":{source:"iana"},"audio/dvi4":{source:"iana"},"audio/eac3":{source:"iana"},"audio/encaprtp":{source:"iana"},"audio/evrc":{source:"iana"},"audio/evrc-qcp":{source:"iana"},"audio/evrc0":{source:"iana"},"audio/evrc1":{source:"iana"},"audio/evrcb":{source:"iana"},"audio/evrcb0":{source:"iana"},"audio/evrcb1":{source:"iana"},"audio/evrcnw":{source:"iana"},"audio/evrcnw0":{source:"iana"},"audio/evrcnw1":{source:"iana"},"audio/evrcwb":{source:"iana"},"audio/evrcwb0":{source:"iana"},"audio/evrcwb1":{source:"iana"},"audio/evs":{source:"iana"},"audio/flexfec":{source:"iana"},"audio/fwdred":{source:"iana"},"audio/g711-0":{source:"iana"},"audio/g719":{source:"iana"},"audio/g722":{source:"iana"},"audio/g7221":{source:"iana"},"audio/g723":{source:"iana"},"audio/g726-16":{source:"iana"},"audio/g726-24":{source:"iana"},"audio/g726-32":{source:"iana"},"audio/g726-40":{source:"iana"},"audio/g728":{source:"iana"},"audio/g729":{source:"iana"},"audio/g7291":{source:"iana"},"audio/g729d":{source:"iana"},"audio/g729e":{source:"iana"},"audio/gsm":{source:"iana"},"audio/gsm-efr":{source:"iana"},"audio/gsm-hr-08":{source:"iana"},"audio/ilbc":{source:"iana"},"audio/ip-mr_v2.5":{source:"iana"},"audio/isac":{source:"apache"},"audio/l16":{source:"iana"},"audio/l20":{source:"iana"},"audio/l24":{source:"iana",compressible:!1},"audio/l8":{source:"iana"},"audio/lpc":{source:"iana"},"audio/melp":{source:"iana"},"audio/melp1200":{source:"iana"},"audio/melp2400":{source:"iana"},"audio/melp600":{source:"iana"},"audio/mhas":{source:"iana"},"audio/midi":{source:"apache",extensions:["mid","midi","kar","rmi"]},"audio/mobile-xmf":{source:"iana",extensions:["mxmf"]},"audio/mp3":{compressible:!1,extensions:["mp3"]},"audio/mp4":{source:"iana",compressible:!1,extensions:["m4a","mp4a"]},"audio/mp4a-latm":{source:"iana"},"audio/mpa":{source:"iana"},"audio/mpa-robust":{source:"iana"},"audio/mpeg":{source:"iana",compressible:!1,extensions:["mpga","mp2","mp2a","mp3","m2a","m3a"]},"audio/mpeg4-generic":{source:"iana"},"audio/musepack":{source:"apache"},"audio/ogg":{source:"iana",compressible:!1,extensions:["oga","ogg","spx","opus"]},"audio/opus":{source:"iana"},"audio/parityfec":{source:"iana"},"audio/pcma":{source:"iana"},"audio/pcma-wb":{source:"iana"},"audio/pcmu":{source:"iana"},"audio/pcmu-wb":{source:"iana"},"audio/prs.sid":{source:"iana"},"audio/qcelp":{source:"iana"},"audio/raptorfec":{source:"iana"},"audio/red":{source:"iana"},"audio/rtp-enc-aescm128":{source:"iana"},"audio/rtp-midi":{source:"iana"},"audio/rtploopback":{source:"iana"},"audio/rtx":{source:"iana"},"audio/s3m":{source:"apache",extensions:["s3m"]},"audio/scip":{source:"iana"},"audio/silk":{source:"apache",extensions:["sil"]},"audio/smv":{source:"iana"},"audio/smv-qcp":{source:"iana"},"audio/smv0":{source:"iana"},"audio/sofa":{source:"iana"},"audio/sp-midi":{source:"iana"},"audio/speex":{source:"iana"},"audio/t140c":{source:"iana"},"audio/t38":{source:"iana"},"audio/telephone-event":{source:"iana"},"audio/tetra_acelp":{source:"iana"},"audio/tetra_acelp_bb":{source:"iana"},"audio/tone":{source:"iana"},"audio/tsvcis":{source:"iana"},"audio/uemclip":{source:"iana"},"audio/ulpfec":{source:"iana"},"audio/usac":{source:"iana"},"audio/vdvi":{source:"iana"},"audio/vmr-wb":{source:"iana"},"audio/vnd.3gpp.iufp":{source:"iana"},"audio/vnd.4sb":{source:"iana"},"audio/vnd.audiokoz":{source:"iana"},"audio/vnd.celp":{source:"iana"},"audio/vnd.cisco.nse":{source:"iana"},"audio/vnd.cmles.radio-events":{source:"iana"},"audio/vnd.cns.anp1":{source:"iana"},"audio/vnd.cns.inf1":{source:"iana"},"audio/vnd.dece.audio":{source:"iana",extensions:["uva","uvva"]},"audio/vnd.digital-winds":{source:"iana",extensions:["eol"]},"audio/vnd.dlna.adts":{source:"iana"},"audio/vnd.dolby.heaac.1":{source:"iana"},"audio/vnd.dolby.heaac.2":{source:"iana"},"audio/vnd.dolby.mlp":{source:"iana"},"audio/vnd.dolby.mps":{source:"iana"},"audio/vnd.dolby.pl2":{source:"iana"},"audio/vnd.dolby.pl2x":{source:"iana"},"audio/vnd.dolby.pl2z":{source:"iana"},"audio/vnd.dolby.pulse.1":{source:"iana"},"audio/vnd.dra":{source:"iana",extensions:["dra"]},"audio/vnd.dts":{source:"iana",extensions:["dts"]},"audio/vnd.dts.hd":{source:"iana",extensions:["dtshd"]},"audio/vnd.dts.uhd":{source:"iana"},"audio/vnd.dvb.file":{source:"iana"},"audio/vnd.everad.plj":{source:"iana"},"audio/vnd.hns.audio":{source:"iana"},"audio/vnd.lucent.voice":{source:"iana",extensions:["lvp"]},"audio/vnd.ms-playready.media.pya":{source:"iana",extensions:["pya"]},"audio/vnd.nokia.mobile-xmf":{source:"iana"},"audio/vnd.nortel.vbk":{source:"iana"},"audio/vnd.nuera.ecelp4800":{source:"iana",extensions:["ecelp4800"]},"audio/vnd.nuera.ecelp7470":{source:"iana",extensions:["ecelp7470"]},"audio/vnd.nuera.ecelp9600":{source:"iana",extensions:["ecelp9600"]},"audio/vnd.octel.sbc":{source:"iana"},"audio/vnd.presonus.multitrack":{source:"iana"},"audio/vnd.qcelp":{source:"iana"},"audio/vnd.rhetorex.32kadpcm":{source:"iana"},"audio/vnd.rip":{source:"iana",extensions:["rip"]},"audio/vnd.rn-realaudio":{compressible:!1},"audio/vnd.sealedmedia.softseal.mpeg":{source:"iana"},"audio/vnd.vmx.cvsd":{source:"iana"},"audio/vnd.wave":{compressible:!1},"audio/vorbis":{source:"iana",compressible:!1},"audio/vorbis-config":{source:"iana"},"audio/wav":{compressible:!1,extensions:["wav"]},"audio/wave":{compressible:!1,extensions:["wav"]},"audio/webm":{source:"apache",compressible:!1,extensions:["weba"]},"audio/x-aac":{source:"apache",compressible:!1,extensions:["aac"]},"audio/x-aiff":{source:"apache",extensions:["aif","aiff","aifc"]},"audio/x-caf":{source:"apache",compressible:!1,extensions:["caf"]},"audio/x-flac":{source:"apache",extensions:["flac"]},"audio/x-m4a":{source:"nginx",extensions:["m4a"]},"audio/x-matroska":{source:"apache",extensions:["mka"]},"audio/x-mpegurl":{source:"apache",extensions:["m3u"]},"audio/x-ms-wax":{source:"apache",extensions:["wax"]},"audio/x-ms-wma":{source:"apache",extensions:["wma"]},"audio/x-pn-realaudio":{source:"apache",extensions:["ram","ra"]},"audio/x-pn-realaudio-plugin":{source:"apache",extensions:["rmp"]},"audio/x-realaudio":{source:"nginx",extensions:["ra"]},"audio/x-tta":{source:"apache"},"audio/x-wav":{source:"apache",extensions:["wav"]},"audio/xm":{source:"apache",extensions:["xm"]},"chemical/x-cdx":{source:"apache",extensions:["cdx"]},"chemical/x-cif":{source:"apache",extensions:["cif"]},"chemical/x-cmdf":{source:"apache",extensions:["cmdf"]},"chemical/x-cml":{source:"apache",extensions:["cml"]},"chemical/x-csml":{source:"apache",extensions:["csml"]},"chemical/x-pdb":{source:"apache"},"chemical/x-xyz":{source:"apache",extensions:["xyz"]},"font/collection":{source:"iana",extensions:["ttc"]},"font/otf":{source:"iana",compressible:!0,extensions:["otf"]},"font/sfnt":{source:"iana"},"font/ttf":{source:"iana",compressible:!0,extensions:["ttf"]},"font/woff":{source:"iana",extensions:["woff"]},"font/woff2":{source:"iana",extensions:["woff2"]},"image/aces":{source:"iana",extensions:["exr"]},"image/apng":{compressible:!1,extensions:["apng"]},"image/avci":{source:"iana",extensions:["avci"]},"image/avcs":{source:"iana",extensions:["avcs"]},"image/avif":{source:"iana",compressible:!1,extensions:["avif"]},"image/bmp":{source:"iana",compressible:!0,extensions:["bmp"]},"image/cgm":{source:"iana",extensions:["cgm"]},"image/dicom-rle":{source:"iana",extensions:["drle"]},"image/emf":{source:"iana",extensions:["emf"]},"image/fits":{source:"iana",extensions:["fits"]},"image/g3fax":{source:"iana",extensions:["g3"]},"image/gif":{source:"iana",compressible:!1,extensions:["gif"]},"image/heic":{source:"iana",extensions:["heic"]},"image/heic-sequence":{source:"iana",extensions:["heics"]},"image/heif":{source:"iana",extensions:["heif"]},"image/heif-sequence":{source:"iana",extensions:["heifs"]},"image/hej2k":{source:"iana",extensions:["hej2"]},"image/hsj2":{source:"iana",extensions:["hsj2"]},"image/ief":{source:"iana",extensions:["ief"]},"image/jls":{source:"iana",extensions:["jls"]},"image/jp2":{source:"iana",compressible:!1,extensions:["jp2","jpg2"]},"image/jpeg":{source:"iana",compressible:!1,extensions:["jpeg","jpg","jpe"]},"image/jph":{source:"iana",extensions:["jph"]},"image/jphc":{source:"iana",extensions:["jhc"]},"image/jpm":{source:"iana",compressible:!1,extensions:["jpm"]},"image/jpx":{source:"iana",compressible:!1,extensions:["jpx","jpf"]},"image/jxr":{source:"iana",extensions:["jxr"]},"image/jxra":{source:"iana",extensions:["jxra"]},"image/jxrs":{source:"iana",extensions:["jxrs"]},"image/jxs":{source:"iana",extensions:["jxs"]},"image/jxsc":{source:"iana",extensions:["jxsc"]},"image/jxsi":{source:"iana",extensions:["jxsi"]},"image/jxss":{source:"iana",extensions:["jxss"]},"image/ktx":{source:"iana",extensions:["ktx"]},"image/ktx2":{source:"iana",extensions:["ktx2"]},"image/naplps":{source:"iana"},"image/pjpeg":{compressible:!1},"image/png":{source:"iana",compressible:!1,extensions:["png"]},"image/prs.btif":{source:"iana",extensions:["btif"]},"image/prs.pti":{source:"iana",extensions:["pti"]},"image/pwg-raster":{source:"iana"},"image/sgi":{source:"apache",extensions:["sgi"]},"image/svg+xml":{source:"iana",compressible:!0,extensions:["svg","svgz"]},"image/t38":{source:"iana",extensions:["t38"]},"image/tiff":{source:"iana",compressible:!1,extensions:["tif","tiff"]},"image/tiff-fx":{source:"iana",extensions:["tfx"]},"image/vnd.adobe.photoshop":{source:"iana",compressible:!0,extensions:["psd"]},"image/vnd.airzip.accelerator.azv":{source:"iana",extensions:["azv"]},"image/vnd.cns.inf2":{source:"iana"},"image/vnd.dece.graphic":{source:"iana",extensions:["uvi","uvvi","uvg","uvvg"]},"image/vnd.djvu":{source:"iana",extensions:["djvu","djv"]},"image/vnd.dvb.subtitle":{source:"iana",extensions:["sub"]},"image/vnd.dwg":{source:"iana",extensions:["dwg"]},"image/vnd.dxf":{source:"iana",extensions:["dxf"]},"image/vnd.fastbidsheet":{source:"iana",extensions:["fbs"]},"image/vnd.fpx":{source:"iana",extensions:["fpx"]},"image/vnd.fst":{source:"iana",extensions:["fst"]},"image/vnd.fujixerox.edmics-mmr":{source:"iana",extensions:["mmr"]},"image/vnd.fujixerox.edmics-rlc":{source:"iana",extensions:["rlc"]},"image/vnd.globalgraphics.pgb":{source:"iana"},"image/vnd.microsoft.icon":{source:"iana",compressible:!0,extensions:["ico"]},"image/vnd.mix":{source:"iana"},"image/vnd.mozilla.apng":{source:"iana"},"image/vnd.ms-dds":{compressible:!0,extensions:["dds"]},"image/vnd.ms-modi":{source:"iana",extensions:["mdi"]},"image/vnd.ms-photo":{source:"apache",extensions:["wdp"]},"image/vnd.net-fpx":{source:"iana",extensions:["npx"]},"image/vnd.pco.b16":{source:"iana",extensions:["b16"]},"image/vnd.radiance":{source:"iana"},"image/vnd.sealed.png":{source:"iana"},"image/vnd.sealedmedia.softseal.gif":{source:"iana"},"image/vnd.sealedmedia.softseal.jpg":{source:"iana"},"image/vnd.svf":{source:"iana"},"image/vnd.tencent.tap":{source:"iana",extensions:["tap"]},"image/vnd.valve.source.texture":{source:"iana",extensions:["vtf"]},"image/vnd.wap.wbmp":{source:"iana",extensions:["wbmp"]},"image/vnd.xiff":{source:"iana",extensions:["xif"]},"image/vnd.zbrush.pcx":{source:"iana",extensions:["pcx"]},"image/webp":{source:"apache",extensions:["webp"]},"image/wmf":{source:"iana",extensions:["wmf"]},"image/x-3ds":{source:"apache",extensions:["3ds"]},"image/x-cmu-raster":{source:"apache",extensions:["ras"]},"image/x-cmx":{source:"apache",extensions:["cmx"]},"image/x-freehand":{source:"apache",extensions:["fh","fhc","fh4","fh5","fh7"]},"image/x-icon":{source:"apache",compressible:!0,extensions:["ico"]},"image/x-jng":{source:"nginx",extensions:["jng"]},"image/x-mrsid-image":{source:"apache",extensions:["sid"]},"image/x-ms-bmp":{source:"nginx",compressible:!0,extensions:["bmp"]},"image/x-pcx":{source:"apache",extensions:["pcx"]},"image/x-pict":{source:"apache",extensions:["pic","pct"]},"image/x-portable-anymap":{source:"apache",extensions:["pnm"]},"image/x-portable-bitmap":{source:"apache",extensions:["pbm"]},"image/x-portable-graymap":{source:"apache",extensions:["pgm"]},"image/x-portable-pixmap":{source:"apache",extensions:["ppm"]},"image/x-rgb":{source:"apache",extensions:["rgb"]},"image/x-tga":{source:"apache",extensions:["tga"]},"image/x-xbitmap":{source:"apache",extensions:["xbm"]},"image/x-xcf":{compressible:!1},"image/x-xpixmap":{source:"apache",extensions:["xpm"]},"image/x-xwindowdump":{source:"apache",extensions:["xwd"]},"message/cpim":{source:"iana"},"message/delivery-status":{source:"iana"},"message/disposition-notification":{source:"iana",extensions:["disposition-notification"]},"message/external-body":{source:"iana"},"message/feedback-report":{source:"iana"},"message/global":{source:"iana",extensions:["u8msg"]},"message/global-delivery-status":{source:"iana",extensions:["u8dsn"]},"message/global-disposition-notification":{source:"iana",extensions:["u8mdn"]},"message/global-headers":{source:"iana",extensions:["u8hdr"]},"message/http":{source:"iana",compressible:!1},"message/imdn+xml":{source:"iana",compressible:!0},"message/news":{source:"iana"},"message/partial":{source:"iana",compressible:!1},"message/rfc822":{source:"iana",compressible:!0,extensions:["eml","mime"]},"message/s-http":{source:"iana"},"message/sip":{source:"iana"},"message/sipfrag":{source:"iana"},"message/tracking-status":{source:"iana"},"message/vnd.si.simp":{source:"iana"},"message/vnd.wfa.wsc":{source:"iana",extensions:["wsc"]},"model/3mf":{source:"iana",extensions:["3mf"]},"model/e57":{source:"iana"},"model/gltf+json":{source:"iana",compressible:!0,extensions:["gltf"]},"model/gltf-binary":{source:"iana",compressible:!0,extensions:["glb"]},"model/iges":{source:"iana",compressible:!1,extensions:["igs","iges"]},"model/mesh":{source:"iana",compressible:!1,extensions:["msh","mesh","silo"]},"model/mtl":{source:"iana",extensions:["mtl"]},"model/obj":{source:"iana",extensions:["obj"]},"model/step":{source:"iana"},"model/step+xml":{source:"iana",compressible:!0,extensions:["stpx"]},"model/step+zip":{source:"iana",compressible:!1,extensions:["stpz"]},"model/step-xml+zip":{source:"iana",compressible:!1,extensions:["stpxz"]},"model/stl":{source:"iana",extensions:["stl"]},"model/vnd.collada+xml":{source:"iana",compressible:!0,extensions:["dae"]},"model/vnd.dwf":{source:"iana",extensions:["dwf"]},"model/vnd.flatland.3dml":{source:"iana"},"model/vnd.gdl":{source:"iana",extensions:["gdl"]},"model/vnd.gs-gdl":{source:"apache"},"model/vnd.gs.gdl":{source:"iana"},"model/vnd.gtw":{source:"iana",extensions:["gtw"]},"model/vnd.moml+xml":{source:"iana",compressible:!0},"model/vnd.mts":{source:"iana",extensions:["mts"]},"model/vnd.opengex":{source:"iana",extensions:["ogex"]},"model/vnd.parasolid.transmit.binary":{source:"iana",extensions:["x_b"]},"model/vnd.parasolid.transmit.text":{source:"iana",extensions:["x_t"]},"model/vnd.pytha.pyox":{source:"iana"},"model/vnd.rosette.annotated-data-model":{source:"iana"},"model/vnd.sap.vds":{source:"iana",extensions:["vds"]},"model/vnd.usdz+zip":{source:"iana",compressible:!1,extensions:["usdz"]},"model/vnd.valve.source.compiled-map":{source:"iana",extensions:["bsp"]},"model/vnd.vtu":{source:"iana",extensions:["vtu"]},"model/vrml":{source:"iana",compressible:!1,extensions:["wrl","vrml"]},"model/x3d+binary":{source:"apache",compressible:!1,extensions:["x3db","x3dbz"]},"model/x3d+fastinfoset":{source:"iana",extensions:["x3db"]},"model/x3d+vrml":{source:"apache",compressible:!1,extensions:["x3dv","x3dvz"]},"model/x3d+xml":{source:"iana",compressible:!0,extensions:["x3d","x3dz"]},"model/x3d-vrml":{source:"iana",extensions:["x3dv"]},"multipart/alternative":{source:"iana",compressible:!1},"multipart/appledouble":{source:"iana"},"multipart/byteranges":{source:"iana"},"multipart/digest":{source:"iana"},"multipart/encrypted":{source:"iana",compressible:!1},"multipart/form-data":{source:"iana",compressible:!1},"multipart/header-set":{source:"iana"},"multipart/mixed":{source:"iana"},"multipart/multilingual":{source:"iana"},"multipart/parallel":{source:"iana"},"multipart/related":{source:"iana",compressible:!1},"multipart/report":{source:"iana"},"multipart/signed":{source:"iana",compressible:!1},"multipart/vnd.bint.med-plus":{source:"iana"},"multipart/voice-message":{source:"iana"},"multipart/x-mixed-replace":{source:"iana"},"text/1d-interleaved-parityfec":{source:"iana"},"text/cache-manifest":{source:"iana",compressible:!0,extensions:["appcache","manifest"]},"text/calendar":{source:"iana",extensions:["ics","ifb"]},"text/calender":{compressible:!0},"text/cmd":{compressible:!0},"text/coffeescript":{extensions:["coffee","litcoffee"]},"text/cql":{source:"iana"},"text/cql-expression":{source:"iana"},"text/cql-identifier":{source:"iana"},"text/css":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["css"]},"text/csv":{source:"iana",compressible:!0,extensions:["csv"]},"text/csv-schema":{source:"iana"},"text/directory":{source:"iana"},"text/dns":{source:"iana"},"text/ecmascript":{source:"iana"},"text/encaprtp":{source:"iana"},"text/enriched":{source:"iana"},"text/fhirpath":{source:"iana"},"text/flexfec":{source:"iana"},"text/fwdred":{source:"iana"},"text/gff3":{source:"iana"},"text/grammar-ref-list":{source:"iana"},"text/html":{source:"iana",compressible:!0,extensions:["html","htm","shtml"]},"text/jade":{extensions:["jade"]},"text/javascript":{source:"iana",compressible:!0},"text/jcr-cnd":{source:"iana"},"text/jsx":{compressible:!0,extensions:["jsx"]},"text/less":{compressible:!0,extensions:["less"]},"text/markdown":{source:"iana",compressible:!0,extensions:["markdown","md"]},"text/mathml":{source:"nginx",extensions:["mml"]},"text/mdx":{compressible:!0,extensions:["mdx"]},"text/mizar":{source:"iana"},"text/n3":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["n3"]},"text/parameters":{source:"iana",charset:"UTF-8"},"text/parityfec":{source:"iana"},"text/plain":{source:"iana",compressible:!0,extensions:["txt","text","conf","def","list","log","in","ini"]},"text/provenance-notation":{source:"iana",charset:"UTF-8"},"text/prs.fallenstein.rst":{source:"iana"},"text/prs.lines.tag":{source:"iana",extensions:["dsc"]},"text/prs.prop.logic":{source:"iana"},"text/raptorfec":{source:"iana"},"text/red":{source:"iana"},"text/rfc822-headers":{source:"iana"},"text/richtext":{source:"iana",compressible:!0,extensions:["rtx"]},"text/rtf":{source:"iana",compressible:!0,extensions:["rtf"]},"text/rtp-enc-aescm128":{source:"iana"},"text/rtploopback":{source:"iana"},"text/rtx":{source:"iana"},"text/sgml":{source:"iana",extensions:["sgml","sgm"]},"text/shaclc":{source:"iana"},"text/shex":{source:"iana",extensions:["shex"]},"text/slim":{extensions:["slim","slm"]},"text/spdx":{source:"iana",extensions:["spdx"]},"text/strings":{source:"iana"},"text/stylus":{extensions:["stylus","styl"]},"text/t140":{source:"iana"},"text/tab-separated-values":{source:"iana",compressible:!0,extensions:["tsv"]},"text/troff":{source:"iana",extensions:["t","tr","roff","man","me","ms"]},"text/turtle":{source:"iana",charset:"UTF-8",extensions:["ttl"]},"text/ulpfec":{source:"iana"},"text/uri-list":{source:"iana",compressible:!0,extensions:["uri","uris","urls"]},"text/vcard":{source:"iana",compressible:!0,extensions:["vcard"]},"text/vnd.a":{source:"iana"},"text/vnd.abc":{source:"iana"},"text/vnd.ascii-art":{source:"iana"},"text/vnd.curl":{source:"iana",extensions:["curl"]},"text/vnd.curl.dcurl":{source:"apache",extensions:["dcurl"]},"text/vnd.curl.mcurl":{source:"apache",extensions:["mcurl"]},"text/vnd.curl.scurl":{source:"apache",extensions:["scurl"]},"text/vnd.debian.copyright":{source:"iana",charset:"UTF-8"},"text/vnd.dmclientscript":{source:"iana"},"text/vnd.dvb.subtitle":{source:"iana",extensions:["sub"]},"text/vnd.esmertec.theme-descriptor":{source:"iana",charset:"UTF-8"},"text/vnd.familysearch.gedcom":{source:"iana",extensions:["ged"]},"text/vnd.ficlab.flt":{source:"iana"},"text/vnd.fly":{source:"iana",extensions:["fly"]},"text/vnd.fmi.flexstor":{source:"iana",extensions:["flx"]},"text/vnd.gml":{source:"iana"},"text/vnd.graphviz":{source:"iana",extensions:["gv"]},"text/vnd.hans":{source:"iana"},"text/vnd.hgl":{source:"iana"},"text/vnd.in3d.3dml":{source:"iana",extensions:["3dml"]},"text/vnd.in3d.spot":{source:"iana",extensions:["spot"]},"text/vnd.iptc.newsml":{source:"iana"},"text/vnd.iptc.nitf":{source:"iana"},"text/vnd.latex-z":{source:"iana"},"text/vnd.motorola.reflex":{source:"iana"},"text/vnd.ms-mediapackage":{source:"iana"},"text/vnd.net2phone.commcenter.command":{source:"iana"},"text/vnd.radisys.msml-basic-layout":{source:"iana"},"text/vnd.senx.warpscript":{source:"iana"},"text/vnd.si.uricatalogue":{source:"iana"},"text/vnd.sosi":{source:"iana"},"text/vnd.sun.j2me.app-descriptor":{source:"iana",charset:"UTF-8",extensions:["jad"]},"text/vnd.trolltech.linguist":{source:"iana",charset:"UTF-8"},"text/vnd.wap.si":{source:"iana"},"text/vnd.wap.sl":{source:"iana"},"text/vnd.wap.wml":{source:"iana",extensions:["wml"]},"text/vnd.wap.wmlscript":{source:"iana",extensions:["wmls"]},"text/vtt":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["vtt"]},"text/x-asm":{source:"apache",extensions:["s","asm"]},"text/x-c":{source:"apache",extensions:["c","cc","cxx","cpp","h","hh","dic"]},"text/x-component":{source:"nginx",extensions:["htc"]},"text/x-fortran":{source:"apache",extensions:["f","for","f77","f90"]},"text/x-gwt-rpc":{compressible:!0},"text/x-handlebars-template":{extensions:["hbs"]},"text/x-java-source":{source:"apache",extensions:["java"]},"text/x-jquery-tmpl":{compressible:!0},"text/x-lua":{extensions:["lua"]},"text/x-markdown":{compressible:!0,extensions:["mkd"]},"text/x-nfo":{source:"apache",extensions:["nfo"]},"text/x-opml":{source:"apache",extensions:["opml"]},"text/x-org":{compressible:!0,extensions:["org"]},"text/x-pascal":{source:"apache",extensions:["p","pas"]},"text/x-processing":{compressible:!0,extensions:["pde"]},"text/x-sass":{extensions:["sass"]},"text/x-scss":{extensions:["scss"]},"text/x-setext":{source:"apache",extensions:["etx"]},"text/x-sfv":{source:"apache",extensions:["sfv"]},"text/x-suse-ymp":{compressible:!0,extensions:["ymp"]},"text/x-uuencode":{source:"apache",extensions:["uu"]},"text/x-vcalendar":{source:"apache",extensions:["vcs"]},"text/x-vcard":{source:"apache",extensions:["vcf"]},"text/xml":{source:"iana",compressible:!0,extensions:["xml"]},"text/xml-external-parsed-entity":{source:"iana"},"text/yaml":{compressible:!0,extensions:["yaml","yml"]},"video/1d-interleaved-parityfec":{source:"iana"},"video/3gpp":{source:"iana",extensions:["3gp","3gpp"]},"video/3gpp-tt":{source:"iana"},"video/3gpp2":{source:"iana",extensions:["3g2"]},"video/av1":{source:"iana"},"video/bmpeg":{source:"iana"},"video/bt656":{source:"iana"},"video/celb":{source:"iana"},"video/dv":{source:"iana"},"video/encaprtp":{source:"iana"},"video/ffv1":{source:"iana"},"video/flexfec":{source:"iana"},"video/h261":{source:"iana",extensions:["h261"]},"video/h263":{source:"iana",extensions:["h263"]},"video/h263-1998":{source:"iana"},"video/h263-2000":{source:"iana"},"video/h264":{source:"iana",extensions:["h264"]},"video/h264-rcdo":{source:"iana"},"video/h264-svc":{source:"iana"},"video/h265":{source:"iana"},"video/iso.segment":{source:"iana",extensions:["m4s"]},"video/jpeg":{source:"iana",extensions:["jpgv"]},"video/jpeg2000":{source:"iana"},"video/jpm":{source:"apache",extensions:["jpm","jpgm"]},"video/jxsv":{source:"iana"},"video/mj2":{source:"iana",extensions:["mj2","mjp2"]},"video/mp1s":{source:"iana"},"video/mp2p":{source:"iana"},"video/mp2t":{source:"iana",extensions:["ts"]},"video/mp4":{source:"iana",compressible:!1,extensions:["mp4","mp4v","mpg4"]},"video/mp4v-es":{source:"iana"},"video/mpeg":{source:"iana",compressible:!1,extensions:["mpeg","mpg","mpe","m1v","m2v"]},"video/mpeg4-generic":{source:"iana"},"video/mpv":{source:"iana"},"video/nv":{source:"iana"},"video/ogg":{source:"iana",compressible:!1,extensions:["ogv"]},"video/parityfec":{source:"iana"},"video/pointer":{source:"iana"},"video/quicktime":{source:"iana",compressible:!1,extensions:["qt","mov"]},"video/raptorfec":{source:"iana"},"video/raw":{source:"iana"},"video/rtp-enc-aescm128":{source:"iana"},"video/rtploopback":{source:"iana"},"video/rtx":{source:"iana"},"video/scip":{source:"iana"},"video/smpte291":{source:"iana"},"video/smpte292m":{source:"iana"},"video/ulpfec":{source:"iana"},"video/vc1":{source:"iana"},"video/vc2":{source:"iana"},"video/vnd.cctv":{source:"iana"},"video/vnd.dece.hd":{source:"iana",extensions:["uvh","uvvh"]},"video/vnd.dece.mobile":{source:"iana",extensions:["uvm","uvvm"]},"video/vnd.dece.mp4":{source:"iana"},"video/vnd.dece.pd":{source:"iana",extensions:["uvp","uvvp"]},"video/vnd.dece.sd":{source:"iana",extensions:["uvs","uvvs"]},"video/vnd.dece.video":{source:"iana",extensions:["uvv","uvvv"]},"video/vnd.directv.mpeg":{source:"iana"},"video/vnd.directv.mpeg-tts":{source:"iana"},"video/vnd.dlna.mpeg-tts":{source:"iana"},"video/vnd.dvb.file":{source:"iana",extensions:["dvb"]},"video/vnd.fvt":{source:"iana",extensions:["fvt"]},"video/vnd.hns.video":{source:"iana"},"video/vnd.iptvforum.1dparityfec-1010":{source:"iana"},"video/vnd.iptvforum.1dparityfec-2005":{source:"iana"},"video/vnd.iptvforum.2dparityfec-1010":{source:"iana"},"video/vnd.iptvforum.2dparityfec-2005":{source:"iana"},"video/vnd.iptvforum.ttsavc":{source:"iana"},"video/vnd.iptvforum.ttsmpeg2":{source:"iana"},"video/vnd.motorola.video":{source:"iana"},"video/vnd.motorola.videop":{source:"iana"},"video/vnd.mpegurl":{source:"iana",extensions:["mxu","m4u"]},"video/vnd.ms-playready.media.pyv":{source:"iana",extensions:["pyv"]},"video/vnd.nokia.interleaved-multimedia":{source:"iana"},"video/vnd.nokia.mp4vr":{source:"iana"},"video/vnd.nokia.videovoip":{source:"iana"},"video/vnd.objectvideo":{source:"iana"},"video/vnd.radgamettools.bink":{source:"iana"},"video/vnd.radgamettools.smacker":{source:"iana"},"video/vnd.sealed.mpeg1":{source:"iana"},"video/vnd.sealed.mpeg4":{source:"iana"},"video/vnd.sealed.swf":{source:"iana"},"video/vnd.sealedmedia.softseal.mov":{source:"iana"},"video/vnd.uvvu.mp4":{source:"iana",extensions:["uvu","uvvu"]},"video/vnd.vivo":{source:"iana",extensions:["viv"]},"video/vnd.youtube.yt":{source:"iana"},"video/vp8":{source:"iana"},"video/vp9":{source:"iana"},"video/webm":{source:"apache",compressible:!1,extensions:["webm"]},"video/x-f4v":{source:"apache",extensions:["f4v"]},"video/x-fli":{source:"apache",extensions:["fli"]},"video/x-flv":{source:"apache",compressible:!1,extensions:["flv"]},"video/x-m4v":{source:"apache",extensions:["m4v"]},"video/x-matroska":{source:"apache",compressible:!1,extensions:["mkv","mk3d","mks"]},"video/x-mng":{source:"apache",extensions:["mng"]},"video/x-ms-asf":{source:"apache",extensions:["asf","asx"]},"video/x-ms-vob":{source:"apache",extensions:["vob"]},"video/x-ms-wm":{source:"apache",extensions:["wm"]},"video/x-ms-wmv":{source:"apache",compressible:!1,extensions:["wmv"]},"video/x-ms-wmx":{source:"apache",extensions:["wmx"]},"video/x-ms-wvx":{source:"apache",extensions:["wvx"]},"video/x-msvideo":{source:"apache",extensions:["avi"]},"video/x-sgi-movie":{source:"apache",extensions:["movie"]},"video/x-smv":{source:"apache",extensions:["smv"]},"x-conference/x-cooltalk":{source:"apache",extensions:["ice"]},"x-shader/x-fragment":{compressible:!0},"x-shader/x-vertex":{compressible:!0}};
4
4
  /*!
5
5
  * mime-types
6
6
  * Copyright(c) 2014 Jonathan Ong
7
7
  * Copyright(c) 2015 Douglas Christopher Wilson
8
8
  * MIT Licensed
9
9
  */
10
- !function(n){var t,i,s,a=or,o=e.extname,r=/^\s*([^;\s]*)(?:;|\s|$)/,c=/^text\//i;function l(e){if(!e||"string"!=typeof e)return!1;var n=r.exec(e),t=n&&a[n[1].toLowerCase()];return t&&t.charset?t.charset:!(!n||!c.test(n[1]))&&"UTF-8"}n.charset=l,n.charsets={lookup:l},n.contentType=function(e){if(!e||"string"!=typeof e)return!1;var t=-1===e.indexOf("/")?n.lookup(e):e;if(!t)return!1;if(-1===t.indexOf("charset")){var i=n.charset(t);i&&(t+="; charset="+i.toLowerCase())}return t},n.extension=function(e){if(!e||"string"!=typeof e)return!1;var t=r.exec(e),i=t&&n.extensions[t[1].toLowerCase()];if(!i||!i.length)return!1;return i[0]},n.extensions=Object.create(null),n.lookup=function(e){if(!e||"string"!=typeof e)return!1;var t=o("x."+e).toLowerCase().substr(1);if(!t)return!1;return n.types[t]||!1},n.types=Object.create(null),t=n.extensions,i=n.types,s=["nginx","apache",void 0,"iana"],Object.keys(a).forEach((function(e){var n=a[e],o=n.extensions;if(o&&o.length){t[e]=o;for(var r=0;r<o.length;r++){var c=o[r];if(i[c]){var l=s.indexOf(a[i[c]].source),p=s.indexOf(n.source);if("application/octet-stream"!==i[c]&&(l>p||l===p&&"application/"===i[c].substr(0,12)))continue}i[c]=e}}}))}({});"function"==typeof SuppressedError&&SuppressedError;var rr,cr="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};class lr extends Error{constructor(e="The global `jsPsych` variable is no longer available in jsPsych v7."){super(`${e} Please follow the migration guide at https://www.jspsych.org/7.0/support/migration-v7/ to update your experiment.`),this.name="MigrationError"}}window.jsPsych={get init(){throw new lr("`jsPsych.init()` was replaced by `initJsPsych()` in jsPsych v7.")},get data(){throw new lr},get randomization(){throw new lr},get turk(){throw new lr},get pluginAPI(){throw new lr},get ALL_KEYS(){throw new lr('jsPsych.ALL_KEYS was replaced by the "ALL_KEYS" string in jsPsych v7.')},get NO_KEYS(){throw new lr('jsPsych.NO_KEYS was replaced by the "NO_KEYS" string in jsPsych v7.')}},function(e){e[e.BOOL=0]="BOOL",e[e.STRING=1]="STRING",e[e.INT=2]="INT",e[e.FLOAT=3]="FLOAT",e[e.FUNCTION=4]="FUNCTION",e[e.KEY=5]="KEY",e[e.KEYS=6]="KEYS",e[e.SELECT=7]="SELECT",e[e.HTML_STRING=8]="HTML_STRING",e[e.IMAGE=9]="IMAGE",e[e.AUDIO=10]="AUDIO",e[e.VIDEO=11]="VIDEO",e[e.OBJECT=12]="OBJECT",e[e.COMPLEX=13]="COMPLEX",e[e.TIMELINE=14]="TIMELINE"}(rr||(rr={})),rr.OBJECT,rr.FUNCTION,rr.FUNCTION,rr.FUNCTION,rr.INT,rr.STRING,rr.COMPLEX,rr.AUDIO,rr.IMAGE,rr.VIDEO;var pr={exports:{}};!function(e,n,t){function i(e){var n=this,t=function(){var e=4022871197,n=function(n){n=String(n);for(var t=0;t<n.length;t++){var i=.02519603282416938*(e+=n.charCodeAt(t));i-=e=i>>>0,e=(i*=e)>>>0,e+=4294967296*(i-=e)}return 2.3283064365386963e-10*(e>>>0)};return n}();n.next=function(){var e=2091639*n.s0+2.3283064365386963e-10*n.c;return n.s0=n.s1,n.s1=n.s2,n.s2=e-(n.c=0|e)},n.c=1,n.s0=t(" "),n.s1=t(" "),n.s2=t(" "),n.s0-=t(e),n.s0<0&&(n.s0+=1),n.s1-=t(e),n.s1<0&&(n.s1+=1),n.s2-=t(e),n.s2<0&&(n.s2+=1),t=null}function s(e,n){return n.c=e.c,n.s0=e.s0,n.s1=e.s1,n.s2=e.s2,n}function a(e,n){var t=new i(e),a=n&&n.state,o=t.next;return o.int32=function(){return 4294967296*t.next()|0},o.double=function(){return o()+11102230246251565e-32*(2097152*o()|0)},o.quick=o,a&&("object"==typeof a&&s(a,t),o.state=function(){return s(t,{})}),o}n&&n.exports?n.exports=a:t&&t.amd?t((function(){return a})):this.alea=a}(0,pr,!1);var ur=pr.exports,dr={exports:{}};!function(e,n,t){function i(e){var n=this,t="";n.x=0,n.y=0,n.z=0,n.w=0,n.next=function(){var e=n.x^n.x<<11;return n.x=n.y,n.y=n.z,n.z=n.w,n.w^=n.w>>>19^e^e>>>8},e===(0|e)?n.x=e:t+=e;for(var i=0;i<t.length+64;i++)n.x^=0|t.charCodeAt(i),n.next()}function s(e,n){return n.x=e.x,n.y=e.y,n.z=e.z,n.w=e.w,n}function a(e,n){var t=new i(e),a=n&&n.state,o=function(){return(t.next()>>>0)/4294967296};return o.double=function(){do{var e=((t.next()>>>11)+(t.next()>>>0)/4294967296)/(1<<21)}while(0===e);return e},o.int32=t.next,o.quick=o,a&&("object"==typeof a&&s(a,t),o.state=function(){return s(t,{})}),o}n&&n.exports?n.exports=a:t&&t.amd?t((function(){return a})):this.xor128=a}(0,dr,!1);var gr=dr.exports,mr={exports:{}};!function(e,n,t){function i(e){var n=this,t="";n.next=function(){var e=n.x^n.x>>>2;return n.x=n.y,n.y=n.z,n.z=n.w,n.w=n.v,(n.d=n.d+362437|0)+(n.v=n.v^n.v<<4^e^e<<1)|0},n.x=0,n.y=0,n.z=0,n.w=0,n.v=0,e===(0|e)?n.x=e:t+=e;for(var i=0;i<t.length+64;i++)n.x^=0|t.charCodeAt(i),i==t.length&&(n.d=n.x<<10^n.x>>>4),n.next()}function s(e,n){return n.x=e.x,n.y=e.y,n.z=e.z,n.w=e.w,n.v=e.v,n.d=e.d,n}function a(e,n){var t=new i(e),a=n&&n.state,o=function(){return(t.next()>>>0)/4294967296};return o.double=function(){do{var e=((t.next()>>>11)+(t.next()>>>0)/4294967296)/(1<<21)}while(0===e);return e},o.int32=t.next,o.quick=o,a&&("object"==typeof a&&s(a,t),o.state=function(){return s(t,{})}),o}n&&n.exports?n.exports=a:t&&t.amd?t((function(){return a})):this.xorwow=a}(0,mr,!1);var vr=mr.exports,hr={exports:{}};!function(e,n,t){function i(e){var n=this;n.next=function(){var e,t,i=n.x,s=n.i;return e=i[s],t=(e^=e>>>7)^e<<24,t^=(e=i[s+1&7])^e>>>10,t^=(e=i[s+3&7])^e>>>3,t^=(e=i[s+4&7])^e<<7,e=i[s+7&7],t^=(e^=e<<13)^e<<9,i[s]=t,n.i=s+1&7,t},function(e,n){var t,i=[];if(n===(0|n))i[0]=n;else for(n=""+n,t=0;t<n.length;++t)i[7&t]=i[7&t]<<15^n.charCodeAt(t)+i[t+1&7]<<13;for(;i.length<8;)i.push(0);for(t=0;t<8&&0===i[t];++t);for(8==t?i[7]=-1:i[t],e.x=i,e.i=0,t=256;t>0;--t)e.next()}(n,e)}function s(e,n){return n.x=e.x.slice(),n.i=e.i,n}function a(e,n){null==e&&(e=+new Date);var t=new i(e),a=n&&n.state,o=function(){return(t.next()>>>0)/4294967296};return o.double=function(){do{var e=((t.next()>>>11)+(t.next()>>>0)/4294967296)/(1<<21)}while(0===e);return e},o.int32=t.next,o.quick=o,a&&(a.x&&s(a,t),o.state=function(){return s(t,{})}),o}n&&n.exports?n.exports=a:t&&t.amd?t((function(){return a})):this.xorshift7=a}(0,hr,!1);var fr=hr.exports,xr={exports:{}};!function(e,n,t){function i(e){var n=this;n.next=function(){var e,t,i=n.w,s=n.X,a=n.i;return n.w=i=i+1640531527|0,t=s[a+34&127],e=s[a=a+1&127],t^=t<<13,e^=e<<17,t^=t>>>15,e^=e>>>12,t=s[a]=t^e,n.i=a,t+(i^i>>>16)|0},function(e,n){var t,i,s,a,o,r=[],c=128;for(n===(0|n)?(i=n,n=null):(n+="\0",i=0,c=Math.max(c,n.length)),s=0,a=-32;a<c;++a)n&&(i^=n.charCodeAt((a+32)%n.length)),0===a&&(o=i),i^=i<<10,i^=i>>>15,i^=i<<4,i^=i>>>13,a>=0&&(o=o+1640531527|0,s=0==(t=r[127&a]^=i+o)?s+1:0);for(s>=128&&(r[127&(n&&n.length||0)]=-1),s=127,a=512;a>0;--a)i=r[s+34&127],t=r[s=s+1&127],i^=i<<13,t^=t<<17,i^=i>>>15,t^=t>>>12,r[s]=i^t;e.w=o,e.X=r,e.i=s}(n,e)}function s(e,n){return n.i=e.i,n.w=e.w,n.X=e.X.slice(),n}function a(e,n){null==e&&(e=+new Date);var t=new i(e),a=n&&n.state,o=function(){return(t.next()>>>0)/4294967296};return o.double=function(){do{var e=((t.next()>>>11)+(t.next()>>>0)/4294967296)/(1<<21)}while(0===e);return e},o.int32=t.next,o.quick=o,a&&(a.X&&s(a,t),o.state=function(){return s(t,{})}),o}n&&n.exports?n.exports=a:t&&t.amd?t((function(){return a})):this.xor4096=a}(0,xr,!1);var br=xr.exports,yr={exports:{}};!function(e,n,t){function i(e){var n=this,t="";n.next=function(){var e=n.b,t=n.c,i=n.d,s=n.a;return e=e<<25^e>>>7^t,t=t-i|0,i=i<<24^i>>>8^s,s=s-e|0,n.b=e=e<<20^e>>>12^t,n.c=t=t-i|0,n.d=i<<16^t>>>16^s,n.a=s-e|0},n.a=0,n.b=0,n.c=-1640531527,n.d=1367130551,e===Math.floor(e)?(n.a=e/4294967296|0,n.b=0|e):t+=e;for(var i=0;i<t.length+20;i++)n.b^=0|t.charCodeAt(i),n.next()}function s(e,n){return n.a=e.a,n.b=e.b,n.c=e.c,n.d=e.d,n}function a(e,n){var t=new i(e),a=n&&n.state,o=function(){return(t.next()>>>0)/4294967296};return o.double=function(){do{var e=((t.next()>>>11)+(t.next()>>>0)/4294967296)/(1<<21)}while(0===e);return e},o.int32=t.next,o.quick=o,a&&("object"==typeof a&&s(a,t),o.state=function(){return s(t,{})}),o}n&&n.exports?n.exports=a:t&&t.amd?t((function(){return a})):this.tychei=a}(0,yr,!1);var wr=yr.exports,kr={exports:{}};!function(e){!function(n,t,i){var s,a=256,o="random",r=i.pow(a,6),c=i.pow(2,52),l=2*c,p=a-1;function u(e,p,u){var f=[],x=v(m((p=1==p?{entropy:!0}:p||{}).entropy?[e,h(t)]:null==e?function(){try{var e;return s&&(e=s.randomBytes)?e=e(a):(e=new Uint8Array(a),(n.crypto||n.msCrypto).getRandomValues(e)),h(e)}catch(e){var i=n.navigator,o=i&&i.plugins;return[+new Date,n,o,n.screen,h(t)]}}():e,3),f),b=new d(f),y=function(){for(var e=b.g(6),n=r,t=0;e<c;)e=(e+t)*a,n*=a,t=b.g(1);for(;e>=l;)e/=2,n/=2,t>>>=1;return(e+t)/n};return y.int32=function(){return 0|b.g(4)},y.quick=function(){return b.g(4)/4294967296},y.double=y,v(h(b.S),t),(p.pass||u||function(e,n,t,s){return s&&(s.S&&g(s,b),e.state=function(){return g(b,{})}),t?(i[o]=e,n):e})(y,x,"global"in p?p.global:this==i,p.state)}function d(e){var n,t=e.length,i=this,s=0,o=i.i=i.j=0,r=i.S=[];for(t||(e=[t++]);s<a;)r[s]=s++;for(s=0;s<a;s++)r[s]=r[o=p&o+e[s%t]+(n=r[s])],r[o]=n;(i.g=function(e){for(var n,t=0,s=i.i,o=i.j,r=i.S;e--;)n=r[s=p&s+1],t=t*a+r[p&(r[s]=r[o=p&o+n])+(r[o]=n)];return i.i=s,i.j=o,t})(a)}function g(e,n){return n.i=e.i,n.j=e.j,n.S=e.S.slice(),n}function m(e,n){var t,i=[],s=typeof e;if(n&&"object"==s)for(t in e)try{i.push(m(e[t],n-1))}catch(e){}return i.length?i:"string"==s?e:e+"\0"}function v(e,n){for(var t,i=e+"",s=0;s<i.length;)n[p&s]=p&(t^=19*n[p&s])+i.charCodeAt(s++);return h(n)}function h(e){return String.fromCharCode.apply(0,e)}if(v(i.random(),t),e.exports){e.exports=u;try{s=require("crypto")}catch(e){}}else i["seed"+o]=u}("undefined"!=typeof self?self:cr,[],Math)}(kr);var Sr=ur,jr=gr,_r=vr,Cr=fr,Ar=br,Er=wr,Rr=kr.exports;Rr.alea=Sr,Rr.xor128=jr,Rr.xorwow=_r,Rr.xorshift7=Cr,Rr.xor4096=Ar,Rr.tychei=Er;"undefined"!=typeof window&&window.hasOwnProperty("webkitAudioContext")&&!window.hasOwnProperty("AudioContext")&&(window.AudioContext=webkitAudioContext),rr.BOOL,rr.TIMELINE,rr.STRING,rr.STRING,rr.STRING,rr.HTML_STRING,rr.BOOL,rr.BOOL,rr.HTML_STRING,rr.BOOL,rr.INT,rr.FUNCTION,rr.FUNCTION;const Lr=[["D.svg","A.svg","L.svg","S.svg","R.svg","L.svg","A.svg","S.svg","L.svg","S.svg","R.svg","L.svg","D.svg","R.svg","D.svg","A.svg","R.svg","D.svg","R.svg","A.svg","D.svg","S.svg","L.svg","S.svg","R.svg","D.svg","A.svg","S.svg","L.svg","R.svg","L.svg","A.svg","R.svg","A.svg","D.svg","A.svg","S.svg","L.svg","D.svg","S.svg","A.svg","R.svg","S.svg","L.svg","A.svg","D.svg","L.svg","S.svg","R.svg","D.svg"],["A.svg","L.svg","R.svg","D.svg","R.svg","A.svg","S.svg","R.svg","D.svg","A.svg","S.svg","A.svg","D.svg","R.svg","D.svg","L.svg","R.svg","L.svg","S.svg","L.svg","D.svg","S.svg","L.svg","A.svg","S.svg","R.svg","S.svg","A.svg","D.svg","A.svg","R.svg","L.svg","R.svg","S.svg","L.svg","D.svg","A.svg","S.svg","R.svg","L.svg","D.svg","A.svg","L.svg","D.svg","R.svg","S.svg","D.svg","L.svg","S.svg","A.svg"],["D.svg","L.svg","S.svg","A.svg","D.svg","R.svg","L.svg","A.svg","R.svg","D.svg","L.svg","S.svg","L.svg","D.svg","A.svg","L.svg","D.svg","S.svg","D.svg","L.svg","S.svg","R.svg","A.svg","R.svg","S.svg","A.svg","R.svg","A.svg","S.svg","R.svg","L.svg","S.svg","D.svg","S.svg","R.svg","L.svg","A.svg","L.svg","R.svg","D.svg","A.svg","D.svg","S.svg","L.svg","A.svg","R.svg","D.svg","R.svg","S.svg","A.svg"],["S.svg","L.svg","R.svg","D.svg","R.svg","A.svg","S.svg","A.svg","R.svg","L.svg","D.svg","R.svg","D.svg","S.svg","L.svg","R.svg","A.svg","D.svg","S.svg","D.svg","R.svg","D.svg","A.svg","L.svg","R.svg","S.svg","D.svg","R.svg","L.svg","A.svg","S.svg","L.svg","S.svg","R.svg","A.svg","L.svg","A.svg","D.svg","A.svg","L.svg","R.svg","S.svg","A.svg","D.svg","L.svg","A.svg","S.svg","L.svg","S.svg","D.svg"],["L.svg","A.svg","D.svg","S.svg","D.svg","A.svg","D.svg","R.svg","L.svg","R.svg","D.svg","S.svg","A.svg","R.svg","L.svg","D.svg","R.svg","S.svg","R.svg","A.svg","S.svg","R.svg","L.svg","A.svg","D.svg","S.svg","L.svg","A.svg","S.svg","L.svg","D.svg","S.svg","A.svg","R.svg","L.svg","D.svg","S.svg","L.svg","R.svg","A.svg","S.svg","D.svg","R.svg","L.svg","D.svg","A.svg","L.svg","S.svg","A.svg","R.svg"],["D.svg","L.svg","S.svg","R.svg","D.svg","A.svg","R.svg","L.svg","S.svg","A.svg","R.svg","S.svg","R.svg","D.svg","S.svg","R.svg","L.svg","D.svg","R.svg","D.svg","A.svg","L.svg","S.svg","A.svg","D.svg","L.svg","D.svg","A.svg","S.svg","A.svg","L.svg","S.svg","R.svg","D.svg","L.svg","A.svg","R.svg","S.svg","L.svg","D.svg","A.svg","L.svg","A.svg","S.svg","D.svg","R.svg","S.svg","R.svg","A.svg","L.svg"],["D.svg","R.svg","A.svg","R.svg","L.svg","S.svg","A.svg","D.svg","L.svg","S.svg","L.svg","A.svg","L.svg","S.svg","A.svg","R.svg","S.svg","L.svg","D.svg","L.svg","A.svg","R.svg","S.svg","R.svg","D.svg","S.svg","A.svg","R.svg","L.svg","R.svg","S.svg","A.svg","D.svg","S.svg","R.svg","D.svg","S.svg","L.svg","D.svg","A.svg","D.svg","L.svg","A.svg","L.svg","D.svg","R.svg","D.svg","S.svg","A.svg","R.svg"],["L.svg","A.svg","R.svg","D.svg","R.svg","L.svg","A.svg","D.svg","L.svg","S.svg","A.svg","S.svg","D.svg","S.svg","A.svg","S.svg","D.svg","L.svg","S.svg","D.svg","R.svg","A.svg","L.svg","A.svg","D.svg","R.svg","L.svg","R.svg","D.svg","A.svg","L.svg","S.svg","D.svg","R.svg","L.svg","A.svg","R.svg","L.svg","S.svg","R.svg","S.svg","L.svg","A.svg","S.svg","D.svg","R.svg","A.svg","R.svg","D.svg","S.svg"],["S.svg","A.svg","R.svg","D.svg","L.svg","S.svg","D.svg","R.svg","S.svg","A.svg","L.svg","R.svg","S.svg","L.svg","A.svg","D.svg","S.svg","A.svg","R.svg","S.svg","D.svg","A.svg","D.svg","S.svg","R.svg","A.svg","L.svg","D.svg","L.svg","R.svg","S.svg","D.svg","L.svg","D.svg","S.svg","L.svg","R.svg","A.svg","S.svg","D.svg","L.svg","A.svg","R.svg","A.svg","L.svg","D.svg","A.svg","R.svg","L.svg","R.svg"],["R.svg","A.svg","S.svg","L.svg","S.svg","D.svg","R.svg","A.svg","S.svg","D.svg","A.svg","L.svg","D.svg","R.svg","L.svg","R.svg","A.svg","S.svg","R.svg","L.svg","D.svg","S.svg","L.svg","S.svg","R.svg","L.svg","R.svg","D.svg","A.svg","D.svg","S.svg","L.svg","R.svg","L.svg","D.svg","R.svg","L.svg","A.svg","D.svg","S.svg","A.svg","S.svg","D.svg","A.svg","L.svg","D.svg","A.svg","S.svg","R.svg","A.svg"],["L.svg","R.svg","D.svg","A.svg","S.svg","D.svg","L.svg","A.svg","R.svg","S.svg","A.svg","S.svg","L.svg","S.svg","D.svg","A.svg","S.svg","D.svg","S.svg","R.svg","D.svg","R.svg","A.svg","L.svg","R.svg","L.svg","D.svg","L.svg","A.svg","S.svg","A.svg","D.svg","R.svg","S.svg","A.svg","R.svg","L.svg","A.svg","R.svg","D.svg","L.svg","R.svg","L.svg","A.svg","S.svg","D.svg","R.svg","S.svg","D.svg","L.svg"],["D.svg","A.svg","L.svg","S.svg","R.svg","S.svg","A.svg","R.svg","S.svg","R.svg","L.svg","S.svg","D.svg","A.svg","S.svg","D.svg","R.svg","L.svg","D.svg","S.svg","R.svg","A.svg","L.svg","D.svg","R.svg","L.svg","A.svg","S.svg","A.svg","R.svg","L.svg","D.svg","A.svg","L.svg","S.svg","D.svg","R.svg","A.svg","L.svg","D.svg","S.svg","R.svg","L.svg","A.svg","D.svg","R.svg","L.svg","D.svg","A.svg","S.svg"],["R.svg","A.svg","L.svg","D.svg","A.svg","S.svg","A.svg","L.svg","S.svg","A.svg","D.svg","L.svg","A.svg","S.svg","R.svg","D.svg","S.svg","D.svg","R.svg","L.svg","R.svg","A.svg","R.svg","D.svg","A.svg","R.svg","L.svg","R.svg","S.svg","A.svg","S.svg","L.svg","D.svg","S.svg","D.svg","A.svg","D.svg","L.svg","R.svg","D.svg","R.svg","S.svg","L.svg","D.svg","S.svg","L.svg","A.svg","R.svg","L.svg","S.svg"],["R.svg","L.svg","A.svg","R.svg","L.svg","D.svg","S.svg","D.svg","A.svg","R.svg","D.svg","A.svg","S.svg","L.svg","R.svg","S.svg","A.svg","L.svg","S.svg","D.svg","S.svg","R.svg","L.svg","D.svg","S.svg","L.svg","D.svg","R.svg","L.svg","A.svg","D.svg","S.svg","D.svg","R.svg","A.svg","D.svg","R.svg","L.svg","A.svg","S.svg","A.svg","R.svg","A.svg","S.svg","L.svg","A.svg","S.svg","R.svg","L.svg","D.svg"],["L.svg","R.svg","A.svg","S.svg","L.svg","D.svg","S.svg","D.svg","R.svg","A.svg","D.svg","L.svg","R.svg","D.svg","A.svg","S.svg","R.svg","A.svg","D.svg","L.svg","A.svg","R.svg","S.svg","A.svg","L.svg","A.svg","D.svg","L.svg","S.svg","D.svg","S.svg","L.svg","R.svg","S.svg","R.svg","L.svg","R.svg","A.svg","L.svg","S.svg","A.svg","R.svg","D.svg","L.svg","S.svg","D.svg","A.svg","S.svg","R.svg","D.svg"],["A.svg","D.svg","S.svg","L.svg","D.svg","S.svg","R.svg","D.svg","A.svg","S.svg","R.svg","S.svg","A.svg","R.svg","S.svg","D.svg","L.svg","A.svg","R.svg","L.svg","D.svg","A.svg","D.svg","S.svg","L.svg","R.svg","D.svg","L.svg","S.svg","A.svg","S.svg","L.svg","R.svg","A.svg","R.svg","L.svg","R.svg","A.svg","D.svg","S.svg","L.svg","R.svg","S.svg","D.svg","L.svg","D.svg","A.svg","R.svg","L.svg","A.svg"],["S.svg","R.svg","S.svg","L.svg","D.svg","A.svg","L.svg","A.svg","R.svg","S.svg","R.svg","A.svg","L.svg","A.svg","R.svg","L.svg","S.svg","L.svg","A.svg","D.svg","A.svg","L.svg","S.svg","D.svg","A.svg","S.svg","D.svg","R.svg","D.svg","S.svg","R.svg","D.svg","R.svg","L.svg","D.svg","A.svg","R.svg","D.svg","L.svg","R.svg","A.svg","L.svg","D.svg","R.svg","A.svg","S.svg","L.svg","S.svg","D.svg","S.svg"],["L.svg","R.svg","S.svg","R.svg","A.svg","D.svg","S.svg","R.svg","L.svg","S.svg","D.svg","L.svg","A.svg","D.svg","L.svg","S.svg","D.svg","L.svg","D.svg","R.svg","A.svg","S.svg","D.svg","R.svg","S.svg","R.svg","A.svg","D.svg","R.svg","L.svg","D.svg","L.svg","S.svg","A.svg","R.svg","L.svg","D.svg","A.svg","L.svg","A.svg","S.svg","R.svg","A.svg","D.svg","S.svg","A.svg","L.svg","S.svg","A.svg","R.svg"],["S.svg","A.svg","L.svg","R.svg","A.svg","S.svg","D.svg","L.svg","A.svg","S.svg","R.svg","L.svg","S.svg","L.svg","R.svg","A.svg","S.svg","R.svg","L.svg","R.svg","A.svg","S.svg","D.svg","R.svg","L.svg","D.svg","A.svg","S.svg","D.svg","L.svg","R.svg","D.svg","S.svg","L.svg","D.svg","S.svg","D.svg","R.svg","A.svg","D.svg","L.svg","S.svg","R.svg","D.svg","A.svg","D.svg","L.svg","A.svg","R.svg","A.svg"],["A.svg","S.svg","R.svg","D.svg","L.svg","S.svg","R.svg","L.svg","A.svg","D.svg","L.svg","D.svg","S.svg","R.svg","A.svg","R.svg","S.svg","A.svg","R.svg","L.svg","R.svg","A.svg","D.svg","S.svg","L.svg","A.svg","D.svg","R.svg","L.svg","A.svg","D.svg","R.svg","S.svg","L.svg","D.svg","S.svg","R.svg","A.svg","S.svg","D.svg","L.svg","S.svg","D.svg","A.svg","L.svg","R.svg","D.svg","S.svg","L.svg","A.svg"]],Mr=[["two.svg","nine.svg","two.svg","seven.svg","two.svg","six.svg","seven.svg","four.svg","six.svg","four.svg","seven.svg","two.svg","four.svg","six.svg","seven.svg","four.svg","two.svg","six.svg","two.svg","nine.svg","two.svg","four.svg","two.svg","seven.svg","six.svg","nine.svg","seven.svg","nine.svg","four.svg","six.svg","nine.svg","six.svg","seven.svg","nine.svg","four.svg","seven.svg","two.svg","four.svg","six.svg","nine.svg","two.svg","nine.svg","six.svg","four.svg","seven.svg","nine.svg","six.svg","nine.svg","four.svg","seven.svg"],["six.svg","four.svg","seven.svg","two.svg","nine.svg","six.svg","four.svg","seven.svg","two.svg","four.svg","two.svg","seven.svg","two.svg","four.svg","seven.svg","two.svg","nine.svg","four.svg","nine.svg","six.svg","nine.svg","four.svg","nine.svg","six.svg","two.svg","six.svg","seven.svg","six.svg","two.svg","nine.svg","seven.svg","nine.svg","four.svg","seven.svg","six.svg","seven.svg","four.svg","two.svg","nine.svg","seven.svg","six.svg","four.svg","two.svg","nine.svg","seven.svg","six.svg","two.svg","four.svg","six.svg","nine.svg"],["six.svg","four.svg","six.svg","seven.svg","nine.svg","four.svg","two.svg","six.svg","nine.svg","two.svg","four.svg","seven.svg","four.svg","nine.svg","two.svg","six.svg","four.svg","seven.svg","two.svg","seven.svg","nine.svg","six.svg","two.svg","seven.svg","four.svg","two.svg","nine.svg","four.svg","nine.svg","six.svg","seven.svg","two.svg","four.svg","six.svg","seven.svg","six.svg","two.svg","nine.svg","six.svg","four.svg","nine.svg","six.svg","two.svg","seven.svg","four.svg","nine.svg","seven.svg","two.svg","nine.svg","seven.svg"],["four.svg","nine.svg","two.svg","four.svg","seven.svg","nine.svg","seven.svg","two.svg","six.svg","four.svg","seven.svg","four.svg","six.svg","nine.svg","six.svg","two.svg","six.svg","seven.svg","nine.svg","seven.svg","six.svg","two.svg","nine.svg","two.svg","four.svg","nine.svg","seven.svg","nine.svg","four.svg","two.svg","seven.svg","nine.svg","six.svg","four.svg","two.svg","seven.svg","two.svg","six.svg","nine.svg","seven.svg","four.svg","six.svg","seven.svg","nine.svg","six.svg","four.svg","six.svg","two.svg","four.svg","two.svg"],["six.svg","four.svg","seven.svg","six.svg","two.svg","six.svg","seven.svg","six.svg","two.svg","six.svg","seven.svg","nine.svg","four.svg","two.svg","nine.svg","four.svg","nine.svg","two.svg","nine.svg","seven.svg","nine.svg","four.svg","two.svg","four.svg","seven.svg","nine.svg","two.svg","seven.svg","two.svg","six.svg","two.svg","seven.svg","four.svg","six.svg","nine.svg","seven.svg","four.svg","nine.svg","six.svg","nine.svg","four.svg","six.svg","two.svg","seven.svg","six.svg","two.svg","nine.svg","four.svg","seven.svg","four.svg"],["four.svg","nine.svg","seven.svg","two.svg","six.svg","four.svg","nine.svg","two.svg","six.svg","seven.svg","nine.svg","six.svg","four.svg","seven.svg","four.svg","nine.svg","two.svg","six.svg","nine.svg","six.svg","seven.svg","two.svg","seven.svg","four.svg","nine.svg","two.svg","seven.svg","four.svg","six.svg","nine.svg","four.svg","seven.svg","two.svg","six.svg","seven.svg","four.svg","nine.svg","seven.svg","two.svg","six.svg","two.svg","four.svg","six.svg","nine.svg","two.svg","six.svg","four.svg","two.svg","nine.svg","seven.svg"],["six.svg","two.svg","four.svg","six.svg","seven.svg","nine.svg","four.svg","nine.svg","two.svg","seven.svg","two.svg","nine.svg","seven.svg","nine.svg","six.svg","seven.svg","six.svg","two.svg","nine.svg","four.svg","six.svg","four.svg","two.svg","seven.svg","four.svg","two.svg","nine.svg","six.svg","seven.svg","six.svg","nine.svg","seven.svg","four.svg","two.svg","seven.svg","nine.svg","six.svg","four.svg","six.svg","two.svg","four.svg","two.svg","seven.svg","six.svg","nine.svg","four.svg","seven.svg","two.svg","four.svg","nine.svg"],["nine.svg","two.svg","four.svg","seven.svg","nine.svg","two.svg","six.svg","four.svg","six.svg","seven.svg","two.svg","seven.svg","nine.svg","four.svg","two.svg","nine.svg","four.svg","seven.svg","nine.svg","two.svg","four.svg","nine.svg","seven.svg","six.svg","seven.svg","four.svg","six.svg","four.svg","seven.svg","six.svg","nine.svg","six.svg","four.svg","nine.svg","six.svg","two.svg","four.svg","two.svg","nine.svg","two.svg","six.svg","four.svg","two.svg","six.svg","seven.svg","six.svg","nine.svg","seven.svg","two.svg","seven.svg"],["six.svg","seven.svg","two.svg","four.svg","seven.svg","four.svg","nine.svg","six.svg","two.svg","six.svg","four.svg","two.svg","six.svg","seven.svg","nine.svg","two.svg","six.svg","nine.svg","seven.svg","two.svg","six.svg","four.svg","seven.svg","six.svg","seven.svg","nine.svg","seven.svg","four.svg","two.svg","nine.svg","four.svg","nine.svg","six.svg","seven.svg","nine.svg","two.svg","four.svg","nine.svg","six.svg","two.svg","nine.svg","seven.svg","two.svg","four.svg","six.svg","four.svg","two.svg","four.svg","nine.svg","seven.svg"],["six.svg","nine.svg","six.svg","seven.svg","six.svg","four.svg","two.svg","nine.svg","four.svg","seven.svg","two.svg","six.svg","seven.svg","two.svg","nine.svg","six.svg","seven.svg","four.svg","nine.svg","two.svg","nine.svg","four.svg","two.svg","seven.svg","six.svg","four.svg","six.svg","nine.svg","six.svg","four.svg","seven.svg","two.svg","nine.svg","two.svg","seven.svg","nine.svg","two.svg","four.svg","two.svg","seven.svg","six.svg","four.svg","two.svg","seven.svg","nine.svg","four.svg","six.svg","nine.svg","seven.svg","four.svg"],["nine.svg","four.svg","nine.svg","six.svg","two.svg","seven.svg","four.svg","six.svg","nine.svg","four.svg","seven.svg","two.svg","six.svg","two.svg","seven.svg","six.svg","two.svg","four.svg","two.svg","six.svg","four.svg","nine.svg","two.svg","four.svg","six.svg","four.svg","seven.svg","two.svg","seven.svg","four.svg","nine.svg","four.svg","six.svg","two.svg","four.svg","nine.svg","six.svg","seven.svg","nine.svg","two.svg","seven.svg","nine.svg","seven.svg","six.svg","nine.svg","seven.svg","two.svg","six.svg","seven.svg","nine.svg"],["four.svg","two.svg","six.svg","seven.svg","two.svg","six.svg","two.svg","four.svg","nine.svg","seven.svg","two.svg","four.svg","seven.svg","nine.svg","six.svg","two.svg","nine.svg","six.svg","seven.svg","nine.svg","six.svg","nine.svg","two.svg","four.svg","seven.svg","four.svg","six.svg","seven.svg","nine.svg","two.svg","four.svg","seven.svg","four.svg","six.svg","nine.svg","seven.svg","four.svg","six.svg","two.svg","seven.svg","nine.svg","six.svg","seven.svg","nine.svg","four.svg","two.svg","nine.svg","four.svg","six.svg","two.svg"],["four.svg","nine.svg","six.svg","four.svg","seven.svg","two.svg","nine.svg","six.svg","seven.svg","two.svg","nine.svg","six.svg","seven.svg","six.svg","two.svg","nine.svg","six.svg","seven.svg","two.svg","four.svg","six.svg","seven.svg","two.svg","four.svg","nine.svg","seven.svg","four.svg","two.svg","four.svg","seven.svg","nine.svg","six.svg","four.svg","nine.svg","six.svg","nine.svg","two.svg","four.svg","two.svg","six.svg","two.svg","nine.svg","six.svg","two.svg","seven.svg","four.svg","seven.svg","nine.svg","seven.svg","four.svg"],["seven.svg","four.svg","two.svg","nine.svg","six.svg","seven.svg","four.svg","six.svg","seven.svg","nine.svg","four.svg","seven.svg","nine.svg","two.svg","seven.svg","four.svg","seven.svg","two.svg","six.svg","seven.svg","six.svg","four.svg","six.svg","nine.svg","two.svg","seven.svg","two.svg","nine.svg","four.svg","six.svg","nine.svg","six.svg","four.svg","two.svg","nine.svg","two.svg","four.svg","six.svg","two.svg","nine.svg","seven.svg","two.svg","nine.svg","four.svg","six.svg","seven.svg","six.svg","four.svg","nine.svg","two.svg"],["six.svg","four.svg","two.svg","six.svg","seven.svg","four.svg","nine.svg","six.svg","two.svg","seven.svg","nine.svg","two.svg","four.svg","seven.svg","four.svg","two.svg","seven.svg","two.svg","nine.svg","six.svg","seven.svg","four.svg","nine.svg","four.svg","two.svg","four.svg","six.svg","nine.svg","two.svg","nine.svg","six.svg","two.svg","seven.svg","six.svg","nine.svg","seven.svg","nine.svg","two.svg","four.svg","six.svg","seven.svg","four.svg","nine.svg","seven.svg","four.svg","six.svg","two.svg","seven.svg","six.svg","nine.svg"],["six.svg","nine.svg","seven.svg","two.svg","four.svg","nine.svg","two.svg","seven.svg","nine.svg","seven.svg","two.svg","seven.svg","six.svg","four.svg","nine.svg","six.svg","four.svg","two.svg","seven.svg","nine.svg","six.svg","two.svg","four.svg","nine.svg","two.svg","four.svg","six.svg","seven.svg","two.svg","six.svg","seven.svg","four.svg","six.svg","four.svg","nine.svg","two.svg","four.svg","two.svg","nine.svg","seven.svg","six.svg","nine.svg","seven.svg","two.svg","four.svg","seven.svg","nine.svg","six.svg","four.svg","six.svg"],["seven.svg","four.svg","nine.svg","two.svg","six.svg","two.svg","seven.svg","two.svg","six.svg","four.svg","six.svg","nine.svg","two.svg","nine.svg","seven.svg","six.svg","nine.svg","seven.svg","four.svg","seven.svg","nine.svg","six.svg","nine.svg","four.svg","two.svg","nine.svg","two.svg","four.svg","six.svg","nine.svg","four.svg","seven.svg","six.svg","two.svg","seven.svg","two.svg","four.svg","seven.svg","nine.svg","seven.svg","six.svg","four.svg","seven.svg","six.svg","two.svg","four.svg","nine.svg","two.svg","four.svg","six.svg"],["six.svg","seven.svg","four.svg","two.svg","nine.svg","four.svg","two.svg","four.svg","six.svg","nine.svg","two.svg","four.svg","six.svg","nine.svg","four.svg","six.svg","four.svg","two.svg","seven.svg","six.svg","seven.svg","nine.svg","two.svg","six.svg","nine.svg","seven.svg","six.svg","seven.svg","two.svg","nine.svg","four.svg","six.svg","seven.svg","four.svg","two.svg","four.svg","seven.svg","nine.svg","seven.svg","six.svg","two.svg","nine.svg","six.svg","two.svg","seven.svg","nine.svg","two.svg","four.svg","nine.svg","seven.svg"],["four.svg","two.svg","nine.svg","four.svg","nine.svg","six.svg","seven.svg","two.svg","six.svg","nine.svg","two.svg","six.svg","two.svg","seven.svg","six.svg","seven.svg","two.svg","six.svg","two.svg","seven.svg","nine.svg","seven.svg","four.svg","six.svg","four.svg","nine.svg","seven.svg","four.svg","nine.svg","six.svg","two.svg","four.svg","seven.svg","nine.svg","two.svg","six.svg","four.svg","nine.svg","two.svg","seven.svg","four.svg","seven.svg","nine.svg","six.svg","seven.svg","four.svg","two.svg","four.svg","nine.svg","six.svg"],["six.svg","seven.svg","four.svg","nine.svg","two.svg","seven.svg","two.svg","six.svg","two.svg","seven.svg","two.svg","nine.svg","six.svg","four.svg","nine.svg","four.svg","seven.svg","two.svg","four.svg","nine.svg","six.svg","two.svg","seven.svg","nine.svg","six.svg","two.svg","nine.svg","four.svg","nine.svg","six.svg","seven.svg","six.svg","four.svg","seven.svg","nine.svg","seven.svg","four.svg","two.svg","six.svg","nine.svg","four.svg","two.svg","six.svg","two.svg","seven.svg","four.svg","seven.svg","nine.svg","four.svg","six.svg"]];function Ir(e,n=!1){return null==e?n:"true"===e.trim().toLowerCase()}function Dr(e){return"string"==typeof e?Ir(e):"boolean"==typeof e&&e}const Or=(e,n)=>{let t;var i,s=("string"!=typeof(i=e)&&(i=String(i)),i.toLocaleLowerCase());return t=["true","false"].includes(s)?Ir(s):!(function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:13,i=Number(e);if(null!=e){if(Number.isNaN(i)){var s={k:0,tk:0,pk:0,preschool:0,prekindergarten:0,transitionalkindergarten:0,kindergarten:0,infanttoddler:0,infant:0,toddler:0,first:1,firstgrade:1,second:2,secondgrade:2,third:3,thirdgrade:3,fourth:4,fourthgrade:4,fifth:5,fifthgrade:5,sixth:6,sixthgrade:6,seventh:7,seventhgrade:7,eighth:8,eighthgrade:8,ninth:9,ninthgrade:9,tenth:10,tenthgrade:10,eleventh:11,eleventhgrade:11,twelfth:12,twelfthgrade:12,freshman:9,sophomore:10,junior:11,senior:12,postgraduate:13,university:13,graduate:13,master:13,doctorate:13,masters:13}[e.toLowerCase().replace(/\s/g,"").replace(/-/g,"")];if(void 0===s)return;return s<n?n:s>t?t:s}return i<n?n:i>t?t:i}}(n)>=6),t};const Tr=new Map;function Pr(e){const n=new URL(e,document.baseURI).href;if(Tr.has(n))return Tr.get(n);const t=new Promise(((e,t)=>{const i=document.createElement("script");i.src=n,i.dataset.dynamic="true",i.onload=()=>{e()},i.onerror=e=>{Tr.delete(n),t(e)},document.head.appendChild(i)}));return Tr.set(n,t),t}async function Fr(e){const n=e.getElementsByTagName("script");for(let e=0;e<n.length;e++){const t=n[e];t.src&&await Pr(t.src)}}function Nr(e){const n=e.getElementsByTagName("script");for(let e=0;e<n.length;e++){const t=document.createElement("script");t.text=n[e].text,document.head.appendChild(t).parentNode.removeChild(t)}}function qr(e){Object.keys(e).forEach((n=>{window[n]=e[n]}))}function zr(e){Object.keys(e).forEach((e=>{const n=Object.getOwnPropertyDescriptor(window,e);n&&n.configurable?delete window[e]:console.log(`Cannot remove ${e} from window; it may be non-configurable.`)}))}function Vr(e){document.querySelectorAll("script[data-dynamic]").forEach((n=>{e&&!e(n)||n.parentNode.removeChild(n)}))}function Br(e){e.style.position="",e.style.top="",e.style.left="",e.style.width="",e.style.height=""}function Ur(e){Object.keys(e).forEach((n=>{const t=CSS.escape?CSS.escape(n):n.replace(/([^\w-])/g,"\\$1"),i=document.querySelector(`[data-alt-id="${t}"]`);i&&(i.textContent=e[n])}))}var Hr='<!DOCTYPE html>\n<html lang="en">\n<head>\n <meta charset="UTF-8">\n <meta name="viewport" content="width=device-width, initial-scale=1.0">\n <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet">\n <style>\n body {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100vh;\n margin: 0;\n background-color: #ffffff; /* White background */\n color: #000000; /* Black text */\n }\n\n .loading-container {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n padding: 20px;\n border-radius: 10px;\n background: rgba(0, 0, 0, 0.05); /* Slight gray tint to differentiate from the white background */\n box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); /* Soft shadow for depth */\n }\n\n .loading-spinner {\n border: 8px solid rgba(0, 0, 0, 0.1); /* Lighter border for the spinner */\n border-top: 8px solid #0d6efd; /* Blue color for active part of the spinner */\n border-radius: 50%;\n width: 80px;\n height: 80px;\n animation: spin 1s linear infinite;\n margin-bottom: 20px;\n }\n\n h2 {\n font-weight: 400;\n letter-spacing: 1px;\n }\n\n @keyframes spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n }\n </style>\n</head>\n<body>\n <div class="loading-container">\n <div class="loading-spinner"></div>\n <h2>Loading...</h2>\n </div>\n</body>\n</html>\n';function Wr(){const e=document.getElementById("deviceList"),n=document.getElementById("findDevice-collapsableCards");e.innerHTML="";const t=document.createElement("option");t.value="",t.text="",e.add(t);const i=Object.keys(deviceConfigs);if(i.forEach((n=>{const t=document.createElement("option");t.value=n,t.text=n.charAt(0).toUpperCase()+n.slice(1),e.add(t)})),1===i.length){$r(deviceConfigs[i[0]]),n&&(n.style.display="none",Yr())}else n&&(n.style.display="block")}function $r(e){console.log("You selected a "+e.deviceName),screenHeight=e.screenHeight,screenWidth=e.screenWidth,webcamHeight=e.webcamHeight,screenSizeCalibrated=e.screenSizeCalibrated,webcamCentered=e.webcamCentered,HeightWebcamEntered=e.HeightWebcamEntered,heightInput_textbox.value=webcamHeight,heightInput_textbox.disabled=HeightWebcamEntered,e.hasOwnProperty("normalizedFocalLength")&&(normalizedFocalLength=e.normalizedFocalLength),checkAllComplete()}function Yr(){var e=document.querySelectorAll(".card-title"),n=1;e.forEach((function(e){"none"!==e.parentElement.parentElement.style.display&&null!==e.parentElement.parentElement.offsetParent&&(e.textContent=e.textContent.replace(/\(\d+\)/,"("+n+")"),n++)}))}var Kr,Xr,Gr=Object.freeze({__proto__:null,collapseCamera:function(e=!0){document.querySelectorAll('[id*="-cameracollapsableCards"]').forEach((n=>{n.style.display=e?"none":""})),Yr()},collapseCards:function(e=!0){document.querySelectorAll('[id*="-collapsableCards"]').forEach((n=>{n.style.display="Toggle"===e?"none"===n.style.display?"":"none":e?"none":""})),Yr()},handleDevice:$r,inputParticipantName:function(e){var n=document.getElementById("idInput");n.value=e,n.disabled=!0},updateCardNumbers:Yr,updateDeviceConfigFromJSON:async function(e){try{const n=await fetch(e),t=await n.json();deviceConfigs=t,Wr()}catch(e){console.error("Error fetching or parsing JSON:",e)}},updateDropdownOptions:Wr});function Jr(){const e=window.navigator,n=window.screen,t={userAgent:e.userAgent,platform:e.platform,language:e.language,deviceMemory:e.deviceMemory||"Not available",hardwareConcurrency:e.hardwareConcurrency,maxTouchPoints:e.maxTouchPoints,cookiesEnabled:e.cookieEnabled,webDriver:e.webdriver,onlineStatus:e.onLine,gpu:"Not available"},i={width:n.width,height:n.height,colorDepth:n.colorDepth,pixelDepth:n.pixelDepth,retinaDisplay:window.matchMedia("(-webkit-min-device-pixel-ratio: 2)").matches,landscapeOrientation:window.matchMedia("(orientation: landscape)").matches},s=document.createElement("canvas"),a=s.getContext("webgl")||s.getContext("experimental-webgl");if(a){const e=a.getExtension("WEBGL_debug_renderer_info");t.gpu=e?a.getParameter(e.UNMASKED_RENDERER_WEBGL):"Not available"}return{device:t,screen:i}}var Qr,Zr=document.documentElement,ec={};function nc(){Zr.requestFullscreen?Zr.requestFullscreen():Zr.webkitRequestFullscreen?Zr.webkitRequestFullscreen():Zr.msRequestFullscreen&&Zr.msRequestFullscreen()}var tc=4;function ic(e){const n="video"===e?["video/webm;codecs=vp9,opus","video/webm;codecs=vp8,opus","video/webm","video/mp4"]:["audio/webm;codecs=opus","audio/webm","audio/ogg","audio/mp4"];for(const e of n)if(MediaRecorder.isTypeSupported(e))return e;return null}async function sc(e=!1,n=!1){try{const t={};(e||n)&&(t.video={width:{ideal:1280,min:640},height:{ideal:720,min:480},frameRate:{ideal:30,min:15}}),t.audio=!0;const i=await navigator.mediaDevices.getUserMedia(t);return Qr=i,ec={bEyeTracking:e,storeVideo:n},(e||n)&&inputVideo&&(inputVideo.srcObject=i,inputVideo.muted=!0,inputVideo.play(),inputVideo.addEventListener("loadedmetadata",(function(){Kr=inputVideo.videoWidth,Xr=inputVideo.videoHeight,headCanvas&&(headCanvas.width=Kr,headCanvas.height=Xr)}))),{success:!0}}catch(e){throw console.error("Error accessing media devices:",e),e}}function ac(e){const n={one:"1",two:"2",three:"3",four:"4",five:"5",six:"6",seven:"7",eight:"8",nine:"9"},t={...e};return Array.isArray(t.stimulus)&&(t.stimulus=t.stimulus.reduce(((e,t)=>e+(n[t.toLowerCase()]||t)),"")),{stimImages:t.stimulus,...t}}async function oc(){let e,n;mediaChunks=[],mediaRecorder&&"recording"===mediaRecorder.state&&mediaRecorder.stop();try{if(ec.storeVideo){if(e=Qr,n=ic("video"),!n)throw new Error("No supported video MIME type found for MediaRecorder")}else{const t=Qr.getAudioTracks();if(!(t.length>0))return void console.error("No audio tracks available for recording");if(e=new MediaStream(t),n=ic("audio"),!n)throw new Error("No supported audio MIME type found for MediaRecorder")}}catch(e){return void console.error("Error setting up recording stream:",e)}console.log("MIME Type:",n),mediaRecorder=new MediaRecorder(e,{mimeType:n,videoBitsPerSecond:25e5,audioBitsPerSecond:128e3}),mediaRecorder.ondataavailable=e=>{console.log("Media chunk size:",e.data.size),e.data.size>0&&mediaChunks.push(e.data)},mediaRecorder.onstop=async()=>{console.log("Recording stopped, blob created")},mediaRecorder.start()}async function rc(){try{await new Promise((e=>{mediaRecorder&&"recording"===mediaRecorder.state?(mediaRecorder.onstop=e,mediaRecorder.stop()):e()}))}catch(e){console.error("Error stopping media recorder:",e)}}async function cc({filename:e,deviceConfig:n,config:t,metadata:i}){let s;console.log("media chunks",mediaChunks),s=n.storeVideo?"video/webm":"audio/webm";const a=new Blob(mediaChunks,{type:s});if(!(a.size>0))return console.error("No media data recorded."),null;console.log("Media recorded successfully. Size:",a.size,"bytes");try{return await t.firekit.uploadFileOrBlobToStorage({filename:e,assessmentPid:store.session.get("id"),fileOrBlob:a,customMetadata:ac(i)})}catch(e){return console.error("Error uploading media:",e),null}}function lc(){Qr&&(Qr.getTracks().forEach((e=>{e.stop()})),Qr=null);const e=document.getElementsByClassName("inputVideo")[0];if(e&&e.srcObject){e.srcObject.getTracks().forEach((e=>{e.stop()})),e.srcObject=null}window.mediaRecorder&&"inactive"!==window.mediaRecorder.state&&(window.mediaRecorder.stop(),window.mediaRecorder=null),window.micStream&&window.micStream.getTracks&&(window.micStream.getTracks().forEach((e=>e.stop())),window.micStream=null)}var pc=Object.freeze({__proto__:null,get countdown(){return tc},giveAccess:sc,openFullscreen:nc,get orig_img_height(){return Xr},get orig_img_width(){return Kr},saveRecordings:cc,startRecording:oc,stopMediaStreams:lc,stopRecording:rc,updateCountdown:function e(n){0===--tc?(document.getElementById("instruction").style.display="none","function"==typeof n&&(n(),tc=4)):(document.getElementById("instruction").innerHTML="<h1>"+tc+"</h1>",setTimeout((function(){e(n)}),1e3))}});async function uc(e){const n=Hr,t=document.createElement("div");t.innerHTML='\x3c!-- Scripts --\x3e\n<script data-dynamic src="https://cdn.jsdelivr.net/npm/remote-calibrator@latest"><\/script>\n<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">\n\n\x3c!-- CSS --\x3e\n<style>\n\nbody {\n margin: 0;\n}\n\n .column {\n float: left;\n padding: 10px;\n}\n\n.left, .right {\n width: 33%;\n}\n\n.middle {\n width: 33%;\n}\n\n.row:after {\n content: "";\n display: table;\n clear: both;\n}\n\n.container {\n width: 75%; /* Set the width for the container */\n margin: auto; /* Center the container if needed */\n}\n\n #audio-visualization {\n width: 100%; /* Both elements fill the container */\n height: 100px; /* Set a fixed height for the canvas */\n\n /* display: block; Ensure they are not inline */\n}\n\n#audio-visualization-audioonly {\n width:100%;\n height: 100px; /* Set a fixed height for the canvas */\n}\n\n</style>\n\n\x3c!-- HTML --\x3e\n<body id="body">\n\n <div class="px-4 py-5 my-5 text-center" style="display: block;">\n <h1 class="display-5 fw-bold" id="title" data-alt-id="configureDevice">Configure Device</h1>\n <h5 data-alt-id="configureDevice_text1"> To get started, we will need to set up a few things. </h5>\n <h5 data-alt-id="configureDevice_text2"> If you’re not sure what to do, ask an adult to help you with this part. </h5>\n <img src="https://storage.googleapis.com/roav-ran/shared/assets/legacy/parent-help-icon.png" width="10%">\n <div class="col-lg-6 mx-auto" style="margin-top: -8vh;">\n <p class="lead mt-3 mb-5"></p>\n\n \x3c!-- Preconfigured Devices --\x3e\n <div class="d-grid gap-2 justify-content-center">\n\n <div class="row gap-2" id="findDevice-collapsableCards" style="display: none;">\n <div class="col">\n <div\n class="card"\n style="width: 42rem; height: 11rem"\n id="findDevice"\n >\n <div class="card-body">\n <h5 class="card-title" data-alt-id="chooseDevice">(1) Choose Device</h5>\n <p class="card-text" data-alt-id="chooseDevice_text1">\n Please select the device you are taking the test on.\n </p>\n <select id="deviceList" onchange="selectDevice()"></select>\n </div>\n </div>\n </div>\n </div>\n\n\n\n \x3c!-- ROW 1: Full Screen | Get Screen Size --\x3e\n <div class="row gap-2" id="screenSize-collapsableCards">\n <div class="col" >\n <div class="card" style="width:20rem; height:11rem" id="card-fullscreen">\n <div class="card-body">\n <h5 class="card-title" data-alt-id="fullScreen">(1) Full Screen</h5>\n <p class="card-text" data-alt-id="fullScreen_text1">Do not exit out of \'Full Screen\' mode for the remainder of this study.</p>\n <button type="button" class="btn btn-primary" id="fullscreen" onclick="openFullscreen()" data-alt-id="fullScreen_text2">Make Fullscreen</button>\n </div>\n </div>\n </div>\n <div class="col">\n <div class="card" style="width:20rem;height:11rem" id="card-screen-size">\n <div class="card-body">\n <h5 class="card-title" data-alt-id="screenSize">(2) Screen Size</h5>\n <p class="card-text" data-alt-id="screenSize_text1">We need this to calibrate your device\'s screen size.</p>\n <button type="button" class="btn btn-primary" id="measureScreen" onclick="getScreenSize()" data-alt-id="screenSize_text2">Measure Screen Size</button>\n </div>\n </div>\n </div>\n </div>\n\n\n \x3c!-- ROW 2: Webcam Centered | Height of Webcam --\x3e\n <div class="row gap-2" id="webcam-collapsableCards">\n <div class="col">\n <div class="card" style="width: 20rem;" id="card-webcam-center">\n <div class="card-body">\n <h5 class="card-title" data-alt-id="webcamCentered">(3) Is your webcam centred?</h5>\n <h6 class="card-subtitle mb-2 text-muted" data-alt-id="webcamCentered_text1">It is expected that for laptops the webcam is already centred.</h6>\n <p class="card-text" data-alt-id="webcamCentered_text2">If you are using a separate webcam, please centre this in the middle (as seen in the image below).</p>\n <img src="https://eyetrackingdata.blob.core.windows.net/public/Images/webcamCentered.jpg" alt="center webcam" width="100%" style="padding-bottom:10px;">\n <button type="button" class="btn btn-primary" id="measureDistanceFromScreeen" onclick="getwebcamCentered()" data-alt-id="webcamCentered_text3">My Webcam is Centered</button>\n </div>\n </div>\n </div>\n <div class="col">\n <div class="card" style="width: 20rem;" id="card-height-camera">\n <div class="card-body">\n <h5 class="card-title" data-alt-id="webcamHeight">(4) Height of Webcam</h5>\n <p class="card-text" data-alt-id="webcamHeight_text1">This is the distance between the centre of your webcam\'s lens and the top bezel of your screen (image provided for example)</p>\n <img src="https://eyetrackingdata.blob.core.windows.net/public/Images/webcamPosition.PNG" alt="center webcam" width="100%" style="padding-bottom:10px;">\n <label for="heightInput" data-alt-id="webcamHeight_text2">Height in cm:</label>\n <input type="number" id="heightInput" name="heightInput" required\n minlength="1" maxlength="8" size="10" value="2">\n </br></br>\n <button type="button" class="btn btn-primary" id="getHeightbutton" onclick="getHeightWebcam()" data-alt-id="webcamHeight_text3">Done</button>\n </div>\n </div>\n </div>\n </div>\n\n\n <div class="row gap-2" id="access-cameracollapsableCards">\n <div class="col">\n <div class="card" style="width: 42rem;height:11rem" id="card-camera">\n <div class="card-body">\n <h5 class="card-title" id="camera-access-title" data-alt-id="cameraAccess">(5) Camera Access</h5>\n <p class="card-text" id="camera-access-text" data-alt-id="cameraAccess_text1">Please provide access to your camera to record your eye movements.</p>\n <button type="button" class="btn btn-primary" id="start-camera" data-alt-id="cameraAccess_text2">Provide Access</button>\n </div>\n </div>\n </div>\n </div>\n \n <div class="row gap-2" id="access-audiocollapsableCards" style="display: none;">\n <div class="col">\n <div class="card" style="width: 42rem;height:11rem" id="card-audio">\n <div class="card-body">\n <h5 class="card-title" data-alt-id="audioAccess">(3) Audio Access</h5>\n <p class="card-text" data-alt-id="audioAccess_text1">Please provide access to your microphone to record audio.</p>\n <button type="button" class="btn btn-primary" id="start-audio" data-alt-id="audioAccess_text2">Provide Access</button>\n </div>\n </div>\n </div>\n </div>\n\n\n \x3c!-- ROW 4: Check Recording --\x3e\n <div class="row gap-2" style="padding-top:1rem;" id="check-cameracollapsableCards">\n <div class="col">\n <div class="card" style="width:42rem" id="card-final-check">\n <div class="card-body">\n <h5 class="card-title" data-alt-id="finalChecks">(6) Final Checks</h5>\n <p id="finalChecks_text" data-alt-id="finalChecks_text1">Please ensure your video is well-lit and centered. Speak at a normal volume to check the audio level below.</p>\n\n <div id="video-quality-checks">\n <div class="column left">\n <img src="https://eyetrackingdata.blob.core.windows.net/public/Images/badlighting.jpg" alt="center webcam" width="100%" style="padding-bottom:10px;">\n <b data-alt-id="badLighting">Bad Lighting</b> &#10060;</br>\n <span data-alt-id="badLightingDescription">(Make sure eyes and face are clearly visible)</span>\n </div>\n <div class="column middle">\n <img src="https://eyetrackingdata.blob.core.windows.net/public/Images/glassesReflection.jpg" alt="center webcam" width="100%" style="padding-bottom:10px;">\n <b data-alt-id="glassesOn">Glasses On</b> &#10060;</br>\n <span data-alt-id="removeGlasses">(Remove Glasses)</span>\n </div>\n <div class="column middle">\n <img src="https://eyetrackingdata.blob.core.windows.net/public/Images/goodPosition.jpg" alt="center webcam" width="100%" style="padding-bottom:10px;">\n <b data-alt-id="idealView">Ideal View</b> &#10004 &#65039;</br>\n <span data-alt-id="idealViewDescription">(Face close to camera and centered with clear view of eyes)</span>\n </div>\n </div>\n <div class="container">\n <video autoplay="true" id="videoElement" style="width:100%; background-color: darkgray;"></video>\n <canvas id="audio-visualization" width="640" height="100"></canvas>\n </div>\n\n <button type="button" class="btn btn-primary" id="Final-Check" onclick="finalCheckComplete()" data-alt-id="finalChecks_text2" disabled>I\'m Looking and Sounding Great</button>\n </div>\n </div>\n </div> \n </div>\n \n \x3c!-- ROW 4b: Audio-Only Final Check --\x3e\n <div class="row gap-2" style="padding-top:1rem; display: none;" id="check-audiocollapsableCards">\n <div class="col">\n <div class="card" style="width:42rem" id="card-final-check-audio">\n <div class="card-body">\n <h5 class="card-title" data-alt-id="finalChecks">(4) Final Checks</h5>\n <p id="finalChecks_audioOnly_text2" data-alt-id="finalChecks_audioOnly_text1">Speak at a normal volume to check the audio level below.</p>\n <div class="container">\n <canvas id="audio-visualization-audioonly" width="640" height="100"></canvas>\n </div>\n\n <button type="button" class="btn btn-primary" id="Final-Check-Audio" onclick="finalCheckComplete()" data-alt-id="finalChecks_text2" disabled>I\'m Sounding Great</button>\n </div>\n </div>\n </div> \n </div>\n \n\n \x3c!-- ROW 5: User Details --\x3e\n <div class="row gap-2" style="padding-top:1rem;">\n <div class="col">\n <div class="card" style="width:42rem" id="card-camera">\n <div class="card-body">\n <h5 class="card-title" data-alt-id="readytostart">(8) Ready to Start?</h5>\n <label for="idInput" data-alt-id="readytostart_text1">Participant ID:</label>\n <input type="text" id="idInput" name="idInput" required\n minlength="1" maxlength="100" size="10">\n </br></br>\n <button type="button" class="btn btn-primary" id="confirmButton" data-alt-id="readytostart_text2" disabled>Continue</button>\n </div>\n </div>\n </div> \n </div>\n </div>\n </div>\n </div>\n\n \x3c!-- Audio Playing --\x3e \n \x3c!-- <audio autoplay id="voiceover" src="https://eyetrackingdata.blob.core.windows.net/public/Audios/deviceConfig.mp3"></audio> --\x3e\n <audio autoplay id="voiceover"></audio>\n\n </body>\n\n<script data-dynamic>\nvar deviceConfig = {};\n\n// hide the pid box if the app is running on a URL that contains "roar.education" (i.e. prod)\n// TODO: gse-roar-admin-staging is for dashboard testing, remove before deploying to prod\nconst hidePIDBox = new URL(window.location).origin.includes("roar.education") || new URL(window.location).origin.includes("gse-roar-admin-staging");\n\nvar voiceover = document.getElementById(\'voiceover\'); // TO DO: Doesn\'t have enough time to load? Only plays if the consent screen shows up first\n\nRemoteCalibrator.init();\n\nvar desktop = document.documentElement;\nvar finalCheckButton = document.getElementById("Final-Check")\nvar finalCheckButtonAudio = document.getElementById("Final-Check-Audio")\nvar confirmButton = document.getElementById("confirmButton");\nvar cardFullscreen = document.getElementById("card-fullscreen");\nvar cardScreenSize = document.getElementById("card-screen-size");\nvar cardDistanceScreen = document.getElementById("card-distance-screen");\nvar cardcamera = document.getElementById("card-camera");\nvar cardwebcamCenter = document.getElementById("card-webcam-center");\nvar cardheightcamera = document.getElementById("card-height-camera")\nvar cardfinalcheck = document.getElementById("card-final-check");\nvar cardfinalcheckaudio = document.getElementById("card-final-check-audio");\nvar heightInput_textbox = document.getElementById("heightInput")\nvar idInput_textbox = document.getElementById("idInput")\nvar idInput_textbox = document.getElementById("idInput");\nvar idInput_label = document.querySelector(\'label[for="idInput"]\');\n\nif (hidePIDBox === true) {\n idInput_textbox.style.display = \'none\';\n idInput_label.style.display = \'none\';\n}\n\nvar video = document.querySelector("#videoElement");\nvar deviceConfigs = {}\n\nvar audioDetected = false;\nvar fullScreen = false;\nvar screenSizeCalibrated = false;\nvar cameraStarted = false;\nvar HeightWebcamEntered = false;\nvar finalcheck = false;\nvar webcamCentered = false;\nvar normalizedFocalLength = 0;\nvar prolificID;\nvar screenWidth=0;\nvar screenHeight=0;\nvar screenWidthPX=window.screen.width;\nvar screenHeightPX=window.screen.height;\nvar webcamHeight=0;\nvar distance = 0;\nvar webcamInfo;\nvar bEyeTracking = true;\n\n\nfunction makeid(length) {\n var result = \'\';\n var characters = \'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\';\n var charactersLength = characters.length;\n for ( var i = 0; i < length; i++ ) {\n result += characters.charAt(Math.floor(Math.random() * \n charactersLength));\n }\n return result;\n}\n\nfunction selectDevice() {\n const dropdown = document.getElementById("deviceList");\n const selectedValue = dropdown.options[dropdown.selectedIndex].value;\n\n // Check if the selected device is in deviceConfig, default to "custom" otherwise\n const selectedDeviceConfig =\n deviceConfigs[selectedValue] || deviceConfigs.custom;\n\n console.log(selectedDeviceConfig)\n // Call the handleDevice function with the selected device\'s configuration\n document.getElementById("findDevice").style.backgroundColor = "#bcf5bc";\n handleDevice(selectedDeviceConfig);\n\n}\n\n\n\nfunction openFullscreen() {\n if (desktop.requestFullscreen) {\n desktop.requestFullscreen();\n } else if (desktop.webkitRequestFullscreen) { /* Safari */\n desktop.webkitRequestFullscreen();\n } else if (desktop.msRequestFullscreen) { /* IE11 */\n desktop.msRequestFullscreen();\n }\n\n screenWidthPX = window.screen.width;\n screenHeightPX = window.screen.height;\n\n fullScreen = true\n cardFullscreen.style.backgroundColor = \'#bcf5bc\'\n\n checkAllComplete()\n}\n\nfunction getScreenSize(){\n RemoteCalibrator.screenSize({}, data => {\n console.log(`ScreenWidth: ${data.value.screenWidthCm}cm.`)\n console.log(`ScreenHeight: ${data.value.screenHeightCm}cm.`)\n\n screenWidth = data.value.screenWidthCm\n screenHeight = data.value.screenHeightCm\n\n if (screenWidth!=null && screenHeight!=null) {\n screenSizeCalibrated = true\n cardScreenSize.style.backgroundColor = \'#bcf5bc\'\n console.log(screenSizeCalibrated)\n }\n checkAllComplete()\n }) \n}\n\n\nfunction getwebcamCentered(){\n webcamCentered = true\n cardwebcamCenter.style.backgroundColor = \'#bcf5bc\'\n checkAllComplete()\n}\n\nfunction getHeightWebcam(){\n if (heightInput_textbox.value>0){\n HeightWebcamEntered = true\n webcamHeight = heightInput_textbox.value\n heightInput_textbox.disabled = true\n cardheightcamera.style.backgroundColor = \'#bcf5bc\'\n }\n checkAllComplete()\n}\n\nfunction finalCheckComplete(){\n let userConfirmed = true\n if (!audioDetected) {\n userConfirmed = confirm("We couldn\'t hear you, are you sure your microphone is working? Click OK to continue anyway, or Cancel to check your settings.");\n }\n if (userConfirmed) {\n finalcheck = true\n if (cardfinalcheck) {\n cardfinalcheck.style.backgroundColor = \'#bcf5bc\'\n }\n if (cardfinalcheckaudio) {\n cardfinalcheckaudio.style.backgroundColor = \'#bcf5bc\'\n }\n checkAllComplete()\n }\n}\n\n\nasync function setupMediaStream(requestVideo) {\n const audioContext = new AudioContext();\n const canvas = requestVideo ? document.getElementById(\'audio-visualization\') : document.getElementById(\'audio-visualization-audioonly\');\n const ctx = canvas.getContext(\'2d\');\n\n const mediaConstraints = {\n audio: true\n };\n \n if (requestVideo) {\n mediaConstraints.video = {\n width: { ideal: 1920 }, \n height: { ideal: 1080 }, \n frameRate: { ideal: 60, max: 60 },\n facingMode: "user"\n };\n }\n\n const cameraStream = await navigator.mediaDevices.getUserMedia(mediaConstraints);\n\n if (requestVideo && cameraStream.getVideoTracks().length > 0) {\n const { width, height } = cameraStream.getVideoTracks()[0].getSettings();\n const videoTrack = cameraStream.getVideoTracks()[0];\n webcamInfo = videoTrack.getCapabilities\n ? videoTrack.getCapabilities()\n : {};\n\n webcamInfo[\'image_width\'] = width\n webcamInfo[\'image_height\'] = height\n\n console.log(`${width}x${height}`); // Log video resolution\n\n const video = document.querySelector(\'video\');\n video.srcObject = cameraStream;\n video.muted = true; // Mute the video element to prevent audio playback\n\n if (height > 0) {\n cardcamera.style.backgroundColor = \'#bcf5bc\';\n cameraStarted = true;\n video.style.backgroundColor = \'#bcf5bc\';\n finalCheckButton.disabled = false;\n checkAllComplete();\n } else {\n video.style.backgroundColor = \'#FA8072\';\n alert("Your webcam does not meet our resolution standards");\n }\n } else if (!requestVideo) {\n // Audio-only mode\n const cardaudio = document.getElementById("card-audio");\n if (cardaudio) {\n cardaudio.style.backgroundColor = \'#bcf5bc\';\n }\n \n cameraStarted = true;\n if (finalCheckButtonAudio) {\n finalCheckButtonAudio.disabled = false;\n }\n checkAllComplete();\n }\n\n // Set up audio analyser\n const micSource = audioContext.createMediaStreamSource(cameraStream);\n const analyser = audioContext.createAnalyser();\n analyser.fftSize = 2048;\n micSource.connect(analyser);\n const bufferLength = analyser.frequencyBinCount;\n const dataArray = new Uint8Array(bufferLength);\n\n function draw() {\n requestAnimationFrame(draw);\n analyser.getByteTimeDomainData(dataArray);\n\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n\n\n ctx.lineWidth = 2;\n ctx.strokeStyle = \'rgb(0, 0, 0)\';\n ctx.beginPath();\n\n const sliceWidth = canvas.width * 1.0 / bufferLength;\n let x = 0;\n let sum = 0;\n\n for (let i = 0; i < bufferLength; i++) {\n const v = dataArray[i] / 128.0;\n const y = v * canvas.height / 2;\n\n if (i === 0) {\n ctx.moveTo(x, y);\n } else {\n ctx.lineTo(x, y);\n }\n\n sum += (dataArray[i] - 128) * (dataArray[i] - 128); // Summing for RMS calculation\n x += sliceWidth;\n }\n\n ctx.lineTo(canvas.width, canvas.height / 2);\n ctx.stroke();\n let rms = Math.sqrt(sum / bufferLength);\n if (rms > 0.01) {\n audioDetected = true; // Update the audioDetected flag if audio is sufficiently loud\n }\n\n }\n\n draw(); // Start the drawing function\n}\n\ndocument.querySelector("#start-camera").addEventListener(\'click\', async () => {\n await setupMediaStream(true);\n});\n\ndocument.querySelector("#start-audio").addEventListener(\'click\', async () => {\n await setupMediaStream(false);\n});\n\n\nfunction checkAllComplete() {\n const hasCollapsedCards = Array.from(document.querySelectorAll(\'.card-title\')).some(card => \n card.closest(\'.card\').style.display === \'none\' || card.closest(\'.card\').offsetParent === null\n );\n const hasCameraCollapsedCards = Array.from(document.querySelectorAll(\'[id*="-cameracollapsableCards"]\')).every(element => \n element.style.display === \'none\' || element.offsetParent === null\n );\n\n const allConditionsMet = fullScreen && screenSizeCalibrated && cameraStarted && webcamCentered && HeightWebcamEntered && finalcheck;\n const minimalConditionsMet = cameraStarted && finalcheck && screenSizeCalibrated\n const bareConditionsMet = screenSizeCalibrated && cameraStarted && finalcheck\n \n let conditionsMet = false;\n if (bEyeTracking) {\n // Eye tracking mode: require camera access (cameraStarted) and finalcheck\n conditionsMet = (hasCollapsedCards && minimalConditionsMet) || (!hasCollapsedCards && allConditionsMet);\n } else {\n // Audio-only mode: require microphone access (cameraStarted) and finalcheck\n conditionsMet = hasCameraCollapsedCards && bareConditionsMet;\n }\n \n if (conditionsMet) {\n confirmButton.classList.remove(\'btn-secondary\')\n confirmButton.classList.add(\'btn-primary\')\n confirmButton.disabled = false;\n }\n}\n\n\n\n\n// function continueToTest(){\n// video.remove()\n// prolificID = idInput_textbox.value.trim() ? idInput_textbox.value : makeid(10);\n\n// localStorage.prolificID = prolificID\n// localStorage.screenHeight = screenHeight\n// localStorage.screenWidth = screenWidth\n// localStorage.webcamHeight = webcamHeight\n// localStorage.distance = distance\n// window.location.href = "criticalSpacingMenu_six.html";\n\n// }\n\n<\/script>',document.body.appendChild(t),await Fr(t),qr(Gr),Nr(t),function(e){""!==e.firekit.task.variantParams.deviceConfigFile&&collapseCards("Toggle");const n=Dr(e.firekit.task.variantParams.bEyeTracking);if(window.bEyeTracking=n,n){collapseCamera();const e=document.getElementById("access-cameracollapsableCards"),n=document.getElementById("access-audiocollapsableCards"),t=document.getElementById("check-cameracollapsableCards"),i=document.getElementById("check-audiocollapsableCards");e&&(e.style.display="block"),t&&(t.style.display="block"),n&&(n.style.display="none"),i&&(i.style.display="none")}else{collapseCamera();const e=document.getElementById("access-cameracollapsableCards"),n=document.getElementById("access-audiocollapsableCards"),t=document.getElementById("check-audiocollapsableCards");e&&(e.style.display="none"),n&&(n.style.display="block"),t&&(t.style.display="block")}""!==e.firekit.user.assessmentPid&&inputParticipantName(e.firekit.user.assessmentPid);var t=document.getElementById("voiceover");if(t.src="https://storage.googleapis.com/roav-ran/en/shared/audio/configureDeviceViewAudio.mp3",""!==e.firekit.task.variantParams.deviceConfigFile){var i=`https://eyetrackingdata.blob.core.windows.net/public/config/${e.firekit.task.variantParams.deviceConfigFile}.json`;updateDeviceConfigFromJSON(i)}t.play()}(e),Ur(be.store.data[be.language].translation),await new Promise((i=>{const s=document.getElementById("confirmButton");s&&s.addEventListener("click",(async()=>{try{var s=idInput_textbox.value.trim()?idInput_textbox.value:makeid(10);s!==e.firekit.user.assessmentPid&&e.firekit.updateUser({assessmentPid:s}),nc(),o.session.set("id",s),o.session.set("deviceConfig",{screenWidth:parseFloat(screenWidth),screenHeight:parseFloat(screenHeight),screenWidthPX:parseFloat(screenWidthPX),screenHeightPX:parseFloat(screenHeightPX),webcamHeight:parseFloat(webcamHeight),normalizedFocalLength:parseFloat(normalizedFocalLength),deviceInfo:Jr(),webcamInfo:webcamInfo,bEyeTracking:Dr(e.firekit.task.variantParams.bEyeTracking),storeVideo:Dr(e.firekit.task.variantParams.storeVideo),startTime:Date.now(),timed:e.firekit.task.variantParams.timed}),t.innerHTML=n,zr(Gr),Vr(),t.remove(),i()}catch(e){window.console.log("Error:",e)}}))}))}var dc='<script src="https://cdn.jsdelivr.net/npm/@mediapipe/face_mesh@0.4/face_mesh.min.js"><\/script>\n\n<script data-dynamic>\n var irisMetrics;\n var headMetrics;\n var headCoordinates;\n var leftEyeCoordinates = [];\n var rightEyeCoordinates = [];\n var movingContour;\n var fixedContour;\n var canvasContour;\n var focalLengthMultiple;\n var headMetrics_array = [];\n var irisMetrics_array = [];\n var mediaRecorder;\n var mediaChunks = [];\n var leftEyectx;\n var rightEyectx;\n var normalizedFocalLength;\n var blueCircle;\n var inferenceRetries = 0;\n var maxInferenceRetries = 100;\n\n var inputVideo = document.getElementsByClassName("inputVideo")[0];\n var headCanvas = document.getElementById("headCanvas");\n var headCtx = headCanvas.getContext("2d");\n\n var faceMesh = new FaceMesh({\n locateFile: (file) => {\n return `https://cdn.jsdelivr.net/npm/@mediapipe/face_mesh@0.4/${file}`;\n },\n });\n\n faceMesh.setOptions({\n selfieMode: true,\n enableFaceGeometry: false,\n maxNumFaces: 1,\n refineLandmarks: true,\n minDetectionConfidence: 0.5,\n minTrackingConfidence: 0.5,\n });\n\n faceMesh.onResults(onResultsFaceMesh);\n\n async function runInference() {\n await faceMesh.send({ image: inputVideo });\n try {\n if (!leftEyeCoordinates || leftEyeCoordinates.length === 0 || !rightEyeCoordinates || rightEyeCoordinates.length === 0) {\n inferenceRetries++;\n if (inferenceRetries > maxInferenceRetries) {\n console.warn("Max inference retries reached. Stopping eye tracking.");\n continueProcessing = false;\n return;\n }\n throw new Error("No face detected");\n }\n inferenceRetries = 0;\n let input1, input2, kpsTensor;\n let [upper_left_x, upper_left_y, width, height] = convertToYolo(\n leftEyeCoordinates,\n inputVideo.videoWidth,\n inputVideo.videoHeight,\n );\n let kps = [\n upper_left_x / inputVideo.videoWidth,\n upper_left_y / inputVideo.videoHeight,\n width / inputVideo.videoWidth,\n height / inputVideo.videoHeight,\n ];\n\n leftEyectx.drawImage(\n inputVideo,\n Math.max(0, inputVideo.videoWidth - upper_left_x - width),\n Math.max(0, upper_left_y),\n Math.max(0, width),\n Math.max(0, height),\n 0,\n 0,\n 128,\n 128,\n );\n\n [upper_left_x, upper_left_y, width, height] = convertToYolo(\n rightEyeCoordinates,\n inputVideo.videoWidth,\n inputVideo.videoHeight,\n );\n kps.push(\n upper_left_x / inputVideo.videoWidth,\n upper_left_y / inputVideo.videoHeight,\n width / inputVideo.videoWidth,\n height / inputVideo.videoHeight,\n );\n rightEyectx.drawImage(\n inputVideo,\n Math.max(0, inputVideo.videoWidth - upper_left_x - width),\n Math.max(0, upper_left_y),\n Math.max(0, width),\n Math.max(0, height),\n 0,\n 0,\n 128,\n 128,\n );\n\n imageData = leftEyectx.getImageData(0, 0, 128, 128);\n let preprocessedData = preprocess(imageData.data, 128, 128);\n input1 = new Tensor(preprocessedData, "float32", [1, 3, 128, 128]);\n imageData = rightEyectx.getImageData(0, 0, 128, 128);\n preprocessedData = preprocess(imageData.data, 128, 128);\n input2 = new Tensor(preprocessedData, "float32", [1, 3, 128, 128]);\n preprocessedData = preprocess_kps(kps);\n kpsTensor = new Tensor(preprocessedData, "float32", [1, 8]);\n\n myWorker.postMessage({\n input1: input1,\n input2: input2,\n kpsTensor: kpsTensor,\n });\n } catch (error) {\n console.log(error)\n if (inferenceRetries < maxInferenceRetries) {\n setTimeout(runInference, 50);\n } else {\n console.warn("Max inference retries reached. Stopping eye tracking.");\n continueProcessing = false;\n }\n }\n }\n\n myWorker.onmessage = async (e) => {\n if (e.data.error) {\n console.error("Error from worker:", e.data.error);\n } else {\n if (typeof runAfterEveryFrame === \'function\') {\n runAfterEveryFrame((output = e.data));\n }\n }\n\n if (continueProcessing) {\n runInference();\n }\n };\n<\/script>\n';function gc(e){return!!e.constructor&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}var mc=function(e){for(var n=new Array(e),t=0;t<e;++t)n[t]=t;return n},vc=function(e){return null!=e&&(gc(e)||function(e){return"function"==typeof e.readFloatLE&&"function"==typeof e.slice&&gc(e.slice(0,0))}(e)||!!e._isBuffer)},hc="undefined"!=typeof Float64Array;function fc(e,n){return e[0]-n[0]}function xc(){var e,n=this.stride,t=new Array(n.length);for(e=0;e<t.length;++e)t[e]=[Math.abs(n[e]),e];t.sort(fc);var i=new Array(t.length);for(e=0;e<i.length;++e)i[e]=t[e][1];return i}function bc(e,n){var t=["View",n,"d",e].join("");n<0&&(t="View_Nil"+e);var i="generic"===e;if(-1===n){var s="function "+t+"(a){this.data=a;};var proto="+t+".prototype;proto.dtype='"+e+"';proto.index=function(){return -1};proto.size=0;proto.dimension=-1;proto.shape=proto.stride=proto.order=[];proto.lo=proto.hi=proto.transpose=proto.step=function(){return new "+t+"(this.data);};proto.get=proto.set=function(){};proto.pick=function(){return null};return function construct_"+t+"(a){return new "+t+"(a);}";return new Function(s)()}if(0===n){s="function "+t+"(a,d) {this.data = a;this.offset = d};var proto="+t+".prototype;proto.dtype='"+e+"';proto.index=function(){return this.offset};proto.dimension=0;proto.size=1;proto.shape=proto.stride=proto.order=[];proto.lo=proto.hi=proto.transpose=proto.step=function "+t+"_copy() {return new "+t+"(this.data,this.offset)};proto.pick=function "+t+"_pick(){return TrivialArray(this.data);};proto.valueOf=proto.get=function "+t+"_get(){return "+(i?"this.data.get(this.offset)":"this.data[this.offset]")+"};proto.set=function "+t+"_set(v){return "+(i?"this.data.set(this.offset,v)":"this.data[this.offset]=v")+"};return function construct_"+t+"(a,b,c,d){return new "+t+"(a,d)}";return new Function("TrivialArray",s)(yc[e][0])}s=["'use strict'"];var a=mc(n),o=a.map((function(e){return"i"+e})),r="this.offset+"+a.map((function(e){return"this.stride["+e+"]*i"+e})).join("+"),c=a.map((function(e){return"b"+e})).join(","),l=a.map((function(e){return"c"+e})).join(",");s.push("function "+t+"(a,"+c+","+l+",d){this.data=a","this.shape=["+c+"]","this.stride=["+l+"]","this.offset=d|0}","var proto="+t+".prototype","proto.dtype='"+e+"'","proto.dimension="+n),s.push("Object.defineProperty(proto,'size',{get:function "+t+"_size(){return "+a.map((function(e){return"this.shape["+e+"]"})).join("*"),"}})"),1===n?s.push("proto.order=[0]"):(s.push("Object.defineProperty(proto,'order',{get:"),n<4?(s.push("function "+t+"_order(){"),2===n?s.push("return (Math.abs(this.stride[0])>Math.abs(this.stride[1]))?[1,0]:[0,1]}})"):3===n&&s.push("var s0=Math.abs(this.stride[0]),s1=Math.abs(this.stride[1]),s2=Math.abs(this.stride[2]);if(s0>s1){if(s1>s2){return [2,1,0];}else if(s0>s2){return [1,2,0];}else{return [1,0,2];}}else if(s0>s2){return [2,0,1];}else if(s2>s1){return [0,1,2];}else{return [0,2,1];}}})")):s.push("ORDER})")),s.push("proto.set=function "+t+"_set("+o.join(",")+",v){"),i?s.push("return this.data.set("+r+",v)}"):s.push("return this.data["+r+"]=v}"),s.push("proto.get=function "+t+"_get("+o.join(",")+"){"),i?s.push("return this.data.get("+r+")}"):s.push("return this.data["+r+"]}"),s.push("proto.index=function "+t+"_index(",o.join(),"){return "+r+"}"),s.push("proto.hi=function "+t+"_hi("+o.join(",")+"){return new "+t+"(this.data,"+a.map((function(e){return["(typeof i",e,"!=='number'||i",e,"<0)?this.shape[",e,"]:i",e,"|0"].join("")})).join(",")+","+a.map((function(e){return"this.stride["+e+"]"})).join(",")+",this.offset)}");var p=a.map((function(e){return"a"+e+"=this.shape["+e+"]"})),u=a.map((function(e){return"c"+e+"=this.stride["+e+"]"}));s.push("proto.lo=function "+t+"_lo("+o.join(",")+"){var b=this.offset,d=0,"+p.join(",")+","+u.join(","));for(var d=0;d<n;++d)s.push("if(typeof i"+d+"==='number'&&i"+d+">=0){d=i"+d+"|0;b+=c"+d+"*d;a"+d+"-=d}");s.push("return new "+t+"(this.data,"+a.map((function(e){return"a"+e})).join(",")+","+a.map((function(e){return"c"+e})).join(",")+",b)}"),s.push("proto.step=function "+t+"_step("+o.join(",")+"){var "+a.map((function(e){return"a"+e+"=this.shape["+e+"]"})).join(",")+","+a.map((function(e){return"b"+e+"=this.stride["+e+"]"})).join(",")+",c=this.offset,d=0,ceil=Math.ceil");for(d=0;d<n;++d)s.push("if(typeof i"+d+"==='number'){d=i"+d+"|0;if(d<0){c+=b"+d+"*(a"+d+"-1);a"+d+"=ceil(-a"+d+"/d)}else{a"+d+"=ceil(a"+d+"/d)}b"+d+"*=d}");s.push("return new "+t+"(this.data,"+a.map((function(e){return"a"+e})).join(",")+","+a.map((function(e){return"b"+e})).join(",")+",c)}");var g=new Array(n),m=new Array(n);for(d=0;d<n;++d)g[d]="a[i"+d+"]",m[d]="b[i"+d+"]";s.push("proto.transpose=function "+t+"_transpose("+o+"){"+o.map((function(e,n){return e+"=("+e+"===undefined?"+n+":"+e+"|0)"})).join(";"),"var a=this.shape,b=this.stride;return new "+t+"(this.data,"+g.join(",")+","+m.join(",")+",this.offset)}"),s.push("proto.pick=function "+t+"_pick("+o+"){var a=[],b=[],c=this.offset");for(d=0;d<n;++d)s.push("if(typeof i"+d+"==='number'&&i"+d+">=0){c=(c+this.stride["+d+"]*i"+d+")|0}else{a.push(this.shape["+d+"]);b.push(this.stride["+d+"])}");return s.push("var ctor=CTOR_LIST[a.length+1];return ctor(this.data,a,b,c)}"),s.push("return function construct_"+t+"(data,shape,stride,offset){return new "+t+"(data,"+a.map((function(e){return"shape["+e+"]"})).join(",")+","+a.map((function(e){return"stride["+e+"]"})).join(",")+",offset)}"),new Function("CTOR_LIST","ORDER",s.join("\n"))(yc[e],xc)}var yc={float32:[],float64:[],int8:[],int16:[],int32:[],uint8:[],uint16:[],uint32:[],array:[],uint8_clamped:[],bigint64:[],biguint64:[],buffer:[],generic:[]};var wc=t((function(e,n,t,i){if(void 0===e)return(0,yc.array[0])([]);"number"==typeof e&&(e=[e]),void 0===n&&(n=[e.length]);var s=n.length;if(void 0===t){t=new Array(s);for(var a=s-1,o=1;a>=0;--a)t[a]=o,o*=n[a]}if(void 0===i){i=0;for(a=0;a<s;++a)t[a]<0&&(i-=(n[a]-1)*t[a])}for(var r=function(e){if(vc(e))return"buffer";if(hc)switch(Object.prototype.toString.call(e)){case"[object Float64Array]":return"float64";case"[object Float32Array]":return"float32";case"[object Int8Array]":return"int8";case"[object Int16Array]":return"int16";case"[object Int32Array]":return"int32";case"[object Uint8Array]":return"uint8";case"[object Uint16Array]":return"uint16";case"[object Uint32Array]":return"uint32";case"[object Uint8ClampedArray]":return"uint8_clamped";case"[object BigInt64Array]":return"bigint64";case"[object BigUint64Array]":return"biguint64"}return Array.isArray(e)?"array":"generic"}(e),c=yc[r];c.length<=s+1;)c.push(bc(r,c.length-1));return(0,c[s+1])(e,n,t,i)})),kc={};var Sc=function(e,n,t){return 0===e.length?e:n?(t||e.sort(n),function(e,n){for(var t=1,i=e.length,s=e[0],a=e[0],o=1;o<i;++o)if(a=s,n(s=e[o],a)){if(o===t){t++;continue}e[t++]=s}return e.length=t,e}(e,n)):(t||e.sort(),function(e){for(var n=1,t=e.length,i=e[0],s=e[0],a=1;a<t;++a,s=i)if(s=i,(i=e[a])!==s){if(a===n){n++;continue}e[n++]=i}return e.length=n,e}(e))};function jc(e,n,t){var i,s,a=e.length,o=n.arrayArgs.length,r=n.indexArgs.length>0,c=[],l=[],p=0,u=0;for(i=0;i<a;++i)l.push(["i",i,"=0"].join(""));for(s=0;s<o;++s)for(i=0;i<a;++i)u=p,p=e[i],0===i?l.push(["d",s,"s",i,"=t",s,"p",p].join("")):l.push(["d",s,"s",i,"=(t",s,"p",p,"-s",u,"*t",s,"p",u,")"].join(""));for(l.length>0&&c.push("var "+l.join(",")),i=a-1;i>=0;--i)p=e[i],c.push(["for(i",i,"=0;i",i,"<s",p,";++i",i,"){"].join(""));for(c.push(t),i=0;i<a;++i){for(u=p,p=e[i],s=0;s<o;++s)c.push(["p",s,"+=d",s,"s",i].join(""));r&&(i>0&&c.push(["index[",u,"]-=s",u].join("")),c.push(["++index[",p,"]"].join(""))),c.push("}")}return c.join("\n")}function _c(e,n,t){for(var i=e.body,s=[],a=[],o=0;o<e.args.length;++o){var r=e.args[o];if(!(r.count<=0)){var c=new RegExp(r.name,"g"),l="",p=n.arrayArgs.indexOf(o);switch(n.argTypes[o]){case"offset":var u=n.offsetArgIndex.indexOf(o);p=n.offsetArgs[u].array,l="+q"+u;case"array":l="p"+p+l;var d="l"+o,g="a"+p;if(0===n.arrayBlockIndices[p])1===r.count?"generic"===t[p]?r.lvalue?(s.push(["var ",d,"=",g,".get(",l,")"].join("")),i=i.replace(c,d),a.push([g,".set(",l,",",d,")"].join(""))):i=i.replace(c,[g,".get(",l,")"].join("")):i=i.replace(c,[g,"[",l,"]"].join("")):"generic"===t[p]?(s.push(["var ",d,"=",g,".get(",l,")"].join("")),i=i.replace(c,d),r.lvalue&&a.push([g,".set(",l,",",d,")"].join(""))):(s.push(["var ",d,"=",g,"[",l,"]"].join("")),i=i.replace(c,d),r.lvalue&&a.push([g,"[",l,"]=",d].join("")));else{for(var m=[r.name],v=[l],h=0;h<Math.abs(n.arrayBlockIndices[p]);h++)m.push("\\s*\\[([^\\]]+)\\]"),v.push("$"+(h+1)+"*t"+p+"b"+h);if(c=new RegExp(m.join(""),"g"),l=v.join("+"),"generic"===t[p])throw new Error("cwise: Generic arrays not supported in combination with blocks!");i=i.replace(c,[g,"[",l,"]"].join(""))}break;case"scalar":i=i.replace(c,"Y"+n.scalarArgs.indexOf(o));break;case"index":i=i.replace(c,"index");break;case"shape":i=i.replace(c,"shape")}}}return[s.join("\n"),i,a.join("\n")].join("\n").trim()}function Cc(e){for(var n=new Array(e.length),t=!0,i=0;i<e.length;++i){var s=e[i],a=s.match(/\d+/);a=a?a[0]:"",0===s.charAt(0)?n[i]="u"+s.charAt(1)+a:n[i]=s.charAt(0)+a,i>0&&(t=t&&n[i]===n[i-1])}return t?n[0]:n.join("")}var Ac=function(e,n){for(var t=n[1].length-Math.abs(e.arrayBlockIndices[0])|0,i=new Array(e.arrayArgs.length),s=new Array(e.arrayArgs.length),a=0;a<e.arrayArgs.length;++a)s[a]=n[2*a],i[a]=n[2*a+1];var o=[],r=[],c=[],l=[],p=[];for(a=0;a<e.arrayArgs.length;++a){e.arrayBlockIndices[a]<0?(c.push(0),l.push(t),o.push(t),r.push(t+e.arrayBlockIndices[a])):(c.push(e.arrayBlockIndices[a]),l.push(e.arrayBlockIndices[a]+t),o.push(0),r.push(e.arrayBlockIndices[a]));for(var u=[],d=0;d<i[a].length;d++)c[a]<=i[a][d]&&i[a][d]<l[a]&&u.push(i[a][d]-c[a]);p.push(u)}var g=["SS"],m=["'use strict'"],v=[];for(d=0;d<t;++d)v.push(["s",d,"=SS[",d,"]"].join(""));for(a=0;a<e.arrayArgs.length;++a){g.push("a"+a),g.push("t"+a),g.push("p"+a);for(d=0;d<t;++d)v.push(["t",a,"p",d,"=t",a,"[",c[a]+d,"]"].join(""));for(d=0;d<Math.abs(e.arrayBlockIndices[a]);++d)v.push(["t",a,"b",d,"=t",a,"[",o[a]+d,"]"].join(""))}for(a=0;a<e.scalarArgs.length;++a)g.push("Y"+a);if(e.shapeArgs.length>0&&v.push("shape=SS.slice(0)"),e.indexArgs.length>0){var h=new Array(t);for(a=0;a<t;++a)h[a]="0";v.push(["index=[",h.join(","),"]"].join(""))}for(a=0;a<e.offsetArgs.length;++a){var f=e.offsetArgs[a],x=[];for(d=0;d<f.offset.length;++d)0!==f.offset[d]&&(1===f.offset[d]?x.push(["t",f.array,"p",d].join("")):x.push([f.offset[d],"*t",f.array,"p",d].join("")));0===x.length?v.push("q"+a+"=0"):v.push(["q",a,"=",x.join("+")].join(""))}var b=Sc([].concat(e.pre.thisVars).concat(e.body.thisVars).concat(e.post.thisVars));for((v=v.concat(b)).length>0&&m.push("var "+v.join(",")),a=0;a<e.arrayArgs.length;++a)m.push("p"+a+"|=0");e.pre.body.length>3&&m.push(_c(e.pre,e,s));var y=_c(e.body,e,s),w=function(e){for(var n=0,t=e[0].length;n<t;){for(var i=1;i<e.length;++i)if(e[i][n]!==e[0][n])return n;++n}return n}(p);w<t?m.push(function(e,n,t,i){for(var s=n.length,a=t.arrayArgs.length,o=t.blockSize,r=t.indexArgs.length>0,c=[],l=0;l<a;++l)c.push(["var offset",l,"=p",l].join(""));for(l=e;l<s;++l)c.push(["for(var j"+l+"=SS[",n[l],"]|0;j",l,">0;){"].join("")),c.push(["if(j",l,"<",o,"){"].join("")),c.push(["s",n[l],"=j",l].join("")),c.push(["j",l,"=0"].join("")),c.push(["}else{s",n[l],"=",o].join("")),c.push(["j",l,"-=",o,"}"].join("")),r&&c.push(["index[",n[l],"]=j",l].join(""));for(l=0;l<a;++l){for(var p=["offset"+l],u=e;u<s;++u)p.push(["j",u,"*t",l,"p",n[u]].join(""));c.push(["p",l,"=(",p.join("+"),")"].join(""))}for(c.push(jc(n,t,i)),l=e;l<s;++l)c.push("}");return c.join("\n")}(w,p[0],e,y)):m.push(jc(p[0],e,y)),e.post.body.length>3&&m.push(_c(e.post,e,s)),e.debug&&console.log("-----Generated cwise routine for ",n,":\n"+m.join("\n")+"\n----------");var k=[e.funcName||"unnamed","_cwise_loop_",i[0].join("s"),"m",w,Cc(s)].join("");return new Function(["function ",k,"(",g.join(","),"){",m.join("\n"),"} return ",k].join(""))()},Ec=Ac;var Rc=function(e){var n=["'use strict'","var CACHED={}"],t=[],i=e.funcName+"_cwise_thunk";n.push(["return function ",i,"(",e.shimArgs.join(","),"){"].join(""));for(var s=[],a=[],o=[["array",e.arrayArgs[0],".shape.slice(",Math.max(0,e.arrayBlockIndices[0]),e.arrayBlockIndices[0]<0?","+e.arrayBlockIndices[0]+")":")"].join("")],r=[],c=[],l=0;l<e.arrayArgs.length;++l){var p=e.arrayArgs[l];t.push(["t",p,"=array",p,".dtype,","r",p,"=array",p,".order"].join("")),s.push("t"+p),s.push("r"+p),a.push("t"+p),a.push("r"+p+".join()"),o.push("array"+p+".data"),o.push("array"+p+".stride"),o.push("array"+p+".offset|0"),l>0&&(r.push("array"+e.arrayArgs[0]+".shape.length===array"+p+".shape.length+"+(Math.abs(e.arrayBlockIndices[0])-Math.abs(e.arrayBlockIndices[l]))),c.push("array"+e.arrayArgs[0]+".shape[shapeIndex+"+Math.max(0,e.arrayBlockIndices[0])+"]===array"+p+".shape[shapeIndex+"+Math.max(0,e.arrayBlockIndices[l])+"]"))}for(e.arrayArgs.length>1&&(n.push("if (!("+r.join(" && ")+")) throw new Error('cwise: Arrays do not all have the same dimensionality!')"),n.push("for(var shapeIndex=array"+e.arrayArgs[0]+".shape.length-"+Math.abs(e.arrayBlockIndices[0])+"; shapeIndex--\x3e0;) {"),n.push("if (!("+c.join(" && ")+")) throw new Error('cwise: Arrays do not all have the same shape!')"),n.push("}")),l=0;l<e.scalarArgs.length;++l)o.push("scalar"+e.scalarArgs[l]);return t.push(["type=[",a.join(","),"].join()"].join("")),t.push("proc=CACHED[type]"),n.push("var "+t.join(",")),n.push(["if(!proc){","CACHED[type]=proc=compile([",s.join(","),"])}","return proc(",o.join(","),")}"].join("")),e.debug&&console.log("-----Generated thunk:\n"+n.join("\n")+"\n----------"),new Function("compile",n.join("\n"))(Ec.bind(void 0,e))};function Lc(){this.argTypes=[],this.shimArgs=[],this.arrayArgs=[],this.arrayBlockIndices=[],this.scalarArgs=[],this.offsetArgs=[],this.offsetArgIndex=[],this.indexArgs=[],this.shapeArgs=[],this.funcName="",this.pre=null,this.body=null,this.post=null,this.debug=!1}var Mc=function(e){var n=new Lc;n.pre=e.pre,n.body=e.body,n.post=e.post;var t=e.args.slice(0);n.argTypes=t;for(var i=0;i<t.length;++i){var s=t[i];if("array"===s||"object"==typeof s&&s.blockIndices){if(n.argTypes[i]="array",n.arrayArgs.push(i),n.arrayBlockIndices.push(s.blockIndices?s.blockIndices:0),n.shimArgs.push("array"+i),i<n.pre.args.length&&n.pre.args[i].count>0)throw new Error("cwise: pre() block may not reference array args");if(i<n.post.args.length&&n.post.args[i].count>0)throw new Error("cwise: post() block may not reference array args")}else if("scalar"===s)n.scalarArgs.push(i),n.shimArgs.push("scalar"+i);else if("index"===s){if(n.indexArgs.push(i),i<n.pre.args.length&&n.pre.args[i].count>0)throw new Error("cwise: pre() block may not reference array index");if(i<n.body.args.length&&n.body.args[i].lvalue)throw new Error("cwise: body() block may not write to array index");if(i<n.post.args.length&&n.post.args[i].count>0)throw new Error("cwise: post() block may not reference array index")}else if("shape"===s){if(n.shapeArgs.push(i),i<n.pre.args.length&&n.pre.args[i].lvalue)throw new Error("cwise: pre() block may not write to array shape");if(i<n.body.args.length&&n.body.args[i].lvalue)throw new Error("cwise: body() block may not write to array shape");if(i<n.post.args.length&&n.post.args[i].lvalue)throw new Error("cwise: post() block may not write to array shape")}else{if("object"!=typeof s||!s.offset)throw new Error("cwise: Unknown argument type "+t[i]);n.argTypes[i]="offset",n.offsetArgs.push({array:s.array,offset:s.offset}),n.offsetArgIndex.push(i)}}if(n.arrayArgs.length<=0)throw new Error("cwise: No array arguments specified");if(n.pre.args.length>t.length)throw new Error("cwise: Too many arguments in pre() block");if(n.body.args.length>t.length)throw new Error("cwise: Too many arguments in body() block");if(n.post.args.length>t.length)throw new Error("cwise: Too many arguments in post() block");return n.debug=!!e.printCode||!!e.debug,n.funcName=e.funcName||"cwise",n.blockSize=e.blockSize||64,Rc(n)};!function(e){var n=Mc,t={body:"",args:[],thisVars:[],localVars:[]};function i(e){if(!e)return t;for(var n=0;n<e.args.length;++n){var i=e.args[n];e.args[n]=0===n?{name:i,lvalue:!0,rvalue:!!e.rvalue,count:e.count||1}:{name:i,lvalue:!1,rvalue:!0,count:1}}return e.thisVars||(e.thisVars=[]),e.localVars||(e.localVars=[]),e}function s(e){for(var t=[],s=0;s<e.args.length;++s)t.push("a"+s);return new Function("P",["return function ",e.funcName,"_ndarrayops(",t.join(","),") {P(",t.join(","),");return a0}"].join(""))(function(e){return n({args:e.args,pre:i(e.pre),body:i(e.body),post:i(e.proc),funcName:e.funcName})}(e))}var a={add:"+",sub:"-",mul:"*",div:"/",mod:"%",band:"&",bor:"|",bxor:"^",lshift:"<<",rshift:">>",rrshift:">>>"};!function(){for(var n in a){var t=a[n];e[n]=s({args:["array","array","array"],body:{args:["a","b","c"],body:"a=b"+t+"c"},funcName:n}),e[n+"eq"]=s({args:["array","array"],body:{args:["a","b"],body:"a"+t+"=b"},rvalue:!0,funcName:n+"eq"}),e[n+"s"]=s({args:["array","array","scalar"],body:{args:["a","b","s"],body:"a=b"+t+"s"},funcName:n+"s"}),e[n+"seq"]=s({args:["array","scalar"],body:{args:["a","s"],body:"a"+t+"=s"},rvalue:!0,funcName:n+"seq"})}}();var o={not:"!",bnot:"~",neg:"-",recip:"1.0/"};!function(){for(var n in o){var t=o[n];e[n]=s({args:["array","array"],body:{args:["a","b"],body:"a="+t+"b"},funcName:n}),e[n+"eq"]=s({args:["array"],body:{args:["a"],body:"a="+t+"a"},rvalue:!0,count:2,funcName:n+"eq"})}}();var r={and:"&&",or:"||",eq:"===",neq:"!==",lt:"<",gt:">",leq:"<=",geq:">="};!function(){for(var n in r){var t=r[n];e[n]=s({args:["array","array","array"],body:{args:["a","b","c"],body:"a=b"+t+"c"},funcName:n}),e[n+"s"]=s({args:["array","array","scalar"],body:{args:["a","b","s"],body:"a=b"+t+"s"},funcName:n+"s"}),e[n+"eq"]=s({args:["array","array"],body:{args:["a","b"],body:"a=a"+t+"b"},rvalue:!0,count:2,funcName:n+"eq"}),e[n+"seq"]=s({args:["array","scalar"],body:{args:["a","s"],body:"a=a"+t+"s"},rvalue:!0,count:2,funcName:n+"seq"})}}();var c=["abs","acos","asin","atan","ceil","cos","exp","floor","log","round","sin","sqrt","tan"];!function(){for(var n=0;n<c.length;++n){var t=c[n];e[t]=s({args:["array","array"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a","b"],body:"a=this_f(b)",thisVars:["this_f"]},funcName:t}),e[t+"eq"]=s({args:["array"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a"],body:"a=this_f(a)",thisVars:["this_f"]},rvalue:!0,count:2,funcName:t+"eq"})}}();var l=["max","min","atan2","pow"];!function(){for(var n=0;n<l.length;++n){var t=l[n];e[t]=s({args:["array","array","array"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a","b","c"],body:"a=this_f(b,c)",thisVars:["this_f"]},funcName:t}),e[t+"s"]=s({args:["array","array","scalar"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a","b","c"],body:"a=this_f(b,c)",thisVars:["this_f"]},funcName:t+"s"}),e[t+"eq"]=s({args:["array","array"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a","b"],body:"a=this_f(a,b)",thisVars:["this_f"]},rvalue:!0,count:2,funcName:t+"eq"}),e[t+"seq"]=s({args:["array","scalar"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a","b"],body:"a=this_f(a,b)",thisVars:["this_f"]},rvalue:!0,count:2,funcName:t+"seq"})}}();var p=["atan2","pow"];!function(){for(var n=0;n<p.length;++n){var t=p[n];e[t+"op"]=s({args:["array","array","array"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a","b","c"],body:"a=this_f(c,b)",thisVars:["this_f"]},funcName:t+"op"}),e[t+"ops"]=s({args:["array","array","scalar"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a","b","c"],body:"a=this_f(c,b)",thisVars:["this_f"]},funcName:t+"ops"}),e[t+"opeq"]=s({args:["array","array"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a","b"],body:"a=this_f(b,a)",thisVars:["this_f"]},rvalue:!0,count:2,funcName:t+"opeq"}),e[t+"opseq"]=s({args:["array","scalar"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a","b"],body:"a=this_f(b,a)",thisVars:["this_f"]},rvalue:!0,count:2,funcName:t+"opseq"})}}(),e.any=n({args:["array"],pre:t,body:{args:[{name:"a",lvalue:!1,rvalue:!0,count:1}],body:"if(a){return true}",localVars:[],thisVars:[]},post:{args:[],localVars:[],thisVars:[],body:"return false"},funcName:"any"}),e.all=n({args:["array"],pre:t,body:{args:[{name:"x",lvalue:!1,rvalue:!0,count:1}],body:"if(!x){return false}",localVars:[],thisVars:[]},post:{args:[],localVars:[],thisVars:[],body:"return true"},funcName:"all"}),e.sum=n({args:["array"],pre:{args:[],localVars:[],thisVars:["this_s"],body:"this_s=0"},body:{args:[{name:"a",lvalue:!1,rvalue:!0,count:1}],body:"this_s+=a",localVars:[],thisVars:["this_s"]},post:{args:[],localVars:[],thisVars:["this_s"],body:"return this_s"},funcName:"sum"}),e.prod=n({args:["array"],pre:{args:[],localVars:[],thisVars:["this_s"],body:"this_s=1"},body:{args:[{name:"a",lvalue:!1,rvalue:!0,count:1}],body:"this_s*=a",localVars:[],thisVars:["this_s"]},post:{args:[],localVars:[],thisVars:["this_s"],body:"return this_s"},funcName:"prod"}),e.norm2squared=n({args:["array"],pre:{args:[],localVars:[],thisVars:["this_s"],body:"this_s=0"},body:{args:[{name:"a",lvalue:!1,rvalue:!0,count:2}],body:"this_s+=a*a",localVars:[],thisVars:["this_s"]},post:{args:[],localVars:[],thisVars:["this_s"],body:"return this_s"},funcName:"norm2squared"}),e.norm2=n({args:["array"],pre:{args:[],localVars:[],thisVars:["this_s"],body:"this_s=0"},body:{args:[{name:"a",lvalue:!1,rvalue:!0,count:2}],body:"this_s+=a*a",localVars:[],thisVars:["this_s"]},post:{args:[],localVars:[],thisVars:["this_s"],body:"return Math.sqrt(this_s)"},funcName:"norm2"}),e.norminf=n({args:["array"],pre:{args:[],localVars:[],thisVars:["this_s"],body:"this_s=0"},body:{args:[{name:"a",lvalue:!1,rvalue:!0,count:4}],body:"if(-a>this_s){this_s=-a}else if(a>this_s){this_s=a}",localVars:[],thisVars:["this_s"]},post:{args:[],localVars:[],thisVars:["this_s"],body:"return this_s"},funcName:"norminf"}),e.norm1=n({args:["array"],pre:{args:[],localVars:[],thisVars:["this_s"],body:"this_s=0"},body:{args:[{name:"a",lvalue:!1,rvalue:!0,count:3}],body:"this_s+=a<0?-a:a",localVars:[],thisVars:["this_s"]},post:{args:[],localVars:[],thisVars:["this_s"],body:"return this_s"},funcName:"norm1"}),e.sup=n({args:["array"],pre:{body:"this_h=-Infinity",args:[],thisVars:["this_h"],localVars:[]},body:{body:"if(_inline_1_arg0_>this_h)this_h=_inline_1_arg0_",args:[{name:"_inline_1_arg0_",lvalue:!1,rvalue:!0,count:2}],thisVars:["this_h"],localVars:[]},post:{body:"return this_h",args:[],thisVars:["this_h"],localVars:[]}}),e.inf=n({args:["array"],pre:{body:"this_h=Infinity",args:[],thisVars:["this_h"],localVars:[]},body:{body:"if(_inline_1_arg0_<this_h)this_h=_inline_1_arg0_",args:[{name:"_inline_1_arg0_",lvalue:!1,rvalue:!0,count:2}],thisVars:["this_h"],localVars:[]},post:{body:"return this_h",args:[],thisVars:["this_h"],localVars:[]}}),e.argmin=n({args:["index","array","shape"],pre:{body:"{this_v=Infinity;this_i=_inline_0_arg2_.slice(0)}",args:[{name:"_inline_0_arg0_",lvalue:!1,rvalue:!1,count:0},{name:"_inline_0_arg1_",lvalue:!1,rvalue:!1,count:0},{name:"_inline_0_arg2_",lvalue:!1,rvalue:!0,count:1}],thisVars:["this_i","this_v"],localVars:[]},body:{body:"{if(_inline_1_arg1_<this_v){this_v=_inline_1_arg1_;for(var _inline_1_k=0;_inline_1_k<_inline_1_arg0_.length;++_inline_1_k){this_i[_inline_1_k]=_inline_1_arg0_[_inline_1_k]}}}",args:[{name:"_inline_1_arg0_",lvalue:!1,rvalue:!0,count:2},{name:"_inline_1_arg1_",lvalue:!1,rvalue:!0,count:2}],thisVars:["this_i","this_v"],localVars:["_inline_1_k"]},post:{body:"{return this_i}",args:[],thisVars:["this_i"],localVars:[]}}),e.argmax=n({args:["index","array","shape"],pre:{body:"{this_v=-Infinity;this_i=_inline_0_arg2_.slice(0)}",args:[{name:"_inline_0_arg0_",lvalue:!1,rvalue:!1,count:0},{name:"_inline_0_arg1_",lvalue:!1,rvalue:!1,count:0},{name:"_inline_0_arg2_",lvalue:!1,rvalue:!0,count:1}],thisVars:["this_i","this_v"],localVars:[]},body:{body:"{if(_inline_1_arg1_>this_v){this_v=_inline_1_arg1_;for(var _inline_1_k=0;_inline_1_k<_inline_1_arg0_.length;++_inline_1_k){this_i[_inline_1_k]=_inline_1_arg0_[_inline_1_k]}}}",args:[{name:"_inline_1_arg0_",lvalue:!1,rvalue:!0,count:2},{name:"_inline_1_arg1_",lvalue:!1,rvalue:!0,count:2}],thisVars:["this_i","this_v"],localVars:["_inline_1_k"]},post:{body:"{return this_i}",args:[],thisVars:["this_i"],localVars:[]}}),e.random=s({args:["array"],pre:{args:[],body:"this_f=Math.random",thisVars:["this_f"]},body:{args:["a"],body:"a=this_f()",thisVars:["this_f"]},funcName:"random"}),e.assign=s({args:["array","array"],body:{args:["a","b"],body:"a=b"},funcName:"assign"}),e.assigns=s({args:["array","scalar"],body:{args:["a","b"],body:"a=b"},funcName:"assigns"}),e.equals=n({args:["array","array"],pre:t,body:{args:[{name:"x",lvalue:!1,rvalue:!0,count:1},{name:"y",lvalue:!1,rvalue:!0,count:1}],body:"if(x!==y){return false}",localVars:[],thisVars:[]},post:{args:[],localVars:[],thisVars:[],body:"return true"},funcName:"equals"})}(kc);var Ic=t(kc),Dc=[[474,475],[475,476],[476,477],[477,474]],Oc=[[469,470],[470,471],[471,472],[472,469]],Tc=[[10,338],[338,297],[297,332],[332,284],[284,251],[251,389],[389,356],[356,454],[454,323],[323,361],[361,288],[288,397],[397,365],[365,379],[379,378],[378,400],[400,377],[377,152],[152,148],[148,176],[176,149],[149,150],[150,136],[136,172],[172,58],[58,132],[132,93],[93,234],[234,127],[127,162],[162,21],[21,54],[54,103],[103,67],[67,109],[109,10]];function Pc(e,n,t,i){e.forEach((e=>{const s=n[e[0]].x*t;i(s)}))}function Fc(e,n,t){n.forEach((n=>{const i=e[n];t.push([i.x,i.y])}))}function Nc(e,n,t,i,s){return Math.min(e,n)*s*(t/i)/10}function qc(e){let n=1/0,t=-1/0,i=1/0,s=-1/0;e.forEach((e=>{n=Math.min(n,e[0]),t=Math.max(t,e[0]),i=Math.min(i,e[1]),s=Math.max(s,e[1])}));return{headWidth:t-n,headHeight:s-i,headCenterX:(n+t)/2,headCenterY:(i+s)/2}}function zc(e){let n=0;for(let t=0;t<e.length;t++){const i=(t+1)%e.length;n+=e[t][0]*e[i][1],n-=e[i][0]*e[t][1]}return Math.abs(n/2)}var Vc=Object.freeze({__proto__:null,FACEMESH_FACE_OVAL:Tc,FACEMESH_LEFT_IRIS:Dc,FACEMESH_RIGHT_IRIS:Oc,calculateHeadMetrics:qc,convertToYolo:function(e,n,t){let i=(e[0][0]+e[2][0])/2,s=(e[1][1]+e[3][1])/2,a=e[2][0]-e[0][0],o=e[3][1]-e[1][1],r=[i,s,a,o];return a=r[2]*n,o=r[3]*t,[(r[0]-r[2]/2)*n,(r[1]-r[3]/2)*t,a,o]},defaultDeviceConfig:{screenWidth:30.2,screenHeight:19.6,screenWidthPX:1512,screenHeightPX:892,webcamHeight:2,normalizedFocalLength:1.3},defaultParticipantConfig:{headCenterX:.4383369982242584,headCenterY:.6562557443976402,headHeight:.3467509150505066,headWidth:.17240141332149506,widthLeftIris:29.442644119262695,widthRightIris:29.782133102416992,canvasContour:[[.4412970542907715,.4813721179962158],[.4646510183811188,.4823227524757385],[.48430705070495605,.48748111724853516],[.5025681853294373,.4987863302230835],[.5136374235153198,.5169670581817627],[.5202310681343079,.5401103496551514],[.5239146947860718,.5652479529380798],[.5248485207557678,.5970170497894287],[.5236638784408569,.6280523538589478],[.5220870971679688,.6599369645118713],[.519332766532898,.6945410370826721],[.5138625502586365,.7309722304344177],[.5065117478370667,.7603253722190857],[.4982540011405945,.7814207673072815],[.48702606558799744,.7993608713150024],[.4769010543823242,.8114907741546631],[.46630799770355225,.8215509057044983],[.4544796049594879,.8288376331329346],[.4395001232624054,.8312488794326782],[.42436403036117554,.8285082578659058],[.41225385665893555,.8210300207138062],[.40132373571395874,.8104891777038574],[.3908883333206177,.7982432246208191],[.3792901039123535,.7797933220863342],[.3707539737224579,.7583227753639221],[.36319053173065186,.728979766368866],[.35756009817123413,.6924722790718079],[.35495781898498535,.6577485203742981],[.35378265380859375,.6259740591049194],[.35298871994018555,.594894528388977],[.35470905900001526,.5631847381591797],[.3590857684612274,.5380555391311646],[.3667783737182617,.5149739384651184],[.37868133187294006,.4971347451210022],[.3973395824432373,.4863966703414917],[.41754668951034546,.4818713068962097]]},initEyeTracking:function(e=!1,n=!1){blueCircle=window.document.createElement("div"),blueCircle.setAttribute("id","blueCircle"),blueCircle.style.position="absolute",blueCircle.style.width="20px",blueCircle.style.height="20px",blueCircle.style.backgroundColor="blue",blueCircle.style.borderRadius="50%",blueCircle.style.transform="translate(-50%, -50%)",blueCircle.style.display="none",document.body.appendChild(blueCircle);const t=document.createElement("canvas");t.setAttribute("id","leftEye"),t.setAttribute("width","128"),t.setAttribute("height","128"),t.style.position="absolute",t.style.top="0",t.style.left="0",t.style.display="none",document.body.appendChild(t);const i=document.createElement("canvas");i.setAttribute("id","rightEye"),i.setAttribute("width","128"),i.setAttribute("height","128"),i.style.position="absolute",i.style.top="0",i.style.left="128px",i.style.display="none",document.body.appendChild(i),e&&(t.style.display="block",i.style.display="block"),n&&(blueCircle.style.display="block"),leftEyectx=t.getContext("2d",{willReadFrequently:!0}),rightEyectx=i.getContext("2d",{willReadFrequently:!0})},isAreaWithinRange:function(e,n){const t=zc(e),i=zc(n);return i>=.82*t&&i<=1.17*t},isCentroidInsidePath:function(e,n){return function(e,n){let t=!1;const i=e[0],s=e[1];for(let e=0,a=n.length-1;e<n.length;a=e++){const o=n[e][0],r=n[e][1],c=n[a][0],l=n[a][1];r>s!=l>s&&i<(c-o)*(s-r)/(l-r)+o&&(t=!t)}return t}(function(e){let n=0,t=0;for(let i=0;i<e.length;i++)n+=e[i][0],t+=e[i][1];return[n/e.length,t/e.length]}(n),e)},onResultsFaceMesh:function(e){const n=e.image.width,t=e.image.height,i=[],s=[],a=[];let o=1/0,r=-1/0,c=1/0,l=-1/0;if(headCtx.save(),headCtx.clearRect(0,0,headCanvas.width,headCanvas.height),e.multiFaceLandmarks&&e.multiFaceLandmarks.forEach((e=>{if(Pc(Dc,e,n,(e=>{o=Math.min(o,e),r=Math.max(r,e)})),Pc(Oc,e,n,(e=>{c=Math.min(c,e),l=Math.max(l,e)})),Fc(e,[130,27,243,23],i),Fc(e,[463,257,359,253],s),"undefined"!=typeof canvasContour&&canvasContour){var p=function(e,n,t,i,s,a,o){if(!e)return;const r=[],c=e.map((e=>[e[0]*t,e[1]*i]));return n.beginPath(),c.forEach((([e,t],i)=>{r.push([e,t]),n[0===i?"moveTo":"lineTo"](e,t)})),n.closePath(),n.strokeStyle=s,n.lineWidth=a,n.fillStyle=o,n.stroke(),r}(canvasContour,headCtx,n,t,"rgba(13, 110, 253, 1.0)",3,"transparent");fixedContour=p}var u=function(e,n,t,i,s,a){const o=e.map((e=>{const t=n[e[0]];return a.push([t.x,t.y]),[t.x*i,t.y*s]})),r=[];return t.beginPath(),o.forEach((([e,n],i)=>{r.push([e,n]),t[0===i?"moveTo":"lineTo"](e,n)})),t.closePath(),t.fillStyle="rgba(13, 110, 253, 1.0)",t.fill(),r}(Tc,e,headCtx,n,t,a);movingContour=u})),headCtx.restore(),normalizedFocalLength>0){const e=((Nc(n,t,11.7,r-o,normalizedFocalLength)+Nc(n,t,11.7,l-c,normalizedFocalLength))/2).toFixed(0);current_viewingDistance=e}focalLengthMultiple=Math.min(n,t),irisMetrics={widthLeftIris:r-o,widthRightIris:l-c},headMetrics=qc(a),leftEyeCoordinates=i,rightEyeCoordinates=s,headCoordinates=a},preprocess:function(e,n,t){const i=wc(new Float32Array(e),[n,t,4]),s=wc(new Float32Array(n*t*3),[1,3,t,n]);return Ic.divseq(i,255),Ic.assign(s.pick(0,0,null,null),i.pick(null,null,2)),Ic.assign(s.pick(0,1,null,null),i.pick(null,null,1)),Ic.assign(s.pick(0,2,null,null),i.pick(null,null,0)),new Float32Array(s.data)},preprocess_kps:function(e,n,t){const i=wc(new Float32Array(e),[e.length]),s=wc(new Float32Array(e.length),[1,e.length]);return Ic.assign(s.pick(0,null),i),new Float32Array(s.data)}}),Bc={};const Uc=Object.prototype.toString;function Hc(e){const n=Uc.call(e);return n.endsWith("Array]")&&!n.includes("Big")}var Wc=i(Object.freeze({__proto__:null,isAnyArray:Hc}));var $c=i(Object.freeze({__proto__:null,default:function(e){var n,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!Hc(e))throw new TypeError("input must be an array");if(0===e.length)throw new TypeError("input must not be empty");if(void 0!==t.output){if(!Hc(t.output))throw new TypeError("output option must be an array if specified");n=t.output}else n=new Array(e.length);var i=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!Hc(e))throw new TypeError("input must be an array");if(0===e.length)throw new TypeError("input must not be empty");var t=n.fromIndex,i=void 0===t?0:t,s=n.toIndex,a=void 0===s?e.length:s;if(i<0||i>=e.length||!Number.isInteger(i))throw new Error("fromIndex must be a positive integer smaller than length");if(a<=i||a>e.length||!Number.isInteger(a))throw new Error("toIndex must be an integer greater than fromIndex and at most equal to length");for(var o=e[i],r=i+1;r<a;r++)e[r]<o&&(o=e[r]);return o}(e),s=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!Hc(e))throw new TypeError("input must be an array");if(0===e.length)throw new TypeError("input must not be empty");var t=n.fromIndex,i=void 0===t?0:t,s=n.toIndex,a=void 0===s?e.length:s;if(i<0||i>=e.length||!Number.isInteger(i))throw new Error("fromIndex must be a positive integer smaller than length");if(a<=i||a>e.length||!Number.isInteger(a))throw new Error("toIndex must be an integer greater than fromIndex and at most equal to length");for(var o=e[i],r=i+1;r<a;r++)e[r]>o&&(o=e[r]);return o}(e);if(i===s)throw new RangeError("minimum and maximum input values are equal. Cannot rescale a constant array");var a=t.min,o=void 0===a?t.autoMinMax?i:0:a,r=t.max,c=void 0===r?t.autoMinMax?s:1:r;if(o>=c)throw new RangeError("min option must be smaller than max option");for(var l=(c-o)/(s-i),p=0;p<e.length;p++)n[p]=(e[p]-i)*l+o;return n}}));Object.defineProperty(Bc,"__esModule",{value:!0});var Yc=Wc,Kc=$c;const Xc=" ".repeat(2),Gc=" ".repeat(4);function Jc(e,n={}){const{maxRows:t=15,maxColumns:i=10,maxNumSize:s=8,padMinus:a="auto"}=n;return`${e.constructor.name} {\n${Xc}[\n${Gc}${function(e,n,t,i,s){const{rows:a,columns:o}=e,r=Math.min(a,n),c=Math.min(o,t),l=[];if("auto"===s){s=!1;e:for(let n=0;n<r;n++)for(let t=0;t<c;t++)if(e.get(n,t)<0){s=!0;break e}}for(let n=0;n<r;n++){let t=[];for(let a=0;a<c;a++)t.push(Qc(e.get(n,a),i,s));l.push(`${t.join(" ")}`)}c!==o&&(l[l.length-1]+=` ... ${o-t} more columns`);r!==a&&l.push(`... ${a-n} more rows`);return l.join(`\n${Gc}`)}(e,t,i,s,a)}\n${Xc}]\n${Xc}rows: ${e.rows}\n${Xc}columns: ${e.columns}\n}`}function Qc(e,n,t){return(e>=0&&t?` ${Zc(e,n-1)}`:Zc(e,n)).padEnd(n)}function Zc(e,n){let t=e.toString();if(t.length<=n)return t;let i=e.toFixed(n);if(i.length>n&&(i=e.toFixed(Math.max(0,n-(i.length-n)))),i.length<=n&&!i.startsWith("0.000")&&!i.startsWith("-0.000"))return i;let s=e.toExponential(n);return s.length>n&&(s=e.toExponential(Math.max(0,n-(s.length-n)))),s.slice(0)}function el(e,n,t){let i=t?e.rows:e.rows-1;if(n<0||n>i)throw new RangeError("Row index out of range")}function nl(e,n,t){let i=t?e.columns:e.columns-1;if(n<0||n>i)throw new RangeError("Column index out of range")}function tl(e,n){if(n.to1DArray&&(n=n.to1DArray()),n.length!==e.columns)throw new RangeError("vector size must be the same as the number of columns");return n}function il(e,n){if(n.to1DArray&&(n=n.to1DArray()),n.length!==e.rows)throw new RangeError("vector size must be the same as the number of rows");return n}function sl(e,n){if(!Yc.isAnyArray(n))throw new TypeError("row indices must be an array");for(let t=0;t<n.length;t++)if(n[t]<0||n[t]>=e.rows)throw new RangeError("row indices are out of range")}function al(e,n){if(!Yc.isAnyArray(n))throw new TypeError("column indices must be an array");for(let t=0;t<n.length;t++)if(n[t]<0||n[t]>=e.columns)throw new RangeError("column indices are out of range")}function ol(e,n,t,i,s){if(5!==arguments.length)throw new RangeError("expected 4 arguments");if(cl("startRow",n),cl("endRow",t),cl("startColumn",i),cl("endColumn",s),n>t||i>s||n<0||n>=e.rows||t<0||t>=e.rows||i<0||i>=e.columns||s<0||s>=e.columns)throw new RangeError("Submatrix indices are out of range")}function rl(e,n=0){let t=[];for(let i=0;i<e;i++)t.push(n);return t}function cl(e,n){if("number"!=typeof n)throw new TypeError(`${e} must be a number`)}function ll(e){if(e.isEmpty())throw new Error("Empty matrix has no elements to index")}class pl{static from1DArray(e,n,t){if(e*n!==t.length)throw new RangeError("data length does not match given dimensions");let i=new dl(e,n);for(let s=0;s<e;s++)for(let e=0;e<n;e++)i.set(s,e,t[s*n+e]);return i}static rowVector(e){let n=new dl(1,e.length);for(let t=0;t<e.length;t++)n.set(0,t,e[t]);return n}static columnVector(e){let n=new dl(e.length,1);for(let t=0;t<e.length;t++)n.set(t,0,e[t]);return n}static zeros(e,n){return new dl(e,n)}static ones(e,n){return new dl(e,n).fill(1)}static rand(e,n,t={}){if("object"!=typeof t)throw new TypeError("options must be an object");const{random:i=Math.random}=t;let s=new dl(e,n);for(let t=0;t<e;t++)for(let e=0;e<n;e++)s.set(t,e,i());return s}static randInt(e,n,t={}){if("object"!=typeof t)throw new TypeError("options must be an object");const{min:i=0,max:s=1e3,random:a=Math.random}=t;if(!Number.isInteger(i))throw new TypeError("min must be an integer");if(!Number.isInteger(s))throw new TypeError("max must be an integer");if(i>=s)throw new RangeError("min must be smaller than max");let o=s-i,r=new dl(e,n);for(let t=0;t<e;t++)for(let e=0;e<n;e++){let n=i+Math.round(a()*o);r.set(t,e,n)}return r}static eye(e,n,t){void 0===n&&(n=e),void 0===t&&(t=1);let i=Math.min(e,n),s=this.zeros(e,n);for(let e=0;e<i;e++)s.set(e,e,t);return s}static diag(e,n,t){let i=e.length;void 0===n&&(n=i),void 0===t&&(t=n);let s=Math.min(i,n,t),a=this.zeros(n,t);for(let n=0;n<s;n++)a.set(n,n,e[n]);return a}static min(e,n){e=this.checkMatrix(e),n=this.checkMatrix(n);let t=e.rows,i=e.columns,s=new dl(t,i);for(let a=0;a<t;a++)for(let t=0;t<i;t++)s.set(a,t,Math.min(e.get(a,t),n.get(a,t)));return s}static max(e,n){e=this.checkMatrix(e),n=this.checkMatrix(n);let t=e.rows,i=e.columns,s=new this(t,i);for(let a=0;a<t;a++)for(let t=0;t<i;t++)s.set(a,t,Math.max(e.get(a,t),n.get(a,t)));return s}static checkMatrix(e){return pl.isMatrix(e)?e:new dl(e)}static isMatrix(e){return null!=e&&"Matrix"===e.klass}get size(){return this.rows*this.columns}apply(e){if("function"!=typeof e)throw new TypeError("callback must be a function");for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)e.call(this,n,t);return this}to1DArray(){let e=[];for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)e.push(this.get(n,t));return e}to2DArray(){let e=[];for(let n=0;n<this.rows;n++){e.push([]);for(let t=0;t<this.columns;t++)e[n].push(this.get(n,t))}return e}toJSON(){return this.to2DArray()}isRowVector(){return 1===this.rows}isColumnVector(){return 1===this.columns}isVector(){return 1===this.rows||1===this.columns}isSquare(){return this.rows===this.columns}isEmpty(){return 0===this.rows||0===this.columns}isSymmetric(){if(this.isSquare()){for(let e=0;e<this.rows;e++)for(let n=0;n<=e;n++)if(this.get(e,n)!==this.get(n,e))return!1;return!0}return!1}isDistance(){if(!this.isSymmetric())return!1;for(let e=0;e<this.rows;e++)if(0!==this.get(e,e))return!1;return!0}isEchelonForm(){let e=0,n=0,t=-1,i=!0,s=!1;for(;e<this.rows&&i;){for(n=0,s=!1;n<this.columns&&!1===s;)0===this.get(e,n)?n++:1===this.get(e,n)&&n>t?(s=!0,t=n):(i=!1,s=!0);e++}return i}isReducedEchelonForm(){let e=0,n=0,t=-1,i=!0,s=!1;for(;e<this.rows&&i;){for(n=0,s=!1;n<this.columns&&!1===s;)0===this.get(e,n)?n++:1===this.get(e,n)&&n>t?(s=!0,t=n):(i=!1,s=!0);for(let t=n+1;t<this.rows;t++)0!==this.get(e,t)&&(i=!1);e++}return i}echelonForm(){let e=this.clone(),n=0,t=0;for(;n<e.rows&&t<e.columns;){let i=n;for(let s=n;s<e.rows;s++)e.get(s,t)>e.get(i,t)&&(i=s);if(0===e.get(i,t))t++;else{e.swapRows(n,i);let s=e.get(n,t);for(let i=t;i<e.columns;i++)e.set(n,i,e.get(n,i)/s);for(let i=n+1;i<e.rows;i++){let s=e.get(i,t)/e.get(n,t);e.set(i,t,0);for(let a=t+1;a<e.columns;a++)e.set(i,a,e.get(i,a)-e.get(n,a)*s)}n++,t++}}return e}reducedEchelonForm(){let e=this.echelonForm(),n=e.columns,t=e.rows,i=t-1;for(;i>=0;)if(0===e.maxRow(i))i--;else{let s=0,a=!1;for(;s<t&&!1===a;)1===e.get(i,s)?a=!0:s++;for(let t=0;t<i;t++){let a=e.get(t,s);for(let o=s;o<n;o++){let n=e.get(t,o)-a*e.get(i,o);e.set(t,o,n)}}i--}return e}set(){throw new Error("set method is unimplemented")}get(){throw new Error("get method is unimplemented")}repeat(e={}){if("object"!=typeof e)throw new TypeError("options must be an object");const{rows:n=1,columns:t=1}=e;if(!Number.isInteger(n)||n<=0)throw new TypeError("rows must be a positive integer");if(!Number.isInteger(t)||t<=0)throw new TypeError("columns must be a positive integer");let i=new dl(this.rows*n,this.columns*t);for(let e=0;e<n;e++)for(let n=0;n<t;n++)i.setSubMatrix(this,this.rows*e,this.columns*n);return i}fill(e){for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.set(n,t,e);return this}neg(){return this.mulS(-1)}getRow(e){el(this,e);let n=[];for(let t=0;t<this.columns;t++)n.push(this.get(e,t));return n}getRowVector(e){return dl.rowVector(this.getRow(e))}setRow(e,n){el(this,e),n=tl(this,n);for(let t=0;t<this.columns;t++)this.set(e,t,n[t]);return this}swapRows(e,n){el(this,e),el(this,n);for(let t=0;t<this.columns;t++){let i=this.get(e,t);this.set(e,t,this.get(n,t)),this.set(n,t,i)}return this}getColumn(e){nl(this,e);let n=[];for(let t=0;t<this.rows;t++)n.push(this.get(t,e));return n}getColumnVector(e){return dl.columnVector(this.getColumn(e))}setColumn(e,n){nl(this,e),n=il(this,n);for(let t=0;t<this.rows;t++)this.set(t,e,n[t]);return this}swapColumns(e,n){nl(this,e),nl(this,n);for(let t=0;t<this.rows;t++){let i=this.get(t,e);this.set(t,e,this.get(t,n)),this.set(t,n,i)}return this}addRowVector(e){e=tl(this,e);for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.set(n,t,this.get(n,t)+e[t]);return this}subRowVector(e){e=tl(this,e);for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.set(n,t,this.get(n,t)-e[t]);return this}mulRowVector(e){e=tl(this,e);for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.set(n,t,this.get(n,t)*e[t]);return this}divRowVector(e){e=tl(this,e);for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.set(n,t,this.get(n,t)/e[t]);return this}addColumnVector(e){e=il(this,e);for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.set(n,t,this.get(n,t)+e[n]);return this}subColumnVector(e){e=il(this,e);for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.set(n,t,this.get(n,t)-e[n]);return this}mulColumnVector(e){e=il(this,e);for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.set(n,t,this.get(n,t)*e[n]);return this}divColumnVector(e){e=il(this,e);for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.set(n,t,this.get(n,t)/e[n]);return this}mulRow(e,n){el(this,e);for(let t=0;t<this.columns;t++)this.set(e,t,this.get(e,t)*n);return this}mulColumn(e,n){nl(this,e);for(let t=0;t<this.rows;t++)this.set(t,e,this.get(t,e)*n);return this}max(e){if(this.isEmpty())return NaN;switch(e){case"row":{const e=new Array(this.rows).fill(Number.NEGATIVE_INFINITY);for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.get(n,t)>e[n]&&(e[n]=this.get(n,t));return e}case"column":{const e=new Array(this.columns).fill(Number.NEGATIVE_INFINITY);for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.get(n,t)>e[t]&&(e[t]=this.get(n,t));return e}case void 0:{let e=this.get(0,0);for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.get(n,t)>e&&(e=this.get(n,t));return e}default:throw new Error(`invalid option: ${e}`)}}maxIndex(){ll(this);let e=this.get(0,0),n=[0,0];for(let t=0;t<this.rows;t++)for(let i=0;i<this.columns;i++)this.get(t,i)>e&&(e=this.get(t,i),n[0]=t,n[1]=i);return n}min(e){if(this.isEmpty())return NaN;switch(e){case"row":{const e=new Array(this.rows).fill(Number.POSITIVE_INFINITY);for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.get(n,t)<e[n]&&(e[n]=this.get(n,t));return e}case"column":{const e=new Array(this.columns).fill(Number.POSITIVE_INFINITY);for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.get(n,t)<e[t]&&(e[t]=this.get(n,t));return e}case void 0:{let e=this.get(0,0);for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.get(n,t)<e&&(e=this.get(n,t));return e}default:throw new Error(`invalid option: ${e}`)}}minIndex(){ll(this);let e=this.get(0,0),n=[0,0];for(let t=0;t<this.rows;t++)for(let i=0;i<this.columns;i++)this.get(t,i)<e&&(e=this.get(t,i),n[0]=t,n[1]=i);return n}maxRow(e){if(el(this,e),this.isEmpty())return NaN;let n=this.get(e,0);for(let t=1;t<this.columns;t++)this.get(e,t)>n&&(n=this.get(e,t));return n}maxRowIndex(e){el(this,e),ll(this);let n=this.get(e,0),t=[e,0];for(let i=1;i<this.columns;i++)this.get(e,i)>n&&(n=this.get(e,i),t[1]=i);return t}minRow(e){if(el(this,e),this.isEmpty())return NaN;let n=this.get(e,0);for(let t=1;t<this.columns;t++)this.get(e,t)<n&&(n=this.get(e,t));return n}minRowIndex(e){el(this,e),ll(this);let n=this.get(e,0),t=[e,0];for(let i=1;i<this.columns;i++)this.get(e,i)<n&&(n=this.get(e,i),t[1]=i);return t}maxColumn(e){if(nl(this,e),this.isEmpty())return NaN;let n=this.get(0,e);for(let t=1;t<this.rows;t++)this.get(t,e)>n&&(n=this.get(t,e));return n}maxColumnIndex(e){nl(this,e),ll(this);let n=this.get(0,e),t=[0,e];for(let i=1;i<this.rows;i++)this.get(i,e)>n&&(n=this.get(i,e),t[0]=i);return t}minColumn(e){if(nl(this,e),this.isEmpty())return NaN;let n=this.get(0,e);for(let t=1;t<this.rows;t++)this.get(t,e)<n&&(n=this.get(t,e));return n}minColumnIndex(e){nl(this,e),ll(this);let n=this.get(0,e),t=[0,e];for(let i=1;i<this.rows;i++)this.get(i,e)<n&&(n=this.get(i,e),t[0]=i);return t}diag(){let e=Math.min(this.rows,this.columns),n=[];for(let t=0;t<e;t++)n.push(this.get(t,t));return n}norm(e="frobenius"){switch(e){case"max":return this.max();case"frobenius":return Math.sqrt(this.dot(this));default:throw new RangeError(`unknown norm type: ${e}`)}}cumulativeSum(){let e=0;for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)e+=this.get(n,t),this.set(n,t,e);return this}dot(e){pl.isMatrix(e)&&(e=e.to1DArray());let n=this.to1DArray();if(n.length!==e.length)throw new RangeError("vectors do not have the same size");let t=0;for(let i=0;i<n.length;i++)t+=n[i]*e[i];return t}mmul(e){e=dl.checkMatrix(e);let n=this.rows,t=this.columns,i=e.columns,s=new dl(n,i),a=new Float64Array(t);for(let o=0;o<i;o++){for(let n=0;n<t;n++)a[n]=e.get(n,o);for(let e=0;e<n;e++){let n=0;for(let i=0;i<t;i++)n+=this.get(e,i)*a[i];s.set(e,o,n)}}return s}strassen2x2(e){e=dl.checkMatrix(e);let n=new dl(2,2);const t=this.get(0,0),i=e.get(0,0),s=this.get(0,1),a=e.get(0,1),o=this.get(1,0),r=e.get(1,0),c=this.get(1,1),l=e.get(1,1),p=(t+c)*(i+l),u=(o+c)*i,d=t*(a-l),g=c*(r-i),m=(t+s)*l,v=p+g-m+(s-c)*(r+l),h=d+m,f=u+g,x=p-u+d+(o-t)*(i+a);return n.set(0,0,v),n.set(0,1,h),n.set(1,0,f),n.set(1,1,x),n}strassen3x3(e){e=dl.checkMatrix(e);let n=new dl(3,3);const t=this.get(0,0),i=this.get(0,1),s=this.get(0,2),a=this.get(1,0),o=this.get(1,1),r=this.get(1,2),c=this.get(2,0),l=this.get(2,1),p=this.get(2,2),u=e.get(0,0),d=e.get(0,1),g=e.get(0,2),m=e.get(1,0),v=e.get(1,1),h=e.get(1,2),f=e.get(2,0),x=e.get(2,1),b=e.get(2,2),y=(t-a)*(-d+v),w=(-t+a+o)*(u-d+v),k=(a+o)*(-u+d),S=t*u,j=(-t+c+l)*(u-g+h),_=(-t+c)*(g-h),C=(c+l)*(-u+g),A=(-s+l+p)*(v+f-x),E=(s-p)*(v-x),R=s*f,L=(l+p)*(-f+x),M=(-s+o+r)*(h+f-b),I=(s-r)*(h-b),D=(o+r)*(-f+b),O=S+R+i*m,T=(t+i+s-a-o-l-p)*v+w+k+S+A+R+L,P=S+j+C+(t+i+s-o-r-c-l)*h+R+M+D,F=y+o*(-u+d+m-v-h-f+b)+w+S+R+M+I,N=y+w+k+S+r*x,q=R+M+I+D+a*g,z=S+j+_+l*(-u+g+m-v-h-f+x)+A+E+R,V=A+E+R+L+c*d,B=S+j+_+C+p*b;return n.set(0,0,O),n.set(0,1,T),n.set(0,2,P),n.set(1,0,F),n.set(1,1,N),n.set(1,2,q),n.set(2,0,z),n.set(2,1,V),n.set(2,2,B),n}mmulStrassen(e){e=dl.checkMatrix(e);let n=this.clone(),t=n.rows,i=n.columns,s=e.rows,a=e.columns;function o(e,n,t){let i=e.rows,s=e.columns;if(i===n&&s===t)return e;{let i=pl.zeros(n,t);return i=i.setSubMatrix(e,0,0),i}}i!==s&&console.warn(`Multiplying ${t} x ${i} and ${s} x ${a} matrix: dimensions do not match.`);let r=Math.max(t,s),c=Math.max(i,a);return n=o(n,r,c),function e(n,t,i,s){if(i<=512||s<=512)return n.mmul(t);i%2==1&&s%2==1?(n=o(n,i+1,s+1),t=o(t,i+1,s+1)):i%2==1?(n=o(n,i+1,s),t=o(t,i+1,s)):s%2==1&&(n=o(n,i,s+1),t=o(t,i,s+1));let a=parseInt(n.rows/2,10),r=parseInt(n.columns/2,10),c=n.subMatrix(0,a-1,0,r-1),l=t.subMatrix(0,a-1,0,r-1),p=n.subMatrix(0,a-1,r,n.columns-1),u=t.subMatrix(0,a-1,r,t.columns-1),d=n.subMatrix(a,n.rows-1,0,r-1),g=t.subMatrix(a,t.rows-1,0,r-1),m=n.subMatrix(a,n.rows-1,r,n.columns-1),v=t.subMatrix(a,t.rows-1,r,t.columns-1),h=e(pl.add(c,m),pl.add(l,v),a,r),f=e(pl.add(d,m),l,a,r),x=e(c,pl.sub(u,v),a,r),b=e(m,pl.sub(g,l),a,r),y=e(pl.add(c,p),v,a,r),w=e(pl.sub(d,c),pl.add(l,u),a,r),k=e(pl.sub(p,m),pl.add(g,v),a,r),S=pl.add(h,b);S.sub(y),S.add(k);let j=pl.add(x,y),_=pl.add(f,b),C=pl.sub(h,f);C.add(x),C.add(w);let A=pl.zeros(2*S.rows,2*S.columns);return A=A.setSubMatrix(S,0,0),A=A.setSubMatrix(j,S.rows,0),A=A.setSubMatrix(_,0,S.columns),A=A.setSubMatrix(C,S.rows,S.columns),A.subMatrix(0,i-1,0,s-1)}(n,e=o(e,r,c),r,c)}scaleRows(e={}){if("object"!=typeof e)throw new TypeError("options must be an object");const{min:n=0,max:t=1}=e;if(!Number.isFinite(n))throw new TypeError("min must be a number");if(!Number.isFinite(t))throw new TypeError("max must be a number");if(n>=t)throw new RangeError("min must be smaller than max");let i=new dl(this.rows,this.columns);for(let e=0;e<this.rows;e++){const s=this.getRow(e);s.length>0&&Kc(s,{min:n,max:t,output:s}),i.setRow(e,s)}return i}scaleColumns(e={}){if("object"!=typeof e)throw new TypeError("options must be an object");const{min:n=0,max:t=1}=e;if(!Number.isFinite(n))throw new TypeError("min must be a number");if(!Number.isFinite(t))throw new TypeError("max must be a number");if(n>=t)throw new RangeError("min must be smaller than max");let i=new dl(this.rows,this.columns);for(let e=0;e<this.columns;e++){const s=this.getColumn(e);s.length&&Kc(s,{min:n,max:t,output:s}),i.setColumn(e,s)}return i}flipRows(){const e=Math.ceil(this.columns/2);for(let n=0;n<this.rows;n++)for(let t=0;t<e;t++){let e=this.get(n,t),i=this.get(n,this.columns-1-t);this.set(n,t,i),this.set(n,this.columns-1-t,e)}return this}flipColumns(){const e=Math.ceil(this.rows/2);for(let n=0;n<this.columns;n++)for(let t=0;t<e;t++){let e=this.get(t,n),i=this.get(this.rows-1-t,n);this.set(t,n,i),this.set(this.rows-1-t,n,e)}return this}kroneckerProduct(e){e=dl.checkMatrix(e);let n=this.rows,t=this.columns,i=e.rows,s=e.columns,a=new dl(n*i,t*s);for(let o=0;o<n;o++)for(let n=0;n<t;n++)for(let t=0;t<i;t++)for(let r=0;r<s;r++)a.set(i*o+t,s*n+r,this.get(o,n)*e.get(t,r));return a}kroneckerSum(e){if(e=dl.checkMatrix(e),!this.isSquare()||!e.isSquare())throw new Error("Kronecker Sum needs two Square Matrices");let n=this.rows,t=e.rows,i=this.kroneckerProduct(dl.eye(t,t)),s=dl.eye(n,n).kroneckerProduct(e);return i.add(s)}transpose(){let e=new dl(this.columns,this.rows);for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)e.set(t,n,this.get(n,t));return e}sortRows(e=ul){for(let n=0;n<this.rows;n++)this.setRow(n,this.getRow(n).sort(e));return this}sortColumns(e=ul){for(let n=0;n<this.columns;n++)this.setColumn(n,this.getColumn(n).sort(e));return this}subMatrix(e,n,t,i){ol(this,e,n,t,i);let s=new dl(n-e+1,i-t+1);for(let a=e;a<=n;a++)for(let n=t;n<=i;n++)s.set(a-e,n-t,this.get(a,n));return s}subMatrixRow(e,n,t){if(void 0===n&&(n=0),void 0===t&&(t=this.columns-1),n>t||n<0||n>=this.columns||t<0||t>=this.columns)throw new RangeError("Argument out of range");let i=new dl(e.length,t-n+1);for(let s=0;s<e.length;s++)for(let a=n;a<=t;a++){if(e[s]<0||e[s]>=this.rows)throw new RangeError(`Row index out of range: ${e[s]}`);i.set(s,a-n,this.get(e[s],a))}return i}subMatrixColumn(e,n,t){if(void 0===n&&(n=0),void 0===t&&(t=this.rows-1),n>t||n<0||n>=this.rows||t<0||t>=this.rows)throw new RangeError("Argument out of range");let i=new dl(t-n+1,e.length);for(let s=0;s<e.length;s++)for(let a=n;a<=t;a++){if(e[s]<0||e[s]>=this.columns)throw new RangeError(`Column index out of range: ${e[s]}`);i.set(a-n,s,this.get(a,e[s]))}return i}setSubMatrix(e,n,t){if((e=dl.checkMatrix(e)).isEmpty())return this;ol(this,n,n+e.rows-1,t,t+e.columns-1);for(let i=0;i<e.rows;i++)for(let s=0;s<e.columns;s++)this.set(n+i,t+s,e.get(i,s));return this}selection(e,n){sl(this,e),al(this,n);let t=new dl(e.length,n.length);for(let i=0;i<e.length;i++){let s=e[i];for(let e=0;e<n.length;e++){let a=n[e];t.set(i,e,this.get(s,a))}}return t}trace(){let e=Math.min(this.rows,this.columns),n=0;for(let t=0;t<e;t++)n+=this.get(t,t);return n}clone(){return this.constructor.copy(this,new dl(this.rows,this.columns))}static copy(e,n){for(const[t,i,s]of e.entries())n.set(t,i,s);return n}sum(e){switch(e){case"row":return function(e){let n=rl(e.rows);for(let t=0;t<e.rows;++t)for(let i=0;i<e.columns;++i)n[t]+=e.get(t,i);return n}(this);case"column":return function(e){let n=rl(e.columns);for(let t=0;t<e.rows;++t)for(let i=0;i<e.columns;++i)n[i]+=e.get(t,i);return n}(this);case void 0:return function(e){let n=0;for(let t=0;t<e.rows;t++)for(let i=0;i<e.columns;i++)n+=e.get(t,i);return n}(this);default:throw new Error(`invalid option: ${e}`)}}product(e){switch(e){case"row":return function(e){let n=rl(e.rows,1);for(let t=0;t<e.rows;++t)for(let i=0;i<e.columns;++i)n[t]*=e.get(t,i);return n}(this);case"column":return function(e){let n=rl(e.columns,1);for(let t=0;t<e.rows;++t)for(let i=0;i<e.columns;++i)n[i]*=e.get(t,i);return n}(this);case void 0:return function(e){let n=1;for(let t=0;t<e.rows;t++)for(let i=0;i<e.columns;i++)n*=e.get(t,i);return n}(this);default:throw new Error(`invalid option: ${e}`)}}mean(e){const n=this.sum(e);switch(e){case"row":for(let e=0;e<this.rows;e++)n[e]/=this.columns;return n;case"column":for(let e=0;e<this.columns;e++)n[e]/=this.rows;return n;case void 0:return n/this.size;default:throw new Error(`invalid option: ${e}`)}}variance(e,n={}){if("object"==typeof e&&(n=e,e=void 0),"object"!=typeof n)throw new TypeError("options must be an object");const{unbiased:t=!0,mean:i=this.mean(e)}=n;if("boolean"!=typeof t)throw new TypeError("unbiased must be a boolean");switch(e){case"row":if(!Yc.isAnyArray(i))throw new TypeError("mean must be an array");return function(e,n,t){const i=e.rows,s=e.columns,a=[];for(let o=0;o<i;o++){let i=0,r=0,c=0;for(let n=0;n<s;n++)c=e.get(o,n)-t[o],i+=c,r+=c*c;n?a.push((r-i*i/s)/(s-1)):a.push((r-i*i/s)/s)}return a}(this,t,i);case"column":if(!Yc.isAnyArray(i))throw new TypeError("mean must be an array");return function(e,n,t){const i=e.rows,s=e.columns,a=[];for(let o=0;o<s;o++){let s=0,r=0,c=0;for(let n=0;n<i;n++)c=e.get(n,o)-t[o],s+=c,r+=c*c;n?a.push((r-s*s/i)/(i-1)):a.push((r-s*s/i)/i)}return a}(this,t,i);case void 0:if("number"!=typeof i)throw new TypeError("mean must be a number");return function(e,n,t){const i=e.rows,s=e.columns,a=i*s;let o=0,r=0,c=0;for(let n=0;n<i;n++)for(let i=0;i<s;i++)c=e.get(n,i)-t,o+=c,r+=c*c;return n?(r-o*o/a)/(a-1):(r-o*o/a)/a}(this,t,i);default:throw new Error(`invalid option: ${e}`)}}standardDeviation(e,n){"object"==typeof e&&(n=e,e=void 0);const t=this.variance(e,n);if(void 0===e)return Math.sqrt(t);for(let e=0;e<t.length;e++)t[e]=Math.sqrt(t[e]);return t}center(e,n={}){if("object"==typeof e&&(n=e,e=void 0),"object"!=typeof n)throw new TypeError("options must be an object");const{center:t=this.mean(e)}=n;switch(e){case"row":if(!Yc.isAnyArray(t))throw new TypeError("center must be an array");return function(e,n){for(let t=0;t<e.rows;t++)for(let i=0;i<e.columns;i++)e.set(t,i,e.get(t,i)-n[t])}(this,t),this;case"column":if(!Yc.isAnyArray(t))throw new TypeError("center must be an array");return function(e,n){for(let t=0;t<e.rows;t++)for(let i=0;i<e.columns;i++)e.set(t,i,e.get(t,i)-n[i])}(this,t),this;case void 0:if("number"!=typeof t)throw new TypeError("center must be a number");return function(e,n){for(let t=0;t<e.rows;t++)for(let i=0;i<e.columns;i++)e.set(t,i,e.get(t,i)-n)}(this,t),this;default:throw new Error(`invalid option: ${e}`)}}scale(e,n={}){if("object"==typeof e&&(n=e,e=void 0),"object"!=typeof n)throw new TypeError("options must be an object");let t=n.scale;switch(e){case"row":if(void 0===t)t=function(e){const n=[];for(let t=0;t<e.rows;t++){let i=0;for(let n=0;n<e.columns;n++)i+=e.get(t,n)**2/(e.columns-1);n.push(Math.sqrt(i))}return n}(this);else if(!Yc.isAnyArray(t))throw new TypeError("scale must be an array");return function(e,n){for(let t=0;t<e.rows;t++)for(let i=0;i<e.columns;i++)e.set(t,i,e.get(t,i)/n[t])}(this,t),this;case"column":if(void 0===t)t=function(e){const n=[];for(let t=0;t<e.columns;t++){let i=0;for(let n=0;n<e.rows;n++)i+=e.get(n,t)**2/(e.rows-1);n.push(Math.sqrt(i))}return n}(this);else if(!Yc.isAnyArray(t))throw new TypeError("scale must be an array");return function(e,n){for(let t=0;t<e.rows;t++)for(let i=0;i<e.columns;i++)e.set(t,i,e.get(t,i)/n[i])}(this,t),this;case void 0:if(void 0===t)t=function(e){const n=e.size-1;let t=0;for(let i=0;i<e.columns;i++)for(let s=0;s<e.rows;s++)t+=e.get(s,i)**2/n;return Math.sqrt(t)}(this);else if("number"!=typeof t)throw new TypeError("scale must be a number");return function(e,n){for(let t=0;t<e.rows;t++)for(let i=0;i<e.columns;i++)e.set(t,i,e.get(t,i)/n)}(this,t),this;default:throw new Error(`invalid option: ${e}`)}}toString(e){return Jc(this,e)}[Symbol.iterator](){return this.entries()}*entries(){for(let e=0;e<this.rows;e++)for(let n=0;n<this.columns;n++)yield[e,n,this.get(e,n)]}*values(){for(let e=0;e<this.rows;e++)for(let n=0;n<this.columns;n++)yield this.get(e,n)}}function ul(e,n){return e-n}pl.prototype.klass="Matrix","undefined"!=typeof Symbol&&(pl.prototype[Symbol.for("nodejs.util.inspect.custom")]=function(){return Jc(this)}),pl.random=pl.rand,pl.randomInt=pl.randInt,pl.diagonal=pl.diag,pl.prototype.diagonal=pl.prototype.diag,pl.identity=pl.eye,pl.prototype.negate=pl.prototype.neg,pl.prototype.tensorProduct=pl.prototype.kroneckerProduct;let dl=class e extends pl{data;#e(e,n){if(this.data=[],!(Number.isInteger(n)&&n>=0))throw new TypeError("nColumns must be a positive integer");for(let t=0;t<e;t++)this.data.push(new Float64Array(n));this.rows=e,this.columns=n}constructor(n,t){if(super(),e.isMatrix(n))this.#e(n.rows,n.columns),e.copy(n,this);else if(Number.isInteger(n)&&n>=0)this.#e(n,t);else{if(!Yc.isAnyArray(n))throw new TypeError("First argument must be a positive number or an array");{const e=n;if("number"!=typeof(t=(n=e.length)?e[0].length:0))throw new TypeError("Data must be a 2D array with at least one element");this.data=[];for(let i=0;i<n;i++){if(e[i].length!==t)throw new RangeError("Inconsistent array dimensions");if(!e[i].every((e=>"number"==typeof e)))throw new TypeError("Input data contains non-numeric values");this.data.push(Float64Array.from(e[i]))}this.rows=n,this.columns=t}}}set(e,n,t){return this.data[e][n]=t,this}get(e,n){return this.data[e][n]}removeRow(e){return el(this,e),this.data.splice(e,1),this.rows-=1,this}addRow(e,n){return void 0===n&&(n=e,e=this.rows),el(this,e,!0),n=Float64Array.from(tl(this,n)),this.data.splice(e,0,n),this.rows+=1,this}removeColumn(e){nl(this,e);for(let n=0;n<this.rows;n++){const t=new Float64Array(this.columns-1);for(let i=0;i<e;i++)t[i]=this.data[n][i];for(let i=e+1;i<this.columns;i++)t[i-1]=this.data[n][i];this.data[n]=t}return this.columns-=1,this}addColumn(e,n){void 0===n&&(n=e,e=this.columns),nl(this,e,!0),n=il(this,n);for(let t=0;t<this.rows;t++){const i=new Float64Array(this.columns+1);let s=0;for(;s<e;s++)i[s]=this.data[t][s];for(i[s++]=n[t];s<this.columns+1;s++)i[s]=this.data[t][s-1];this.data[t]=i}return this.columns+=1,this}};!function(e,n){e.prototype.add=function(e){return"number"==typeof e?this.addS(e):this.addM(e)},e.prototype.addS=function(e){for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.set(n,t,this.get(n,t)+e);return this},e.prototype.addM=function(e){if(e=n.checkMatrix(e),this.rows!==e.rows||this.columns!==e.columns)throw new RangeError("Matrices dimensions must be equal");for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.set(n,t,this.get(n,t)+e.get(n,t));return this},e.add=function(e,t){return new n(e).add(t)},e.prototype.sub=function(e){return"number"==typeof e?this.subS(e):this.subM(e)},e.prototype.subS=function(e){for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.set(n,t,this.get(n,t)-e);return this},e.prototype.subM=function(e){if(e=n.checkMatrix(e),this.rows!==e.rows||this.columns!==e.columns)throw new RangeError("Matrices dimensions must be equal");for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.set(n,t,this.get(n,t)-e.get(n,t));return this},e.sub=function(e,t){return new n(e).sub(t)},e.prototype.subtract=e.prototype.sub,e.prototype.subtractS=e.prototype.subS,e.prototype.subtractM=e.prototype.subM,e.subtract=e.sub,e.prototype.mul=function(e){return"number"==typeof e?this.mulS(e):this.mulM(e)},e.prototype.mulS=function(e){for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.set(n,t,this.get(n,t)*e);return this},e.prototype.mulM=function(e){if(e=n.checkMatrix(e),this.rows!==e.rows||this.columns!==e.columns)throw new RangeError("Matrices dimensions must be equal");for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.set(n,t,this.get(n,t)*e.get(n,t));return this},e.mul=function(e,t){return new n(e).mul(t)},e.prototype.multiply=e.prototype.mul,e.prototype.multiplyS=e.prototype.mulS,e.prototype.multiplyM=e.prototype.mulM,e.multiply=e.mul,e.prototype.div=function(e){return"number"==typeof e?this.divS(e):this.divM(e)},e.prototype.divS=function(e){for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.set(n,t,this.get(n,t)/e);return this},e.prototype.divM=function(e){if(e=n.checkMatrix(e),this.rows!==e.rows||this.columns!==e.columns)throw new RangeError("Matrices dimensions must be equal");for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.set(n,t,this.get(n,t)/e.get(n,t));return this},e.div=function(e,t){return new n(e).div(t)},e.prototype.divide=e.prototype.div,e.prototype.divideS=e.prototype.divS,e.prototype.divideM=e.prototype.divM,e.divide=e.div,e.prototype.mod=function(e){return"number"==typeof e?this.modS(e):this.modM(e)},e.prototype.modS=function(e){for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.set(n,t,this.get(n,t)%e);return this},e.prototype.modM=function(e){if(e=n.checkMatrix(e),this.rows!==e.rows||this.columns!==e.columns)throw new RangeError("Matrices dimensions must be equal");for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.set(n,t,this.get(n,t)%e.get(n,t));return this},e.mod=function(e,t){return new n(e).mod(t)},e.prototype.modulus=e.prototype.mod,e.prototype.modulusS=e.prototype.modS,e.prototype.modulusM=e.prototype.modM,e.modulus=e.mod,e.prototype.and=function(e){return"number"==typeof e?this.andS(e):this.andM(e)},e.prototype.andS=function(e){for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.set(n,t,this.get(n,t)&e);return this},e.prototype.andM=function(e){if(e=n.checkMatrix(e),this.rows!==e.rows||this.columns!==e.columns)throw new RangeError("Matrices dimensions must be equal");for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.set(n,t,this.get(n,t)&e.get(n,t));return this},e.and=function(e,t){return new n(e).and(t)},e.prototype.or=function(e){return"number"==typeof e?this.orS(e):this.orM(e)},e.prototype.orS=function(e){for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.set(n,t,this.get(n,t)|e);return this},e.prototype.orM=function(e){if(e=n.checkMatrix(e),this.rows!==e.rows||this.columns!==e.columns)throw new RangeError("Matrices dimensions must be equal");for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.set(n,t,this.get(n,t)|e.get(n,t));return this},e.or=function(e,t){return new n(e).or(t)},e.prototype.xor=function(e){return"number"==typeof e?this.xorS(e):this.xorM(e)},e.prototype.xorS=function(e){for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.set(n,t,this.get(n,t)^e);return this},e.prototype.xorM=function(e){if(e=n.checkMatrix(e),this.rows!==e.rows||this.columns!==e.columns)throw new RangeError("Matrices dimensions must be equal");for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.set(n,t,this.get(n,t)^e.get(n,t));return this},e.xor=function(e,t){return new n(e).xor(t)},e.prototype.leftShift=function(e){return"number"==typeof e?this.leftShiftS(e):this.leftShiftM(e)},e.prototype.leftShiftS=function(e){for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.set(n,t,this.get(n,t)<<e);return this},e.prototype.leftShiftM=function(e){if(e=n.checkMatrix(e),this.rows!==e.rows||this.columns!==e.columns)throw new RangeError("Matrices dimensions must be equal");for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.set(n,t,this.get(n,t)<<e.get(n,t));return this},e.leftShift=function(e,t){return new n(e).leftShift(t)},e.prototype.signPropagatingRightShift=function(e){return"number"==typeof e?this.signPropagatingRightShiftS(e):this.signPropagatingRightShiftM(e)},e.prototype.signPropagatingRightShiftS=function(e){for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.set(n,t,this.get(n,t)>>e);return this},e.prototype.signPropagatingRightShiftM=function(e){if(e=n.checkMatrix(e),this.rows!==e.rows||this.columns!==e.columns)throw new RangeError("Matrices dimensions must be equal");for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.set(n,t,this.get(n,t)>>e.get(n,t));return this},e.signPropagatingRightShift=function(e,t){return new n(e).signPropagatingRightShift(t)},e.prototype.rightShift=function(e){return"number"==typeof e?this.rightShiftS(e):this.rightShiftM(e)},e.prototype.rightShiftS=function(e){for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.set(n,t,this.get(n,t)>>>e);return this},e.prototype.rightShiftM=function(e){if(e=n.checkMatrix(e),this.rows!==e.rows||this.columns!==e.columns)throw new RangeError("Matrices dimensions must be equal");for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.set(n,t,this.get(n,t)>>>e.get(n,t));return this},e.rightShift=function(e,t){return new n(e).rightShift(t)},e.prototype.zeroFillRightShift=e.prototype.rightShift,e.prototype.zeroFillRightShiftS=e.prototype.rightShiftS,e.prototype.zeroFillRightShiftM=e.prototype.rightShiftM,e.zeroFillRightShift=e.rightShift,e.prototype.not=function(){for(let e=0;e<this.rows;e++)for(let n=0;n<this.columns;n++)this.set(e,n,~this.get(e,n));return this},e.not=function(e){return new n(e).not()},e.prototype.abs=function(){for(let e=0;e<this.rows;e++)for(let n=0;n<this.columns;n++)this.set(e,n,Math.abs(this.get(e,n)));return this},e.abs=function(e){return new n(e).abs()},e.prototype.acos=function(){for(let e=0;e<this.rows;e++)for(let n=0;n<this.columns;n++)this.set(e,n,Math.acos(this.get(e,n)));return this},e.acos=function(e){return new n(e).acos()},e.prototype.acosh=function(){for(let e=0;e<this.rows;e++)for(let n=0;n<this.columns;n++)this.set(e,n,Math.acosh(this.get(e,n)));return this},e.acosh=function(e){return new n(e).acosh()},e.prototype.asin=function(){for(let e=0;e<this.rows;e++)for(let n=0;n<this.columns;n++)this.set(e,n,Math.asin(this.get(e,n)));return this},e.asin=function(e){return new n(e).asin()},e.prototype.asinh=function(){for(let e=0;e<this.rows;e++)for(let n=0;n<this.columns;n++)this.set(e,n,Math.asinh(this.get(e,n)));return this},e.asinh=function(e){return new n(e).asinh()},e.prototype.atan=function(){for(let e=0;e<this.rows;e++)for(let n=0;n<this.columns;n++)this.set(e,n,Math.atan(this.get(e,n)));return this},e.atan=function(e){return new n(e).atan()},e.prototype.atanh=function(){for(let e=0;e<this.rows;e++)for(let n=0;n<this.columns;n++)this.set(e,n,Math.atanh(this.get(e,n)));return this},e.atanh=function(e){return new n(e).atanh()},e.prototype.cbrt=function(){for(let e=0;e<this.rows;e++)for(let n=0;n<this.columns;n++)this.set(e,n,Math.cbrt(this.get(e,n)));return this},e.cbrt=function(e){return new n(e).cbrt()},e.prototype.ceil=function(){for(let e=0;e<this.rows;e++)for(let n=0;n<this.columns;n++)this.set(e,n,Math.ceil(this.get(e,n)));return this},e.ceil=function(e){return new n(e).ceil()},e.prototype.clz32=function(){for(let e=0;e<this.rows;e++)for(let n=0;n<this.columns;n++)this.set(e,n,Math.clz32(this.get(e,n)));return this},e.clz32=function(e){return new n(e).clz32()},e.prototype.cos=function(){for(let e=0;e<this.rows;e++)for(let n=0;n<this.columns;n++)this.set(e,n,Math.cos(this.get(e,n)));return this},e.cos=function(e){return new n(e).cos()},e.prototype.cosh=function(){for(let e=0;e<this.rows;e++)for(let n=0;n<this.columns;n++)this.set(e,n,Math.cosh(this.get(e,n)));return this},e.cosh=function(e){return new n(e).cosh()},e.prototype.exp=function(){for(let e=0;e<this.rows;e++)for(let n=0;n<this.columns;n++)this.set(e,n,Math.exp(this.get(e,n)));return this},e.exp=function(e){return new n(e).exp()},e.prototype.expm1=function(){for(let e=0;e<this.rows;e++)for(let n=0;n<this.columns;n++)this.set(e,n,Math.expm1(this.get(e,n)));return this},e.expm1=function(e){return new n(e).expm1()},e.prototype.floor=function(){for(let e=0;e<this.rows;e++)for(let n=0;n<this.columns;n++)this.set(e,n,Math.floor(this.get(e,n)));return this},e.floor=function(e){return new n(e).floor()},e.prototype.fround=function(){for(let e=0;e<this.rows;e++)for(let n=0;n<this.columns;n++)this.set(e,n,Math.fround(this.get(e,n)));return this},e.fround=function(e){return new n(e).fround()},e.prototype.log=function(){for(let e=0;e<this.rows;e++)for(let n=0;n<this.columns;n++)this.set(e,n,Math.log(this.get(e,n)));return this},e.log=function(e){return new n(e).log()},e.prototype.log1p=function(){for(let e=0;e<this.rows;e++)for(let n=0;n<this.columns;n++)this.set(e,n,Math.log1p(this.get(e,n)));return this},e.log1p=function(e){return new n(e).log1p()},e.prototype.log10=function(){for(let e=0;e<this.rows;e++)for(let n=0;n<this.columns;n++)this.set(e,n,Math.log10(this.get(e,n)));return this},e.log10=function(e){return new n(e).log10()},e.prototype.log2=function(){for(let e=0;e<this.rows;e++)for(let n=0;n<this.columns;n++)this.set(e,n,Math.log2(this.get(e,n)));return this},e.log2=function(e){return new n(e).log2()},e.prototype.round=function(){for(let e=0;e<this.rows;e++)for(let n=0;n<this.columns;n++)this.set(e,n,Math.round(this.get(e,n)));return this},e.round=function(e){return new n(e).round()},e.prototype.sign=function(){for(let e=0;e<this.rows;e++)for(let n=0;n<this.columns;n++)this.set(e,n,Math.sign(this.get(e,n)));return this},e.sign=function(e){return new n(e).sign()},e.prototype.sin=function(){for(let e=0;e<this.rows;e++)for(let n=0;n<this.columns;n++)this.set(e,n,Math.sin(this.get(e,n)));return this},e.sin=function(e){return new n(e).sin()},e.prototype.sinh=function(){for(let e=0;e<this.rows;e++)for(let n=0;n<this.columns;n++)this.set(e,n,Math.sinh(this.get(e,n)));return this},e.sinh=function(e){return new n(e).sinh()},e.prototype.sqrt=function(){for(let e=0;e<this.rows;e++)for(let n=0;n<this.columns;n++)this.set(e,n,Math.sqrt(this.get(e,n)));return this},e.sqrt=function(e){return new n(e).sqrt()},e.prototype.tan=function(){for(let e=0;e<this.rows;e++)for(let n=0;n<this.columns;n++)this.set(e,n,Math.tan(this.get(e,n)));return this},e.tan=function(e){return new n(e).tan()},e.prototype.tanh=function(){for(let e=0;e<this.rows;e++)for(let n=0;n<this.columns;n++)this.set(e,n,Math.tanh(this.get(e,n)));return this},e.tanh=function(e){return new n(e).tanh()},e.prototype.trunc=function(){for(let e=0;e<this.rows;e++)for(let n=0;n<this.columns;n++)this.set(e,n,Math.trunc(this.get(e,n)));return this},e.trunc=function(e){return new n(e).trunc()},e.pow=function(e,t){return new n(e).pow(t)},e.prototype.pow=function(e){return"number"==typeof e?this.powS(e):this.powM(e)},e.prototype.powS=function(e){for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.set(n,t,this.get(n,t)**e);return this},e.prototype.powM=function(e){if(e=n.checkMatrix(e),this.rows!==e.rows||this.columns!==e.columns)throw new RangeError("Matrices dimensions must be equal");for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.set(n,t,this.get(n,t)**e.get(n,t));return this}}(pl,dl);class gl extends pl{#n;get size(){return this.#n.size}get rows(){return this.#n.rows}get columns(){return this.#n.columns}get diagonalSize(){return this.rows}static isSymmetricMatrix(e){return dl.isMatrix(e)&&"SymmetricMatrix"===e.klassType}static zeros(e){return new this(e)}static ones(e){return new this(e).fill(1)}constructor(e){if(super(),dl.isMatrix(e)){if(!e.isSymmetric())throw new TypeError("not symmetric data");this.#n=dl.copy(e,new dl(e.rows,e.rows))}else if(Number.isInteger(e)&&e>=0)this.#n=new dl(e,e);else if(this.#n=new dl(e),!this.isSymmetric())throw new TypeError("not symmetric data")}clone(){const e=new gl(this.diagonalSize);for(const[n,t,i]of this.upperRightEntries())e.set(n,t,i);return e}toMatrix(){return new dl(this)}get(e,n){return this.#n.get(e,n)}set(e,n,t){return this.#n.set(e,n,t),this.#n.set(n,e,t),this}removeCross(e){return this.#n.removeRow(e),this.#n.removeColumn(e),this}addCross(e,n){void 0===n&&(n=e,e=this.diagonalSize);const t=n.slice();return t.splice(e,1),this.#n.addRow(e,t),this.#n.addColumn(e,n),this}applyMask(e){if(e.length!==this.diagonalSize)throw new RangeError("Mask size do not match with matrix size");const n=[];for(const[t,i]of e.entries())i||n.push(t);n.reverse();for(const e of n)this.removeCross(e);return this}toCompact(){const{diagonalSize:e}=this,n=new Array(e*(e+1)/2);for(let t=0,i=0,s=0;s<n.length;s++)n[s]=this.get(i,t),++t>=e&&(t=++i);return n}static fromCompact(e){const n=e.length,t=(Math.sqrt(8*n+1)-1)/2;if(!Number.isInteger(t))throw new TypeError(`This array is not a compact representation of a Symmetric Matrix, ${JSON.stringify(e)}`);const i=new gl(t);for(let s=0,a=0,o=0;o<n;o++)i.set(s,a,e[o]),++s>=t&&(s=++a);return i}*upperRightEntries(){for(let e=0,n=0;e<this.diagonalSize;void 0){const t=this.get(e,n);yield[e,n,t],++n>=this.diagonalSize&&(n=++e)}}*upperRightValues(){for(let e=0,n=0;e<this.diagonalSize;void 0){const t=this.get(e,n);yield t,++n>=this.diagonalSize&&(n=++e)}}}gl.prototype.klassType="SymmetricMatrix";class ml extends gl{static isDistanceMatrix(e){return gl.isSymmetricMatrix(e)&&"DistanceMatrix"===e.klassSubType}constructor(e){if(super(e),!this.isDistance())throw new TypeError("Provided arguments do no produce a distance matrix")}set(e,n,t){return e===n&&(t=0),super.set(e,n,t)}addCross(e,n){return void 0===n&&(n=e,e=this.diagonalSize),(n=n.slice())[e]=0,super.addCross(e,n)}toSymmetricMatrix(){return new gl(this)}clone(){const e=new ml(this.diagonalSize);for(const[n,t,i]of this.upperRightEntries())n!==t&&e.set(n,t,i);return e}toCompact(){const{diagonalSize:e}=this,n=new Array((e-1)*e/2);for(let t=1,i=0,s=0;s<n.length;s++)n[s]=this.get(i,t),++t>=e&&(t=1+ ++i);return n}static fromCompact(e){const n=e.length;if(0===n)return new this(0);const t=(Math.sqrt(8*n+1)+1)/2;if(!Number.isInteger(t))throw new TypeError(`This array is not a compact representation of a DistanceMatrix, ${JSON.stringify(e)}`);const i=new this(t);for(let s=1,a=0,o=0;o<n;o++)i.set(s,a,e[o]),++s>=t&&(s=1+ ++a);return i}}ml.prototype.klassSubType="DistanceMatrix";class vl extends pl{constructor(e,n,t){super(),this.matrix=e,this.rows=n,this.columns=t}}class hl extends vl{constructor(e,n,t){sl(e,n),al(e,t),super(e,n.length,t.length),this.rowIndices=n,this.columnIndices=t}set(e,n,t){return this.matrix.set(this.rowIndices[e],this.columnIndices[n],t),this}get(e,n){return this.matrix.get(this.rowIndices[e],this.columnIndices[n])}}class fl extends pl{constructor(e,n={}){const{rows:t=1}=n;if(e.length%t!=0)throw new Error("the data length is not divisible by the number of rows");super(),this.rows=t,this.columns=e.length/t,this.data=e}set(e,n,t){let i=this._calculateIndex(e,n);return this.data[i]=t,this}get(e,n){let t=this._calculateIndex(e,n);return this.data[t]}_calculateIndex(e,n){return e*this.columns+n}}class xl extends pl{constructor(e){super(),this.data=e,this.rows=e.length,this.columns=e[0].length}set(e,n,t){return this.data[e][n]=t,this}get(e,n){return this.data[e][n]}}class bl{constructor(e){let n,t,i,s,a,o,r,c,l,p=(e=xl.checkMatrix(e)).clone(),u=p.rows,d=p.columns,g=new Float64Array(u),m=1;for(n=0;n<u;n++)g[n]=n;for(c=new Float64Array(u),t=0;t<d;t++){for(n=0;n<u;n++)c[n]=p.get(n,t);for(n=0;n<u;n++){for(l=Math.min(n,t),a=0,i=0;i<l;i++)a+=p.get(n,i)*c[i];c[n]-=a,p.set(n,t,c[n])}for(s=t,n=t+1;n<u;n++)Math.abs(c[n])>Math.abs(c[s])&&(s=n);if(s!==t){for(i=0;i<d;i++)o=p.get(s,i),p.set(s,i,p.get(t,i)),p.set(t,i,o);r=g[s],g[s]=g[t],g[t]=r,m=-m}if(t<u&&0!==p.get(t,t))for(n=t+1;n<u;n++)p.set(n,t,p.get(n,t)/p.get(t,t))}this.LU=p,this.pivotVector=g,this.pivotSign=m}isSingular(){let e=this.LU,n=e.columns;for(let t=0;t<n;t++)if(0===e.get(t,t))return!0;return!1}solve(e){e=dl.checkMatrix(e);let n=this.LU;if(n.rows!==e.rows)throw new Error("Invalid matrix dimensions");if(this.isSingular())throw new Error("LU matrix is singular");let t,i,s,a=e.columns,o=e.subMatrixRow(this.pivotVector,0,a-1),r=n.columns;for(s=0;s<r;s++)for(t=s+1;t<r;t++)for(i=0;i<a;i++)o.set(t,i,o.get(t,i)-o.get(s,i)*n.get(t,s));for(s=r-1;s>=0;s--){for(i=0;i<a;i++)o.set(s,i,o.get(s,i)/n.get(s,s));for(t=0;t<s;t++)for(i=0;i<a;i++)o.set(t,i,o.get(t,i)-o.get(s,i)*n.get(t,s))}return o}get determinant(){let e=this.LU;if(!e.isSquare())throw new Error("Matrix must be square");let n=this.pivotSign,t=e.columns;for(let i=0;i<t;i++)n*=e.get(i,i);return n}get lowerTriangularMatrix(){let e=this.LU,n=e.rows,t=e.columns,i=new dl(n,t);for(let s=0;s<n;s++)for(let n=0;n<t;n++)s>n?i.set(s,n,e.get(s,n)):s===n?i.set(s,n,1):i.set(s,n,0);return i}get upperTriangularMatrix(){let e=this.LU,n=e.rows,t=e.columns,i=new dl(n,t);for(let s=0;s<n;s++)for(let n=0;n<t;n++)s<=n?i.set(s,n,e.get(s,n)):i.set(s,n,0);return i}get pivotPermutationVector(){return Array.from(this.pivotVector)}}function yl(e,n){let t=0;return Math.abs(e)>Math.abs(n)?(t=n/e,Math.abs(e)*Math.sqrt(1+t*t)):0!==n?(t=e/n,Math.abs(n)*Math.sqrt(1+t*t)):0}class wl{constructor(e){let n,t,i,s,a=(e=xl.checkMatrix(e)).clone(),o=e.rows,r=e.columns,c=new Float64Array(r);for(i=0;i<r;i++){let e=0;for(n=i;n<o;n++)e=yl(e,a.get(n,i));if(0!==e){for(a.get(i,i)<0&&(e=-e),n=i;n<o;n++)a.set(n,i,a.get(n,i)/e);for(a.set(i,i,a.get(i,i)+1),t=i+1;t<r;t++){for(s=0,n=i;n<o;n++)s+=a.get(n,i)*a.get(n,t);for(s=-s/a.get(i,i),n=i;n<o;n++)a.set(n,t,a.get(n,t)+s*a.get(n,i))}}c[i]=-e}this.QR=a,this.Rdiag=c}solve(e){e=dl.checkMatrix(e);let n=this.QR,t=n.rows;if(e.rows!==t)throw new Error("Matrix row dimensions must agree");if(!this.isFullRank())throw new Error("Matrix is rank deficient");let i,s,a,o,r=e.columns,c=e.clone(),l=n.columns;for(a=0;a<l;a++)for(s=0;s<r;s++){for(o=0,i=a;i<t;i++)o+=n.get(i,a)*c.get(i,s);for(o=-o/n.get(a,a),i=a;i<t;i++)c.set(i,s,c.get(i,s)+o*n.get(i,a))}for(a=l-1;a>=0;a--){for(s=0;s<r;s++)c.set(a,s,c.get(a,s)/this.Rdiag[a]);for(i=0;i<a;i++)for(s=0;s<r;s++)c.set(i,s,c.get(i,s)-c.get(a,s)*n.get(i,a))}return c.subMatrix(0,l-1,0,r-1)}isFullRank(){let e=this.QR.columns;for(let n=0;n<e;n++)if(0===this.Rdiag[n])return!1;return!0}get upperTriangularMatrix(){let e,n,t=this.QR,i=t.columns,s=new dl(i,i);for(e=0;e<i;e++)for(n=0;n<i;n++)e<n?s.set(e,n,t.get(e,n)):e===n?s.set(e,n,this.Rdiag[e]):s.set(e,n,0);return s}get orthogonalMatrix(){let e,n,t,i,s=this.QR,a=s.rows,o=s.columns,r=new dl(a,o);for(t=o-1;t>=0;t--){for(e=0;e<a;e++)r.set(e,t,0);for(r.set(t,t,1),n=t;n<o;n++)if(0!==s.get(t,t)){for(i=0,e=t;e<a;e++)i+=s.get(e,t)*r.get(e,n);for(i=-i/s.get(t,t),e=t;e<a;e++)r.set(e,n,r.get(e,n)+i*s.get(e,t))}}return r}}class kl{constructor(e,n={}){if((e=xl.checkMatrix(e)).isEmpty())throw new Error("Matrix must be non-empty");let t=e.rows,i=e.columns;const{computeLeftSingularVectors:s=!0,computeRightSingularVectors:a=!0,autoTranspose:o=!1}=n;let r,c=Boolean(s),l=Boolean(a),p=!1;if(t<i)if(o){r=e.transpose(),t=r.rows,i=r.columns,p=!0;let n=c;c=l,l=n}else r=e.clone(),console.warn("Computing SVD on a matrix with more columns than rows. Consider enabling autoTranspose");else r=e.clone();let u=Math.min(t,i),d=Math.min(t+1,i),g=new Float64Array(d),m=new dl(t,u),v=new dl(i,i),h=new Float64Array(i),f=new Float64Array(t),x=new Float64Array(d);for(let e=0;e<d;e++)x[e]=e;let b=Math.min(t-1,i),y=Math.max(0,Math.min(i-2,t)),w=Math.max(b,y);for(let e=0;e<w;e++){if(e<b){g[e]=0;for(let n=e;n<t;n++)g[e]=yl(g[e],r.get(n,e));if(0!==g[e]){r.get(e,e)<0&&(g[e]=-g[e]);for(let n=e;n<t;n++)r.set(n,e,r.get(n,e)/g[e]);r.set(e,e,r.get(e,e)+1)}g[e]=-g[e]}for(let n=e+1;n<i;n++){if(e<b&&0!==g[e]){let i=0;for(let s=e;s<t;s++)i+=r.get(s,e)*r.get(s,n);i=-i/r.get(e,e);for(let s=e;s<t;s++)r.set(s,n,r.get(s,n)+i*r.get(s,e))}h[n]=r.get(e,n)}if(c&&e<b)for(let n=e;n<t;n++)m.set(n,e,r.get(n,e));if(e<y){h[e]=0;for(let n=e+1;n<i;n++)h[e]=yl(h[e],h[n]);if(0!==h[e]){h[e+1]<0&&(h[e]=0-h[e]);for(let n=e+1;n<i;n++)h[n]/=h[e];h[e+1]+=1}if(h[e]=-h[e],e+1<t&&0!==h[e]){for(let n=e+1;n<t;n++)f[n]=0;for(let n=e+1;n<t;n++)for(let t=e+1;t<i;t++)f[n]+=h[t]*r.get(n,t);for(let n=e+1;n<i;n++){let i=-h[n]/h[e+1];for(let s=e+1;s<t;s++)r.set(s,n,r.get(s,n)+i*f[s])}}if(l)for(let n=e+1;n<i;n++)v.set(n,e,h[n])}}let k=Math.min(i,t+1);if(b<i&&(g[b]=r.get(b,b)),t<k&&(g[k-1]=0),y+1<k&&(h[y]=r.get(y,k-1)),h[k-1]=0,c){for(let e=b;e<u;e++){for(let n=0;n<t;n++)m.set(n,e,0);m.set(e,e,1)}for(let e=b-1;e>=0;e--)if(0!==g[e]){for(let n=e+1;n<u;n++){let i=0;for(let s=e;s<t;s++)i+=m.get(s,e)*m.get(s,n);i=-i/m.get(e,e);for(let s=e;s<t;s++)m.set(s,n,m.get(s,n)+i*m.get(s,e))}for(let n=e;n<t;n++)m.set(n,e,-m.get(n,e));m.set(e,e,1+m.get(e,e));for(let n=0;n<e-1;n++)m.set(n,e,0)}else{for(let n=0;n<t;n++)m.set(n,e,0);m.set(e,e,1)}}if(l)for(let e=i-1;e>=0;e--){if(e<y&&0!==h[e])for(let n=e+1;n<i;n++){let t=0;for(let s=e+1;s<i;s++)t+=v.get(s,e)*v.get(s,n);t=-t/v.get(e+1,e);for(let s=e+1;s<i;s++)v.set(s,n,v.get(s,n)+t*v.get(s,e))}for(let n=0;n<i;n++)v.set(n,e,0);v.set(e,e,1)}let S=k-1,j=Number.EPSILON;for(;k>0;){let e,n;for(e=k-2;e>=-1&&-1!==e;e--){const n=Number.MIN_VALUE+j*Math.abs(g[e]+Math.abs(g[e+1]));if(Math.abs(h[e])<=n||Number.isNaN(h[e])){h[e]=0;break}}if(e===k-2)n=4;else{let t;for(t=k-1;t>=e&&t!==e;t--){let n=(t!==k?Math.abs(h[t]):0)+(t!==e+1?Math.abs(h[t-1]):0);if(Math.abs(g[t])<=j*n){g[t]=0;break}}t===e?n=3:t===k-1?n=1:(n=2,e=t)}switch(e++,n){case 1:{let n=h[k-2];h[k-2]=0;for(let t=k-2;t>=e;t--){let s=yl(g[t],n),a=g[t]/s,o=n/s;if(g[t]=s,t!==e&&(n=-o*h[t-1],h[t-1]=a*h[t-1]),l)for(let e=0;e<i;e++)s=a*v.get(e,t)+o*v.get(e,k-1),v.set(e,k-1,-o*v.get(e,t)+a*v.get(e,k-1)),v.set(e,t,s)}break}case 2:{let n=h[e-1];h[e-1]=0;for(let i=e;i<k;i++){let s=yl(g[i],n),a=g[i]/s,o=n/s;if(g[i]=s,n=-o*h[i],h[i]=a*h[i],c)for(let n=0;n<t;n++)s=a*m.get(n,i)+o*m.get(n,e-1),m.set(n,e-1,-o*m.get(n,i)+a*m.get(n,e-1)),m.set(n,i,s)}break}case 3:{const n=Math.max(Math.abs(g[k-1]),Math.abs(g[k-2]),Math.abs(h[k-2]),Math.abs(g[e]),Math.abs(h[e])),s=g[k-1]/n,a=g[k-2]/n,o=h[k-2]/n,r=g[e]/n,p=h[e]/n,u=((a+s)*(a-s)+o*o)/2,d=s*o*(s*o);let f=0;0===u&&0===d||(f=u<0?0-Math.sqrt(u*u+d):Math.sqrt(u*u+d),f=d/(u+f));let x=(r+s)*(r-s)+f,b=r*p;for(let n=e;n<k-1;n++){let s=yl(x,b);0===s&&(s=Number.MIN_VALUE);let a=x/s,o=b/s;if(n!==e&&(h[n-1]=s),x=a*g[n]+o*h[n],h[n]=a*h[n]-o*g[n],b=o*g[n+1],g[n+1]=a*g[n+1],l)for(let e=0;e<i;e++)s=a*v.get(e,n)+o*v.get(e,n+1),v.set(e,n+1,-o*v.get(e,n)+a*v.get(e,n+1)),v.set(e,n,s);if(s=yl(x,b),0===s&&(s=Number.MIN_VALUE),a=x/s,o=b/s,g[n]=s,x=a*h[n]+o*g[n+1],g[n+1]=-o*h[n]+a*g[n+1],b=o*h[n+1],h[n+1]=a*h[n+1],c&&n<t-1)for(let e=0;e<t;e++)s=a*m.get(e,n)+o*m.get(e,n+1),m.set(e,n+1,-o*m.get(e,n)+a*m.get(e,n+1)),m.set(e,n,s)}h[k-2]=x;break}case 4:if(g[e]<=0&&(g[e]=g[e]<0?-g[e]:0,l))for(let n=0;n<=S;n++)v.set(n,e,-v.get(n,e));for(;e<S&&!(g[e]>=g[e+1]);){let n=g[e];if(g[e]=g[e+1],g[e+1]=n,l&&e<i-1)for(let t=0;t<i;t++)n=v.get(t,e+1),v.set(t,e+1,v.get(t,e)),v.set(t,e,n);if(c&&e<t-1)for(let i=0;i<t;i++)n=m.get(i,e+1),m.set(i,e+1,m.get(i,e)),m.set(i,e,n);e++}k--}}if(p){let e=v;v=m,m=e}this.m=t,this.n=i,this.s=g,this.U=m,this.V=v}solve(e){let n=e,t=this.threshold,i=this.s.length,s=dl.zeros(i,i);for(let e=0;e<i;e++)Math.abs(this.s[e])<=t?s.set(e,e,0):s.set(e,e,1/this.s[e]);let a=this.U,o=this.rightSingularVectors,r=o.mmul(s),c=o.rows,l=a.rows,p=dl.zeros(c,l);for(let e=0;e<c;e++)for(let n=0;n<l;n++){let t=0;for(let s=0;s<i;s++)t+=r.get(e,s)*a.get(n,s);p.set(e,n,t)}return p.mmul(n)}solveForDiagonal(e){return this.solve(dl.diag(e))}inverse(){let e=this.V,n=this.threshold,t=e.rows,i=e.columns,s=new dl(t,this.s.length);for(let a=0;a<t;a++)for(let t=0;t<i;t++)Math.abs(this.s[t])>n&&s.set(a,t,e.get(a,t)/this.s[t]);let a=this.U,o=a.rows,r=a.columns,c=new dl(t,o);for(let e=0;e<t;e++)for(let n=0;n<o;n++){let t=0;for(let i=0;i<r;i++)t+=s.get(e,i)*a.get(n,i);c.set(e,n,t)}return c}get condition(){return this.s[0]/this.s[Math.min(this.m,this.n)-1]}get norm2(){return this.s[0]}get rank(){let e=Math.max(this.m,this.n)*this.s[0]*Number.EPSILON,n=0,t=this.s;for(let i=0,s=t.length;i<s;i++)t[i]>e&&n++;return n}get diagonal(){return Array.from(this.s)}get threshold(){return Number.EPSILON/2*Math.max(this.m,this.n)*this.s[0]}get leftSingularVectors(){return this.U}get rightSingularVectors(){return this.V}get diagonalMatrix(){return dl.diag(this.s)}}function Sl(e,n,t=!1){return e=xl.checkMatrix(e),n=xl.checkMatrix(n),t?new kl(e).solve(n):e.isSquare()?new bl(e).solve(n):new wl(e).solve(n)}function jl(e,n){let t=[];for(let i=0;i<e;i++)i!==n&&t.push(i);return t}function _l(e,n,t,i=1e-9,s=1e-9){if(e>s)return new Array(n.rows+1).fill(0);{let e=n.addRow(t,[0]);for(let n=0;n<e.rows;n++)Math.abs(e.get(n,0))<i&&e.set(n,0,0);return e.to1DArray()}}class Cl{constructor(e,n={}){const{assumeSymmetric:t=!1}=n;if(!(e=xl.checkMatrix(e)).isSquare())throw new Error("Matrix is not a square matrix");if(e.isEmpty())throw new Error("Matrix must be non-empty");let i,s,a=e.columns,o=new dl(a,a),r=new Float64Array(a),c=new Float64Array(a),l=e,p=!1;if(p=!!t||e.isSymmetric(),p){for(i=0;i<a;i++)for(s=0;s<a;s++)o.set(i,s,l.get(i,s));!function(e,n,t,i){let s,a,o,r,c,l,p,u;for(c=0;c<e;c++)t[c]=i.get(e-1,c);for(r=e-1;r>0;r--){for(u=0,o=0,l=0;l<r;l++)u+=Math.abs(t[l]);if(0===u)for(n[r]=t[r-1],c=0;c<r;c++)t[c]=i.get(r-1,c),i.set(r,c,0),i.set(c,r,0);else{for(l=0;l<r;l++)t[l]/=u,o+=t[l]*t[l];for(s=t[r-1],a=Math.sqrt(o),s>0&&(a=-a),n[r]=u*a,o-=s*a,t[r-1]=s-a,c=0;c<r;c++)n[c]=0;for(c=0;c<r;c++){for(s=t[c],i.set(c,r,s),a=n[c]+i.get(c,c)*s,l=c+1;l<=r-1;l++)a+=i.get(l,c)*t[l],n[l]+=i.get(l,c)*s;n[c]=a}for(s=0,c=0;c<r;c++)n[c]/=o,s+=n[c]*t[c];for(p=s/(o+o),c=0;c<r;c++)n[c]-=p*t[c];for(c=0;c<r;c++){for(s=t[c],a=n[c],l=c;l<=r-1;l++)i.set(l,c,i.get(l,c)-(s*n[l]+a*t[l]));t[c]=i.get(r-1,c),i.set(r,c,0)}}t[r]=o}for(r=0;r<e-1;r++){if(i.set(e-1,r,i.get(r,r)),i.set(r,r,1),o=t[r+1],0!==o){for(l=0;l<=r;l++)t[l]=i.get(l,r+1)/o;for(c=0;c<=r;c++){for(a=0,l=0;l<=r;l++)a+=i.get(l,r+1)*i.get(l,c);for(l=0;l<=r;l++)i.set(l,c,i.get(l,c)-a*t[l])}}for(l=0;l<=r;l++)i.set(l,r+1,0)}for(c=0;c<e;c++)t[c]=i.get(e-1,c),i.set(e-1,c,0);i.set(e-1,e-1,1),n[0]=0}(a,c,r,o),function(e,n,t,i){let s,a,o,r,c,l,p,u,d,g,m,v,h,f,x,b;for(o=1;o<e;o++)n[o-1]=n[o];n[e-1]=0;let y=0,w=0,k=Number.EPSILON;for(l=0;l<e;l++){for(w=Math.max(w,Math.abs(t[l])+Math.abs(n[l])),p=l;p<e&&!(Math.abs(n[p])<=k*w);)p++;if(p>l)do{for(s=t[l],u=(t[l+1]-s)/(2*n[l]),d=yl(u,1),u<0&&(d=-d),t[l]=n[l]/(u+d),t[l+1]=n[l]*(u+d),g=t[l+1],a=s-t[l],o=l+2;o<e;o++)t[o]-=a;for(y+=a,u=t[p],m=1,v=m,h=m,f=n[l+1],x=0,b=0,o=p-1;o>=l;o--)for(h=v,v=m,b=x,s=m*n[o],a=m*u,d=yl(u,n[o]),n[o+1]=x*d,x=n[o]/d,m=u/d,u=m*t[o]-x*s,t[o+1]=a+x*(m*s+x*t[o]),c=0;c<e;c++)a=i.get(c,o+1),i.set(c,o+1,x*i.get(c,o)+m*a),i.set(c,o,m*i.get(c,o)-x*a);u=-x*b*h*f*n[l]/g,n[l]=x*u,t[l]=m*u}while(Math.abs(n[l])>k*w);t[l]=t[l]+y,n[l]=0}for(o=0;o<e-1;o++){for(c=o,u=t[o],r=o+1;r<e;r++)t[r]<u&&(c=r,u=t[r]);if(c!==o)for(t[c]=t[o],t[o]=u,r=0;r<e;r++)u=i.get(r,o),i.set(r,o,i.get(r,c)),i.set(r,c,u)}}(a,c,r,o)}else{let e=new dl(a,a),n=new Float64Array(a);for(s=0;s<a;s++)for(i=0;i<a;i++)e.set(i,s,l.get(i,s));!function(e,n,t,i){let s,a,o,r,c,l,p,u=0,d=e-1;for(l=u+1;l<=d-1;l++){for(p=0,r=l;r<=d;r++)p+=Math.abs(n.get(r,l-1));if(0!==p){for(o=0,r=d;r>=l;r--)t[r]=n.get(r,l-1)/p,o+=t[r]*t[r];for(a=Math.sqrt(o),t[l]>0&&(a=-a),o-=t[l]*a,t[l]=t[l]-a,c=l;c<e;c++){for(s=0,r=d;r>=l;r--)s+=t[r]*n.get(r,c);for(s/=o,r=l;r<=d;r++)n.set(r,c,n.get(r,c)-s*t[r])}for(r=0;r<=d;r++){for(s=0,c=d;c>=l;c--)s+=t[c]*n.get(r,c);for(s/=o,c=l;c<=d;c++)n.set(r,c,n.get(r,c)-s*t[c])}t[l]=p*t[l],n.set(l,l-1,p*a)}}for(r=0;r<e;r++)for(c=0;c<e;c++)i.set(r,c,r===c?1:0);for(l=d-1;l>=u+1;l--)if(0!==n.get(l,l-1)){for(r=l+1;r<=d;r++)t[r]=n.get(r,l-1);for(c=l;c<=d;c++){for(a=0,r=l;r<=d;r++)a+=t[r]*i.get(r,c);for(a=a/t[l]/n.get(l,l-1),r=l;r<=d;r++)i.set(r,c,i.get(r,c)+a*t[r])}}}(a,e,n,o),function(e,n,t,i,s){let a,o,r,c,l,p,u,d,g,m,v,h,f,x,b,y=e-1,w=0,k=e-1,S=Number.EPSILON,j=0,_=0,C=0,A=0,E=0,R=0,L=0,M=0;for(a=0;a<e;a++)for((a<w||a>k)&&(t[a]=s.get(a,a),n[a]=0),o=Math.max(a-1,0);o<e;o++)_+=Math.abs(s.get(a,o));for(;y>=w;){for(c=y;c>w&&(R=Math.abs(s.get(c-1,c-1))+Math.abs(s.get(c,c)),0===R&&(R=_),!(Math.abs(s.get(c,c-1))<S*R));)c--;if(c===y)s.set(y,y,s.get(y,y)+j),t[y]=s.get(y,y),n[y]=0,y--,M=0;else if(c===y-1){if(u=s.get(y,y-1)*s.get(y-1,y),C=(s.get(y-1,y-1)-s.get(y,y))/2,A=C*C+u,L=Math.sqrt(Math.abs(A)),s.set(y,y,s.get(y,y)+j),s.set(y-1,y-1,s.get(y-1,y-1)+j),d=s.get(y,y),A>=0){for(L=C>=0?C+L:C-L,t[y-1]=d+L,t[y]=t[y-1],0!==L&&(t[y]=d-u/L),n[y-1]=0,n[y]=0,d=s.get(y,y-1),R=Math.abs(d)+Math.abs(L),C=d/R,A=L/R,E=Math.sqrt(C*C+A*A),C/=E,A/=E,o=y-1;o<e;o++)L=s.get(y-1,o),s.set(y-1,o,A*L+C*s.get(y,o)),s.set(y,o,A*s.get(y,o)-C*L);for(a=0;a<=y;a++)L=s.get(a,y-1),s.set(a,y-1,A*L+C*s.get(a,y)),s.set(a,y,A*s.get(a,y)-C*L);for(a=w;a<=k;a++)L=i.get(a,y-1),i.set(a,y-1,A*L+C*i.get(a,y)),i.set(a,y,A*i.get(a,y)-C*L)}else t[y-1]=d+C,t[y]=d+C,n[y-1]=L,n[y]=-L;y-=2,M=0}else{if(d=s.get(y,y),g=0,u=0,c<y&&(g=s.get(y-1,y-1),u=s.get(y,y-1)*s.get(y-1,y)),10===M){for(j+=d,a=w;a<=y;a++)s.set(a,a,s.get(a,a)-d);R=Math.abs(s.get(y,y-1))+Math.abs(s.get(y-1,y-2)),d=g=.75*R,u=-.4375*R*R}if(30===M&&(R=(g-d)/2,R=R*R+u,R>0)){for(R=Math.sqrt(R),g<d&&(R=-R),R=d-u/((g-d)/2+R),a=w;a<=y;a++)s.set(a,a,s.get(a,a)-R);j+=R,d=g=u=.964}for(M+=1,l=y-2;l>=c&&(L=s.get(l,l),E=d-L,R=g-L,C=(E*R-u)/s.get(l+1,l)+s.get(l,l+1),A=s.get(l+1,l+1)-L-E-R,E=s.get(l+2,l+1),R=Math.abs(C)+Math.abs(A)+Math.abs(E),C/=R,A/=R,E/=R,l!==c)&&!(Math.abs(s.get(l,l-1))*(Math.abs(A)+Math.abs(E))<S*(Math.abs(C)*(Math.abs(s.get(l-1,l-1))+Math.abs(L)+Math.abs(s.get(l+1,l+1)))));)l--;for(a=l+2;a<=y;a++)s.set(a,a-2,0),a>l+2&&s.set(a,a-3,0);for(r=l;r<=y-1&&(x=r!==y-1,r!==l&&(C=s.get(r,r-1),A=s.get(r+1,r-1),E=x?s.get(r+2,r-1):0,d=Math.abs(C)+Math.abs(A)+Math.abs(E),0!==d&&(C/=d,A/=d,E/=d)),0!==d);r++)if(R=Math.sqrt(C*C+A*A+E*E),C<0&&(R=-R),0!==R){for(r!==l?s.set(r,r-1,-R*d):c!==l&&s.set(r,r-1,-s.get(r,r-1)),C+=R,d=C/R,g=A/R,L=E/R,A/=C,E/=C,o=r;o<e;o++)C=s.get(r,o)+A*s.get(r+1,o),x&&(C+=E*s.get(r+2,o),s.set(r+2,o,s.get(r+2,o)-C*L)),s.set(r,o,s.get(r,o)-C*d),s.set(r+1,o,s.get(r+1,o)-C*g);for(a=0;a<=Math.min(y,r+3);a++)C=d*s.get(a,r)+g*s.get(a,r+1),x&&(C+=L*s.get(a,r+2),s.set(a,r+2,s.get(a,r+2)-C*E)),s.set(a,r,s.get(a,r)-C),s.set(a,r+1,s.get(a,r+1)-C*A);for(a=w;a<=k;a++)C=d*i.get(a,r)+g*i.get(a,r+1),x&&(C+=L*i.get(a,r+2),i.set(a,r+2,i.get(a,r+2)-C*E)),i.set(a,r,i.get(a,r)-C),i.set(a,r+1,i.get(a,r+1)-C*A)}}}if(0===_)return;for(y=e-1;y>=0;y--)if(C=t[y],A=n[y],0===A)for(c=y,s.set(y,y,1),a=y-1;a>=0;a--){for(u=s.get(a,a)-C,E=0,o=c;o<=y;o++)E+=s.get(a,o)*s.get(o,y);if(n[a]<0)L=u,R=E;else if(c=a,0===n[a]?s.set(a,y,0!==u?-E/u:-E/(S*_)):(d=s.get(a,a+1),g=s.get(a+1,a),A=(t[a]-C)*(t[a]-C)+n[a]*n[a],p=(d*R-L*E)/A,s.set(a,y,p),s.set(a+1,y,Math.abs(d)>Math.abs(L)?(-E-u*p)/d:(-R-g*p)/L)),p=Math.abs(s.get(a,y)),S*p*p>1)for(o=a;o<=y;o++)s.set(o,y,s.get(o,y)/p)}else if(A<0)for(c=y-1,Math.abs(s.get(y,y-1))>Math.abs(s.get(y-1,y))?(s.set(y-1,y-1,A/s.get(y,y-1)),s.set(y-1,y,-(s.get(y,y)-C)/s.get(y,y-1))):(b=Al(0,-s.get(y-1,y),s.get(y-1,y-1)-C,A),s.set(y-1,y-1,b[0]),s.set(y-1,y,b[1])),s.set(y,y-1,0),s.set(y,y,1),a=y-2;a>=0;a--){for(m=0,v=0,o=c;o<=y;o++)m+=s.get(a,o)*s.get(o,y-1),v+=s.get(a,o)*s.get(o,y);if(u=s.get(a,a)-C,n[a]<0)L=u,E=m,R=v;else if(c=a,0===n[a]?(b=Al(-m,-v,u,A),s.set(a,y-1,b[0]),s.set(a,y,b[1])):(d=s.get(a,a+1),g=s.get(a+1,a),h=(t[a]-C)*(t[a]-C)+n[a]*n[a]-A*A,f=2*(t[a]-C)*A,0===h&&0===f&&(h=S*_*(Math.abs(u)+Math.abs(A)+Math.abs(d)+Math.abs(g)+Math.abs(L))),b=Al(d*E-L*m+A*v,d*R-L*v-A*m,h,f),s.set(a,y-1,b[0]),s.set(a,y,b[1]),Math.abs(d)>Math.abs(L)+Math.abs(A)?(s.set(a+1,y-1,(-m-u*s.get(a,y-1)+A*s.get(a,y))/d),s.set(a+1,y,(-v-u*s.get(a,y)-A*s.get(a,y-1))/d)):(b=Al(-E-g*s.get(a,y-1),-R-g*s.get(a,y),L,A),s.set(a+1,y-1,b[0]),s.set(a+1,y,b[1]))),p=Math.max(Math.abs(s.get(a,y-1)),Math.abs(s.get(a,y))),S*p*p>1)for(o=a;o<=y;o++)s.set(o,y-1,s.get(o,y-1)/p),s.set(o,y,s.get(o,y)/p)}for(a=0;a<e;a++)if(a<w||a>k)for(o=a;o<e;o++)i.set(a,o,s.get(a,o));for(o=e-1;o>=w;o--)for(a=w;a<=k;a++){for(L=0,r=w;r<=Math.min(o,k);r++)L+=i.get(a,r)*s.get(r,o);i.set(a,o,L)}}(a,c,r,o,e)}this.n=a,this.e=c,this.d=r,this.V=o}get realEigenvalues(){return Array.from(this.d)}get imaginaryEigenvalues(){return Array.from(this.e)}get eigenvectorMatrix(){return this.V}get diagonalMatrix(){let e,n,t=this.n,i=this.e,s=this.d,a=new dl(t,t);for(e=0;e<t;e++){for(n=0;n<t;n++)a.set(e,n,0);a.set(e,e,s[e]),i[e]>0?a.set(e,e+1,i[e]):i[e]<0&&a.set(e,e-1,i[e])}return a}}function Al(e,n,t,i){let s,a;return Math.abs(t)>Math.abs(i)?(s=i/t,a=t+s*i,[(e+s*n)/a,(n-s*e)/a]):(s=t/i,a=i+s*t,[(s*e+n)/a,(s*n-e)/a])}class El{constructor(e){if(!(e=xl.checkMatrix(e)).isSymmetric())throw new Error("Matrix is not symmetric");let n,t,i,s=e,a=s.rows,o=new dl(a,a),r=!0;for(t=0;t<a;t++){let e=0;for(i=0;i<t;i++){let a=0;for(n=0;n<i;n++)a+=o.get(i,n)*o.get(t,n);a=(s.get(t,i)-a)/o.get(i,i),o.set(t,i,a),e+=a*a}for(e=s.get(t,t)-e,r&=e>0,o.set(t,t,Math.sqrt(Math.max(e,0))),i=t+1;i<a;i++)o.set(t,i,0)}this.L=o,this.positiveDefinite=Boolean(r)}isPositiveDefinite(){return this.positiveDefinite}solve(e){e=xl.checkMatrix(e);let n=this.L,t=n.rows;if(e.rows!==t)throw new Error("Matrix dimensions do not match");if(!1===this.isPositiveDefinite())throw new Error("Matrix is not positive definite");let i,s,a,o=e.columns,r=e.clone();for(a=0;a<t;a++)for(s=0;s<o;s++){for(i=0;i<a;i++)r.set(a,s,r.get(a,s)-r.get(i,s)*n.get(a,i));r.set(a,s,r.get(a,s)/n.get(a,a))}for(a=t-1;a>=0;a--)for(s=0;s<o;s++){for(i=a+1;i<t;i++)r.set(a,s,r.get(a,s)-r.get(i,s)*n.get(i,a));r.set(a,s,r.get(a,s)/n.get(a,a))}return r}get lowerTriangularMatrix(){return this.L}}class Rl{constructor(e,n={}){e=xl.checkMatrix(e);let{Y:t}=n;const{scaleScores:i=!1,maxIterations:s=1e3,terminationCriteria:a=1e-10}=n;let o;if(t){if(t=Yc.isAnyArray(t)&&"number"==typeof t[0]?dl.columnVector(t):xl.checkMatrix(t),t.rows!==e.rows)throw new Error("Y should have the same number of rows as X");o=t.getColumnVector(0)}else o=e.getColumnVector(0);let r,c,l,p,u=1;for(let n=0;n<s&&u>a;n++)l=e.transpose().mmul(o).div(o.transpose().mmul(o).get(0,0)),l=l.div(l.norm()),r=e.mmul(l).div(l.transpose().mmul(l).get(0,0)),n>0&&(u=r.clone().sub(p).pow(2).sum()),p=r.clone(),t?(c=t.transpose().mmul(r).div(r.transpose().mmul(r).get(0,0)),c=c.div(c.norm()),o=t.mmul(c).div(c.transpose().mmul(c).get(0,0))):o=r;if(t){let n=e.transpose().mmul(r).div(r.transpose().mmul(r).get(0,0));n=n.div(n.norm());let i=e.clone().sub(r.clone().mmul(n.transpose())),s=o.transpose().mmul(r).div(r.transpose().mmul(r).get(0,0)),a=t.clone().sub(r.clone().mulS(s.get(0,0)).mmul(c.transpose()));this.t=r,this.p=n.transpose(),this.w=l.transpose(),this.q=c,this.u=o,this.s=r.transpose().mmul(r),this.xResidual=i,this.yResidual=a,this.betas=s}else this.w=l.transpose(),this.s=r.transpose().mmul(r).sqrt(),this.t=i?r.clone().div(this.s.get(0,0)):r,this.xResidual=e.sub(r.mmul(l.transpose()))}}Bc.AbstractMatrix=pl,Bc.CHO=El,Bc.CholeskyDecomposition=El,Bc.DistanceMatrix=ml,Bc.EVD=Cl,Bc.EigenvalueDecomposition=Cl,Bc.LU=bl,Bc.LuDecomposition=bl;var Ll=Bc.Matrix=dl;Bc.MatrixColumnSelectionView=class extends vl{constructor(e,n){al(e,n),super(e,e.rows,n.length),this.columnIndices=n}set(e,n,t){return this.matrix.set(e,this.columnIndices[n],t),this}get(e,n){return this.matrix.get(e,this.columnIndices[n])}},Bc.MatrixColumnView=class extends vl{constructor(e,n){nl(e,n),super(e,e.rows,1),this.column=n}set(e,n,t){return this.matrix.set(e,this.column,t),this}get(e){return this.matrix.get(e,this.column)}},Bc.MatrixFlipColumnView=class extends vl{constructor(e){super(e,e.rows,e.columns)}set(e,n,t){return this.matrix.set(e,this.columns-n-1,t),this}get(e,n){return this.matrix.get(e,this.columns-n-1)}},Bc.MatrixFlipRowView=class extends vl{constructor(e){super(e,e.rows,e.columns)}set(e,n,t){return this.matrix.set(this.rows-e-1,n,t),this}get(e,n){return this.matrix.get(this.rows-e-1,n)}},Bc.MatrixRowSelectionView=class extends vl{constructor(e,n){sl(e,n),super(e,n.length,e.columns),this.rowIndices=n}set(e,n,t){return this.matrix.set(this.rowIndices[e],n,t),this}get(e,n){return this.matrix.get(this.rowIndices[e],n)}},Bc.MatrixRowView=class extends vl{constructor(e,n){el(e,n),super(e,1,e.columns),this.row=n}set(e,n,t){return this.matrix.set(this.row,n,t),this}get(e,n){return this.matrix.get(this.row,n)}},Bc.MatrixSelectionView=hl,Bc.MatrixSubView=class extends vl{constructor(e,n,t,i,s){ol(e,n,t,i,s),super(e,t-n+1,s-i+1),this.startRow=n,this.startColumn=i}set(e,n,t){return this.matrix.set(this.startRow+e,this.startColumn+n,t),this}get(e,n){return this.matrix.get(this.startRow+e,this.startColumn+n)}};var Ml=Bc.MatrixTransposeView=class extends vl{constructor(e){super(e,e.columns,e.rows)}set(e,n,t){return this.matrix.set(n,e,t),this}get(e,n){return this.matrix.get(n,e)}};Bc.NIPALS=Rl,Bc.Nipals=Rl,Bc.QR=wl,Bc.QrDecomposition=wl,Bc.SVD=kl,Bc.SingularValueDecomposition=kl,Bc.SymmetricMatrix=gl,Bc.WrapperMatrix1D=fl,Bc.WrapperMatrix2D=xl,Bc.correlation=function(e,n=e,t={}){e=new dl(e);let i=!1;if("object"!=typeof n||dl.isMatrix(n)||Yc.isAnyArray(n)?n=new dl(n):(t=n,n=e,i=!0),e.rows!==n.rows)throw new TypeError("Both matrices must have the same number of rows");const{center:s=!0,scale:a=!0}=t;s&&(e.center("column"),i||n.center("column")),a&&(e.scale("column"),i||n.scale("column"));const o=e.standardDeviation("column",{unbiased:!0}),r=i?o:n.standardDeviation("column",{unbiased:!0}),c=e.transpose().mmul(n);for(let n=0;n<c.rows;n++)for(let t=0;t<c.columns;t++)c.set(n,t,c.get(n,t)*(1/(o[n]*r[t]))*(1/(e.rows-1)));return c},Bc.covariance=function(e,n=e,t={}){e=new dl(e);let i=!1;if("object"!=typeof n||dl.isMatrix(n)||Yc.isAnyArray(n)?n=new dl(n):(t=n,n=e,i=!0),e.rows!==n.rows)throw new TypeError("Both matrices must have the same number of rows");const{center:s=!0}=t;s&&(e=e.center("column"),i||(n=n.center("column")));const a=e.transpose().mmul(n);for(let n=0;n<a.rows;n++)for(let t=0;t<a.columns;t++)a.set(n,t,a.get(n,t)*(1/(e.rows-1)));return a};var Il=Bc.default=dl;Bc.determinant=function e(n){if((n=dl.checkMatrix(n)).isSquare()){if(0===n.columns)return 1;let t,i,s,a;if(2===n.columns)return t=n.get(0,0),i=n.get(0,1),s=n.get(1,0),a=n.get(1,1),t*a-i*s;if(3===n.columns){let a,o,r;return a=new hl(n,[1,2],[1,2]),o=new hl(n,[1,2],[0,2]),r=new hl(n,[1,2],[0,1]),t=n.get(0,0),i=n.get(0,1),s=n.get(0,2),t*e(a)-i*e(o)+s*e(r)}return new bl(n).determinant}throw Error("determinant can only be calculated for a square matrix")},Bc.inverse=function(e,n=!1){return e=xl.checkMatrix(e),n?new kl(e).inverse():Sl(e,dl.eye(e.rows))},Bc.linearDependencies=function(e,n={}){const{thresholdValue:t=1e-9,thresholdError:i=1e-9}=n;let s=(e=dl.checkMatrix(e)).rows,a=new dl(s,s);for(let n=0;n<s;n++){let o=dl.columnVector(e.getRow(n)),r=e.subMatrixRow(jl(s,n)).transpose(),c=new kl(r).solve(o),l=dl.sub(o,r.mmul(c)).abs().max();a.setRow(n,_l(l,c,n,t,i))}return a},Bc.pseudoInverse=function(e,n=Number.EPSILON){if((e=dl.checkMatrix(e)).isEmpty())return e.transpose();let t=new kl(e,{autoTranspose:!0}),i=t.leftSingularVectors,s=t.rightSingularVectors,a=t.diagonal;for(let e=0;e<a.length;e++)Math.abs(a[e])>n?a[e]=1/a[e]:a[e]=0;return s.mmul(dl.diag(a).mmul(i.transpose()))};var Dl=Bc.solve=Sl;Bc.wrap=function(e,n){if(Yc.isAnyArray(e))return e[0]&&Yc.isAnyArray(e[0])?new xl(e):new fl(e,n);throw new Error("the argument is not an array")};const Ol=Ll,Tl=Ml;Il.Matrix&&Il.Matrix;const Pl=Dl;function Fl(e,n){if(!Hc(e)||!Hc(n))throw new TypeError("x and y must be arrays");if(e.length!==n.length)throw new RangeError("x and y arrays must have the same length")}class Nl{constructor(){if(new.target===Nl)throw new Error("BaseRegression must be subclassed")}predict(e){if("number"==typeof e)return this._predict(e);if(Hc(e)){const n=[];for(const t of e)n.push(this._predict(t));return n}throw new TypeError("x must be a number or array")}_predict(e){throw new Error("_predict must be implemented")}train(){}toString(e){return""}toLaTeX(e){return""}score(e,n){Fl(e,n);const t=e.length,i=new Array(t);for(let n=0;n<t;n++)i[n]=this._predict(e[n]);let s=0,a=0,o=0,r=0,c=0,l=0,p=0;for(let e=0;e<t;e++)s+=i[e],a+=n[e],c+=i[e]*i[e],l+=n[e]*n[e],p+=i[e]*n[e],0!==n[e]&&(o+=(n[e]-i[e])*(n[e]-i[e])/n[e]),r+=(n[e]-i[e])*(n[e]-i[e]);const u=(t*p-s*a)/Math.sqrt((t*c-s*s)*(t*l-a*a));return{r:u,r2:u*u,chi2:o,rmsd:Math.sqrt(r/t)}}}function ql(e,n){return e<0?(e=0-e,"number"==typeof n?`- ${e.toPrecision(n)}`:`- ${e.toString()}`):"number"==typeof n?e.toPrecision(n):e.toString()}class zl extends Nl{constructor(e,n,t,i={}){if(super(),!0===e)this.degree=n.degree,this.powers=n.powers,this.coefficients=n.coefficients;else{Fl(e,n);const s=function(e,n,t,i={}){const s=e.length;let{interceptAtZero:a=!1}=i,o=[];if(Array.isArray(t))o=t,a=!1;else if("number"==typeof t)if(a){o=new Array(t);for(let e=0;e<t;e++)o[e]=e+1}else{o=new Array(t+1);for(let e=0;e<=t;e++)o[e]=e}const r=o.length,c=new Ol(s,r),l=new Ol([n]);for(let n=0;n<r;n++)for(let t=0;t<s;t++)0===o[n]?c.set(t,n,1):c.set(t,n,e[t]**o[n]);const p=new Tl(c),u=p.mmul(c),d=p.mmul(new Tl(l));return{coefficients:Pl(u,d).to1DArray(),degree:Math.max(...o),powers:o}}(e,n,t,i);this.degree=s.degree,this.powers=s.powers,this.coefficients=s.coefficients}}_predict(e){let n=0;for(let t=0;t<this.powers.length;t++)n+=this.coefficients[t]*e**this.powers[t];return n}toJSON(){return{name:"polynomialRegression",degree:this.degree,powers:this.powers,coefficients:this.coefficients}}toString(e){return this._toFormula(e,!1)}toLaTeX(e){return this._toFormula(e,!0)}_toFormula(e,n){let t="^",i="",s=" * ";n&&(t="^{",i="}",s="");let a="",o="";for(let n=0;n<this.coefficients.length;n++)o="",0!==this.coefficients[n]&&(o=0===this.powers[n]?ql(this.coefficients[n],e):1===this.powers[n]?`${ql(this.coefficients[n],e)+s}x`:`${ql(this.coefficients[n],e)+s}x${t}${this.powers[n]}${i}`,this.coefficients[n]>0&&n!==this.coefficients.length-1?o=` + ${o}`:n!==this.coefficients.length-1&&(o=` ${o}`)),a=o+a;return a.startsWith("+")&&(a=a.slice(1)),`f(x) = ${a}`}static load(e){if("polynomialRegression"!==e.name)throw new TypeError("not a polynomial regression model");return new zl(!0,e)}}async function Vl(e){var n=new Worker(new URL("worker.de4112d0.js",import.meta.url),{type:"module"});window.myWorker=n;var t='<!doctype html>\n<html lang="en">\n <head>\n <link\n href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css"\n rel="stylesheet"\n integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3"\n crossorigin="anonymous"\n />\n <meta charset="UTF-8" />\n <meta name="viewport" content="width=device-width, initial-scale=1.0" />\n <script src="https://cdn.jsdelivr.net/npm/onnxjs/dist/onnx.min.js"><\/script>\n </head>\n\n <style>\n body {\n margin: 0;\n min-height: 100vh; /* Ensure body takes the full viewport height */\n display: flex; /* Enable Flexbox */\n justify-content: center; /* Center content horizontally */\n align-items: center; /* Center content vertically */\n font-family: sans-serif;\n }\n\n stim {\n position: absolute;\n height: auto;\n cursor: pointer;\n }\n\n #instruction {\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n }\n\n #confirmContainer {\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n }\n\n #stimulus {\n position: absolute;\n width: 25px;\n height: 25px;\n background-color: #1e90ff;\n border-radius: 50%;\n display: block; /* Initially hidden */\n transform: translate(-50%, -50%);\n }\n\n #headCanvas {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n\n #canvas-container {\n position: relative;\n width: 300px;\n height: 300px;\n top: 30px;\n margin: 0 auto;\n }\n </style>\n\n <body>\n \x3c!-- Center Instructions Panel --\x3e\n <div id="calibrationContentArea">\n <div class="row gap-2" id="instruction">\n \n </div>\n </div> \n\n <div id="stimulus"></div>\n <div id="canvas-container" style="display: none">\n <canvas\n id="headCanvas"\n class="frame"\n style="position: relative; display: none"\n ></canvas>\n </div>\n\n \x3c!-- Confirm Button --\x3e\n <div class="row gap-2" id="confirmContainer" style="display: none">\n <div class="card-body" style="text-align: center">\n <h3>Calibration complete!</h3>\n <button type="button" class="btn btn-primary" id="confirmButton">\n Continue\n </button>\n </div>\n </div>\n\n <div class="panel-block" style="display: block" ;>\n <video class="inputVideo" style="display: none"></video>\n </div>\n\n <audio autoplay id="voiceover"></audio>\n\n <script data-dynamic>\n\n // ----------- required -------------------\n function runAfterEveryFrame(output) {\n if (recordEyeMovements) {\n _gridCoordinates.push({\n x: parseFloat(stimulus.style.left),\n y: parseFloat(stimulus.style.top),\n });\n _eyeCoordinates.push({\n x: output.output.cpuData[0] * 100 - 50,\n y: output.output.cpuData[1] * 100,\n });\n _calibrationData.push(calibrationData);\n let time = new Date().getTime();\n _timeData.push(time);\n }\n }\n\n function pageCompleted() {\n continueProcessing = false;\n recordEyeMovements = false;\n const event = new Event("pageComplete");\n document.dispatchEvent(event);\n }\n\n var recordEyeMovements = false;\n var calibrationData = 1;\n var continueProcessing = true;\n\n var deviceConfig = store.session.get("deviceConfig");\n var _gridCoordinates = [];\n var _parentDir = store.session.get("id");\n var _videoURL = "";\n\n var IMAGE_SIZE = 640;\n var upperbound_x = 96;\n var lowerbound_x = 2;\n var upperbound_y = 96;\n var lowerbound_y = 2;\n var stimulus = document.getElementById("stimulus");\n var x = 0;\n var y = 0;\n var counter = 0;\n var incX = 0.15 * 2;\n var incY = 0.02 * 2;\n var timeArray = [];\n var xArray = [];\n var yArray = [];\n var _eyeCoordinates = [];\n var _calibrationData = [];\n var _timeData = [];\n var fixationStimulus_x = [30, 50, 70];\n var fixationStimulus_y = [20, 40, 60];\n\n async function startTest() {\n await runInference();\n openFullscreen();\n updateCountdown(initStimulus);\n }\n\n async function initStimulus() {\n document.getElementById("stimulus").style.display = "block";\n await startRecording();\n recordEyeMovements = true;\n moveStimulus();\n }\n\n async function moveStimulus() {\n counter = counter + 1;\n if (x > upperbound_x) {\n incX = -0.15 * 2;\n } else if (x < lowerbound_x) {\n incX = 0.15 * 2;\n }\n\n if (y > upperbound_y) {\n incY = -0.02 * 2;\n } else if (y < lowerbound_y) {\n incY = 0.02 * 2;\n }\n x = x + incX;\n y = y + incY;\n let time = new Date().getTime();\n\n timeArray.push(time);\n xArray.push(x);\n yArray.push(y);\n\n stimulus.style.left = `${x}%`; // Adjust for half of the cell width\n stimulus.style.top = `${y}%`; // Adjust for half of the cell height\n\n if (y < 75) {\n setTimeout(moveStimulus, 10);\n } else {\n calibrationData = 0;\n\n await stopRecording();\n pageCompleted();\n // setTimeout(fixationStimulus, 10);\n }\n }\n\n async function fixationStimulus() {\n for (let x of fixationStimulus_x) {\n for (let y of fixationStimulus_y) {\n let time = new Date().getTime();\n timeArray.push(time);\n xArray.push(x);\n yArray.push(y);\n\n stimulus.style.left = `${x}%`; // Adjust for half of the cell width\n stimulus.style.top = `${y}%`; // Adjust for half of the cell height\n\n // Wait for 4 seconds before moving to the next position\n await new Promise((resolve) => setTimeout(resolve, 4000));\n }\n }\n\n await stopRecording();\n pageCompleted();\n }\n <\/script>\n </body>\n</html>\n';"short"===e.firekit.task.variantParams.calibrationType&&(t='<!doctype html>\n<html lang="en">\n <head>\n <link\n href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css"\n rel="stylesheet"\n integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3"\n crossorigin="anonymous"\n />\n <meta charset="UTF-8" />\n <meta name="viewport" content="width=device-width, initial-scale=1.0" />\n <script src="https://cdn.jsdelivr.net/npm/onnxjs/dist/onnx.min.js"><\/script>\n </head>\n\n <style>\n body {\n margin: 0;\n min-height: 100vh; /* Ensure body takes the full viewport height */\n display: flex; /* Enable Flexbox */\n justify-content: center; /* Center content horizontally */\n align-items: center; /* Center content vertically */\n font-family: sans-serif;\n }\n\n\n .bubble {\n position: absolute;\n border-radius: 50%;\n animation: spin 2s linear infinite;\n }\n\n\n .piece {\n width: 10px;\n height: 10px;\n background-color: inherit;\n border-radius: 50%;\n position: absolute;\n transform: translate(-50%, -50%);\n opacity: 0;\n }\n\n @keyframes spin {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg); /* Constant speed */\n }\n }\n\n .spin {\n animation: spin 2s linear infinite;\n }\n\n stim {\n position: absolute;\n height: auto;\n cursor: pointer;\n }\n\n #instruction {\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n }\n\n #confirmContainer {\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n }\n\n #stimulus {\n position: absolute;\n /* animation: pulsate 1s infinite; */\n /* animation: spin 2s linear infinite; */\n width: 25px;\n height: 50px;\n background-color: #1e90ff;\n border-radius: 50%;\n display: block; /* Initially hidden */\n transform: translate(-50%, -50%);\n visibility: hidden;\n }\n\n #headCanvas {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n\n #canvas-container {\n position: relative;\n width: 300px;\n height: 300px;\n top: 30px;\n margin: 0 auto;\n }\n\n @keyframes pulsate {\n 0% {\n transform: scale(1) translate(-50%, -50%);\n }\n 50% {\n transform: scale(1.2) translate(-50%, -50%);\n }\n 100% {\n transform: scale(1) translate(-50%, -50%);\n }\n }\n\n @keyframes burst {\n 0% {\n transform: scale(1);\n opacity: 1;\n }\n 100% {\n transform: translate(var(--dx), var(--dy)) scale(0.5);\n opacity: 0;\n }\n }\n\n </style>\n\n <body>\n \x3c!-- Center Instructions Panel --\x3e\n <div id="calibrationContentArea">\n <div class="row gap-2" id="instruction">\n </div>\n </div> \n\n <div id="stimulus" class="pulsating-disc"></div>\n <div id="canvas-container" style="display: none">\n <canvas\n id="headCanvas"\n class="frame"\n style="position: relative; display: none"\n ></canvas>\n </div>\n\n \x3c!-- Confirm Button --\x3e\n <div class="row gap-2" id="confirmContainer" style="display: none">\n <div class="card-body" style="text-align: center">\n <h3>Calibration complete!</h3>\n <button type="button" class="btn btn-primary" id="confirmButton">\n Continue\n </button>\n </div>\n </div>\n\n <div class="panel-block" style="display: block" ;>\n <video class="inputVideo" style="display: none"></video>\n </div>\n\n <audio autoplay id="voiceover"></audio>\n\n <script data-dynamic>\n\n // ----------- required -------------------\n function runAfterEveryFrame(output) {\n if (recordEyeMovements) {\n _gridCoordinates.push({\n x: parseFloat(stimulus.style.left),\n y: parseFloat(stimulus.style.top),\n });\n _eyeCoordinates.push({\n x: output.output.cpuData[0] * 100 - 50,\n y: output.output.cpuData[1] * 100,\n });\n _calibrationData.push(calibrationData);\n let time = new Date().getTime();\n _timeData.push(time);\n }\n }\n \n\n function pageCompleted() {\n continueProcessing = false;\n recordEyeMovements = false;\n const event = new Event("pageComplete");\n document.dispatchEvent(event);\n }\n\n var current_viewingDistance = 0;\n var recordEyeMovements = false;\n var calibrationData = 1;\n var continueProcessing = true;\n var deviceConfig = store.session.get("deviceConfig");\n var _gridCoordinates = [];\n var _parentDir = store.session.get("id");\n var _videoURL = "";\n\n var IMAGE_SIZE = 640;\n var upperbound_x = 96;\n var lowerbound_x = 2;\n var upperbound_y = 96;\n var lowerbound_y = 2;\n var stimulus = document.getElementById("stimulus");\n var x = 0;\n var y = 0;\n var counter = 0;\n var incX = 0.15 * 2;\n var incY = 0.02 * 2;\n var timeArray = [];\n var xArray = [];\n var yArray = [];\n var _eyeCoordinates = [];\n var _calibrationData = [];\n var _timeData = [];\n var fixationStimulus_x = [30, 50, 70];\n var fixationStimulus_y = [20, 40, 60];\n\n async function startTest() {\n await runInference();\n openFullscreen();\n stimulus.classList.add(\'spin\')\n updateCountdown(initStimulus);\n }\n\n async function initStimulus() {\n document.getElementById("stimulus").style.display = "block";\n await startRecording();\n recordEyeMovements = true;\n stimulus.style.visibility = \'visible\';\n moveStimulus();\n }\n\n\n // Function to create the burst effect\n function createBurstEffect(x,y,size=50) {\n const numPieces = 8; // Number of pieces\n // Play the burst audio\n const burstAudio = new Audio(\'https://eyetrackingdata.blob.core.windows.net/public/Audios/feedbackCorrect.mp3\'); // Replace with your audio file path\n burstAudio.play();\n for (let i = 0; i < numPieces; i++) {\n const piece = document.createElement(\'div\');\n piece.style.position = \'absolute\';\n piece.style.transform = \'translate(-50%, -50%)\';\n piece.classList.add(\'piece\');\n piece.style.backgroundColor = \'#1e90ff\';\n piece.style.left = `${x + size / 2 - 5}px`;\n piece.style.top = `${y + size / 4 - 5}px`;\n\n // Random direction for each piece\n const angle = (i / numPieces) * Math.PI * 2;\n const dx = Math.cos(angle) * size + \'px\';\n const dy = Math.sin(angle) * size + \'px\';\n\n // Set custom properties for animation\n piece.style.setProperty(\'--dx\', dx);\n piece.style.setProperty(\'--dy\', dy);\n piece.style.animation = `burst 0.8s ease-out forwards`;\n document.body.appendChild(piece);\n // Remove the piece after animation ends\n // Hide the element\n stimulus.style.visibility = \'hidden\';\n setTimeout(() => piece.remove(), 800);\n\n }\n // Show the element again after 200ms\n setTimeout(() => {\n stimulus.style.visibility = \'visible\';\n stimulus.classList.add(\'spin\')\n // setTimeout(() => {\n // stimulus.classList.add(\'spin\'); // Add the spin class after 500ms\n // }, 200);\n }, 800); // 200ms delayue)\n\n \n // Remove the bubble after bursting\n }\n\n // Define the locations with repetition to cover 3 seconds at 10ms intervals\n var locations = [\n { x: 25, y: 25 }, // Location 1 (25,25)\n { x: 75, y: 25 }, // Location 2 (25,25)\n { x: 25, y: 65 }, // Location 3 (25,25)\n { x: 75, y: 65 }, // Location 4 (25,25)\n // { x: 50, y: 50 }, // Location 5 (25,50)\n ];\n\n // Create an array that repeats each location enough times to cover 3 seconds at 10ms intervals\n var sequence = [];\n locations.forEach((loc) => {\n for (let i = 0; i < 6; i++) { // 6 iterations for 3 seconds at 500ms intervals\n sequence.push(loc);\n }\n });\n\n async function moveStimulus() {\n if (counter < (sequence.length-1)) {\n let point = document.getElementById("point");\n stimulus.style.left = `${sequence[counter].x}%`; // Adjust for half of the cell width\n stimulus.style.top = `${sequence[counter].y}%`; // Adjust for half of the cell height\n \n counter += 1;\n // Toggle recording of eye movements\n if (counter % 6 <= 1) { // First 500ms\n if (counter>2 & counter % 6 == 0){\n var leftInPixels = (sequence[counter-1].x / 100) * document.body.offsetWidth;;\n var topInPixels = (sequence[counter-1].y / 100) * document.body.offsetHeight;;\n if (stimulus.classList.contains(\'spin\')) {\n stimulus.classList.remove(\'spin\');\n }\n createBurstEffect(leftInPixels-12.5,topInPixels+12.5)\n }\n recordEyeMovements = false;\n } else {\n recordEyeMovements = true;\n }\n // console.log(\'counter\',counter,counter%6,recordEyeMovements,stimulus.style.left ,`${sequence[counter].x}%`)\n\n setTimeout(moveStimulus, 500); // Call this function every 500ms\n } else {\n calibrationData = 0;\n await stopRecording();\n continueProcessing = false;\n recordEyeMovements = false;\n var leftInPixels = (sequence[counter-1].x / 100) * document.body.offsetWidth;;\n var topInPixels = (sequence[counter-1].y / 100) * document.body.offsetHeight;;\n createBurstEffect(leftInPixels-12.5,topInPixels+12.5)\n setTimeout(() => pageCompleted(), 500); // Proper callback structure\n }\n }\n // async function moveStimulus() {\n // counter = counter + 1;\n // if (x > upperbound_x) {\n // incX = -0.15 * 2;\n // } else if (x < lowerbound_x) {\n // incX = 0.15 * 2;\n // }\n\n // if (y > upperbound_y) {\n // incY = -0.02 * 2;\n // } else if (y < lowerbound_y) {\n // incY = 0.02 * 2;\n // }\n // x = x + incX;\n // y = y + incY;\n // let time = new Date().getTime();\n\n // timeArray.push(time);\n // xArray.push(x);\n // yArray.push(y);\n\n // stimulus.style.left = `${x}%`; // Adjust for half of the cell width\n // stimulus.style.top = `${y}%`; // Adjust for half of the cell height\n\n // if (y < 75) {\n // setTimeout(moveStimulus, 10);\n // } else {\n // calibrationData = 0;\n\n // await stopRecording();\n // pageCompleted();\n // // setTimeout(fixationStimulus, 10);\n // }\n // }\n\n async function fixationStimulus() {\n for (let x of fixationStimulus_x) {\n for (let y of fixationStimulus_y) {\n let time = new Date().getTime();\n timeArray.push(time);\n xArray.push(x);\n yArray.push(y);\n\n stimulus.style.left = `${x}%`; // Adjust for half of the cell width\n stimulus.style.top = `${y}%`; // Adjust for half of the cell height\n\n // Wait for 4 seconds before moving to the next position\n await new Promise((resolve) => setTimeout(resolve, 4000));\n }\n }\n\n await stopRecording();\n pageCompleted();\n }\n <\/script>\n </body>\n</html>\n');const i=document.createElement("div");i.innerHTML=dc;const s=document.createElement("div");s.style.position="fixed",s.style.top="0",s.style.left="0",s.style.width="100%",s.style.height="100%",qr(pc),qr(Vc),s.innerHTML=t;const a=Hr;document.body.appendChild(s),await Fr(s),await Fr(i),Nr(i),Nr(s),async function(e){initEyeTracking(!1);try{const e=o.session.get("deviceConfig"),n=e.bEyeTracking,t=e.storeVideo;await giveAccess(n,t)}catch(e){console.error("Camera access failed:",e)}startTest()}(),Ur(be.store.data[be.language].translation),await new Promise((n=>{document.addEventListener("pageComplete",(async()=>{s.innerHTML=a,Br(s);var t=_eyeCoordinates.filter(((e,n)=>1==_calibrationData[n])),i=_gridCoordinates.filter(((e,n)=>1==_calibrationData[n]));let r=null,c=!1;if(t.length>=2&&i.length>=2)try{r=function(e,n){const t=new zl(e.map((e=>e.x)),n.map((e=>e.x)),1),i=new zl(e.map((e=>e.y)),n.map((e=>e.y)),1);return{x_regressor:t.coefficients,y_regressor:i.coefficients}}(t,i),function(e){o.session.set("x_coef",e.x_regressor[1]),o.session.set("x_intercept",e.x_regressor[0]),o.session.set("y_coef",e.y_regressor[1]),o.session.set("y_intercept",e.y_regressor[0])}(r),c=!0}catch(e){console.warn("Calibration failed due to insufficient or invalid data:",e),console.warn("Proceeding without eye tracking calibration.")}else console.warn("Insufficient calibration data collected. Face detection may have failed."),console.warn("Proceeding without eye tracking calibration.");await async function(e,n,t){console.log("Test Finished");const i=(new Date).getTime();await stopRecording();var s="RAN_eyeCalibration_"+t.toString()+"_"+i+".webm";try{let i=null;Dr(window.deviceConfig.storeVideo)&&(i=await saveRecordings({filename:s,deviceConfig:window.deviceConfig,config:e,metadata:{}}));const a={assessment_type:"MEP",assessment_stage:"eyeCalibration",recordedVideo:s,distance:t,regressors:n,stimulusPosition:_gridCoordinates,eyeCoordinates:_eyeCoordinates,calibrationData:_calibrationData,uploadURL:i,_timeData:_timeData,parentDir:o.session.get("id"),deviceConfig:o.session.get("deviceConfig"),participantConfig:o.session.get("participantConfig"),correct:1};e.firekit.writeTrial(a)}catch(e){console.error("Error in saveRecordings:",e)}}(e,r,50),zr(pc),zr(Vc),s.remove(),Vr(),n()}),{once:!0})}))}var Bl=5,Ul=10,Hl=24.75,Wl=13;function $l(e){let n,t,i,s;if(e.screenWidth>0&&e.screenHeight>0){const i=Wl/Bl;n=Hl/Ul*(e.screenWidthPX/e.screenWidth),t=i*(e.screenHeightPX/e.screenHeight)}else{const i=.8*e.screenWidthPX,s=.8*e.screenHeightPX;n=i/Ul,t=s/Bl}i=n*Ul,s=t*Bl;const a=(e.screenWidthPX-i)/2,o=(e.screenHeightPX-s)/2,r=[];for(let e=0;e<Bl;e++)for(let i=0;i<Ul;i++){const s=a+i*n+n/2,c=o+e*t+t/2;r.push({x:s,y:c,width:n,height:t})}return r}function Yl(e){const n=[...new Set(e.stimulus)],t=[];for(;t.length<9;){const e=t[t.length-1],i=n.filter((n=>n!==e));t.push(i[Math.floor(Math.random()*i.length)])}return t}function Kl(e,n,t){const i=document.getElementById("grid-container");"Practice"===type?(Ul=3,Bl=3,Hl=2.475*3,Wl=2.6*3,e=$l(deviceConfig),n=Yl(t)):(Ul=10,Bl=5,Hl=24.75,Wl=13,e=$l(deviceConfig));const s=Bl*Ul;for(let a=0;a<s;a++){const s=document.createElement("div"),{x:o,y:r,width:c,height:l}=e[a];s.style.width=`${c}px`,s.style.height=`${l}px`,s.style.left=`${o}px`,s.style.top=`${r}px`,s.style.position="absolute",s.style.transform="translate(-50%, -50%)",s.style.display="flex",s.style.justifyContent="center",s.style.alignItems="center";const p=n[a],u=document.createElement("img");u.src=`${t.dir}/${p}`,u.style.width="50%",u.style.height="auto",s.appendChild(u),i.appendChild(s);const d=u.getBoundingClientRect();d.x=d.x+d.width/2,d.y=d.y+d.height/2;const g={x:parseFloat(s.style.left),y:parseFloat(s.style.top),width:parseFloat(s.style.width),height:parseFloat(s.style.height),stim_x:d.x,stim_y:d.y,stim_width:d.width,stim_height:d.height};_gridCoordinates.push(g),_shuffledImages.push(p.slice(0,-4))}}async function Xl(){return new Promise((e=>{const n=()=>{inputVideo&&inputVideo.videoWidth>0&&inputVideo.videoHeight>0?e():setTimeout(n,100)};n()}))}var Gl=4;function Jl(e){0==--Gl?(document.getElementById("instruction").style.display="none",document.getElementById("grid-container").style.visibility="visible",Gl=4,trialRunnning=!0):(document.getElementById("instruction").innerHTML="<h1>"+Gl+"</h1>",setTimeout((function(){Jl()}),1e3))}var Ql=Object.freeze({__proto__:null,get countdown(){return Gl},generateGridCoordinates:$l,generatePracticeStimuli:Yl,generateStimulusOrder:function(e){const n=Bl*Ul,t=e.stimulus.slice(),i=Math.ceil(n/t.length),s=[];for(let e=0;e<i;e++){const e=t.sort((()=>Math.random()-.5));s.push(...e)}for(let e=1;e<s.length;e++)if(s[e]===s[e-1]){const n=s[e];s[e]=s[e+1],s[e+1]=n}return s.slice(0,n)},get gridHeightCM(){return Wl},get gridWidthCM(){return Hl},get numCols(){return Ul},get numRows(){return Bl},populateGrid:Kl,startTest:async function(e){if(e)try{await Xl(),continueProcessing=!0,runInference()}catch(e){console.warn("Eye tracking inference failed, continuing without eye tracking:",e),continueProcessing=!1}openFullscreen(),startRecording(),Kl(gridCoordinates,shuffledImages,testConfig),Jl(),setTimeout((function(){document.querySelector(".finish-button").disabled=!1}),5e3)},updateCountdown:Jl,waitForVideoReady:Xl});async function Zl(e,n,t={}){var i=new Worker(new URL("worker.de4112d0.js",import.meta.url),{type:"module"});window.myWorker=i;const s=document.createElement("div");s.innerHTML=dc;const a=document.createElement("div");a.style.position="fixed",a.style.top="0",a.style.left="0",a.style.width="100%",a.style.height="100%",window.deviceConfig=o.session.get("deviceConfig");const{bEyeTracking:r,storeVideo:c}=window.deviceConfig;qr(Ql),qr(pc),qr(Vc),a.innerHTML='<!DOCTYPE html>\n<html lang="en">\n<head>\n <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">\n <meta charset="UTF-8">\n <meta name="viewport" content="width=device-width, initial-scale=1.0">\n <title>Image and Audio Recording</title>\n\n \x3c!-- <script data-dynamic src="./RAN.js"><\/script> --\x3e\n</head>\n\n<style> \n body {\n margin: 0;\n min-height: 100vh; /* Ensure body takes the full viewport height */\n display: flex; /* Enable Flexbox */\n justify-content: center; /* Center content horizontally */\n align-items: center; /* Center content vertically */\n font-family: sans-serif;\n }\n\n stim {\n position: absolute;\n height: auto;\n cursor: pointer;\n }\n\n #instruction {\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n }\n\n #confirmContainer {\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n }\n\n #headCanvas {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n\n #canvas-container {\n position: relative;\n width: 300px;\n height: 300px;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n text-align: center;\n }\n\n /* TODO: Using RAN Intro Container temporarily */\n #ran-intro-container {\n position: fixed;\n top: 0; left: 0;\n width: 100vw; height: 100vh;\n }\n</style>\n\n\n<body> \n <div id="grid-container" style="position: absolute; width: 100%; height: 100%; visibility: hidden;"></div>\n <div id="canvas-container" style="visibility: hidden">\n <h5 id="message"></h5>\n <canvas id="headCanvas" class="frame" style="position: relative"></canvas>\n </div>\n \x3c!-- Countdown display (used by updateCountdown in RAN.js after intro hides) --\x3e\n <div id="instruction"></div>\n\n \x3c!-- Intro Panel --\x3e\n <div id="ran-intro-container" class="container-fluid h-100"> \n <div class="static-container">\n <div class="header-container--ran"> \n <h2 class="header"></h2>\n <h3 class="subtitle"></h3>\n </div>\n <img class="lion-char" src="https://storage.googleapis.com/roav-ran/shared/assets/pointingLeftLionAge12.webp" alt="Lion character">\n <p class="next-text"></p>\n </div>\n </div>\n\n \x3c!-- Continue Button (shown during intro, hidden once test starts) --\x3e\n <button class="next-button" disabled aria-label="Start"></button>\n\n\n <div class="panel-block" style="display: block" ;>\n <video class="inputVideo" style="display: none"></video>\n </div>\n \n \x3c!-- Audio Playing --\x3e \n <audio autoplay id="voiceover"> </audio>\n \n \x3c!--TODO: Check if we need this--\x3e\n \x3c!-- Confirm Button --\x3e\n \x3c!--<div class="row gap-2" id="confirmContainer" style="display: none;">\n <div class="card-body" style="text-align: center;">\n <h3> <span id="capName"></span> Test Complete </h3>\n <button type="button" class="btn btn-primary" id="confirmButton">Back to Menu</button>\n </div>\n </div>--\x3e\n\n \x3c!-- Finish Button --\x3e\n <button class="finish-button" disabled aria-label="Finish"></button>\n\n<script data-dynamic>\n\nvar deviceConfig = store.session.get(\'deviceConfig\')\n// var deviceConfig = {screenWidth: 29, screenHeight: 16.2, screenWidthPX: 960, screenHeightPX: 540, webcamHeight: 0.5}\nvar testConfig = store.session.get(\'testConfig\')\n// var testConfig = {dir: "https://eyetrackingdata.blob.core.windows.net/public/assets/Letter",\n// stimulus : ["C.svg", "D.svg", "H.svg", "K.svg", "N.svg", "O.svg", "R.svg", "S.svg", "V.svg", "Z.svg"],\n// sizecm: 2}\n\nif (testConfig && testConfig[\'testname\'] === \'Letters\') {\n var subtestText = [\'Letter\', \'letter\']\n} else {\n var subtestText = [\'Number\', \'number\']\n}\n\nvar nextButton = document.querySelector(\'.next-button\');\nvoiceover.addEventListener(\'ended\', function() {\n nextButton.disabled = false;\n});\n// Fallback: enable button after 5 seconds if audio fails or has no src\nvar _audioFallbackTimer = setTimeout(function() {\n nextButton.disabled = false;\n}, 7000);\nnextButton.addEventListener(\'click\', function() {\n pre_startTest();\n});\n\nvar desktop = document.documentElement;\nvar canvasContainer = document.getElementById("canvas-container");\nvar camera_stream;\nvar mediaRecorder;\nvar mediaChunks = [];\nvar current_viewingDistance;\n\nvar clickedTests = store.session.get(\'clickedTests\') || [];\nif (type!==\'Practice\') {\nclickedTests.push(testConfig[\'testname\'])\n}\n\nstore.session.set(\'clickedTests\',clickedTests)\n\nvar gridCoordinates = generateGridCoordinates(deviceConfig)\nvar shuffledImages = testConfig.stimulus; \n// var shuffledImages = generateStimulusOrder(testConfig)\n \nvar _gridCoordinates = []\n// gridCoordinates\nvar _shuffledImages = []\n// shuffledImages.map(filename => filename.split(\'.\')[0]);\nvar _parentDir = store.session.get("id")\nvar _videoURL = \'\'\nvar _deviceConfig = deviceConfig\nvar _testConfig = testConfig\n\nvar x_coef =\nstore.session.get("x_coef") !== null\n ? store.session.get("x_coef")\n : -3.49; // Default value can be 0 or any other default you choose\nvar x_intercept =\nstore.session.get("x_intercept") !== null\n ? store.session.get("x_intercept")\n : 45; // Default value can be 0\nvar y_coef =\nstore.session.get("y_coef") !== null ? store.session.get("y_coef") : 0; // Default value can be 0\nvar y_intercept =\nstore.session.get("y_intercept") !== null\n ? store.session.get("y_intercept")\n : 0; // Default value can be 0\n\n\nvar xpreds = []\nvar ypreds = []\nvar eyetTimer = []\nvar trialRunnning = false\nvar continueProcessing = false\nfunction pre_startTest(){\n clearTimeout(_audioFallbackTimer);\n voiceover.pause();\n voiceover.currentTime = 0;\n document.querySelector(\'.container-fluid.h-100\').style.display = \'none\';\n document.querySelector(\'.next-button\').style.display = \'none\';\n document.querySelector(\'.finish-button\').style.display = \'flex\';\n startTest(deviceConfig.bEyeTracking);\n }\n\nfunction runAfterEveryFrame(output) {\n var xpred =\n ((x_coef * (output.output.cpuData[0] * 100 - 50) + x_intercept) *\n screen.width) /\n 100;\n var ypred = ((y_coef*((output.output.cpuData[1]*100)) + y_intercept) * screen.height) /100;\n if (trialRunnning) {\n xpreds.push(xpred);\n ypreds.push(ypred);\n eyetTimer.push(Date.now()); // corrected from \'eyetTimer\' and \'data.now()\' to \'eyeTimer\' and \'Date.now()\'\n }\n }\n\n\n\n\n<\/script>\n\n</body>\n</html>';const l=Hr;document.body.appendChild(a),window.type=e,await Fr(a),await Fr(s),Nr(s),Nr(a),async function(e,n,t,i){initEyeTracking(!1),await giveAccess(n,t),document.querySelector(".header").innerHTML=(i.header.text??"").replace(/\n/g,"<br>"),document.querySelector(".subtitle").innerHTML=(i.subtitle.text??"").replace(/\n/g,"<br>"),document.querySelector(".next-text").textContent=i.footer.text??"";var s=document.getElementById("voiceover"),a=[i.header?.audioSrc,i.subtitle?.audioSrc,i.footer?.audioSrc].filter(Boolean);function o(e){if(0!==e.length){var[n,...t]=e;s.src=n,t.length>0&&s.addEventListener("ended",(function(){o(t)}),{once:!0}),s.play().catch((function(){}))}}a.length>0?o(a):s.src=""}(0,r,c,t);const p=new AbortController;await new Promise((e=>{document.body.addEventListener("click",(async function(t){t.target.classList.contains("finish-button")&&(window.continueProcessing=!1,a.innerHTML=l,Br(a),await ep(n,{stimulus:_shuffledImages}),a.remove(),p.abort(),function(e){zr(e);document.querySelectorAll("button").forEach((e=>{if(e.parentNode){const n=e.cloneNode(!0);e.parentNode.replaceChild(n,e)}})),Vr();for(;document.body.firstChild;)document.body.removeChild(document.body.firstChild)}(Ql),e())}),{signal:p.signal})}))}async function ep(e,n){console.log("Test Finished"),await stopRecording();let t=null;const i=(new Date).getTime(),s="RAN_"+testConfig.testname+"_"+i+".webm";try{t=await saveRecordings({filename:s,deviceConfig:window.deviceConfig,config:e,metadata:n})}catch(e){console.error("Error in saveRecordings:",e)}const a={assessment_type:testConfig.testname,assessment_stage:type,stimulusPosition:_gridCoordinates,stimulus:n.stimulus,recordedVideo:s,parentDir:_parentDir,uploadURL:t,xpreds:xpreds,ypreds:ypreds,eyetTimer:eyetTimer,correct:1,deviceConfig:_deviceConfig,testConfig:_testConfig};await e.firekit.writeTrial(a)}async function np(e){const n=Hr,t=document.createElement("div");t.innerHTML=n,document.body.appendChild(t);const i=["https://eyetrackingdata.blob.core.windows.net/public/Images/squareAddition_white.png","./views/eyetracking_google.onnx",`https://eyetrackingdata.blob.core.windows.net/public/Audios/${be.language}/calibration.mp3`,"https://eyetrackingdata.blob.core.windows.net/public/Images/eyecalibration.gif","https://eyetrackingdata.blob.core.windows.net/public/Images/eyecalibration_short.gif","https://eyetrackingdata.blob.core.windows.net/public/Images/parent-help-icon.png","https://eyetrackingdata.blob.core.windows.net/public/Images/webcamCentered.jpg","https://eyetrackingdata.blob.core.windows.net/public/Images/webcamPosition.PNG","https://eyetrackingdata.blob.core.windows.net/public/Images/badlighting.jpg","https://eyetrackingdata.blob.core.windows.net/public/Images/glassesReflection.jpg","https://eyetrackingdata.blob.core.windows.net/public/Images/goodPosition.jpg",`https://eyetrackingdata.blob.core.windows.net/public/Audios/${be.language}/deviceConfig.mp3`,"https://eyetrackingdata.blob.core.windows.net/public/Audios/deviceConfig.mp3","https://eyetrackingdata.blob.core.windows.net/public/Images/squareAddition.png",`https://eyetrackingdata.blob.core.windows.net/public/Audios/${be.language}/headCalibration.mp3`,"https://eyetrackingdata.blob.core.windows.net/public/Audios/letterStoryCalibration.mp3","https://eyetrackingdata.blob.core.windows.net/public/Audios/numberStoryCalibration.mp3","https://eyetrackingdata.blob.core.windows.net/public/Audios/letterCalibration.mp3","https://eyetrackingdata.blob.core.windows.net/public/Audios/letterPractice.mp3","https://eyetrackingdata.blob.core.windows.net/public/Audios/letterTest.mp3","https://eyetrackingdata.blob.core.windows.net/public/Audios/numberCalibration.mp3","https://eyetrackingdata.blob.core.windows.net/public/Audios/numberPractice.mp3","https://eyetrackingdata.blob.core.windows.net/public/Audios/numberTest.mp3","https://eyetrackingdata.blob.core.windows.net/public/Images/letter-practice-reading-order.gif","https://eyetrackingdata.blob.core.windows.net/public/Images/letter-test-reading-order.gif","https://eyetrackingdata.blob.core.windows.net/public/Images/number-practice-reading-order.gif","https://eyetrackingdata.blob.core.windows.net/public/Images/number-test-reading-order.gif","https://eyetrackingdata.blob.core.windows.net/public/Images/squareAddition_white.png","https://cdn.jsdelivr.net/npm/onnxjs/dist/onnx.min.js","https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css","https://cdn.jsdelivr.net/npm/@mediapipe/face_mesh@0.4/face_mesh_solution_simd_wasm_bin.wasm","https://cdn.jsdelivr.net/npm/@mediapipe/face_mesh@0.4/face_mesh_solution_packed_assets.data","https://cdn.jsdelivr.net/npm/@mediapipe/face_mesh@0.4/face_mesh_solution_simd_wasm_bin.js"],s=["https://eyetrackingdata.blob.core.windows.net/public/Images/astronaut-girl-default.png","https://eyetrackingdata.blob.core.windows.net/public/Images/astronaut-girl-panicked.png","https://eyetrackingdata.blob.core.windows.net/public/Images/astronaut-girl-unsure.png","https://eyetrackingdata.blob.core.windows.net/public/Images/astronaut-girl-confused.png","https://eyetrackingdata.blob.core.windows.net/public/Images/astronaut-girl-smile.png","https://eyetrackingdata.blob.core.windows.net/public/Images/astronaut-girl-happy.png","https://eyetrackingdata.blob.core.windows.net/public/Images/astronaut-girl-bye.png","https://eyetrackingdata.blob.core.windows.net/public/Images/space-ship-control.png","https://eyetrackingdata.blob.core.windows.net/public/Images/purple-planet.png","https://eyetrackingdata.blob.core.windows.net/public/Images/orange-planet.png","https://eyetrackingdata.blob.core.windows.net/public/Audios/intro.mp3","https://eyetrackingdata.blob.core.windows.net/public/Audios/intro2.mp3","https://eyetrackingdata.blob.core.windows.net/public/Audios/intro3.mp3","https://eyetrackingdata.blob.core.windows.net/public/Audios/letterStoryPractice.mp3","https://eyetrackingdata.blob.core.windows.net/public/Audios/numberStoryPractice.mp3","https://eyetrackingdata.blob.core.windows.net/public/Audios/letterStoryTest.mp3","https://eyetrackingdata.blob.core.windows.net/public/Audios/numberStoryTest.mp3","https://eyetrackingdata.blob.core.windows.net/public/Audios/end.mp3","https://eyetrackingdata.blob.core.windows.net/public/Audios/end2.mp3"],a=[...new Set(e.story?[...i,...s]:i)];await function(e,n){return new Promise(((t,i)=>{let s=0;e.forEach((a=>{if("fetch"==="fetch")fetch(a).then((e=>{e.ok?o():r()})).catch(r);else console.error("Unknown asset type:",a),r();function o(){s++,s==e.length&&(n.remove(),t())}function r(e){console.error("Error loading asset:",a,e),i(e)}}))}))}(a,t),console.log("All assets preloaded.")}function tp(){window.instructionAbortController&&(window.instructionAbortController.abort(),delete window.instructionAbortController),Vr()}async function ip(e,n){Array.isArray(e)||(e=[e]);const t=document.createElement("div");t.innerHTML='<!DOCTYPE html>\n<html lang="en">\n<head>\n <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">\n <meta charset="UTF-8">\n <meta name="viewport" content="width=device-width, initial-scale=1.0">\n</head>\n\n<body>\n <div class="container-fluid h-100">\n <div class="static-container">\n <h2 class="header--center"></h2>\n <img class="lion-char" src="https://storage.googleapis.com/roav-ran/shared/assets/pointingLeftLionAge12.webp" alt="Lion character">\n <p class="next-text"></p>\n </div>\n <button class="next-button" id="info-next-button" aria-label="Continue"></button>\n </div>\n <audio id="voiceover"></audio>\n</body>\n\n<script data-dynamic>\n var slideIndex = 0;\n var slides = window.infoSlides || [];\n var infoSignal = window.infoSlideAbortController\n ? window.infoSlideAbortController.signal\n : undefined;\n var voiceover = document.getElementById(\'voiceover\');\n\n document.querySelector(\'.next-button\').addEventListener(\'click\', function () {\n voiceover.pause();\n showSlide(++slideIndex);\n }, { signal: infoSignal });\n\n showSlide(slideIndex);\n\n function showSlide(index) {\n if (index >= slides.length) {\n document.dispatchEvent(new Event(\'pageComplete\'));\n return;\n }\n\n var slide = slides[index];\n document.querySelector(\'.header--center\').textContent = slide.header.text || \'\';\n document.querySelector(\'.next-text\').textContent = slide.footer.text || \'\';\n\n var btn = document.querySelector(\'.next-button\');\n if (slide.showButton === false) {\n btn.classList.add(\'hidden\');\n } else {\n btn.classList.remove(\'hidden\');\n }\n\n var headerSrc = slide.header && slide.header.audioSrc;\n var footerSrc = slide.footer && slide.footer.audioSrc;\n\n if (headerSrc || footerSrc) {\n btn.disabled = true;\n }\n\n if (headerSrc) {\n voiceover.src = headerSrc;\n voiceover.addEventListener(\'ended\', function onHeaderEnded() {\n if (footerSrc) {\n voiceover.src = footerSrc;\n voiceover.addEventListener(\'ended\', function () {\n btn.disabled = false;\n }, { once: true, signal: infoSignal });\n voiceover.play().catch(function () {});\n } else {\n btn.disabled = false;\n }\n }, { once: true, signal: infoSignal });\n voiceover.play().catch(function () {});\n } else if (footerSrc) {\n voiceover.src = footerSrc;\n voiceover.addEventListener(\'ended\', function () {\n btn.disabled = false;\n }, { once: true, signal: infoSignal });\n voiceover.play().catch(function () {});\n }\n }\n<\/script>\n</html>\n',document.body.appendChild(t),window.infoSlides=e,window.infoSlideAbortController=new AbortController,await Fr(t),Nr(t),await new Promise((e=>{document.addEventListener("pageComplete",(()=>{t.remove(),function(){window.infoSlideAbortController&&(window.infoSlideAbortController.abort(),delete window.infoSlideAbortController);delete window.infoSlides,Vr()}(),e()}),{once:!0})}))}async function sp(e,n){const t=document.createElement("div");t.innerHTML='<!DOCTYPE html>\n<html lang="en">\n<head>\n <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">\n <meta charset="UTF-8">\n <meta name="viewport" content="width=device-width, initial-scale=1.0">\n</head>\n\n<body>\n <div class="container-fluid h-100">\n <div class="static-container">\n \x3c!-- <h2 class="header--center"></h2> --\x3e\n <div class="speech-bubble" role="status"></div>\n <img class="lion-char" src="https://storage.googleapis.com/roav-ran/shared/assets/sadLionAge12.webp" alt="Lion character">\n <p class="next-text"></p>\n </div>\n <button class="next-button" id="mic-fail-next-button" aria-label="Continue"></button>\n </div>\n <audio id="voiceover"></audio>\n</body>\n\n<script data-dynamic>\n var slide = window.micFailSlide || {};\n var micFailSignal = window.micFailAbortController\n ? window.micFailAbortController.signal\n : undefined;\n var voiceover = document.getElementById(\'voiceover\');\n\n document.querySelector(\'.speech-bubble\').innerHTML = (slide.header && slide.header.text) || \'\';\n document.querySelector(\'.next-text\').textContent = (slide.footer && slide.footer.text) || \'\';\n\n document.querySelector(\'.next-button\').addEventListener(\'click\', function () {\n voiceover.pause();\n document.dispatchEvent(new Event(\'pageComplete\'));\n }, { signal: micFailSignal });\n\n var headerSrc = slide.header && slide.header.audioSrc;\n var footerSrc = slide.footer && slide.footer.audioSrc;\n\n if (headerSrc) {\n voiceover.src = headerSrc;\n voiceover.addEventListener(\'ended\', function () {\n if (footerSrc) {\n voiceover.src = footerSrc;\n voiceover.play().catch(function () {});\n }\n }, { once: true, signal: micFailSignal });\n voiceover.play().catch(function () {});\n } else if (footerSrc) {\n voiceover.src = footerSrc;\n voiceover.play().catch(function () {});\n }\n<\/script>\n</html>\n',document.body.appendChild(t),window.micFailSlide=e,window.micFailAbortController=new AbortController,await Fr(t),Nr(t),await new Promise((e=>{document.addEventListener("pageComplete",(()=>{t.remove(),function(){window.micFailAbortController&&(window.micFailAbortController.abort(),delete window.micFailAbortController);delete window.micFailSlide,Vr()}(),e()}),{once:!0})}))}async function ap(e,n){await sc(!1,!1);const t=document.createElement("div");t.innerHTML="<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <link href=\"https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css\" rel=\"stylesheet\" integrity=\"sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3\" crossorigin=\"anonymous\">\n <meta charset=\"UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n</head>\n\n<style>\n #stimulus-grid {\n position: absolute;\n top: 30%;\n left: 3%;\n display: grid;\n grid-template-columns: repeat(3, auto);\n gap: clamp(8px, 2vw, 24px) clamp(16px, 4vw, 56px);\n align-items: center;\n width: 60%;\n }\n\n .stimulus-cell {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: clamp(6px, 1.2vw, 16px);\n border-radius: 14px;\n transition: background-color 0.15s ease;\n }\n\n .stimulus-cell.highlighted {\n background-color: #f5d9a8;\n }\n\n .stimulus-cell img {\n height: clamp(80px, 18vh, 200px);\n width: auto;\n display: block;\n }\n</style>\n\n<body>\n <div class=\"container-fluid h-100\">\n <div class=\"static-container\">\n <div class=\"header-container--practice-intro\"> \n <h2 class=\"header\"></h2>\n <h3 class=\"subtitle--practice-intro\"></h3>\n </div>\n <div id=\"stimulus-grid\"></div>\n <img class=\"lion-char-practice-intro\" src=\"https://storage.googleapis.com/roav-ran/shared/assets/pointingLeftLionAge12.webp\" alt=\"Lion character\">\n </div>\n </div>\n <button disabled class=\"next-button\" aria-label=\"Continue\"></button>\n <audio id=\"practice-intro-audio\"></audio>\n</body>\n\n<script data-dynamic>\n var cfg = window.practiceIntroConfig || {};\n var stimuliImages = cfg.assets.stimuli.images || [];\n var stimuliAudios = cfg.assets.stimuli.audioSrcs || [];\n var stimulusDir = cfg.stimulusDir || '';\n var practiceSignal = window.practiceIntroAbortController\n ? window.practiceIntroAbortController.signal\n : undefined;\n\n var FALLBACK_DELAY_MS = 1200;\n var userSpoke = false;\n var animFrameId = null;\n var micStream = null;\n var mediaRecorder;\n var mediaChunks = [];\n var timeoutId = null;\n\n function stripSsml(str) {\n return (str || '').replace(/<[^>]*>/g, '').trim();\n }\n\n function playAudio(src, onEnded) {\n if (src) {\n audio.src = src;\n audio.currentTime = 0;\n var handler = function () {\n audio.removeEventListener('ended', handler);\n onEnded();\n };\n audio.addEventListener('ended', handler, { signal: practiceSignal });\n audio.play().catch(function () {\n audio.removeEventListener('ended', handler);\n setTimeout(onEnded, FALLBACK_DELAY_MS);\n });\n } else {\n setTimeout(onEnded, FALLBACK_DELAY_MS);\n }\n }\n\n // Build the stimulus grid\n var grid = document.getElementById('stimulus-grid');\n stimuliImages.forEach(function (filename) {\n var cell = document.createElement('div');\n cell.className = 'stimulus-cell';\n var img = document.createElement('img');\n img.src = stimulusDir + '/' + filename;\n img.alt = filename.replace('.svg', '');\n cell.appendChild(img);\n grid.appendChild(cell);\n });\n\n var cells = grid.querySelectorAll('.stimulus-cell');\n var audio = document.getElementById('practice-intro-audio');\n var title = document.querySelector('.header');\n var subtitle = document.querySelector('.subtitle--practice-intro');\n var nextBtn = document.querySelector('.next-button');\n\n nextBtn.addEventListener('click', async function () {\n nextBtn.disabled = true;\n cleanupAudio();\n if (window.endPractice) {\n await window.endPractice();\n } else {\n document.dispatchEvent(new Event('pageComplete'));\n }\n }, { signal: practiceSignal });\n\n // Phase 1: show header text, play header audio; next button stays disabled\n title.innerHTML = stripSsml(cfg.assets.header.text);\n playAudio(cfg.assets.header.audioSrc, function () {\n highlightStep(0);\n });\n\n // Phase 2: play each stimulus audio sequentially, highlighting the matching cell\n function highlightStep(index) {\n cells.forEach(function (c) { c.classList.remove('highlighted'); });\n if (index >= stimuliImages.length) {\n showHeader2Phase();\n return;\n }\n cells[index].classList.add('highlighted');\n playAudio(stimuliAudios[index] || '', function () {\n highlightStep(index + 1);\n });\n }\n\n // Phase 3: remove highlights, play header2 audio with header2 text\n function showHeader2Phase() {\n var header2Text = cfg.assets.header2.text || '';\n var breakMatch = header2Text.match(/^(.*?)<break[^>]*\\/>(.*)$/s);\n if (breakMatch) {\n title.innerHTML = breakMatch[1].trim();\n subtitle.innerHTML = breakMatch[2].trim();\n subtitle.style.display = 'block';\n } else {\n title.innerHTML = stripSsml(header2Text);\n }\n playAudio(cfg.assets.header2.audioSrc, function () {\n showPracticePhase();\n });\n }\n\n // Phase 4: start RMS mic detection; enable next button when user speaks\n function showPracticePhase() {\n nextBtn.disabled = true;\n setupMediaStream();\n if (window.startPracticeRecording) window.startPracticeRecording();\n }\n\n async function setupMediaStream() {\n try {\n const audioContext = new AudioContext();\n micStream = await navigator.mediaDevices.getUserMedia({ audio: true });\n\n const micSource = audioContext.createMediaStreamSource(micStream);\n const analyser = audioContext.createAnalyser();\n analyser.fftSize = 2048;\n micSource.connect(analyser);\n\n const bufferLength = analyser.frequencyBinCount;\n const dataArray = new Uint8Array(bufferLength);\n\n function detectAudio() {\n analyser.getByteTimeDomainData(dataArray);\n let sum = 0;\n for (let i = 0; i < bufferLength; i++) {\n sum += (dataArray[i] - 128) * (dataArray[i] - 128);\n }\n const rms = Math.sqrt(sum / bufferLength);\n if (rms > 7.0) {\n if (timeoutId !== null) { clearTimeout(timeoutId); timeoutId = null; }\n userSpoke = true;\n nextBtn.disabled = false;\n return;\n }\n animFrameId = requestAnimationFrame(detectAudio);\n }\n\n animFrameId = requestAnimationFrame(detectAudio);\n timeoutId = setTimeout(function () {\n if (!userSpoke) {\n nextBtn.disabled = false;\n }\n }, 5000);\n } catch (err) {\n console.error('Microphone access failed:', err);\n nextBtn.disabled = false;\n }\n }\n\n function cleanupAudio() {\n if (timeoutId !== null) { clearTimeout(timeoutId); timeoutId = null; }\n if (animFrameId !== null) { cancelAnimationFrame(animFrameId); animFrameId = null; }\n if (micStream !== null) { micStream.getTracks().forEach(function (t) { t.stop(); }); micStream = null; }\n }\n<\/script>\n</html>\n",window.practiceIntroConfig=e,window.practiceIntroAbortController=new AbortController,window.startPracticeRecording=oc,window.endPractice=async function(){await rc();const e=(new Date).getTime(),t="RAN_practice_"+window.practiceIntroConfig.assets.ranType+"_"+e+".webm";try{await cc({filename:t,deviceConfig:window.deviceConfig,config:n,metadata:{stimulus:"practice"}})}catch(e){console.error("Error saving practice recording:",e)}document.dispatchEvent(new Event("pageComplete"))},document.body.appendChild(t),await Fr(t),Nr(t),await new Promise((e=>{document.addEventListener("pageComplete",(()=>{t.remove(),function(){window.practiceIntroAbortController&&(window.practiceIntroAbortController.abort(),delete window.practiceIntroAbortController);delete window.practiceIntroConfig,delete window.startPracticeRecording,delete window.endPractice,Vr()}(),e()}),{once:!0})}))}var op={subtestOrder:["Letters","Numbers"],infoSlideView:{welcome:{header:{audioSrc:"https://storage.googleapis.com/roav-ran/en/shared/audio/welcomeHeader.mp3",text:"Welcome to Letters and Numbers"},footer:{audioSrc:"https://storage.googleapis.com/roav-ran/en/shared/audio/welcomeFooter.mp3",text:"Let's get started! Click the yellow button to continue."},showButton:!0},calibrationIntro:{header:{audioSrc:"https://storage.googleapis.com/roav-ran/en/shared/audio/calibrationIntroHeader.mp3",text:"You will see blue circles show up on the screen. Look at them until they pop!"},footer:{text:"Click the yellow button to continue."},showButton:!0},calibrationEnd:{header:{audioSrc:"https://storage.googleapis.com/roav-ran/en/shared/audio/calibrationEndHeader.mp3",text:"Great job! Today, you are going to help me \n read some letters and numbers."},footer:{audioSrc:"https://storage.googleapis.com/roav-ran/en/shared/audio/calibrationEndFooter.mp3",text:"Let's start with letters! Click the yellow button to continue."},showButton:!0},guidedPracticeLetters:{header:{audioSrc:"https://storage.googleapis.com/roav-ran/en/shared/audio/guidedPracticeLetters.mp3",text:"Now let's try to do more than one letter at a time!"},footer:{text:"Click the yellow button to continue."},showButton:!0},guidedPracticeNumbers:{header:{audioSrc:"https://storage.googleapis.com/roav-ran/en/shared/audio/guidedPracticeNumbers.mp3",text:"Nice Job!\n Now, we are going to read some numbers."},footer:{text:"Click the yellow button to continue."},showButton:!0},assessmentEnd:{header:{audioSrc:"https://storage.googleapis.com/roav-ran/en/shared/audio/assessmentEndHeader.mp3",text:"You did an amazing job reading\nletters and numbers today!"},footer:{audioSrc:"https://storage.googleapis.com/roav-ran/en/shared/audio/assessmentEndFooter.mp3",text:"You are all done with this game!"},showButton:!0}},micFailView:{header:{text:"Uh-Oh! I can't hear you.<br />Please exit the game and try again later.",audioSrc:"https://storage.googleapis.com/roav-ran/en/shared/audio/micFailViewHeader.mp3"},footer:{text:"Click the yellow button to exit.",audioSrc:"https://storage.googleapis.com/roav-ran/en/shared/audio/micFailViewFooter.mp3"}},instructionView:{maxFeedbackRetries:3,letterB:{header:{audioSrc:"https://storage.googleapis.com/roav-ran/en/shared/audio/letterBHeader.mp3",text:"The name of the letter is B. Can you say B?"},footer:{text:"Click the yellow button to continue."}},letterD:{header:{audioSrc:"https://storage.googleapis.com/roav-ran/en/shared/audio/letterDHeader.mp3",text:"Awesome! Can you tell me the name of this letter?"},footer:{text:"Click the yellow button to continue."}},feedback:{header:{audioSrc:"https://storage.googleapis.com/roav-ran/en/shared/audio/feedbackHeader.mp3",text:"I can't hear you. Can you say it again?"},footer:{text:"Click the yellow button to continue."}}},practiceView:{letter:{ranType:"Letters",header:{audioSrc:"https://storage.googleapis.com/roav-ran/en/shared/audio/letterHeader.mp3",text:"Watch me say these letter names first!"},header2:{audioSrc:"https://storage.googleapis.com/roav-ran/en/shared/audio/letterHeader2.mp3",text:"Your turn! Start from the left and read each one as fast as you can."},stimuli:{audioSrcs:["https://storage.googleapis.com/roav-ran/en/shared/audio/stimuli/M.mp3","https://storage.googleapis.com/roav-ran/en/shared/audio/stimuli/A.mp3","https://storage.googleapis.com/roav-ran/en/shared/audio/stimuli/Z.mp3","https://storage.googleapis.com/roav-ran/en/shared/audio/stimuli/X.mp3","https://storage.googleapis.com/roav-ran/en/shared/audio/stimuli/Z.mp3","https://storage.googleapis.com/roav-ran/en/shared/audio/stimuli/F.mp3"],images:["M.svg","A.svg","Z.svg","X.svg","Z.svg","F.svg"]},footer:{audioSrc:"https://storage.googleapis.com/roav-ran/en/shared/audio/clickDoneButton.mp3",text:"Click the yellow button when you are done."}},number:{ranType:"Numbers",header:{audioSrc:"https://storage.googleapis.com/roav-ran/en/shared/audio/numberHeader.mp3",text:"Watch me say these numbers first!"},header2:{audioSrc:"https://storage.googleapis.com/roav-ran/en/shared/audio/numberHeader2.mp3",text:"Your turn! Start from the left and read each one as fast as you can."},stimuli:{audioSrcs:["https://storage.googleapis.com/roav-ran/en/shared/audio/stimuli/one.mp3","https://storage.googleapis.com/roav-ran/en/shared/audio/stimuli/four.mp3","https://storage.googleapis.com/roav-ran/en/shared/audio/stimuli/three.mp3","https://storage.googleapis.com/roav-ran/en/shared/audio/stimuli/five.mp3","https://storage.googleapis.com/roav-ran/en/shared/audio/stimuli/nine.mp3","https://storage.googleapis.com/roav-ran/en/shared/audio/stimuli/two.mp3"],images:["one.svg","four.svg","three.svg","five.svg","nine.svg","two.svg"]},footer:{audioSrc:"https://storage.googleapis.com/roav-ran/en/shared/audio/clickDoneButton.mp3",text:"Click the yellow button when you are done."}}},ranView:{letter:{practiceIntro:{header:{audioSrc:"https://storage.googleapis.com/roav-ran/en/shared/audio/practiceIntroHeader.mp3",text:"Great job! Now let's practice."},subtitle:{audioSrc:"https://storage.googleapis.com/roav-ran/en/shared/audio/letterPracticeIntroSubtitle.mp3",text:"Remember to read the letters as fast as you can."},footer:{audioSrc:"https://storage.googleapis.com/roav-ran/en/shared/audio/clickDoneButton.mp3",text:"Click the yellow button when you are done."}},testIntro:{header:{audioSrc:"https://storage.googleapis.com/roav-ran/en/shared/audio/letterTestIntroHeader.mp3",text:"Perfect!\n Let's try saying more letter names!"},subtitle:{audioSrc:"https://storage.googleapis.com/roav-ran/en/shared/audio/testIntroSubtitle.mp3",text:"Remember to read as fast as you can."},footer:{audioSrc:"https://storage.googleapis.com/roav-ran/en/shared/audio/clickDoneButton.mp3",text:"Click the yellow button when you are done."}}},number:{practiceIntro:{header:{audioSrc:"https://storage.googleapis.com/roav-ran/en/shared/audio/practiceIntroHeader.mp3",text:"Great job!\nNow let's practice."},subtitle:{audioSrc:"https://storage.googleapis.com/roav-ran/en/shared/audio/numberPracticeIntroSubtitle.mp3",text:"Remember to read the numbers as fast as you can!"},footer:{audioSrc:"https://storage.googleapis.com/roav-ran/en/shared/audio/clickDoneButton.mp3",text:"Click the yellow button when you are done."}},testIntro:{header:{audioSrc:"https://storage.googleapis.com/roav-ran/en/shared/audio/numberTestIntroHeader.mp3",text:"Perfect!\nLet's try saying more numbers!"},subtitle:{audioSrc:"https://storage.googleapis.com/roav-ran/en/shared/audio/testIntroSubtitle.mp3",text:"Remember to read as fast as you can."},footer:{audioSrc:"https://storage.googleapis.com/roav-ran/en/shared/audio/clickDoneButton.mp3",text:"Click the yellow button when you are done."}}}}};window.store=o,window.i18next=be;class rp{constructor(e,n,t,i){this.gameParams=n,this.userParams=t,this.firekit=e,this.displayElement=i}async init(){}async run(){this.gameParams.consent&&await async function(){const e=document.createElement("div");e.innerHTML='<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">\n\n\x3c!-- <h5 style="text-align:left;">\n Stanford University Research Consent Form\n <span style="float:right;">\n For IRB Use Only\n </span>\n</h5>\n\n<h5 style="text-align:left;">\n Protocol Director: Jason D. Yeatman, Ph.D.\n <span style="float:right;">\n Approval Date: October 31, 2023\n </span>\n</h5>\n\n<h5 style="text-align:left;">\n Protocol Title: Plasticity and Reading\n <span style="float:right;">\n Expiration Date: October 31, 2024\n </span>\n</h5> --\x3e\n\n<style>\n body {\n margin: 20px; /* Adjust the margin size as needed */\n }\n</style>\n\n<body>\n<h3 style="text-align: center;"> STANFORD UNIVERSITY CONSENT FORM </h3>\n\n<h4 style="text-align: center;"> Stanford University Reading &amp; Dyslexia Research Program: Behavioral Testing </h4>\n\n<blockquote>\n<h4 id="principal-investigator-">Principal Investigator:</h4>\n<p>Jason D. Yeatman </p>\n<p>Associate Professor</p>\n<p>Graduate School of Education</p>\n<p>School of Medicine, Division of Developmental Behavioral Pediatrics</p>\n<h4 id="contact-">Contact:</h4>\n<p>readingresearch@stanford.edu</p>\n<p><a href="https://dyslexia.stanford.edu/">https://dyslexia.stanford.edu/</a> </p>\n</blockquote>\n<h4 id="purpose-of-the-study">PURPOSE OF THE STUDY</h4>\n<p>Data collected through games in the web-browser will help researchers understand relationships between academic skills, reading proficiency, cognition, perception, and/or attitudes towards reading and school in individuals with a broad range of reading skills.</p>\n<h4 id="study-procedures">STUDY PROCEDURES</h4>\n<p>In this study, you or your child will be asked to complete computer tasks via a computer screen. An eye-tracking software will request access to your webcam and will be used to measure eye movements. You will be asked to provide verbal responses in which case the web browser will request access to your computer microphone. You or your child may be asked to complete multiple activities in one session depending on the study. </p>\n<h4 id="privacy-or-data-collection">PRIVACY OR DATA COLLECTION</h4>\n<p>We will do our best to ensure your privacy. Data that is collected through this online experiment is stored separately from identifying information such as your name. For the sake of payment, sometimes we store an email address you provide, but this is stored separately from the responses that are recorded in the online experiment. Each participant is assigned a code and that is used rather than names. This is called “coded data” and we try to ensure that the identity of our research participants is kept confidential. Data collected as part of this study may be used for many years to help discover trends in the population and explore changes due to development and education. In addition, coded data may be shared online or with collaborators to allow for new and unforeseen discoveries. Researchers may choose to include coded data in publications to support findings, or they may choose to release coded data alongside findings for replicability.</p>\n<p>We will collect mouse and click data, scrolling behavior, scores earned, button presses and their timestamps, time spent on each page, audio recordings, or other data that may be derived from your behavior on our page. This data will be stored on servers. The eye-tracking software will use your webcam to track your eyes. This software will record and save video data for future analysis. Once analysis has been completed, the video data will be deleted. Incomplete data may be logged if you quit out of the experiment early. If you would like to void your data, you may request it through our contact email.</p>\n<h4 id="compensation">COMPENSATION</h4>\n<p>We value [your/your child’s] participation. A Tango gift card will be sent through email upon completion of this study. Specific reward amounts will be indicated on the task card and/or study invitation, which you can view before launching the task or scheduling the appointment. If you or your child is completing these activities as part of another study, the compensation rate will remain consistent with the rate of the study you or your child is enrolled in. </p>\n<p>Please note that the gift card system we use to pay participants is not affiliated with Stanford and we will need to input your name and email into this system to send you the electronic gift card payment. If you feel uncomfortable with this process, please let us know before signing the consent form. Depending on the study, we may be able to look into other forms of payment for you.</p>\n<h4 id="risks-stress-or-discomfort">RISKS, STRESS, OR DISCOMFORT</h4>\n<p>If there is any reason to believe you are/your child is not safe to participate in any of the tasks, please contact us at readingresearch@stanford.edu. Some people may experience some physical discomfort or boredom due to being asked to sit for long periods. For computer tasks, some people may also experience dry eyes or eye fatigue. For some tasks that are untimed, breaks can be taken as needed during the session.</p>\n<h4 id="contact-information">CONTACT INFORMATION</h4>\n<p>If you have any additional questions or concerns about our research, feel free to email us at readingresearch@stanford.edu. We will be more than happy to help!</p>\n<p>For general information regarding questions or concerns about [your/your child’s] rights as a research participant, please call 1-866-680-2906 to reach the Administrative Panel on Human Subjects in Medical Research, Stanford University.</p>\n<form id="consentForm">\n <p>\n <input type="checkbox" id="webcamConsent" name="consent">\n I confirm that I have a webcam, and I agree to have my webcam track my eyes. I understand that the webcam will record or save video data and that it will be deleted once analysis is complete.\n </p>\n <p>\n <input type="checkbox" id="voiceConsent" name="consent">\n I agree to have my voice recorded. This data will only be used for data scoring purposes, will be stored securely, and will not be shared with others outside the lab.\n </p>\n <p>\n <input type="checkbox" id="participationConsent" name="consent">\n I agree to participate in this research. Participation in this research is voluntary, and I can stop at any time without penalty. I feel that I understand what I am getting into, and I know I am free to leave the experiment at any time by simply closing the web browser.\n </p>\n <button id="confirmButton" disabled>Continue to test</button>\n</form>\n</body>\n\n<h5 class="card-title" style="display: none;"></h5>\n\n<script>\n document.getElementById(\'consentForm\').addEventListener(\'change\', function() {\n var checkboxes = document.querySelectorAll(\'input[type="checkbox"][name="consent"]\');\n var allChecked = Array.from(checkboxes).every(checkbox => checkbox.checked);\n document.getElementById(\'confirmButton\').disabled = !allChecked;\n });\n<\/script>\n\n',document.body.appendChild(e),await Fr(e),Nr(e),await new Promise((n=>{const t=document.getElementById("confirmButton");t&&t.addEventListener("click",(()=>{Vr(),e.remove(),n()}))}))}(),await this.firekit.startRun();const e=await(async(e,n,t,i)=>{const s=er(er({...n,...t},nr),tr),{userMetadata:a={},audioFeedback:o,grade:r,language:c=be.language,skipInstructions:l,practiceCorpus:p,stimulusCorpus:u,sequentialPractice:d,sequentialStimulus:g,buttonLayout:m,numberOfTrials:v,storyCorpus:h,taskName:f,stimulusBlocks:x,numOfPracticeTrials:b,storyOption:y,keyHelpers:w}=s;"en"!==c&&be.changeLanguage(c);const k={userMetadata:{...a,grade:r},audioFeedback:o||"neutral",skipInstructions:l??!0,startTime:new Date,firekit:e,displayElement:i||null,practiceCorpus:p??"math-item-bank-practice-pz",stimulusCorpus:u??"math-item-bank-pz",sequentialPractice:d??!0,sequentialStimulus:g??!0,buttonLayout:m||"default",numberOfTrials:v??10,task:f??"egma-math",stimulusBlocks:x??3,numOfPracticeTrials:b??2,storyOption:y,story:Or(y,r),keyHelpers:w??!0};console.log("this is grade:",r),console.log("this is storyOption:",y);const S=Object.fromEntries(Object.entries(n).map((([e,n])=>[e,"story"===e?n:k[e]??n])));return await k.firekit.updateTaskParams(S),null!==k.pid&&await k.firekit.updateUser({assessmentPid:k.pid,...a}),k})(this.firekit,this.gameParams,this.userParams,this.displayElement);o.session.set("config",e),await np(e),await uc(e),Dr(this.gameParams.bEyeTracking)?(await ip([op.infoSlideView.welcome,op.infoSlideView.calibrationIntro]),await Vl(e),await ip(op.infoSlideView.calibrationEnd)):await ip([op.infoSlideView.welcome,op.infoSlideView.calibrationEnd]);if((await async function(e,n){const t=document.createElement("div");return t.innerHTML="<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <link href=\"https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css\" rel=\"stylesheet\" integrity=\"sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3\" crossorigin=\"anonymous\">\n <meta charset=\"UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n</head>\n\n<style>\n #stimulus-letter {\n height: 30%;\n }\n</style>\n\n<body>\n <div class=\"container-fluid h-100\">\n <div class=\"static-container\"> \n <div class=\"speech-bubble\" role=\"status\"></div>\n <img class=\"lion-char-instructions\" src=\"https://storage.googleapis.com/roav-ran/shared/assets/pointingRightLionAge12.webp\" alt=\"Lion character\">\n \x3c!--TODO: Add alt--\x3e\n <img id=\"stimulus-letter\">\n \x3c!--TODO: Extract to constants--\x3e\n <p class=\"next-text\">Click the yellow button to continue.</p>\n \x3c!-- Audio Playing --\x3e \n <audio autoplay id=\"voiceover\"> </audio>\n <button class=\"next-button\" aria-label=\"Continue\"></button>\n </div>\n </div>\n <audio id=\"voiceover\"></audio>\n</body>\n\n<script data-dynamic>\n\n var counter = 0;\n var userSpoke = false;\n var animFrameId = null;\n var micStream = null;\n var timeoutId = null;\n var feedbackRetryCount = 0;\n var maxFeedbackRetries = (window.instructionStage && window.instructionStage.maxFeedbackRetries) || 3;\n var instructionSignal = window.instructionAbortController\n ? window.instructionAbortController.signal\n : undefined;\n\n var nextButton = document.querySelector('.next-button');\n var nextText = document.querySelector('.next-text');\n nextButton.disabled = true;\n nextText.textContent = '';\n nextButton.addEventListener('click', function () {\n startNextView();\n }, { signal: instructionSignal });\n\n var voiceover = document.getElementById('voiceover');\n voiceover.addEventListener('ended', function () {\n setupMediaStream();\n }, { signal: instructionSignal });\n\n // Show first slide immediately\n startNextView();\n\n function startNextView() {\n \n counter++;\n\n if (timeoutId !== null) {\n clearTimeout(timeoutId);\n timeoutId = null;\n }\n if (animFrameId !== null) {\n cancelAnimationFrame(animFrameId);\n animFrameId = null;\n }\n if (micStream !== null) {\n micStream.getTracks().forEach(function (track) { track.stop(); });\n micStream = null;\n }\n var speechBubble = document.querySelector('.speech-bubble');\n var stimulusLetter = document.getElementById('stimulus-letter');\n var voiceover = document.getElementById('voiceover');\n\n if (window.instructionStage) {\n\n if (userSpoke && (counter === 2 || counter === 4)) counter += 1; // skip feedback if user spoke\n\n switch (counter) {\n case 1:\n userSpoke = false; // reset for next time\n nextButton.disabled = true;\n nextText.textContent = '';\n // Teaching slide: introduce the letter B\n speechBubble.innerHTML = window.instructionStage.letterB.header.text;\n stimulusLetter.src = 'https://storage.googleapis.com/roav-ran/shared/Letters/B.svg';\n voiceover.src = window.instructionStage.letterB.header.audioSrc;\n break;\n case 2:\n // \"I can't hear you\" retry for letter B\n feedbackRetryCount = 1;\n userSpoke = false;\n nextButton.disabled = true;\n nextText.textContent = '';\n speechBubble.innerHTML = window.instructionStage.feedback.header.text;\n stimulusLetter.src = 'https://storage.googleapis.com/roav-ran/shared/Letters/B.svg';\n voiceover.src = window.instructionStage.feedback.header.audioSrc;\n break;\n case 3:\n // Practice prompt: ask student to identify the letter D\n feedbackRetryCount = 0;\n userSpoke = false;\n nextButton.disabled = true;\n nextText.textContent = '';\n speechBubble.innerHTML = window.instructionStage.letterD.header.text;\n stimulusLetter.src = 'https://storage.googleapis.com/roav-ran/shared/Letters/D.svg';\n voiceover.src = window.instructionStage.letterD.header.audioSrc;\n break;\n case 4:\n // \"I can't hear you\" retry for letter D\n feedbackRetryCount = 1;\n userSpoke = false;\n nextButton.disabled = true;\n nextText.textContent = '';\n speechBubble.innerHTML = window.instructionStage.feedback.header.text;\n stimulusLetter.src = 'https://storage.googleapis.com/roav-ran/shared/Letters/D.svg';\n voiceover.src = window.instructionStage.feedback.header.audioSrc;\n break;\n default:\n counter = 0;\n pageCompleted();\n return;\n }\n }\n\n if (voiceover.src && voiceover.src !== window.location.href) {\n voiceover.play();\n }\n }\n\n async function setupMediaStream() {\n try {\n const audioContext = new AudioContext();\n micStream = await navigator.mediaDevices.getUserMedia({ audio: true });\n\n const micSource = audioContext.createMediaStreamSource(micStream);\n const analyser = audioContext.createAnalyser();\n analyser.fftSize = 2048;\n micSource.connect(analyser);\n\n const bufferLength = analyser.frequencyBinCount;\n const dataArray = new Uint8Array(bufferLength);\n\n function detectAudio() {\n analyser.getByteTimeDomainData(dataArray);\n let sum = 0;\n for (let i = 0; i < bufferLength; i++) {\n sum += (dataArray[i] - 128) * (dataArray[i] - 128);\n }\n const rms = Math.sqrt(sum / bufferLength);\n // console.log('RMS:', rms);\n if (rms > 7.0) {\n // This is for testing audio thresholds\n // console.log('Audio detected with RMS:', rms);\n if (timeoutId !== null) {\n clearTimeout(timeoutId);\n timeoutId = null;\n }\n userSpoke = true;\n nextButton.disabled = false;\n nextText.textContent = 'Click the yellow button to continue.';\n }\n animFrameId = requestAnimationFrame(detectAudio);\n }\n\n animFrameId = requestAnimationFrame(detectAudio);\n timeoutId = setTimeout(function () {\n if (!userSpoke) {\n if ((counter === 2 || counter === 4) && feedbackRetryCount < maxFeedbackRetries) {\n feedbackRetryCount++;\n restartCurrentFeedbackSlide();\n } else if (counter === 2 || counter === 4) {\n pageFailedMic();\n } else {\n startNextView();\n }\n }\n }, 5000);\n } catch (err) {\n console.error('Microphone access failed:', err);\n }\n }\n\n function restartCurrentFeedbackSlide() {\n if (animFrameId !== null) { cancelAnimationFrame(animFrameId); animFrameId = null; }\n if (micStream !== null) { micStream.getTracks().forEach(function (t) { t.stop(); }); micStream = null; }\n userSpoke = false;\n var vo = document.getElementById('voiceover');\n vo.currentTime = 0;\n vo.play();\n }\n\n function pageFailedMic() {\n if (timeoutId !== null) { clearTimeout(timeoutId); timeoutId = null; }\n if (animFrameId !== null) { cancelAnimationFrame(animFrameId); animFrameId = null; }\n if (micStream !== null) { micStream.getTracks().forEach(function (t) { t.stop(); }); micStream = null; }\n document.dispatchEvent(new Event('instructionMicFailed'));\n }\n\n function pageCompleted() {\n if (timeoutId !== null) {\n clearTimeout(timeoutId);\n timeoutId = null;\n }\n if (animFrameId !== null) {\n cancelAnimationFrame(animFrameId);\n animFrameId = null;\n }\n if (micStream !== null) {\n micStream.getTracks().forEach(function (track) { track.stop(); });\n micStream = null;\n }\n document.dispatchEvent(new Event('pageComplete'));\n }\n\n<\/script>\n</html>\n",document.body.appendChild(t),window.instructionStage=e,window.instructionAbortController=new AbortController,await Fr(t),Nr(t),new Promise((e=>{document.addEventListener("pageComplete",(()=>{t.remove(),tp(),e({micFailed:!1})}),{once:!0}),document.addEventListener("instructionMicFailed",(()=>{t.remove(),tp(),e({micFailed:!0})}),{once:!0})}))}(op.instructionView)).micFailed)return lc(),await sp(op.micFailView),await e.firekit.updateEngagementFlags(["noAudioDetected"],!1),await e.firekit.abortRun(),"aborted";await ip(op.infoSlideView.guidedPracticeLetters);const n={Letters:{dir:"https://storage.googleapis.com/roav-ran/shared/Letters",stimulus:Lr[Math.floor(Math.random()*Lr.length)],sizecm:2,testname:"Letters"},Numbers:{dir:"https://storage.googleapis.com/roav-ran/shared/Numbers",stimulus:Mr[Math.floor(Math.random()*Mr.length)],sizecm:2,testname:"Numbers"}},t=op.subtestOrder;for(let a=0;a<t.length;a++){const r=t[a];if(o.session.set("testConfig",n[r]),"Letters"===r)var i={assets:op.practiceView.letter,stimulusDir:"https://storage.googleapis.com/roav-ran/shared/Letters"},s=op.ranView.letter;else i={assets:op.practiceView.number,stimulusDir:"https://storage.googleapis.com/roav-ran/shared/Numbers"},s=op.ranView.number;await ap(i,e),await Zl("Practice",e,s.practiceIntro),await Zl("Test",e,s.testIntro),a<t.length-1&&"Letters"===r&&await ip(op.infoSlideView.guidedPracticeNumbers)}return await ip(op.infoSlideView.assessmentEnd),await e.firekit.updateEngagementFlags([],!0),await e.firekit.finishRun(),"success"}}export{rp as default};
11
- //# sourceMappingURL=index.109741b8.js.map
10
+ !function(n){var t,i,s,a=or,o=e.extname,r=/^\s*([^;\s]*)(?:;|\s|$)/,c=/^text\//i;function l(e){if(!e||"string"!=typeof e)return!1;var n=r.exec(e),t=n&&a[n[1].toLowerCase()];return t&&t.charset?t.charset:!(!n||!c.test(n[1]))&&"UTF-8"}n.charset=l,n.charsets={lookup:l},n.contentType=function(e){if(!e||"string"!=typeof e)return!1;var t=-1===e.indexOf("/")?n.lookup(e):e;if(!t)return!1;if(-1===t.indexOf("charset")){var i=n.charset(t);i&&(t+="; charset="+i.toLowerCase())}return t},n.extension=function(e){if(!e||"string"!=typeof e)return!1;var t=r.exec(e),i=t&&n.extensions[t[1].toLowerCase()];if(!i||!i.length)return!1;return i[0]},n.extensions=Object.create(null),n.lookup=function(e){if(!e||"string"!=typeof e)return!1;var t=o("x."+e).toLowerCase().substr(1);if(!t)return!1;return n.types[t]||!1},n.types=Object.create(null),t=n.extensions,i=n.types,s=["nginx","apache",void 0,"iana"],Object.keys(a).forEach((function(e){var n=a[e],o=n.extensions;if(o&&o.length){t[e]=o;for(var r=0;r<o.length;r++){var c=o[r];if(i[c]){var l=s.indexOf(a[i[c]].source),p=s.indexOf(n.source);if("application/octet-stream"!==i[c]&&(l>p||l===p&&"application/"===i[c].substr(0,12)))continue}i[c]=e}}}))}({});"function"==typeof SuppressedError&&SuppressedError;var rr,cr="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};class lr extends Error{constructor(e="The global `jsPsych` variable is no longer available in jsPsych v7."){super(`${e} Please follow the migration guide at https://www.jspsych.org/7.0/support/migration-v7/ to update your experiment.`),this.name="MigrationError"}}window.jsPsych={get init(){throw new lr("`jsPsych.init()` was replaced by `initJsPsych()` in jsPsych v7.")},get data(){throw new lr},get randomization(){throw new lr},get turk(){throw new lr},get pluginAPI(){throw new lr},get ALL_KEYS(){throw new lr('jsPsych.ALL_KEYS was replaced by the "ALL_KEYS" string in jsPsych v7.')},get NO_KEYS(){throw new lr('jsPsych.NO_KEYS was replaced by the "NO_KEYS" string in jsPsych v7.')}},function(e){e[e.BOOL=0]="BOOL",e[e.STRING=1]="STRING",e[e.INT=2]="INT",e[e.FLOAT=3]="FLOAT",e[e.FUNCTION=4]="FUNCTION",e[e.KEY=5]="KEY",e[e.KEYS=6]="KEYS",e[e.SELECT=7]="SELECT",e[e.HTML_STRING=8]="HTML_STRING",e[e.IMAGE=9]="IMAGE",e[e.AUDIO=10]="AUDIO",e[e.VIDEO=11]="VIDEO",e[e.OBJECT=12]="OBJECT",e[e.COMPLEX=13]="COMPLEX",e[e.TIMELINE=14]="TIMELINE"}(rr||(rr={})),rr.OBJECT,rr.FUNCTION,rr.FUNCTION,rr.FUNCTION,rr.INT,rr.STRING,rr.COMPLEX,rr.AUDIO,rr.IMAGE,rr.VIDEO;var pr={exports:{}};!function(e,n,t){function i(e){var n=this,t=function(){var e=4022871197,n=function(n){n=String(n);for(var t=0;t<n.length;t++){var i=.02519603282416938*(e+=n.charCodeAt(t));i-=e=i>>>0,e=(i*=e)>>>0,e+=4294967296*(i-=e)}return 2.3283064365386963e-10*(e>>>0)};return n}();n.next=function(){var e=2091639*n.s0+2.3283064365386963e-10*n.c;return n.s0=n.s1,n.s1=n.s2,n.s2=e-(n.c=0|e)},n.c=1,n.s0=t(" "),n.s1=t(" "),n.s2=t(" "),n.s0-=t(e),n.s0<0&&(n.s0+=1),n.s1-=t(e),n.s1<0&&(n.s1+=1),n.s2-=t(e),n.s2<0&&(n.s2+=1),t=null}function s(e,n){return n.c=e.c,n.s0=e.s0,n.s1=e.s1,n.s2=e.s2,n}function a(e,n){var t=new i(e),a=n&&n.state,o=t.next;return o.int32=function(){return 4294967296*t.next()|0},o.double=function(){return o()+11102230246251565e-32*(2097152*o()|0)},o.quick=o,a&&("object"==typeof a&&s(a,t),o.state=function(){return s(t,{})}),o}n&&n.exports?n.exports=a:t&&t.amd?t((function(){return a})):this.alea=a}(0,pr,!1);var ur=pr.exports,dr={exports:{}};!function(e,n,t){function i(e){var n=this,t="";n.x=0,n.y=0,n.z=0,n.w=0,n.next=function(){var e=n.x^n.x<<11;return n.x=n.y,n.y=n.z,n.z=n.w,n.w^=n.w>>>19^e^e>>>8},e===(0|e)?n.x=e:t+=e;for(var i=0;i<t.length+64;i++)n.x^=0|t.charCodeAt(i),n.next()}function s(e,n){return n.x=e.x,n.y=e.y,n.z=e.z,n.w=e.w,n}function a(e,n){var t=new i(e),a=n&&n.state,o=function(){return(t.next()>>>0)/4294967296};return o.double=function(){do{var e=((t.next()>>>11)+(t.next()>>>0)/4294967296)/(1<<21)}while(0===e);return e},o.int32=t.next,o.quick=o,a&&("object"==typeof a&&s(a,t),o.state=function(){return s(t,{})}),o}n&&n.exports?n.exports=a:t&&t.amd?t((function(){return a})):this.xor128=a}(0,dr,!1);var mr=dr.exports,gr={exports:{}};!function(e,n,t){function i(e){var n=this,t="";n.next=function(){var e=n.x^n.x>>>2;return n.x=n.y,n.y=n.z,n.z=n.w,n.w=n.v,(n.d=n.d+362437|0)+(n.v=n.v^n.v<<4^e^e<<1)|0},n.x=0,n.y=0,n.z=0,n.w=0,n.v=0,e===(0|e)?n.x=e:t+=e;for(var i=0;i<t.length+64;i++)n.x^=0|t.charCodeAt(i),i==t.length&&(n.d=n.x<<10^n.x>>>4),n.next()}function s(e,n){return n.x=e.x,n.y=e.y,n.z=e.z,n.w=e.w,n.v=e.v,n.d=e.d,n}function a(e,n){var t=new i(e),a=n&&n.state,o=function(){return(t.next()>>>0)/4294967296};return o.double=function(){do{var e=((t.next()>>>11)+(t.next()>>>0)/4294967296)/(1<<21)}while(0===e);return e},o.int32=t.next,o.quick=o,a&&("object"==typeof a&&s(a,t),o.state=function(){return s(t,{})}),o}n&&n.exports?n.exports=a:t&&t.amd?t((function(){return a})):this.xorwow=a}(0,gr,!1);var vr=gr.exports,hr={exports:{}};!function(e,n,t){function i(e){var n=this;n.next=function(){var e,t,i=n.x,s=n.i;return e=i[s],t=(e^=e>>>7)^e<<24,t^=(e=i[s+1&7])^e>>>10,t^=(e=i[s+3&7])^e>>>3,t^=(e=i[s+4&7])^e<<7,e=i[s+7&7],t^=(e^=e<<13)^e<<9,i[s]=t,n.i=s+1&7,t},function(e,n){var t,i=[];if(n===(0|n))i[0]=n;else for(n=""+n,t=0;t<n.length;++t)i[7&t]=i[7&t]<<15^n.charCodeAt(t)+i[t+1&7]<<13;for(;i.length<8;)i.push(0);for(t=0;t<8&&0===i[t];++t);for(8==t?i[7]=-1:i[t],e.x=i,e.i=0,t=256;t>0;--t)e.next()}(n,e)}function s(e,n){return n.x=e.x.slice(),n.i=e.i,n}function a(e,n){null==e&&(e=+new Date);var t=new i(e),a=n&&n.state,o=function(){return(t.next()>>>0)/4294967296};return o.double=function(){do{var e=((t.next()>>>11)+(t.next()>>>0)/4294967296)/(1<<21)}while(0===e);return e},o.int32=t.next,o.quick=o,a&&(a.x&&s(a,t),o.state=function(){return s(t,{})}),o}n&&n.exports?n.exports=a:t&&t.amd?t((function(){return a})):this.xorshift7=a}(0,hr,!1);var fr=hr.exports,xr={exports:{}};!function(e,n,t){function i(e){var n=this;n.next=function(){var e,t,i=n.w,s=n.X,a=n.i;return n.w=i=i+1640531527|0,t=s[a+34&127],e=s[a=a+1&127],t^=t<<13,e^=e<<17,t^=t>>>15,e^=e>>>12,t=s[a]=t^e,n.i=a,t+(i^i>>>16)|0},function(e,n){var t,i,s,a,o,r=[],c=128;for(n===(0|n)?(i=n,n=null):(n+="\0",i=0,c=Math.max(c,n.length)),s=0,a=-32;a<c;++a)n&&(i^=n.charCodeAt((a+32)%n.length)),0===a&&(o=i),i^=i<<10,i^=i>>>15,i^=i<<4,i^=i>>>13,a>=0&&(o=o+1640531527|0,s=0==(t=r[127&a]^=i+o)?s+1:0);for(s>=128&&(r[127&(n&&n.length||0)]=-1),s=127,a=512;a>0;--a)i=r[s+34&127],t=r[s=s+1&127],i^=i<<13,t^=t<<17,i^=i>>>15,t^=t>>>12,r[s]=i^t;e.w=o,e.X=r,e.i=s}(n,e)}function s(e,n){return n.i=e.i,n.w=e.w,n.X=e.X.slice(),n}function a(e,n){null==e&&(e=+new Date);var t=new i(e),a=n&&n.state,o=function(){return(t.next()>>>0)/4294967296};return o.double=function(){do{var e=((t.next()>>>11)+(t.next()>>>0)/4294967296)/(1<<21)}while(0===e);return e},o.int32=t.next,o.quick=o,a&&(a.X&&s(a,t),o.state=function(){return s(t,{})}),o}n&&n.exports?n.exports=a:t&&t.amd?t((function(){return a})):this.xor4096=a}(0,xr,!1);var br=xr.exports,yr={exports:{}};!function(e,n,t){function i(e){var n=this,t="";n.next=function(){var e=n.b,t=n.c,i=n.d,s=n.a;return e=e<<25^e>>>7^t,t=t-i|0,i=i<<24^i>>>8^s,s=s-e|0,n.b=e=e<<20^e>>>12^t,n.c=t=t-i|0,n.d=i<<16^t>>>16^s,n.a=s-e|0},n.a=0,n.b=0,n.c=-1640531527,n.d=1367130551,e===Math.floor(e)?(n.a=e/4294967296|0,n.b=0|e):t+=e;for(var i=0;i<t.length+20;i++)n.b^=0|t.charCodeAt(i),n.next()}function s(e,n){return n.a=e.a,n.b=e.b,n.c=e.c,n.d=e.d,n}function a(e,n){var t=new i(e),a=n&&n.state,o=function(){return(t.next()>>>0)/4294967296};return o.double=function(){do{var e=((t.next()>>>11)+(t.next()>>>0)/4294967296)/(1<<21)}while(0===e);return e},o.int32=t.next,o.quick=o,a&&("object"==typeof a&&s(a,t),o.state=function(){return s(t,{})}),o}n&&n.exports?n.exports=a:t&&t.amd?t((function(){return a})):this.tychei=a}(0,yr,!1);var wr=yr.exports,kr={exports:{}};!function(e){!function(n,t,i){var s,a=256,o="random",r=i.pow(a,6),c=i.pow(2,52),l=2*c,p=a-1;function u(e,p,u){var f=[],x=v(g((p=1==p?{entropy:!0}:p||{}).entropy?[e,h(t)]:null==e?function(){try{var e;return s&&(e=s.randomBytes)?e=e(a):(e=new Uint8Array(a),(n.crypto||n.msCrypto).getRandomValues(e)),h(e)}catch(e){var i=n.navigator,o=i&&i.plugins;return[+new Date,n,o,n.screen,h(t)]}}():e,3),f),b=new d(f),y=function(){for(var e=b.g(6),n=r,t=0;e<c;)e=(e+t)*a,n*=a,t=b.g(1);for(;e>=l;)e/=2,n/=2,t>>>=1;return(e+t)/n};return y.int32=function(){return 0|b.g(4)},y.quick=function(){return b.g(4)/4294967296},y.double=y,v(h(b.S),t),(p.pass||u||function(e,n,t,s){return s&&(s.S&&m(s,b),e.state=function(){return m(b,{})}),t?(i[o]=e,n):e})(y,x,"global"in p?p.global:this==i,p.state)}function d(e){var n,t=e.length,i=this,s=0,o=i.i=i.j=0,r=i.S=[];for(t||(e=[t++]);s<a;)r[s]=s++;for(s=0;s<a;s++)r[s]=r[o=p&o+e[s%t]+(n=r[s])],r[o]=n;(i.g=function(e){for(var n,t=0,s=i.i,o=i.j,r=i.S;e--;)n=r[s=p&s+1],t=t*a+r[p&(r[s]=r[o=p&o+n])+(r[o]=n)];return i.i=s,i.j=o,t})(a)}function m(e,n){return n.i=e.i,n.j=e.j,n.S=e.S.slice(),n}function g(e,n){var t,i=[],s=typeof e;if(n&&"object"==s)for(t in e)try{i.push(g(e[t],n-1))}catch(e){}return i.length?i:"string"==s?e:e+"\0"}function v(e,n){for(var t,i=e+"",s=0;s<i.length;)n[p&s]=p&(t^=19*n[p&s])+i.charCodeAt(s++);return h(n)}function h(e){return String.fromCharCode.apply(0,e)}if(v(i.random(),t),e.exports){e.exports=u;try{s=require("crypto")}catch(e){}}else i["seed"+o]=u}("undefined"!=typeof self?self:cr,[],Math)}(kr);var Sr=ur,jr=mr,_r=vr,Cr=fr,Ar=br,Er=wr,Rr=kr.exports;Rr.alea=Sr,Rr.xor128=jr,Rr.xorwow=_r,Rr.xorshift7=Cr,Rr.xor4096=Ar,Rr.tychei=Er;"undefined"!=typeof window&&window.hasOwnProperty("webkitAudioContext")&&!window.hasOwnProperty("AudioContext")&&(window.AudioContext=webkitAudioContext),rr.BOOL,rr.TIMELINE,rr.STRING,rr.STRING,rr.STRING,rr.HTML_STRING,rr.BOOL,rr.BOOL,rr.HTML_STRING,rr.BOOL,rr.INT,rr.FUNCTION,rr.FUNCTION;const Lr=[["D.svg","A.svg","L.svg","S.svg","R.svg","L.svg","A.svg","S.svg","L.svg","S.svg","R.svg","L.svg","D.svg","R.svg","D.svg","A.svg","R.svg","D.svg","R.svg","A.svg","D.svg","S.svg","L.svg","S.svg","R.svg","D.svg","A.svg","S.svg","L.svg","R.svg","L.svg","A.svg","R.svg","A.svg","D.svg","A.svg","S.svg","L.svg","D.svg","S.svg","A.svg","R.svg","S.svg","L.svg","A.svg","D.svg","L.svg","S.svg","R.svg","D.svg"],["A.svg","L.svg","R.svg","D.svg","R.svg","A.svg","S.svg","R.svg","D.svg","A.svg","S.svg","A.svg","D.svg","R.svg","D.svg","L.svg","R.svg","L.svg","S.svg","L.svg","D.svg","S.svg","L.svg","A.svg","S.svg","R.svg","S.svg","A.svg","D.svg","A.svg","R.svg","L.svg","R.svg","S.svg","L.svg","D.svg","A.svg","S.svg","R.svg","L.svg","D.svg","A.svg","L.svg","D.svg","R.svg","S.svg","D.svg","L.svg","S.svg","A.svg"],["D.svg","L.svg","S.svg","A.svg","D.svg","R.svg","L.svg","A.svg","R.svg","D.svg","L.svg","S.svg","L.svg","D.svg","A.svg","L.svg","D.svg","S.svg","D.svg","L.svg","S.svg","R.svg","A.svg","R.svg","S.svg","A.svg","R.svg","A.svg","S.svg","R.svg","L.svg","S.svg","D.svg","S.svg","R.svg","L.svg","A.svg","L.svg","R.svg","D.svg","A.svg","D.svg","S.svg","L.svg","A.svg","R.svg","D.svg","R.svg","S.svg","A.svg"],["S.svg","L.svg","R.svg","D.svg","R.svg","A.svg","S.svg","A.svg","R.svg","L.svg","D.svg","R.svg","D.svg","S.svg","L.svg","R.svg","A.svg","D.svg","S.svg","D.svg","R.svg","D.svg","A.svg","L.svg","R.svg","S.svg","D.svg","R.svg","L.svg","A.svg","S.svg","L.svg","S.svg","R.svg","A.svg","L.svg","A.svg","D.svg","A.svg","L.svg","R.svg","S.svg","A.svg","D.svg","L.svg","A.svg","S.svg","L.svg","S.svg","D.svg"],["L.svg","A.svg","D.svg","S.svg","D.svg","A.svg","D.svg","R.svg","L.svg","R.svg","D.svg","S.svg","A.svg","R.svg","L.svg","D.svg","R.svg","S.svg","R.svg","A.svg","S.svg","R.svg","L.svg","A.svg","D.svg","S.svg","L.svg","A.svg","S.svg","L.svg","D.svg","S.svg","A.svg","R.svg","L.svg","D.svg","S.svg","L.svg","R.svg","A.svg","S.svg","D.svg","R.svg","L.svg","D.svg","A.svg","L.svg","S.svg","A.svg","R.svg"],["D.svg","L.svg","S.svg","R.svg","D.svg","A.svg","R.svg","L.svg","S.svg","A.svg","R.svg","S.svg","R.svg","D.svg","S.svg","R.svg","L.svg","D.svg","R.svg","D.svg","A.svg","L.svg","S.svg","A.svg","D.svg","L.svg","D.svg","A.svg","S.svg","A.svg","L.svg","S.svg","R.svg","D.svg","L.svg","A.svg","R.svg","S.svg","L.svg","D.svg","A.svg","L.svg","A.svg","S.svg","D.svg","R.svg","S.svg","R.svg","A.svg","L.svg"],["D.svg","R.svg","A.svg","R.svg","L.svg","S.svg","A.svg","D.svg","L.svg","S.svg","L.svg","A.svg","L.svg","S.svg","A.svg","R.svg","S.svg","L.svg","D.svg","L.svg","A.svg","R.svg","S.svg","R.svg","D.svg","S.svg","A.svg","R.svg","L.svg","R.svg","S.svg","A.svg","D.svg","S.svg","R.svg","D.svg","S.svg","L.svg","D.svg","A.svg","D.svg","L.svg","A.svg","L.svg","D.svg","R.svg","D.svg","S.svg","A.svg","R.svg"],["L.svg","A.svg","R.svg","D.svg","R.svg","L.svg","A.svg","D.svg","L.svg","S.svg","A.svg","S.svg","D.svg","S.svg","A.svg","S.svg","D.svg","L.svg","S.svg","D.svg","R.svg","A.svg","L.svg","A.svg","D.svg","R.svg","L.svg","R.svg","D.svg","A.svg","L.svg","S.svg","D.svg","R.svg","L.svg","A.svg","R.svg","L.svg","S.svg","R.svg","S.svg","L.svg","A.svg","S.svg","D.svg","R.svg","A.svg","R.svg","D.svg","S.svg"],["S.svg","A.svg","R.svg","D.svg","L.svg","S.svg","D.svg","R.svg","S.svg","A.svg","L.svg","R.svg","S.svg","L.svg","A.svg","D.svg","S.svg","A.svg","R.svg","S.svg","D.svg","A.svg","D.svg","S.svg","R.svg","A.svg","L.svg","D.svg","L.svg","R.svg","S.svg","D.svg","L.svg","D.svg","S.svg","L.svg","R.svg","A.svg","S.svg","D.svg","L.svg","A.svg","R.svg","A.svg","L.svg","D.svg","A.svg","R.svg","L.svg","R.svg"],["R.svg","A.svg","S.svg","L.svg","S.svg","D.svg","R.svg","A.svg","S.svg","D.svg","A.svg","L.svg","D.svg","R.svg","L.svg","R.svg","A.svg","S.svg","R.svg","L.svg","D.svg","S.svg","L.svg","S.svg","R.svg","L.svg","R.svg","D.svg","A.svg","D.svg","S.svg","L.svg","R.svg","L.svg","D.svg","R.svg","L.svg","A.svg","D.svg","S.svg","A.svg","S.svg","D.svg","A.svg","L.svg","D.svg","A.svg","S.svg","R.svg","A.svg"],["L.svg","R.svg","D.svg","A.svg","S.svg","D.svg","L.svg","A.svg","R.svg","S.svg","A.svg","S.svg","L.svg","S.svg","D.svg","A.svg","S.svg","D.svg","S.svg","R.svg","D.svg","R.svg","A.svg","L.svg","R.svg","L.svg","D.svg","L.svg","A.svg","S.svg","A.svg","D.svg","R.svg","S.svg","A.svg","R.svg","L.svg","A.svg","R.svg","D.svg","L.svg","R.svg","L.svg","A.svg","S.svg","D.svg","R.svg","S.svg","D.svg","L.svg"],["D.svg","A.svg","L.svg","S.svg","R.svg","S.svg","A.svg","R.svg","S.svg","R.svg","L.svg","S.svg","D.svg","A.svg","S.svg","D.svg","R.svg","L.svg","D.svg","S.svg","R.svg","A.svg","L.svg","D.svg","R.svg","L.svg","A.svg","S.svg","A.svg","R.svg","L.svg","D.svg","A.svg","L.svg","S.svg","D.svg","R.svg","A.svg","L.svg","D.svg","S.svg","R.svg","L.svg","A.svg","D.svg","R.svg","L.svg","D.svg","A.svg","S.svg"],["R.svg","A.svg","L.svg","D.svg","A.svg","S.svg","A.svg","L.svg","S.svg","A.svg","D.svg","L.svg","A.svg","S.svg","R.svg","D.svg","S.svg","D.svg","R.svg","L.svg","R.svg","A.svg","R.svg","D.svg","A.svg","R.svg","L.svg","R.svg","S.svg","A.svg","S.svg","L.svg","D.svg","S.svg","D.svg","A.svg","D.svg","L.svg","R.svg","D.svg","R.svg","S.svg","L.svg","D.svg","S.svg","L.svg","A.svg","R.svg","L.svg","S.svg"],["R.svg","L.svg","A.svg","R.svg","L.svg","D.svg","S.svg","D.svg","A.svg","R.svg","D.svg","A.svg","S.svg","L.svg","R.svg","S.svg","A.svg","L.svg","S.svg","D.svg","S.svg","R.svg","L.svg","D.svg","S.svg","L.svg","D.svg","R.svg","L.svg","A.svg","D.svg","S.svg","D.svg","R.svg","A.svg","D.svg","R.svg","L.svg","A.svg","S.svg","A.svg","R.svg","A.svg","S.svg","L.svg","A.svg","S.svg","R.svg","L.svg","D.svg"],["L.svg","R.svg","A.svg","S.svg","L.svg","D.svg","S.svg","D.svg","R.svg","A.svg","D.svg","L.svg","R.svg","D.svg","A.svg","S.svg","R.svg","A.svg","D.svg","L.svg","A.svg","R.svg","S.svg","A.svg","L.svg","A.svg","D.svg","L.svg","S.svg","D.svg","S.svg","L.svg","R.svg","S.svg","R.svg","L.svg","R.svg","A.svg","L.svg","S.svg","A.svg","R.svg","D.svg","L.svg","S.svg","D.svg","A.svg","S.svg","R.svg","D.svg"],["A.svg","D.svg","S.svg","L.svg","D.svg","S.svg","R.svg","D.svg","A.svg","S.svg","R.svg","S.svg","A.svg","R.svg","S.svg","D.svg","L.svg","A.svg","R.svg","L.svg","D.svg","A.svg","D.svg","S.svg","L.svg","R.svg","D.svg","L.svg","S.svg","A.svg","S.svg","L.svg","R.svg","A.svg","R.svg","L.svg","R.svg","A.svg","D.svg","S.svg","L.svg","R.svg","S.svg","D.svg","L.svg","D.svg","A.svg","R.svg","L.svg","A.svg"],["S.svg","R.svg","S.svg","L.svg","D.svg","A.svg","L.svg","A.svg","R.svg","S.svg","R.svg","A.svg","L.svg","A.svg","R.svg","L.svg","S.svg","L.svg","A.svg","D.svg","A.svg","L.svg","S.svg","D.svg","A.svg","S.svg","D.svg","R.svg","D.svg","S.svg","R.svg","D.svg","R.svg","L.svg","D.svg","A.svg","R.svg","D.svg","L.svg","R.svg","A.svg","L.svg","D.svg","R.svg","A.svg","S.svg","L.svg","S.svg","D.svg","S.svg"],["L.svg","R.svg","S.svg","R.svg","A.svg","D.svg","S.svg","R.svg","L.svg","S.svg","D.svg","L.svg","A.svg","D.svg","L.svg","S.svg","D.svg","L.svg","D.svg","R.svg","A.svg","S.svg","D.svg","R.svg","S.svg","R.svg","A.svg","D.svg","R.svg","L.svg","D.svg","L.svg","S.svg","A.svg","R.svg","L.svg","D.svg","A.svg","L.svg","A.svg","S.svg","R.svg","A.svg","D.svg","S.svg","A.svg","L.svg","S.svg","A.svg","R.svg"],["S.svg","A.svg","L.svg","R.svg","A.svg","S.svg","D.svg","L.svg","A.svg","S.svg","R.svg","L.svg","S.svg","L.svg","R.svg","A.svg","S.svg","R.svg","L.svg","R.svg","A.svg","S.svg","D.svg","R.svg","L.svg","D.svg","A.svg","S.svg","D.svg","L.svg","R.svg","D.svg","S.svg","L.svg","D.svg","S.svg","D.svg","R.svg","A.svg","D.svg","L.svg","S.svg","R.svg","D.svg","A.svg","D.svg","L.svg","A.svg","R.svg","A.svg"],["A.svg","S.svg","R.svg","D.svg","L.svg","S.svg","R.svg","L.svg","A.svg","D.svg","L.svg","D.svg","S.svg","R.svg","A.svg","R.svg","S.svg","A.svg","R.svg","L.svg","R.svg","A.svg","D.svg","S.svg","L.svg","A.svg","D.svg","R.svg","L.svg","A.svg","D.svg","R.svg","S.svg","L.svg","D.svg","S.svg","R.svg","A.svg","S.svg","D.svg","L.svg","S.svg","D.svg","A.svg","L.svg","R.svg","D.svg","S.svg","L.svg","A.svg"]],Mr=[["two.svg","nine.svg","two.svg","seven.svg","two.svg","six.svg","seven.svg","four.svg","six.svg","four.svg","seven.svg","two.svg","four.svg","six.svg","seven.svg","four.svg","two.svg","six.svg","two.svg","nine.svg","two.svg","four.svg","two.svg","seven.svg","six.svg","nine.svg","seven.svg","nine.svg","four.svg","six.svg","nine.svg","six.svg","seven.svg","nine.svg","four.svg","seven.svg","two.svg","four.svg","six.svg","nine.svg","two.svg","nine.svg","six.svg","four.svg","seven.svg","nine.svg","six.svg","nine.svg","four.svg","seven.svg"],["six.svg","four.svg","seven.svg","two.svg","nine.svg","six.svg","four.svg","seven.svg","two.svg","four.svg","two.svg","seven.svg","two.svg","four.svg","seven.svg","two.svg","nine.svg","four.svg","nine.svg","six.svg","nine.svg","four.svg","nine.svg","six.svg","two.svg","six.svg","seven.svg","six.svg","two.svg","nine.svg","seven.svg","nine.svg","four.svg","seven.svg","six.svg","seven.svg","four.svg","two.svg","nine.svg","seven.svg","six.svg","four.svg","two.svg","nine.svg","seven.svg","six.svg","two.svg","four.svg","six.svg","nine.svg"],["six.svg","four.svg","six.svg","seven.svg","nine.svg","four.svg","two.svg","six.svg","nine.svg","two.svg","four.svg","seven.svg","four.svg","nine.svg","two.svg","six.svg","four.svg","seven.svg","two.svg","seven.svg","nine.svg","six.svg","two.svg","seven.svg","four.svg","two.svg","nine.svg","four.svg","nine.svg","six.svg","seven.svg","two.svg","four.svg","six.svg","seven.svg","six.svg","two.svg","nine.svg","six.svg","four.svg","nine.svg","six.svg","two.svg","seven.svg","four.svg","nine.svg","seven.svg","two.svg","nine.svg","seven.svg"],["four.svg","nine.svg","two.svg","four.svg","seven.svg","nine.svg","seven.svg","two.svg","six.svg","four.svg","seven.svg","four.svg","six.svg","nine.svg","six.svg","two.svg","six.svg","seven.svg","nine.svg","seven.svg","six.svg","two.svg","nine.svg","two.svg","four.svg","nine.svg","seven.svg","nine.svg","four.svg","two.svg","seven.svg","nine.svg","six.svg","four.svg","two.svg","seven.svg","two.svg","six.svg","nine.svg","seven.svg","four.svg","six.svg","seven.svg","nine.svg","six.svg","four.svg","six.svg","two.svg","four.svg","two.svg"],["six.svg","four.svg","seven.svg","six.svg","two.svg","six.svg","seven.svg","six.svg","two.svg","six.svg","seven.svg","nine.svg","four.svg","two.svg","nine.svg","four.svg","nine.svg","two.svg","nine.svg","seven.svg","nine.svg","four.svg","two.svg","four.svg","seven.svg","nine.svg","two.svg","seven.svg","two.svg","six.svg","two.svg","seven.svg","four.svg","six.svg","nine.svg","seven.svg","four.svg","nine.svg","six.svg","nine.svg","four.svg","six.svg","two.svg","seven.svg","six.svg","two.svg","nine.svg","four.svg","seven.svg","four.svg"],["four.svg","nine.svg","seven.svg","two.svg","six.svg","four.svg","nine.svg","two.svg","six.svg","seven.svg","nine.svg","six.svg","four.svg","seven.svg","four.svg","nine.svg","two.svg","six.svg","nine.svg","six.svg","seven.svg","two.svg","seven.svg","four.svg","nine.svg","two.svg","seven.svg","four.svg","six.svg","nine.svg","four.svg","seven.svg","two.svg","six.svg","seven.svg","four.svg","nine.svg","seven.svg","two.svg","six.svg","two.svg","four.svg","six.svg","nine.svg","two.svg","six.svg","four.svg","two.svg","nine.svg","seven.svg"],["six.svg","two.svg","four.svg","six.svg","seven.svg","nine.svg","four.svg","nine.svg","two.svg","seven.svg","two.svg","nine.svg","seven.svg","nine.svg","six.svg","seven.svg","six.svg","two.svg","nine.svg","four.svg","six.svg","four.svg","two.svg","seven.svg","four.svg","two.svg","nine.svg","six.svg","seven.svg","six.svg","nine.svg","seven.svg","four.svg","two.svg","seven.svg","nine.svg","six.svg","four.svg","six.svg","two.svg","four.svg","two.svg","seven.svg","six.svg","nine.svg","four.svg","seven.svg","two.svg","four.svg","nine.svg"],["nine.svg","two.svg","four.svg","seven.svg","nine.svg","two.svg","six.svg","four.svg","six.svg","seven.svg","two.svg","seven.svg","nine.svg","four.svg","two.svg","nine.svg","four.svg","seven.svg","nine.svg","two.svg","four.svg","nine.svg","seven.svg","six.svg","seven.svg","four.svg","six.svg","four.svg","seven.svg","six.svg","nine.svg","six.svg","four.svg","nine.svg","six.svg","two.svg","four.svg","two.svg","nine.svg","two.svg","six.svg","four.svg","two.svg","six.svg","seven.svg","six.svg","nine.svg","seven.svg","two.svg","seven.svg"],["six.svg","seven.svg","two.svg","four.svg","seven.svg","four.svg","nine.svg","six.svg","two.svg","six.svg","four.svg","two.svg","six.svg","seven.svg","nine.svg","two.svg","six.svg","nine.svg","seven.svg","two.svg","six.svg","four.svg","seven.svg","six.svg","seven.svg","nine.svg","seven.svg","four.svg","two.svg","nine.svg","four.svg","nine.svg","six.svg","seven.svg","nine.svg","two.svg","four.svg","nine.svg","six.svg","two.svg","nine.svg","seven.svg","two.svg","four.svg","six.svg","four.svg","two.svg","four.svg","nine.svg","seven.svg"],["six.svg","nine.svg","six.svg","seven.svg","six.svg","four.svg","two.svg","nine.svg","four.svg","seven.svg","two.svg","six.svg","seven.svg","two.svg","nine.svg","six.svg","seven.svg","four.svg","nine.svg","two.svg","nine.svg","four.svg","two.svg","seven.svg","six.svg","four.svg","six.svg","nine.svg","six.svg","four.svg","seven.svg","two.svg","nine.svg","two.svg","seven.svg","nine.svg","two.svg","four.svg","two.svg","seven.svg","six.svg","four.svg","two.svg","seven.svg","nine.svg","four.svg","six.svg","nine.svg","seven.svg","four.svg"],["nine.svg","four.svg","nine.svg","six.svg","two.svg","seven.svg","four.svg","six.svg","nine.svg","four.svg","seven.svg","two.svg","six.svg","two.svg","seven.svg","six.svg","two.svg","four.svg","two.svg","six.svg","four.svg","nine.svg","two.svg","four.svg","six.svg","four.svg","seven.svg","two.svg","seven.svg","four.svg","nine.svg","four.svg","six.svg","two.svg","four.svg","nine.svg","six.svg","seven.svg","nine.svg","two.svg","seven.svg","nine.svg","seven.svg","six.svg","nine.svg","seven.svg","two.svg","six.svg","seven.svg","nine.svg"],["four.svg","two.svg","six.svg","seven.svg","two.svg","six.svg","two.svg","four.svg","nine.svg","seven.svg","two.svg","four.svg","seven.svg","nine.svg","six.svg","two.svg","nine.svg","six.svg","seven.svg","nine.svg","six.svg","nine.svg","two.svg","four.svg","seven.svg","four.svg","six.svg","seven.svg","nine.svg","two.svg","four.svg","seven.svg","four.svg","six.svg","nine.svg","seven.svg","four.svg","six.svg","two.svg","seven.svg","nine.svg","six.svg","seven.svg","nine.svg","four.svg","two.svg","nine.svg","four.svg","six.svg","two.svg"],["four.svg","nine.svg","six.svg","four.svg","seven.svg","two.svg","nine.svg","six.svg","seven.svg","two.svg","nine.svg","six.svg","seven.svg","six.svg","two.svg","nine.svg","six.svg","seven.svg","two.svg","four.svg","six.svg","seven.svg","two.svg","four.svg","nine.svg","seven.svg","four.svg","two.svg","four.svg","seven.svg","nine.svg","six.svg","four.svg","nine.svg","six.svg","nine.svg","two.svg","four.svg","two.svg","six.svg","two.svg","nine.svg","six.svg","two.svg","seven.svg","four.svg","seven.svg","nine.svg","seven.svg","four.svg"],["seven.svg","four.svg","two.svg","nine.svg","six.svg","seven.svg","four.svg","six.svg","seven.svg","nine.svg","four.svg","seven.svg","nine.svg","two.svg","seven.svg","four.svg","seven.svg","two.svg","six.svg","seven.svg","six.svg","four.svg","six.svg","nine.svg","two.svg","seven.svg","two.svg","nine.svg","four.svg","six.svg","nine.svg","six.svg","four.svg","two.svg","nine.svg","two.svg","four.svg","six.svg","two.svg","nine.svg","seven.svg","two.svg","nine.svg","four.svg","six.svg","seven.svg","six.svg","four.svg","nine.svg","two.svg"],["six.svg","four.svg","two.svg","six.svg","seven.svg","four.svg","nine.svg","six.svg","two.svg","seven.svg","nine.svg","two.svg","four.svg","seven.svg","four.svg","two.svg","seven.svg","two.svg","nine.svg","six.svg","seven.svg","four.svg","nine.svg","four.svg","two.svg","four.svg","six.svg","nine.svg","two.svg","nine.svg","six.svg","two.svg","seven.svg","six.svg","nine.svg","seven.svg","nine.svg","two.svg","four.svg","six.svg","seven.svg","four.svg","nine.svg","seven.svg","four.svg","six.svg","two.svg","seven.svg","six.svg","nine.svg"],["six.svg","nine.svg","seven.svg","two.svg","four.svg","nine.svg","two.svg","seven.svg","nine.svg","seven.svg","two.svg","seven.svg","six.svg","four.svg","nine.svg","six.svg","four.svg","two.svg","seven.svg","nine.svg","six.svg","two.svg","four.svg","nine.svg","two.svg","four.svg","six.svg","seven.svg","two.svg","six.svg","seven.svg","four.svg","six.svg","four.svg","nine.svg","two.svg","four.svg","two.svg","nine.svg","seven.svg","six.svg","nine.svg","seven.svg","two.svg","four.svg","seven.svg","nine.svg","six.svg","four.svg","six.svg"],["seven.svg","four.svg","nine.svg","two.svg","six.svg","two.svg","seven.svg","two.svg","six.svg","four.svg","six.svg","nine.svg","two.svg","nine.svg","seven.svg","six.svg","nine.svg","seven.svg","four.svg","seven.svg","nine.svg","six.svg","nine.svg","four.svg","two.svg","nine.svg","two.svg","four.svg","six.svg","nine.svg","four.svg","seven.svg","six.svg","two.svg","seven.svg","two.svg","four.svg","seven.svg","nine.svg","seven.svg","six.svg","four.svg","seven.svg","six.svg","two.svg","four.svg","nine.svg","two.svg","four.svg","six.svg"],["six.svg","seven.svg","four.svg","two.svg","nine.svg","four.svg","two.svg","four.svg","six.svg","nine.svg","two.svg","four.svg","six.svg","nine.svg","four.svg","six.svg","four.svg","two.svg","seven.svg","six.svg","seven.svg","nine.svg","two.svg","six.svg","nine.svg","seven.svg","six.svg","seven.svg","two.svg","nine.svg","four.svg","six.svg","seven.svg","four.svg","two.svg","four.svg","seven.svg","nine.svg","seven.svg","six.svg","two.svg","nine.svg","six.svg","two.svg","seven.svg","nine.svg","two.svg","four.svg","nine.svg","seven.svg"],["four.svg","two.svg","nine.svg","four.svg","nine.svg","six.svg","seven.svg","two.svg","six.svg","nine.svg","two.svg","six.svg","two.svg","seven.svg","six.svg","seven.svg","two.svg","six.svg","two.svg","seven.svg","nine.svg","seven.svg","four.svg","six.svg","four.svg","nine.svg","seven.svg","four.svg","nine.svg","six.svg","two.svg","four.svg","seven.svg","nine.svg","two.svg","six.svg","four.svg","nine.svg","two.svg","seven.svg","four.svg","seven.svg","nine.svg","six.svg","seven.svg","four.svg","two.svg","four.svg","nine.svg","six.svg"],["six.svg","seven.svg","four.svg","nine.svg","two.svg","seven.svg","two.svg","six.svg","two.svg","seven.svg","two.svg","nine.svg","six.svg","four.svg","nine.svg","four.svg","seven.svg","two.svg","four.svg","nine.svg","six.svg","two.svg","seven.svg","nine.svg","six.svg","two.svg","nine.svg","four.svg","nine.svg","six.svg","seven.svg","six.svg","four.svg","seven.svg","nine.svg","seven.svg","four.svg","two.svg","six.svg","nine.svg","four.svg","two.svg","six.svg","two.svg","seven.svg","four.svg","seven.svg","nine.svg","four.svg","six.svg"]];function Ir(e,n=!1){return null==e?n:"true"===e.trim().toLowerCase()}function Dr(e){return"string"==typeof e?Ir(e):"boolean"==typeof e&&e}const Tr=(e,n)=>{let t;var i,s=("string"!=typeof(i=e)&&(i=String(i)),i.toLocaleLowerCase());return t=["true","false"].includes(s)?Ir(s):!(function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:13,i=Number(e);if(null!=e){if(Number.isNaN(i)){var s={k:0,tk:0,pk:0,preschool:0,prekindergarten:0,transitionalkindergarten:0,kindergarten:0,infanttoddler:0,infant:0,toddler:0,first:1,firstgrade:1,second:2,secondgrade:2,third:3,thirdgrade:3,fourth:4,fourthgrade:4,fifth:5,fifthgrade:5,sixth:6,sixthgrade:6,seventh:7,seventhgrade:7,eighth:8,eighthgrade:8,ninth:9,ninthgrade:9,tenth:10,tenthgrade:10,eleventh:11,eleventhgrade:11,twelfth:12,twelfthgrade:12,freshman:9,sophomore:10,junior:11,senior:12,postgraduate:13,university:13,graduate:13,master:13,doctorate:13,masters:13}[e.toLowerCase().replace(/\s/g,"").replace(/-/g,"")];if(void 0===s)return;return s<n?n:s>t?t:s}return i<n?n:i>t?t:i}}(n)>=6),t};const Or=new Map;function Pr(e){const n=new URL(e,document.baseURI).href;if(Or.has(n))return Or.get(n);const t=new Promise(((e,t)=>{const i=document.createElement("script");i.src=n,i.dataset.dynamic="true",i.onload=()=>{e()},i.onerror=e=>{Or.delete(n),t(e)},document.head.appendChild(i)}));return Or.set(n,t),t}async function Fr(e){const n=e.getElementsByTagName("script");for(let e=0;e<n.length;e++){const t=n[e];t.src&&await Pr(t.src)}}function Nr(e){const n=e.getElementsByTagName("script");for(let e=0;e<n.length;e++){const t=document.createElement("script");t.text=n[e].text,document.head.appendChild(t).parentNode.removeChild(t)}}function qr(e){Object.keys(e).forEach((n=>{window[n]=e[n]}))}function zr(e){Object.keys(e).forEach((e=>{const n=Object.getOwnPropertyDescriptor(window,e);n&&n.configurable?delete window[e]:console.log(`Cannot remove ${e} from window; it may be non-configurable.`)}))}function Vr(e){document.querySelectorAll("script[data-dynamic]").forEach((n=>{e&&!e(n)||n.parentNode.removeChild(n)}))}function Br(e){e.style.position="",e.style.top="",e.style.left="",e.style.width="",e.style.height=""}function Ur(e){Object.keys(e).forEach((n=>{const t=CSS.escape?CSS.escape(n):n.replace(/([^\w-])/g,"\\$1"),i=document.querySelector(`[data-alt-id="${t}"]`);i&&(i.textContent=e[n])}))}var Hr='<!DOCTYPE html>\n<html lang="en">\n<head>\n <meta charset="UTF-8">\n <meta name="viewport" content="width=device-width, initial-scale=1.0">\n <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet">\n <style>\n body {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100vh;\n margin: 0;\n background-color: #ffffff; /* White background */\n color: #000000; /* Black text */\n }\n\n .loading-container {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n padding: 20px;\n border-radius: 10px;\n background: rgba(0, 0, 0, 0.05); /* Slight gray tint to differentiate from the white background */\n box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); /* Soft shadow for depth */\n }\n\n .loading-spinner {\n border: 8px solid rgba(0, 0, 0, 0.1); /* Lighter border for the spinner */\n border-top: 8px solid #0d6efd; /* Blue color for active part of the spinner */\n border-radius: 50%;\n width: 80px;\n height: 80px;\n animation: spin 1s linear infinite;\n margin-bottom: 20px;\n }\n\n h2 {\n font-weight: 400;\n letter-spacing: 1px;\n }\n\n @keyframes spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n }\n </style>\n</head>\n<body>\n <div class="loading-container">\n <div class="loading-spinner"></div>\n <h2>Loading...</h2>\n </div>\n</body>\n</html>\n';function Wr(){const e=document.getElementById("deviceList"),n=document.getElementById("findDevice-collapsableCards");e.innerHTML="";const t=document.createElement("option");t.value="",t.text="",e.add(t);const i=Object.keys(deviceConfigs);if(i.forEach((n=>{const t=document.createElement("option");t.value=n,t.text=n.charAt(0).toUpperCase()+n.slice(1),e.add(t)})),1===i.length){$r(deviceConfigs[i[0]]),n&&(n.style.display="none",Yr())}else n&&(n.style.display="block")}function $r(e){console.log("You selected a "+e.deviceName),screenHeight=e.screenHeight,screenWidth=e.screenWidth,webcamHeight=e.webcamHeight,screenSizeCalibrated=e.screenSizeCalibrated,webcamCentered=e.webcamCentered,HeightWebcamEntered=e.HeightWebcamEntered,heightInput_textbox.value=webcamHeight,heightInput_textbox.disabled=HeightWebcamEntered,e.hasOwnProperty("normalizedFocalLength")&&(normalizedFocalLength=e.normalizedFocalLength),checkAllComplete()}function Yr(){var e=document.querySelectorAll(".card-title"),n=1;e.forEach((function(e){"none"!==e.parentElement.parentElement.style.display&&null!==e.parentElement.parentElement.offsetParent&&(e.textContent=e.textContent.replace(/\(\d+\)/,"("+n+")"),n++)}))}var Kr,Xr,Gr=Object.freeze({__proto__:null,collapseCamera:function(e=!0){document.querySelectorAll('[id*="-cameracollapsableCards"]').forEach((n=>{n.style.display=e?"none":""})),Yr()},collapseCards:function(e=!0){document.querySelectorAll('[id*="-collapsableCards"]').forEach((n=>{n.style.display="Toggle"===e?"none"===n.style.display?"":"none":e?"none":""})),Yr()},handleDevice:$r,inputParticipantName:function(e){var n=document.getElementById("idInput");n.value=e,n.disabled=!0},updateCardNumbers:Yr,updateDeviceConfigFromJSON:async function(e){try{const n=await fetch(e),t=await n.json();deviceConfigs=t,Wr()}catch(e){console.error("Error fetching or parsing JSON:",e)}},updateDropdownOptions:Wr});function Jr(){const e=window.navigator,n=window.screen,t={userAgent:e.userAgent,platform:e.platform,language:e.language,deviceMemory:e.deviceMemory||"Not available",hardwareConcurrency:e.hardwareConcurrency,maxTouchPoints:e.maxTouchPoints,cookiesEnabled:e.cookieEnabled,webDriver:e.webdriver,onlineStatus:e.onLine,gpu:"Not available"},i={width:n.width,height:n.height,colorDepth:n.colorDepth,pixelDepth:n.pixelDepth,retinaDisplay:window.matchMedia("(-webkit-min-device-pixel-ratio: 2)").matches,landscapeOrientation:window.matchMedia("(orientation: landscape)").matches},s=document.createElement("canvas"),a=s.getContext("webgl")||s.getContext("experimental-webgl");if(a){const e=a.getExtension("WEBGL_debug_renderer_info");t.gpu=e?a.getParameter(e.UNMASKED_RENDERER_WEBGL):"Not available"}return{device:t,screen:i}}var Qr,Zr=document.documentElement,ec={};function nc(){Zr.requestFullscreen?Zr.requestFullscreen():Zr.webkitRequestFullscreen?Zr.webkitRequestFullscreen():Zr.msRequestFullscreen&&Zr.msRequestFullscreen()}var tc=4;function ic(e){const n="video"===e?["video/webm;codecs=vp9,opus","video/webm;codecs=vp8,opus","video/webm","video/mp4"]:["audio/webm;codecs=opus","audio/webm","audio/ogg","audio/mp4"];for(const e of n)if(MediaRecorder.isTypeSupported(e))return e;return null}async function sc(e=!1,n=!1){try{const t={};(e||n)&&(t.video={width:{ideal:1280,min:640},height:{ideal:720,min:480},frameRate:{ideal:30,min:15}}),t.audio=!0;const i=await navigator.mediaDevices.getUserMedia(t);return Qr=i,ec={bEyeTracking:e,storeVideo:n},(e||n)&&inputVideo&&(inputVideo.srcObject=i,inputVideo.muted=!0,inputVideo.play(),inputVideo.addEventListener("loadedmetadata",(function(){Kr=inputVideo.videoWidth,Xr=inputVideo.videoHeight,headCanvas&&(headCanvas.width=Kr,headCanvas.height=Xr)}))),{success:!0}}catch(e){throw console.error("Error accessing media devices:",e),e}}function ac(e){const n={one:"1",two:"2",three:"3",four:"4",five:"5",six:"6",seven:"7",eight:"8",nine:"9"},t={...e};return Array.isArray(t.stimulus)&&(t.stimulus=t.stimulus.reduce(((e,t)=>e+(n[t.toLowerCase()]||t)),"")),{stimImages:t.stimulus,...t}}async function oc(){let e,n;mediaChunks=[],mediaRecorder&&"recording"===mediaRecorder.state&&mediaRecorder.stop();try{if(ec.storeVideo){if(e=Qr,n=ic("video"),!n)throw new Error("No supported video MIME type found for MediaRecorder")}else{const t=Qr.getAudioTracks();if(!(t.length>0))return void console.error("No audio tracks available for recording");if(e=new MediaStream(t),n=ic("audio"),!n)throw new Error("No supported audio MIME type found for MediaRecorder")}}catch(e){return void console.error("Error setting up recording stream:",e)}mediaRecorder=new MediaRecorder(e,{mimeType:n,videoBitsPerSecond:128e3,audioBitsPerSecond:128e3}),mediaRecorder.ondataavailable=e=>{console.log("Media chunk size:",e.data.size),e.data.size>0&&mediaChunks.push(e.data)},mediaRecorder.onstop=async()=>{console.log("Recording stopped, blob created")},mediaRecorder.start()}async function rc(){try{await new Promise((e=>{mediaRecorder&&"recording"===mediaRecorder.state?(mediaRecorder.onstop=e,mediaRecorder.stop()):e()}))}catch(e){console.error("Error stopping media recorder:",e)}}async function cc({filename:e,deviceConfig:n,config:t,metadata:i}){let s;s=n.storeVideo?"video/webm":"audio/webm";const a=new Blob(mediaChunks,{type:s});if(!(a.size>0))return console.error("No media data recorded."),null;console.log("Media recorded successfully. Size:",a.size,"bytes");try{return await t.firekit.uploadFileOrBlobToStorage({filename:e,assessmentPid:store.session.get("id"),fileOrBlob:a,customMetadata:ac(i)})}catch(e){return console.error("Error uploading media:",e),null}}function lc(){Qr&&(Qr.getTracks().forEach((e=>{e.stop()})),Qr=null);const e=document.getElementsByClassName("inputVideo")[0];if(e&&e.srcObject){e.srcObject.getTracks().forEach((e=>{e.stop()})),e.srcObject=null}window.mediaRecorder&&"inactive"!==window.mediaRecorder.state&&(window.mediaRecorder.stop(),window.mediaRecorder=null),window.micStream&&window.micStream.getTracks&&(window.micStream.getTracks().forEach((e=>e.stop())),window.micStream=null)}var pc=Object.freeze({__proto__:null,get countdown(){return tc},giveAccess:sc,openFullscreen:nc,get orig_img_height(){return Xr},get orig_img_width(){return Kr},saveRecordings:cc,startRecording:oc,stopMediaStreams:lc,stopRecording:rc,updateCountdown:function e(n){0===--tc?(document.getElementById("instruction").style.display="none","function"==typeof n&&(n(),tc=4)):(document.getElementById("instruction").innerHTML="<h1>"+tc+"</h1>",setTimeout((function(){e(n)}),1e3))}});async function uc(e){const n=Hr,t=document.createElement("div");t.innerHTML='\x3c!-- Scripts --\x3e\n<script data-dynamic src="https://cdn.jsdelivr.net/npm/remote-calibrator@latest"><\/script>\n<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">\n\n\x3c!-- CSS --\x3e\n<style>\n\nbody {\n margin: 0;\n}\n\n .column {\n float: left;\n padding: 10px;\n}\n\n.left, .right {\n width: 33%;\n}\n\n.middle {\n width: 33%;\n}\n\n.row:after {\n content: "";\n display: table;\n clear: both;\n}\n\n.container {\n width: 75%; /* Set the width for the container */\n margin: auto; /* Center the container if needed */\n}\n\n #audio-visualization {\n width: 100%; /* Both elements fill the container */\n height: 100px; /* Set a fixed height for the canvas */\n\n /* display: block; Ensure they are not inline */\n}\n\n#audio-visualization-audioonly {\n width:100%;\n height: 100px; /* Set a fixed height for the canvas */\n}\n\n</style>\n\n\x3c!-- HTML --\x3e\n<body id="body">\n\n <div class="px-4 py-5 my-5 text-center" style="display: block;">\n <h1 class="display-5 fw-bold" id="title" data-alt-id="configureDevice">Configure Device</h1>\n <h5 data-alt-id="configureDevice_text1"> To get started, we will need to set up a few things. </h5>\n <h5 data-alt-id="configureDevice_text2"> If you’re not sure what to do, ask an adult to help you with this part. </h5>\n <img src="https://storage.googleapis.com/roav-ran/shared/assets/legacy/parent-help-icon.png" width="10%">\n <div class="col-lg-6 mx-auto" style="margin-top: -8vh;">\n <p class="lead mt-3 mb-5"></p>\n\n \x3c!-- Preconfigured Devices --\x3e\n <div class="d-grid gap-2 justify-content-center">\n\n <div class="row gap-2" id="findDevice-collapsableCards" style="display: none;">\n <div class="col">\n <div\n class="card"\n style="width: 42rem; height: 11rem"\n id="findDevice"\n >\n <div class="card-body">\n <h5 class="card-title" data-alt-id="chooseDevice">(1) Choose Device</h5>\n <p class="card-text" data-alt-id="chooseDevice_text1">\n Please select the device you are taking the test on.\n </p>\n <select id="deviceList" onchange="selectDevice()"></select>\n </div>\n </div>\n </div>\n </div>\n\n\n\n \x3c!-- ROW 1: Full Screen | Get Screen Size --\x3e\n <div class="row gap-2" id="screenSize-collapsableCards">\n <div class="col" >\n <div class="card" style="width:20rem; height:11rem" id="card-fullscreen">\n <div class="card-body">\n <h5 class="card-title" data-alt-id="fullScreen">(1) Full Screen</h5>\n <p class="card-text" data-alt-id="fullScreen_text1">Do not exit out of \'Full Screen\' mode for the remainder of this study.</p>\n <button type="button" class="btn btn-primary" id="fullscreen" onclick="openFullscreen()" data-alt-id="fullScreen_text2">Make Fullscreen</button>\n </div>\n </div>\n </div>\n <div class="col">\n <div class="card" style="width:20rem;height:11rem" id="card-screen-size">\n <div class="card-body">\n <h5 class="card-title" data-alt-id="screenSize">(2) Screen Size</h5>\n <p class="card-text" data-alt-id="screenSize_text1">We need this to calibrate your device\'s screen size.</p>\n <button type="button" class="btn btn-primary" id="measureScreen" onclick="getScreenSize()" data-alt-id="screenSize_text2">Measure Screen Size</button>\n </div>\n </div>\n </div>\n </div>\n\n\n \x3c!-- ROW 2: Webcam Centered | Height of Webcam --\x3e\n <div class="row gap-2" id="webcam-collapsableCards">\n <div class="col">\n <div class="card" style="width: 20rem;" id="card-webcam-center">\n <div class="card-body">\n <h5 class="card-title" data-alt-id="webcamCentered">(3) Is your webcam centred?</h5>\n <h6 class="card-subtitle mb-2 text-muted" data-alt-id="webcamCentered_text1">It is expected that for laptops the webcam is already centred.</h6>\n <p class="card-text" data-alt-id="webcamCentered_text2">If you are using a separate webcam, please centre this in the middle (as seen in the image below).</p>\n <img src="https://eyetrackingdata.blob.core.windows.net/public/Images/webcamCentered.jpg" alt="center webcam" width="100%" style="padding-bottom:10px;">\n <button type="button" class="btn btn-primary" id="measureDistanceFromScreeen" onclick="getwebcamCentered()" data-alt-id="webcamCentered_text3">My Webcam is Centered</button>\n </div>\n </div>\n </div>\n <div class="col">\n <div class="card" style="width: 20rem;" id="card-height-camera">\n <div class="card-body">\n <h5 class="card-title" data-alt-id="webcamHeight">(4) Height of Webcam</h5>\n <p class="card-text" data-alt-id="webcamHeight_text1">This is the distance between the centre of your webcam\'s lens and the top bezel of your screen (image provided for example)</p>\n <img src="https://eyetrackingdata.blob.core.windows.net/public/Images/webcamPosition.PNG" alt="center webcam" width="100%" style="padding-bottom:10px;">\n <label for="heightInput" data-alt-id="webcamHeight_text2">Height in cm:</label>\n <input type="number" id="heightInput" name="heightInput" required\n minlength="1" maxlength="8" size="10" value="2">\n </br></br>\n <button type="button" class="btn btn-primary" id="getHeightbutton" onclick="getHeightWebcam()" data-alt-id="webcamHeight_text3">Done</button>\n </div>\n </div>\n </div>\n </div>\n\n\n <div class="row gap-2" id="access-cameracollapsableCards">\n <div class="col">\n <div class="card" style="width: 42rem;height:11rem" id="card-camera">\n <div class="card-body">\n <h5 class="card-title" id="camera-access-title" data-alt-id="cameraAccess">(5) Camera Access</h5>\n <p class="card-text" id="camera-access-text" data-alt-id="cameraAccess_text1">Please provide access to your camera to record your eye movements.</p>\n <button type="button" class="btn btn-primary" id="start-camera" data-alt-id="cameraAccess_text2">Provide Access</button>\n </div>\n </div>\n </div>\n </div>\n \n <div class="row gap-2" id="access-audiocollapsableCards" style="display: none;">\n <div class="col">\n <div class="card" style="width: 42rem;height:11rem" id="card-audio">\n <div class="card-body">\n <h5 class="card-title" data-alt-id="audioAccess">(3) Audio Access</h5>\n <p class="card-text" data-alt-id="audioAccess_text1">Please provide access to your microphone to record audio.</p>\n <button type="button" class="btn btn-primary" id="start-audio" data-alt-id="audioAccess_text2">Provide Access</button>\n </div>\n </div>\n </div>\n </div>\n\n\n \x3c!-- ROW 4: Check Recording --\x3e\n <div class="row gap-2" style="padding-top:1rem;" id="check-cameracollapsableCards">\n <div class="col">\n <div class="card" style="width:42rem" id="card-final-check">\n <div class="card-body">\n <h5 class="card-title" data-alt-id="finalChecks">(6) Final Checks</h5>\n <p id="finalChecks_text" data-alt-id="finalChecks_text1">Please ensure your video is well-lit and centered. Speak at a normal volume to check the audio level below.</p>\n\n <div id="video-quality-checks">\n <div class="column left">\n <img src="https://eyetrackingdata.blob.core.windows.net/public/Images/badlighting.jpg" alt="center webcam" width="100%" style="padding-bottom:10px;">\n <b data-alt-id="badLighting">Bad Lighting</b> &#10060;</br>\n <span data-alt-id="badLightingDescription">(Make sure eyes and face are clearly visible)</span>\n </div>\n <div class="column middle">\n <img src="https://eyetrackingdata.blob.core.windows.net/public/Images/glassesReflection.jpg" alt="center webcam" width="100%" style="padding-bottom:10px;">\n <b data-alt-id="glassesOn">Glasses On</b> &#10060;</br>\n <span data-alt-id="removeGlasses">(Remove Glasses)</span>\n </div>\n <div class="column middle">\n <img src="https://eyetrackingdata.blob.core.windows.net/public/Images/goodPosition.jpg" alt="center webcam" width="100%" style="padding-bottom:10px;">\n <b data-alt-id="idealView">Ideal View</b> &#10004 &#65039;</br>\n <span data-alt-id="idealViewDescription">(Face close to camera and centered with clear view of eyes)</span>\n </div>\n </div>\n <div class="container">\n <video autoplay="true" id="videoElement" style="width:100%; background-color: darkgray;"></video>\n <canvas id="audio-visualization" width="640" height="100"></canvas>\n </div>\n\n <button type="button" class="btn btn-primary" id="Final-Check" onclick="finalCheckComplete()" data-alt-id="finalChecks_text2" disabled>I\'m Looking and Sounding Great</button>\n </div>\n </div>\n </div> \n </div>\n \n \x3c!-- ROW 4b: Audio-Only Final Check --\x3e\n <div class="row gap-2" style="padding-top:1rem; display: none;" id="check-audiocollapsableCards">\n <div class="col">\n <div class="card" style="width:42rem" id="card-final-check-audio">\n <div class="card-body">\n <h5 class="card-title" data-alt-id="finalChecks">(4) Final Checks</h5>\n <p id="finalChecks_audioOnly_text2" data-alt-id="finalChecks_audioOnly_text1">Speak at a normal volume to check the audio level below.</p>\n <div class="container">\n <canvas id="audio-visualization-audioonly" width="640" height="100"></canvas>\n </div>\n\n <button type="button" class="btn btn-primary" id="Final-Check-Audio" onclick="finalCheckComplete()" data-alt-id="finalChecks_text2" disabled>I\'m Sounding Great</button>\n </div>\n </div>\n </div> \n </div>\n \n\n \x3c!-- ROW 5: User Details --\x3e\n <div class="row gap-2" style="padding-top:1rem;">\n <div class="col">\n <div class="card" style="width:42rem" id="card-camera">\n <div class="card-body">\n <h5 class="card-title" data-alt-id="readytostart">(8) Ready to Start?</h5>\n <label for="idInput" data-alt-id="readytostart_text1">Participant ID:</label>\n <input type="text" id="idInput" name="idInput" required\n minlength="1" maxlength="100" size="10">\n </br></br>\n <button type="button" class="btn btn-primary" id="confirmButton" data-alt-id="readytostart_text2" disabled>Continue</button>\n </div>\n </div>\n </div> \n </div>\n </div>\n </div>\n </div>\n\n \x3c!-- Audio Playing --\x3e \n \x3c!-- <audio autoplay id="voiceover" src="https://eyetrackingdata.blob.core.windows.net/public/Audios/deviceConfig.mp3"></audio> --\x3e\n <audio autoplay id="voiceover"></audio>\n\n </body>\n\n<script data-dynamic>\nvar deviceConfig = {};\n\n// hide the pid box if the app is running on a URL that contains "roar.education" (i.e. prod)\n// TODO: gse-roar-admin-staging is for dashboard testing, remove before deploying to prod\nconst hidePIDBox = new URL(window.location).origin.includes("roar.education") || new URL(window.location).origin.includes("gse-roar-admin-staging");\n\nvar voiceover = document.getElementById(\'voiceover\'); // TO DO: Doesn\'t have enough time to load? Only plays if the consent screen shows up first\n\nRemoteCalibrator.init();\n\nvar desktop = document.documentElement;\nvar finalCheckButton = document.getElementById("Final-Check")\nvar finalCheckButtonAudio = document.getElementById("Final-Check-Audio")\nvar confirmButton = document.getElementById("confirmButton");\nvar cardFullscreen = document.getElementById("card-fullscreen");\nvar cardScreenSize = document.getElementById("card-screen-size");\nvar cardDistanceScreen = document.getElementById("card-distance-screen");\nvar cardcamera = document.getElementById("card-camera");\nvar cardwebcamCenter = document.getElementById("card-webcam-center");\nvar cardheightcamera = document.getElementById("card-height-camera")\nvar cardfinalcheck = document.getElementById("card-final-check");\nvar cardfinalcheckaudio = document.getElementById("card-final-check-audio");\nvar heightInput_textbox = document.getElementById("heightInput")\nvar idInput_textbox = document.getElementById("idInput")\nvar idInput_textbox = document.getElementById("idInput");\nvar idInput_label = document.querySelector(\'label[for="idInput"]\');\n\nif (hidePIDBox === true) {\n idInput_textbox.style.display = \'none\';\n idInput_label.style.display = \'none\';\n}\n\nvar video = document.querySelector("#videoElement");\nvar deviceConfigs = {}\n\nvar audioDetected = false;\nvar fullScreen = false;\nvar screenSizeCalibrated = false;\nvar cameraStarted = false;\nvar HeightWebcamEntered = false;\nvar finalcheck = false;\nvar webcamCentered = false;\nvar normalizedFocalLength = 0;\nvar prolificID;\nvar screenWidth=0;\nvar screenHeight=0;\nvar screenWidthPX=window.screen.width;\nvar screenHeightPX=window.screen.height;\nvar webcamHeight=0;\nvar distance = 0;\nvar webcamInfo;\nvar bEyeTracking = true;\n\n\nfunction makeid(length) {\n var result = \'\';\n var characters = \'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\';\n var charactersLength = characters.length;\n for ( var i = 0; i < length; i++ ) {\n result += characters.charAt(Math.floor(Math.random() * \n charactersLength));\n }\n return result;\n}\n\nfunction selectDevice() {\n const dropdown = document.getElementById("deviceList");\n const selectedValue = dropdown.options[dropdown.selectedIndex].value;\n\n // Check if the selected device is in deviceConfig, default to "custom" otherwise\n const selectedDeviceConfig =\n deviceConfigs[selectedValue] || deviceConfigs.custom;\n\n console.log(selectedDeviceConfig)\n // Call the handleDevice function with the selected device\'s configuration\n document.getElementById("findDevice").style.backgroundColor = "#bcf5bc";\n handleDevice(selectedDeviceConfig);\n\n}\n\n\n\nfunction openFullscreen() {\n if (desktop.requestFullscreen) {\n desktop.requestFullscreen();\n } else if (desktop.webkitRequestFullscreen) { /* Safari */\n desktop.webkitRequestFullscreen();\n } else if (desktop.msRequestFullscreen) { /* IE11 */\n desktop.msRequestFullscreen();\n }\n\n screenWidthPX = window.screen.width;\n screenHeightPX = window.screen.height;\n\n fullScreen = true\n cardFullscreen.style.backgroundColor = \'#bcf5bc\'\n\n checkAllComplete()\n}\n\nfunction getScreenSize(){\n RemoteCalibrator.screenSize({}, data => {\n console.log(`ScreenWidth: ${data.value.screenWidthCm}cm.`)\n console.log(`ScreenHeight: ${data.value.screenHeightCm}cm.`)\n\n screenWidth = data.value.screenWidthCm\n screenHeight = data.value.screenHeightCm\n\n if (screenWidth!=null && screenHeight!=null) {\n screenSizeCalibrated = true\n cardScreenSize.style.backgroundColor = \'#bcf5bc\'\n console.log(screenSizeCalibrated)\n }\n checkAllComplete()\n }) \n}\n\n\nfunction getwebcamCentered(){\n webcamCentered = true\n cardwebcamCenter.style.backgroundColor = \'#bcf5bc\'\n checkAllComplete()\n}\n\nfunction getHeightWebcam(){\n if (heightInput_textbox.value>0){\n HeightWebcamEntered = true\n webcamHeight = heightInput_textbox.value\n heightInput_textbox.disabled = true\n cardheightcamera.style.backgroundColor = \'#bcf5bc\'\n }\n checkAllComplete()\n}\n\nfunction finalCheckComplete(){\n let userConfirmed = true\n if (!audioDetected) {\n userConfirmed = confirm("We couldn\'t hear you, are you sure your microphone is working? Click OK to continue anyway, or Cancel to check your settings.");\n }\n if (userConfirmed) {\n finalcheck = true\n if (cardfinalcheck) {\n cardfinalcheck.style.backgroundColor = \'#bcf5bc\'\n }\n if (cardfinalcheckaudio) {\n cardfinalcheckaudio.style.backgroundColor = \'#bcf5bc\'\n }\n checkAllComplete()\n }\n}\n\n\nasync function setupMediaStream(requestVideo) {\n const audioContext = new AudioContext();\n const canvas = requestVideo ? document.getElementById(\'audio-visualization\') : document.getElementById(\'audio-visualization-audioonly\');\n const ctx = canvas.getContext(\'2d\');\n\n const mediaConstraints = {\n audio: true\n };\n \n if (requestVideo) {\n mediaConstraints.video = {\n width: { ideal: 1920 }, \n height: { ideal: 1080 }, \n frameRate: { ideal: 60, max: 60 },\n facingMode: "user"\n };\n }\n\n const cameraStream = await navigator.mediaDevices.getUserMedia(mediaConstraints);\n\n if (requestVideo && cameraStream.getVideoTracks().length > 0) {\n const { width, height } = cameraStream.getVideoTracks()[0].getSettings();\n const videoTrack = cameraStream.getVideoTracks()[0];\n webcamInfo = videoTrack.getCapabilities\n ? videoTrack.getCapabilities()\n : {};\n\n webcamInfo[\'image_width\'] = width\n webcamInfo[\'image_height\'] = height\n\n console.log(`${width}x${height}`); // Log video resolution\n\n const video = document.querySelector(\'video\');\n video.srcObject = cameraStream;\n video.muted = true; // Mute the video element to prevent audio playback\n\n if (height > 0) {\n cardcamera.style.backgroundColor = \'#bcf5bc\';\n cameraStarted = true;\n video.style.backgroundColor = \'#bcf5bc\';\n finalCheckButton.disabled = false;\n checkAllComplete();\n } else {\n video.style.backgroundColor = \'#FA8072\';\n alert("Your webcam does not meet our resolution standards");\n }\n } else if (!requestVideo) {\n // Audio-only mode\n const cardaudio = document.getElementById("card-audio");\n if (cardaudio) {\n cardaudio.style.backgroundColor = \'#bcf5bc\';\n }\n \n cameraStarted = true;\n if (finalCheckButtonAudio) {\n finalCheckButtonAudio.disabled = false;\n }\n checkAllComplete();\n }\n\n // Set up audio analyser\n const micSource = audioContext.createMediaStreamSource(cameraStream);\n const analyser = audioContext.createAnalyser();\n analyser.fftSize = 2048;\n micSource.connect(analyser);\n const bufferLength = analyser.frequencyBinCount;\n const dataArray = new Uint8Array(bufferLength);\n\n function draw() {\n requestAnimationFrame(draw);\n analyser.getByteTimeDomainData(dataArray);\n\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n\n\n ctx.lineWidth = 2;\n ctx.strokeStyle = \'rgb(0, 0, 0)\';\n ctx.beginPath();\n\n const sliceWidth = canvas.width * 1.0 / bufferLength;\n let x = 0;\n let sum = 0;\n\n for (let i = 0; i < bufferLength; i++) {\n const v = dataArray[i] / 128.0;\n const y = v * canvas.height / 2;\n\n if (i === 0) {\n ctx.moveTo(x, y);\n } else {\n ctx.lineTo(x, y);\n }\n\n sum += (dataArray[i] - 128) * (dataArray[i] - 128); // Summing for RMS calculation\n x += sliceWidth;\n }\n\n ctx.lineTo(canvas.width, canvas.height / 2);\n ctx.stroke();\n let rms = Math.sqrt(sum / bufferLength);\n if (rms > 0.01) {\n audioDetected = true; // Update the audioDetected flag if audio is sufficiently loud\n }\n\n }\n\n draw(); // Start the drawing function\n}\n\ndocument.querySelector("#start-camera").addEventListener(\'click\', async () => {\n await setupMediaStream(true);\n});\n\ndocument.querySelector("#start-audio").addEventListener(\'click\', async () => {\n await setupMediaStream(false);\n});\n\n\nfunction checkAllComplete() {\n const hasCollapsedCards = Array.from(document.querySelectorAll(\'.card-title\')).some(card => \n card.closest(\'.card\').style.display === \'none\' || card.closest(\'.card\').offsetParent === null\n );\n const hasCameraCollapsedCards = Array.from(document.querySelectorAll(\'[id*="-cameracollapsableCards"]\')).every(element => \n element.style.display === \'none\' || element.offsetParent === null\n );\n\n const allConditionsMet = fullScreen && screenSizeCalibrated && cameraStarted && webcamCentered && HeightWebcamEntered && finalcheck;\n const minimalConditionsMet = cameraStarted && finalcheck && screenSizeCalibrated\n const bareConditionsMet = screenSizeCalibrated && cameraStarted && finalcheck\n \n let conditionsMet = false;\n if (bEyeTracking) {\n // Eye tracking mode: require camera access (cameraStarted) and finalcheck\n conditionsMet = (hasCollapsedCards && minimalConditionsMet) || (!hasCollapsedCards && allConditionsMet);\n } else {\n // Audio-only mode: require microphone access (cameraStarted) and finalcheck\n conditionsMet = hasCameraCollapsedCards && bareConditionsMet;\n }\n \n if (conditionsMet) {\n confirmButton.classList.remove(\'btn-secondary\')\n confirmButton.classList.add(\'btn-primary\')\n confirmButton.disabled = false;\n }\n}\n\n\n\n\n// function continueToTest(){\n// video.remove()\n// prolificID = idInput_textbox.value.trim() ? idInput_textbox.value : makeid(10);\n\n// localStorage.prolificID = prolificID\n// localStorage.screenHeight = screenHeight\n// localStorage.screenWidth = screenWidth\n// localStorage.webcamHeight = webcamHeight\n// localStorage.distance = distance\n// window.location.href = "criticalSpacingMenu_six.html";\n\n// }\n\n<\/script>',document.body.appendChild(t),await Fr(t),qr(Gr),Nr(t),function(e){""!==e.firekit.task.variantParams.deviceConfigFile&&collapseCards("Toggle");const n=Dr(e.firekit.task.variantParams.bEyeTracking);if(window.bEyeTracking=n,n){collapseCamera();const e=document.getElementById("access-cameracollapsableCards"),n=document.getElementById("access-audiocollapsableCards"),t=document.getElementById("check-cameracollapsableCards"),i=document.getElementById("check-audiocollapsableCards");e&&(e.style.display="block"),t&&(t.style.display="block"),n&&(n.style.display="none"),i&&(i.style.display="none")}else{collapseCamera();const e=document.getElementById("access-cameracollapsableCards"),n=document.getElementById("access-audiocollapsableCards"),t=document.getElementById("check-audiocollapsableCards");e&&(e.style.display="none"),n&&(n.style.display="block"),t&&(t.style.display="block")}""!==e.firekit.user.assessmentPid&&inputParticipantName(e.firekit.user.assessmentPid);var t=document.getElementById("voiceover");if(t.src="https://storage.googleapis.com/roav-ran/en/shared/audio/configureDeviceViewAudio.mp3",""!==e.firekit.task.variantParams.deviceConfigFile){var i=`https://eyetrackingdata.blob.core.windows.net/public/config/${e.firekit.task.variantParams.deviceConfigFile}.json`;updateDeviceConfigFromJSON(i)}t.play()}(e),Ur(be.store.data[be.language].translation),await new Promise((i=>{const s=document.getElementById("confirmButton");s&&s.addEventListener("click",(async()=>{try{var s=idInput_textbox.value.trim()?idInput_textbox.value:makeid(10);s!==e.firekit.user.assessmentPid&&e.firekit.updateUser({assessmentPid:s}),nc(),o.session.set("id",s),o.session.set("deviceConfig",{screenWidth:parseFloat(screenWidth),screenHeight:parseFloat(screenHeight),screenWidthPX:parseFloat(screenWidthPX),screenHeightPX:parseFloat(screenHeightPX),webcamHeight:parseFloat(webcamHeight),normalizedFocalLength:parseFloat(normalizedFocalLength),deviceInfo:Jr(),webcamInfo:webcamInfo,bEyeTracking:Dr(e.firekit.task.variantParams.bEyeTracking),storeVideo:Dr(e.firekit.task.variantParams.storeVideo),startTime:Date.now(),timed:e.firekit.task.variantParams.timed}),t.innerHTML=n,zr(Gr),Vr(),t.remove(),i()}catch(e){window.console.log("Error:",e)}}))}))}var dc='<script src="https://cdn.jsdelivr.net/npm/@mediapipe/face_mesh@0.4/face_mesh.min.js"><\/script>\n\n<script data-dynamic>\n var irisMetrics;\n var headMetrics;\n var headCoordinates;\n var leftEyeCoordinates = [];\n var rightEyeCoordinates = [];\n var movingContour;\n var fixedContour;\n var canvasContour;\n var focalLengthMultiple;\n var headMetrics_array = [];\n var irisMetrics_array = [];\n var mediaRecorder;\n var mediaChunks = [];\n var leftEyectx;\n var rightEyectx;\n var normalizedFocalLength;\n var blueCircle;\n var inferenceRetries = 0;\n var maxInferenceRetries = 100;\n\n var inputVideo = document.getElementsByClassName("inputVideo")[0];\n var headCanvas = document.getElementById("headCanvas");\n var headCtx = headCanvas.getContext("2d");\n\n var faceMesh = new FaceMesh({\n locateFile: (file) => {\n return `https://cdn.jsdelivr.net/npm/@mediapipe/face_mesh@0.4/${file}`;\n },\n });\n\n faceMesh.setOptions({\n selfieMode: true,\n enableFaceGeometry: false,\n maxNumFaces: 1,\n refineLandmarks: true,\n minDetectionConfidence: 0.5,\n minTrackingConfidence: 0.5,\n });\n\n faceMesh.onResults(onResultsFaceMesh);\n\n async function runInference() {\n await faceMesh.send({ image: inputVideo });\n try {\n if (!leftEyeCoordinates || leftEyeCoordinates.length === 0 || !rightEyeCoordinates || rightEyeCoordinates.length === 0) {\n inferenceRetries++;\n if (inferenceRetries > maxInferenceRetries) {\n console.warn("Max inference retries reached. Stopping eye tracking.");\n continueProcessing = false;\n return;\n }\n throw new Error("No face detected");\n }\n inferenceRetries = 0;\n let input1, input2, kpsTensor;\n let [upper_left_x, upper_left_y, width, height] = convertToYolo(\n leftEyeCoordinates,\n inputVideo.videoWidth,\n inputVideo.videoHeight,\n );\n let kps = [\n upper_left_x / inputVideo.videoWidth,\n upper_left_y / inputVideo.videoHeight,\n width / inputVideo.videoWidth,\n height / inputVideo.videoHeight,\n ];\n\n leftEyectx.drawImage(\n inputVideo,\n Math.max(0, inputVideo.videoWidth - upper_left_x - width),\n Math.max(0, upper_left_y),\n Math.max(0, width),\n Math.max(0, height),\n 0,\n 0,\n 128,\n 128,\n );\n\n [upper_left_x, upper_left_y, width, height] = convertToYolo(\n rightEyeCoordinates,\n inputVideo.videoWidth,\n inputVideo.videoHeight,\n );\n kps.push(\n upper_left_x / inputVideo.videoWidth,\n upper_left_y / inputVideo.videoHeight,\n width / inputVideo.videoWidth,\n height / inputVideo.videoHeight,\n );\n rightEyectx.drawImage(\n inputVideo,\n Math.max(0, inputVideo.videoWidth - upper_left_x - width),\n Math.max(0, upper_left_y),\n Math.max(0, width),\n Math.max(0, height),\n 0,\n 0,\n 128,\n 128,\n );\n\n imageData = leftEyectx.getImageData(0, 0, 128, 128);\n let preprocessedData = preprocess(imageData.data, 128, 128);\n input1 = new Tensor(preprocessedData, "float32", [1, 3, 128, 128]);\n imageData = rightEyectx.getImageData(0, 0, 128, 128);\n preprocessedData = preprocess(imageData.data, 128, 128);\n input2 = new Tensor(preprocessedData, "float32", [1, 3, 128, 128]);\n preprocessedData = preprocess_kps(kps);\n kpsTensor = new Tensor(preprocessedData, "float32", [1, 8]);\n\n myWorker.postMessage({\n input1: input1,\n input2: input2,\n kpsTensor: kpsTensor,\n });\n } catch (error) {\n console.log(error)\n if (inferenceRetries < maxInferenceRetries) {\n setTimeout(runInference, 50);\n } else {\n console.warn("Max inference retries reached. Stopping eye tracking.");\n continueProcessing = false;\n }\n }\n }\n\n myWorker.onmessage = async (e) => {\n if (e.data.error) {\n console.error("Error from worker:", e.data.error);\n } else {\n if (typeof runAfterEveryFrame === \'function\') {\n runAfterEveryFrame((output = e.data));\n }\n }\n\n if (continueProcessing) {\n runInference();\n }\n };\n<\/script>\n';function mc(e){return!!e.constructor&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}var gc=function(e){for(var n=new Array(e),t=0;t<e;++t)n[t]=t;return n},vc=function(e){return null!=e&&(mc(e)||function(e){return"function"==typeof e.readFloatLE&&"function"==typeof e.slice&&mc(e.slice(0,0))}(e)||!!e._isBuffer)},hc="undefined"!=typeof Float64Array;function fc(e,n){return e[0]-n[0]}function xc(){var e,n=this.stride,t=new Array(n.length);for(e=0;e<t.length;++e)t[e]=[Math.abs(n[e]),e];t.sort(fc);var i=new Array(t.length);for(e=0;e<i.length;++e)i[e]=t[e][1];return i}function bc(e,n){var t=["View",n,"d",e].join("");n<0&&(t="View_Nil"+e);var i="generic"===e;if(-1===n){var s="function "+t+"(a){this.data=a;};var proto="+t+".prototype;proto.dtype='"+e+"';proto.index=function(){return -1};proto.size=0;proto.dimension=-1;proto.shape=proto.stride=proto.order=[];proto.lo=proto.hi=proto.transpose=proto.step=function(){return new "+t+"(this.data);};proto.get=proto.set=function(){};proto.pick=function(){return null};return function construct_"+t+"(a){return new "+t+"(a);}";return new Function(s)()}if(0===n){s="function "+t+"(a,d) {this.data = a;this.offset = d};var proto="+t+".prototype;proto.dtype='"+e+"';proto.index=function(){return this.offset};proto.dimension=0;proto.size=1;proto.shape=proto.stride=proto.order=[];proto.lo=proto.hi=proto.transpose=proto.step=function "+t+"_copy() {return new "+t+"(this.data,this.offset)};proto.pick=function "+t+"_pick(){return TrivialArray(this.data);};proto.valueOf=proto.get=function "+t+"_get(){return "+(i?"this.data.get(this.offset)":"this.data[this.offset]")+"};proto.set=function "+t+"_set(v){return "+(i?"this.data.set(this.offset,v)":"this.data[this.offset]=v")+"};return function construct_"+t+"(a,b,c,d){return new "+t+"(a,d)}";return new Function("TrivialArray",s)(yc[e][0])}s=["'use strict'"];var a=gc(n),o=a.map((function(e){return"i"+e})),r="this.offset+"+a.map((function(e){return"this.stride["+e+"]*i"+e})).join("+"),c=a.map((function(e){return"b"+e})).join(","),l=a.map((function(e){return"c"+e})).join(",");s.push("function "+t+"(a,"+c+","+l+",d){this.data=a","this.shape=["+c+"]","this.stride=["+l+"]","this.offset=d|0}","var proto="+t+".prototype","proto.dtype='"+e+"'","proto.dimension="+n),s.push("Object.defineProperty(proto,'size',{get:function "+t+"_size(){return "+a.map((function(e){return"this.shape["+e+"]"})).join("*"),"}})"),1===n?s.push("proto.order=[0]"):(s.push("Object.defineProperty(proto,'order',{get:"),n<4?(s.push("function "+t+"_order(){"),2===n?s.push("return (Math.abs(this.stride[0])>Math.abs(this.stride[1]))?[1,0]:[0,1]}})"):3===n&&s.push("var s0=Math.abs(this.stride[0]),s1=Math.abs(this.stride[1]),s2=Math.abs(this.stride[2]);if(s0>s1){if(s1>s2){return [2,1,0];}else if(s0>s2){return [1,2,0];}else{return [1,0,2];}}else if(s0>s2){return [2,0,1];}else if(s2>s1){return [0,1,2];}else{return [0,2,1];}}})")):s.push("ORDER})")),s.push("proto.set=function "+t+"_set("+o.join(",")+",v){"),i?s.push("return this.data.set("+r+",v)}"):s.push("return this.data["+r+"]=v}"),s.push("proto.get=function "+t+"_get("+o.join(",")+"){"),i?s.push("return this.data.get("+r+")}"):s.push("return this.data["+r+"]}"),s.push("proto.index=function "+t+"_index(",o.join(),"){return "+r+"}"),s.push("proto.hi=function "+t+"_hi("+o.join(",")+"){return new "+t+"(this.data,"+a.map((function(e){return["(typeof i",e,"!=='number'||i",e,"<0)?this.shape[",e,"]:i",e,"|0"].join("")})).join(",")+","+a.map((function(e){return"this.stride["+e+"]"})).join(",")+",this.offset)}");var p=a.map((function(e){return"a"+e+"=this.shape["+e+"]"})),u=a.map((function(e){return"c"+e+"=this.stride["+e+"]"}));s.push("proto.lo=function "+t+"_lo("+o.join(",")+"){var b=this.offset,d=0,"+p.join(",")+","+u.join(","));for(var d=0;d<n;++d)s.push("if(typeof i"+d+"==='number'&&i"+d+">=0){d=i"+d+"|0;b+=c"+d+"*d;a"+d+"-=d}");s.push("return new "+t+"(this.data,"+a.map((function(e){return"a"+e})).join(",")+","+a.map((function(e){return"c"+e})).join(",")+",b)}"),s.push("proto.step=function "+t+"_step("+o.join(",")+"){var "+a.map((function(e){return"a"+e+"=this.shape["+e+"]"})).join(",")+","+a.map((function(e){return"b"+e+"=this.stride["+e+"]"})).join(",")+",c=this.offset,d=0,ceil=Math.ceil");for(d=0;d<n;++d)s.push("if(typeof i"+d+"==='number'){d=i"+d+"|0;if(d<0){c+=b"+d+"*(a"+d+"-1);a"+d+"=ceil(-a"+d+"/d)}else{a"+d+"=ceil(a"+d+"/d)}b"+d+"*=d}");s.push("return new "+t+"(this.data,"+a.map((function(e){return"a"+e})).join(",")+","+a.map((function(e){return"b"+e})).join(",")+",c)}");var m=new Array(n),g=new Array(n);for(d=0;d<n;++d)m[d]="a[i"+d+"]",g[d]="b[i"+d+"]";s.push("proto.transpose=function "+t+"_transpose("+o+"){"+o.map((function(e,n){return e+"=("+e+"===undefined?"+n+":"+e+"|0)"})).join(";"),"var a=this.shape,b=this.stride;return new "+t+"(this.data,"+m.join(",")+","+g.join(",")+",this.offset)}"),s.push("proto.pick=function "+t+"_pick("+o+"){var a=[],b=[],c=this.offset");for(d=0;d<n;++d)s.push("if(typeof i"+d+"==='number'&&i"+d+">=0){c=(c+this.stride["+d+"]*i"+d+")|0}else{a.push(this.shape["+d+"]);b.push(this.stride["+d+"])}");return s.push("var ctor=CTOR_LIST[a.length+1];return ctor(this.data,a,b,c)}"),s.push("return function construct_"+t+"(data,shape,stride,offset){return new "+t+"(data,"+a.map((function(e){return"shape["+e+"]"})).join(",")+","+a.map((function(e){return"stride["+e+"]"})).join(",")+",offset)}"),new Function("CTOR_LIST","ORDER",s.join("\n"))(yc[e],xc)}var yc={float32:[],float64:[],int8:[],int16:[],int32:[],uint8:[],uint16:[],uint32:[],array:[],uint8_clamped:[],bigint64:[],biguint64:[],buffer:[],generic:[]};var wc=t((function(e,n,t,i){if(void 0===e)return(0,yc.array[0])([]);"number"==typeof e&&(e=[e]),void 0===n&&(n=[e.length]);var s=n.length;if(void 0===t){t=new Array(s);for(var a=s-1,o=1;a>=0;--a)t[a]=o,o*=n[a]}if(void 0===i){i=0;for(a=0;a<s;++a)t[a]<0&&(i-=(n[a]-1)*t[a])}for(var r=function(e){if(vc(e))return"buffer";if(hc)switch(Object.prototype.toString.call(e)){case"[object Float64Array]":return"float64";case"[object Float32Array]":return"float32";case"[object Int8Array]":return"int8";case"[object Int16Array]":return"int16";case"[object Int32Array]":return"int32";case"[object Uint8Array]":return"uint8";case"[object Uint16Array]":return"uint16";case"[object Uint32Array]":return"uint32";case"[object Uint8ClampedArray]":return"uint8_clamped";case"[object BigInt64Array]":return"bigint64";case"[object BigUint64Array]":return"biguint64"}return Array.isArray(e)?"array":"generic"}(e),c=yc[r];c.length<=s+1;)c.push(bc(r,c.length-1));return(0,c[s+1])(e,n,t,i)})),kc={};var Sc=function(e,n,t){return 0===e.length?e:n?(t||e.sort(n),function(e,n){for(var t=1,i=e.length,s=e[0],a=e[0],o=1;o<i;++o)if(a=s,n(s=e[o],a)){if(o===t){t++;continue}e[t++]=s}return e.length=t,e}(e,n)):(t||e.sort(),function(e){for(var n=1,t=e.length,i=e[0],s=e[0],a=1;a<t;++a,s=i)if(s=i,(i=e[a])!==s){if(a===n){n++;continue}e[n++]=i}return e.length=n,e}(e))};function jc(e,n,t){var i,s,a=e.length,o=n.arrayArgs.length,r=n.indexArgs.length>0,c=[],l=[],p=0,u=0;for(i=0;i<a;++i)l.push(["i",i,"=0"].join(""));for(s=0;s<o;++s)for(i=0;i<a;++i)u=p,p=e[i],0===i?l.push(["d",s,"s",i,"=t",s,"p",p].join("")):l.push(["d",s,"s",i,"=(t",s,"p",p,"-s",u,"*t",s,"p",u,")"].join(""));for(l.length>0&&c.push("var "+l.join(",")),i=a-1;i>=0;--i)p=e[i],c.push(["for(i",i,"=0;i",i,"<s",p,";++i",i,"){"].join(""));for(c.push(t),i=0;i<a;++i){for(u=p,p=e[i],s=0;s<o;++s)c.push(["p",s,"+=d",s,"s",i].join(""));r&&(i>0&&c.push(["index[",u,"]-=s",u].join("")),c.push(["++index[",p,"]"].join(""))),c.push("}")}return c.join("\n")}function _c(e,n,t){for(var i=e.body,s=[],a=[],o=0;o<e.args.length;++o){var r=e.args[o];if(!(r.count<=0)){var c=new RegExp(r.name,"g"),l="",p=n.arrayArgs.indexOf(o);switch(n.argTypes[o]){case"offset":var u=n.offsetArgIndex.indexOf(o);p=n.offsetArgs[u].array,l="+q"+u;case"array":l="p"+p+l;var d="l"+o,m="a"+p;if(0===n.arrayBlockIndices[p])1===r.count?"generic"===t[p]?r.lvalue?(s.push(["var ",d,"=",m,".get(",l,")"].join("")),i=i.replace(c,d),a.push([m,".set(",l,",",d,")"].join(""))):i=i.replace(c,[m,".get(",l,")"].join("")):i=i.replace(c,[m,"[",l,"]"].join("")):"generic"===t[p]?(s.push(["var ",d,"=",m,".get(",l,")"].join("")),i=i.replace(c,d),r.lvalue&&a.push([m,".set(",l,",",d,")"].join(""))):(s.push(["var ",d,"=",m,"[",l,"]"].join("")),i=i.replace(c,d),r.lvalue&&a.push([m,"[",l,"]=",d].join("")));else{for(var g=[r.name],v=[l],h=0;h<Math.abs(n.arrayBlockIndices[p]);h++)g.push("\\s*\\[([^\\]]+)\\]"),v.push("$"+(h+1)+"*t"+p+"b"+h);if(c=new RegExp(g.join(""),"g"),l=v.join("+"),"generic"===t[p])throw new Error("cwise: Generic arrays not supported in combination with blocks!");i=i.replace(c,[m,"[",l,"]"].join(""))}break;case"scalar":i=i.replace(c,"Y"+n.scalarArgs.indexOf(o));break;case"index":i=i.replace(c,"index");break;case"shape":i=i.replace(c,"shape")}}}return[s.join("\n"),i,a.join("\n")].join("\n").trim()}function Cc(e){for(var n=new Array(e.length),t=!0,i=0;i<e.length;++i){var s=e[i],a=s.match(/\d+/);a=a?a[0]:"",0===s.charAt(0)?n[i]="u"+s.charAt(1)+a:n[i]=s.charAt(0)+a,i>0&&(t=t&&n[i]===n[i-1])}return t?n[0]:n.join("")}var Ac=function(e,n){for(var t=n[1].length-Math.abs(e.arrayBlockIndices[0])|0,i=new Array(e.arrayArgs.length),s=new Array(e.arrayArgs.length),a=0;a<e.arrayArgs.length;++a)s[a]=n[2*a],i[a]=n[2*a+1];var o=[],r=[],c=[],l=[],p=[];for(a=0;a<e.arrayArgs.length;++a){e.arrayBlockIndices[a]<0?(c.push(0),l.push(t),o.push(t),r.push(t+e.arrayBlockIndices[a])):(c.push(e.arrayBlockIndices[a]),l.push(e.arrayBlockIndices[a]+t),o.push(0),r.push(e.arrayBlockIndices[a]));for(var u=[],d=0;d<i[a].length;d++)c[a]<=i[a][d]&&i[a][d]<l[a]&&u.push(i[a][d]-c[a]);p.push(u)}var m=["SS"],g=["'use strict'"],v=[];for(d=0;d<t;++d)v.push(["s",d,"=SS[",d,"]"].join(""));for(a=0;a<e.arrayArgs.length;++a){m.push("a"+a),m.push("t"+a),m.push("p"+a);for(d=0;d<t;++d)v.push(["t",a,"p",d,"=t",a,"[",c[a]+d,"]"].join(""));for(d=0;d<Math.abs(e.arrayBlockIndices[a]);++d)v.push(["t",a,"b",d,"=t",a,"[",o[a]+d,"]"].join(""))}for(a=0;a<e.scalarArgs.length;++a)m.push("Y"+a);if(e.shapeArgs.length>0&&v.push("shape=SS.slice(0)"),e.indexArgs.length>0){var h=new Array(t);for(a=0;a<t;++a)h[a]="0";v.push(["index=[",h.join(","),"]"].join(""))}for(a=0;a<e.offsetArgs.length;++a){var f=e.offsetArgs[a],x=[];for(d=0;d<f.offset.length;++d)0!==f.offset[d]&&(1===f.offset[d]?x.push(["t",f.array,"p",d].join("")):x.push([f.offset[d],"*t",f.array,"p",d].join("")));0===x.length?v.push("q"+a+"=0"):v.push(["q",a,"=",x.join("+")].join(""))}var b=Sc([].concat(e.pre.thisVars).concat(e.body.thisVars).concat(e.post.thisVars));for((v=v.concat(b)).length>0&&g.push("var "+v.join(",")),a=0;a<e.arrayArgs.length;++a)g.push("p"+a+"|=0");e.pre.body.length>3&&g.push(_c(e.pre,e,s));var y=_c(e.body,e,s),w=function(e){for(var n=0,t=e[0].length;n<t;){for(var i=1;i<e.length;++i)if(e[i][n]!==e[0][n])return n;++n}return n}(p);w<t?g.push(function(e,n,t,i){for(var s=n.length,a=t.arrayArgs.length,o=t.blockSize,r=t.indexArgs.length>0,c=[],l=0;l<a;++l)c.push(["var offset",l,"=p",l].join(""));for(l=e;l<s;++l)c.push(["for(var j"+l+"=SS[",n[l],"]|0;j",l,">0;){"].join("")),c.push(["if(j",l,"<",o,"){"].join("")),c.push(["s",n[l],"=j",l].join("")),c.push(["j",l,"=0"].join("")),c.push(["}else{s",n[l],"=",o].join("")),c.push(["j",l,"-=",o,"}"].join("")),r&&c.push(["index[",n[l],"]=j",l].join(""));for(l=0;l<a;++l){for(var p=["offset"+l],u=e;u<s;++u)p.push(["j",u,"*t",l,"p",n[u]].join(""));c.push(["p",l,"=(",p.join("+"),")"].join(""))}for(c.push(jc(n,t,i)),l=e;l<s;++l)c.push("}");return c.join("\n")}(w,p[0],e,y)):g.push(jc(p[0],e,y)),e.post.body.length>3&&g.push(_c(e.post,e,s)),e.debug&&console.log("-----Generated cwise routine for ",n,":\n"+g.join("\n")+"\n----------");var k=[e.funcName||"unnamed","_cwise_loop_",i[0].join("s"),"m",w,Cc(s)].join("");return new Function(["function ",k,"(",m.join(","),"){",g.join("\n"),"} return ",k].join(""))()},Ec=Ac;var Rc=function(e){var n=["'use strict'","var CACHED={}"],t=[],i=e.funcName+"_cwise_thunk";n.push(["return function ",i,"(",e.shimArgs.join(","),"){"].join(""));for(var s=[],a=[],o=[["array",e.arrayArgs[0],".shape.slice(",Math.max(0,e.arrayBlockIndices[0]),e.arrayBlockIndices[0]<0?","+e.arrayBlockIndices[0]+")":")"].join("")],r=[],c=[],l=0;l<e.arrayArgs.length;++l){var p=e.arrayArgs[l];t.push(["t",p,"=array",p,".dtype,","r",p,"=array",p,".order"].join("")),s.push("t"+p),s.push("r"+p),a.push("t"+p),a.push("r"+p+".join()"),o.push("array"+p+".data"),o.push("array"+p+".stride"),o.push("array"+p+".offset|0"),l>0&&(r.push("array"+e.arrayArgs[0]+".shape.length===array"+p+".shape.length+"+(Math.abs(e.arrayBlockIndices[0])-Math.abs(e.arrayBlockIndices[l]))),c.push("array"+e.arrayArgs[0]+".shape[shapeIndex+"+Math.max(0,e.arrayBlockIndices[0])+"]===array"+p+".shape[shapeIndex+"+Math.max(0,e.arrayBlockIndices[l])+"]"))}for(e.arrayArgs.length>1&&(n.push("if (!("+r.join(" && ")+")) throw new Error('cwise: Arrays do not all have the same dimensionality!')"),n.push("for(var shapeIndex=array"+e.arrayArgs[0]+".shape.length-"+Math.abs(e.arrayBlockIndices[0])+"; shapeIndex--\x3e0;) {"),n.push("if (!("+c.join(" && ")+")) throw new Error('cwise: Arrays do not all have the same shape!')"),n.push("}")),l=0;l<e.scalarArgs.length;++l)o.push("scalar"+e.scalarArgs[l]);return t.push(["type=[",a.join(","),"].join()"].join("")),t.push("proc=CACHED[type]"),n.push("var "+t.join(",")),n.push(["if(!proc){","CACHED[type]=proc=compile([",s.join(","),"])}","return proc(",o.join(","),")}"].join("")),e.debug&&console.log("-----Generated thunk:\n"+n.join("\n")+"\n----------"),new Function("compile",n.join("\n"))(Ec.bind(void 0,e))};function Lc(){this.argTypes=[],this.shimArgs=[],this.arrayArgs=[],this.arrayBlockIndices=[],this.scalarArgs=[],this.offsetArgs=[],this.offsetArgIndex=[],this.indexArgs=[],this.shapeArgs=[],this.funcName="",this.pre=null,this.body=null,this.post=null,this.debug=!1}var Mc=function(e){var n=new Lc;n.pre=e.pre,n.body=e.body,n.post=e.post;var t=e.args.slice(0);n.argTypes=t;for(var i=0;i<t.length;++i){var s=t[i];if("array"===s||"object"==typeof s&&s.blockIndices){if(n.argTypes[i]="array",n.arrayArgs.push(i),n.arrayBlockIndices.push(s.blockIndices?s.blockIndices:0),n.shimArgs.push("array"+i),i<n.pre.args.length&&n.pre.args[i].count>0)throw new Error("cwise: pre() block may not reference array args");if(i<n.post.args.length&&n.post.args[i].count>0)throw new Error("cwise: post() block may not reference array args")}else if("scalar"===s)n.scalarArgs.push(i),n.shimArgs.push("scalar"+i);else if("index"===s){if(n.indexArgs.push(i),i<n.pre.args.length&&n.pre.args[i].count>0)throw new Error("cwise: pre() block may not reference array index");if(i<n.body.args.length&&n.body.args[i].lvalue)throw new Error("cwise: body() block may not write to array index");if(i<n.post.args.length&&n.post.args[i].count>0)throw new Error("cwise: post() block may not reference array index")}else if("shape"===s){if(n.shapeArgs.push(i),i<n.pre.args.length&&n.pre.args[i].lvalue)throw new Error("cwise: pre() block may not write to array shape");if(i<n.body.args.length&&n.body.args[i].lvalue)throw new Error("cwise: body() block may not write to array shape");if(i<n.post.args.length&&n.post.args[i].lvalue)throw new Error("cwise: post() block may not write to array shape")}else{if("object"!=typeof s||!s.offset)throw new Error("cwise: Unknown argument type "+t[i]);n.argTypes[i]="offset",n.offsetArgs.push({array:s.array,offset:s.offset}),n.offsetArgIndex.push(i)}}if(n.arrayArgs.length<=0)throw new Error("cwise: No array arguments specified");if(n.pre.args.length>t.length)throw new Error("cwise: Too many arguments in pre() block");if(n.body.args.length>t.length)throw new Error("cwise: Too many arguments in body() block");if(n.post.args.length>t.length)throw new Error("cwise: Too many arguments in post() block");return n.debug=!!e.printCode||!!e.debug,n.funcName=e.funcName||"cwise",n.blockSize=e.blockSize||64,Rc(n)};!function(e){var n=Mc,t={body:"",args:[],thisVars:[],localVars:[]};function i(e){if(!e)return t;for(var n=0;n<e.args.length;++n){var i=e.args[n];e.args[n]=0===n?{name:i,lvalue:!0,rvalue:!!e.rvalue,count:e.count||1}:{name:i,lvalue:!1,rvalue:!0,count:1}}return e.thisVars||(e.thisVars=[]),e.localVars||(e.localVars=[]),e}function s(e){for(var t=[],s=0;s<e.args.length;++s)t.push("a"+s);return new Function("P",["return function ",e.funcName,"_ndarrayops(",t.join(","),") {P(",t.join(","),");return a0}"].join(""))(function(e){return n({args:e.args,pre:i(e.pre),body:i(e.body),post:i(e.proc),funcName:e.funcName})}(e))}var a={add:"+",sub:"-",mul:"*",div:"/",mod:"%",band:"&",bor:"|",bxor:"^",lshift:"<<",rshift:">>",rrshift:">>>"};!function(){for(var n in a){var t=a[n];e[n]=s({args:["array","array","array"],body:{args:["a","b","c"],body:"a=b"+t+"c"},funcName:n}),e[n+"eq"]=s({args:["array","array"],body:{args:["a","b"],body:"a"+t+"=b"},rvalue:!0,funcName:n+"eq"}),e[n+"s"]=s({args:["array","array","scalar"],body:{args:["a","b","s"],body:"a=b"+t+"s"},funcName:n+"s"}),e[n+"seq"]=s({args:["array","scalar"],body:{args:["a","s"],body:"a"+t+"=s"},rvalue:!0,funcName:n+"seq"})}}();var o={not:"!",bnot:"~",neg:"-",recip:"1.0/"};!function(){for(var n in o){var t=o[n];e[n]=s({args:["array","array"],body:{args:["a","b"],body:"a="+t+"b"},funcName:n}),e[n+"eq"]=s({args:["array"],body:{args:["a"],body:"a="+t+"a"},rvalue:!0,count:2,funcName:n+"eq"})}}();var r={and:"&&",or:"||",eq:"===",neq:"!==",lt:"<",gt:">",leq:"<=",geq:">="};!function(){for(var n in r){var t=r[n];e[n]=s({args:["array","array","array"],body:{args:["a","b","c"],body:"a=b"+t+"c"},funcName:n}),e[n+"s"]=s({args:["array","array","scalar"],body:{args:["a","b","s"],body:"a=b"+t+"s"},funcName:n+"s"}),e[n+"eq"]=s({args:["array","array"],body:{args:["a","b"],body:"a=a"+t+"b"},rvalue:!0,count:2,funcName:n+"eq"}),e[n+"seq"]=s({args:["array","scalar"],body:{args:["a","s"],body:"a=a"+t+"s"},rvalue:!0,count:2,funcName:n+"seq"})}}();var c=["abs","acos","asin","atan","ceil","cos","exp","floor","log","round","sin","sqrt","tan"];!function(){for(var n=0;n<c.length;++n){var t=c[n];e[t]=s({args:["array","array"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a","b"],body:"a=this_f(b)",thisVars:["this_f"]},funcName:t}),e[t+"eq"]=s({args:["array"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a"],body:"a=this_f(a)",thisVars:["this_f"]},rvalue:!0,count:2,funcName:t+"eq"})}}();var l=["max","min","atan2","pow"];!function(){for(var n=0;n<l.length;++n){var t=l[n];e[t]=s({args:["array","array","array"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a","b","c"],body:"a=this_f(b,c)",thisVars:["this_f"]},funcName:t}),e[t+"s"]=s({args:["array","array","scalar"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a","b","c"],body:"a=this_f(b,c)",thisVars:["this_f"]},funcName:t+"s"}),e[t+"eq"]=s({args:["array","array"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a","b"],body:"a=this_f(a,b)",thisVars:["this_f"]},rvalue:!0,count:2,funcName:t+"eq"}),e[t+"seq"]=s({args:["array","scalar"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a","b"],body:"a=this_f(a,b)",thisVars:["this_f"]},rvalue:!0,count:2,funcName:t+"seq"})}}();var p=["atan2","pow"];!function(){for(var n=0;n<p.length;++n){var t=p[n];e[t+"op"]=s({args:["array","array","array"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a","b","c"],body:"a=this_f(c,b)",thisVars:["this_f"]},funcName:t+"op"}),e[t+"ops"]=s({args:["array","array","scalar"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a","b","c"],body:"a=this_f(c,b)",thisVars:["this_f"]},funcName:t+"ops"}),e[t+"opeq"]=s({args:["array","array"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a","b"],body:"a=this_f(b,a)",thisVars:["this_f"]},rvalue:!0,count:2,funcName:t+"opeq"}),e[t+"opseq"]=s({args:["array","scalar"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a","b"],body:"a=this_f(b,a)",thisVars:["this_f"]},rvalue:!0,count:2,funcName:t+"opseq"})}}(),e.any=n({args:["array"],pre:t,body:{args:[{name:"a",lvalue:!1,rvalue:!0,count:1}],body:"if(a){return true}",localVars:[],thisVars:[]},post:{args:[],localVars:[],thisVars:[],body:"return false"},funcName:"any"}),e.all=n({args:["array"],pre:t,body:{args:[{name:"x",lvalue:!1,rvalue:!0,count:1}],body:"if(!x){return false}",localVars:[],thisVars:[]},post:{args:[],localVars:[],thisVars:[],body:"return true"},funcName:"all"}),e.sum=n({args:["array"],pre:{args:[],localVars:[],thisVars:["this_s"],body:"this_s=0"},body:{args:[{name:"a",lvalue:!1,rvalue:!0,count:1}],body:"this_s+=a",localVars:[],thisVars:["this_s"]},post:{args:[],localVars:[],thisVars:["this_s"],body:"return this_s"},funcName:"sum"}),e.prod=n({args:["array"],pre:{args:[],localVars:[],thisVars:["this_s"],body:"this_s=1"},body:{args:[{name:"a",lvalue:!1,rvalue:!0,count:1}],body:"this_s*=a",localVars:[],thisVars:["this_s"]},post:{args:[],localVars:[],thisVars:["this_s"],body:"return this_s"},funcName:"prod"}),e.norm2squared=n({args:["array"],pre:{args:[],localVars:[],thisVars:["this_s"],body:"this_s=0"},body:{args:[{name:"a",lvalue:!1,rvalue:!0,count:2}],body:"this_s+=a*a",localVars:[],thisVars:["this_s"]},post:{args:[],localVars:[],thisVars:["this_s"],body:"return this_s"},funcName:"norm2squared"}),e.norm2=n({args:["array"],pre:{args:[],localVars:[],thisVars:["this_s"],body:"this_s=0"},body:{args:[{name:"a",lvalue:!1,rvalue:!0,count:2}],body:"this_s+=a*a",localVars:[],thisVars:["this_s"]},post:{args:[],localVars:[],thisVars:["this_s"],body:"return Math.sqrt(this_s)"},funcName:"norm2"}),e.norminf=n({args:["array"],pre:{args:[],localVars:[],thisVars:["this_s"],body:"this_s=0"},body:{args:[{name:"a",lvalue:!1,rvalue:!0,count:4}],body:"if(-a>this_s){this_s=-a}else if(a>this_s){this_s=a}",localVars:[],thisVars:["this_s"]},post:{args:[],localVars:[],thisVars:["this_s"],body:"return this_s"},funcName:"norminf"}),e.norm1=n({args:["array"],pre:{args:[],localVars:[],thisVars:["this_s"],body:"this_s=0"},body:{args:[{name:"a",lvalue:!1,rvalue:!0,count:3}],body:"this_s+=a<0?-a:a",localVars:[],thisVars:["this_s"]},post:{args:[],localVars:[],thisVars:["this_s"],body:"return this_s"},funcName:"norm1"}),e.sup=n({args:["array"],pre:{body:"this_h=-Infinity",args:[],thisVars:["this_h"],localVars:[]},body:{body:"if(_inline_1_arg0_>this_h)this_h=_inline_1_arg0_",args:[{name:"_inline_1_arg0_",lvalue:!1,rvalue:!0,count:2}],thisVars:["this_h"],localVars:[]},post:{body:"return this_h",args:[],thisVars:["this_h"],localVars:[]}}),e.inf=n({args:["array"],pre:{body:"this_h=Infinity",args:[],thisVars:["this_h"],localVars:[]},body:{body:"if(_inline_1_arg0_<this_h)this_h=_inline_1_arg0_",args:[{name:"_inline_1_arg0_",lvalue:!1,rvalue:!0,count:2}],thisVars:["this_h"],localVars:[]},post:{body:"return this_h",args:[],thisVars:["this_h"],localVars:[]}}),e.argmin=n({args:["index","array","shape"],pre:{body:"{this_v=Infinity;this_i=_inline_0_arg2_.slice(0)}",args:[{name:"_inline_0_arg0_",lvalue:!1,rvalue:!1,count:0},{name:"_inline_0_arg1_",lvalue:!1,rvalue:!1,count:0},{name:"_inline_0_arg2_",lvalue:!1,rvalue:!0,count:1}],thisVars:["this_i","this_v"],localVars:[]},body:{body:"{if(_inline_1_arg1_<this_v){this_v=_inline_1_arg1_;for(var _inline_1_k=0;_inline_1_k<_inline_1_arg0_.length;++_inline_1_k){this_i[_inline_1_k]=_inline_1_arg0_[_inline_1_k]}}}",args:[{name:"_inline_1_arg0_",lvalue:!1,rvalue:!0,count:2},{name:"_inline_1_arg1_",lvalue:!1,rvalue:!0,count:2}],thisVars:["this_i","this_v"],localVars:["_inline_1_k"]},post:{body:"{return this_i}",args:[],thisVars:["this_i"],localVars:[]}}),e.argmax=n({args:["index","array","shape"],pre:{body:"{this_v=-Infinity;this_i=_inline_0_arg2_.slice(0)}",args:[{name:"_inline_0_arg0_",lvalue:!1,rvalue:!1,count:0},{name:"_inline_0_arg1_",lvalue:!1,rvalue:!1,count:0},{name:"_inline_0_arg2_",lvalue:!1,rvalue:!0,count:1}],thisVars:["this_i","this_v"],localVars:[]},body:{body:"{if(_inline_1_arg1_>this_v){this_v=_inline_1_arg1_;for(var _inline_1_k=0;_inline_1_k<_inline_1_arg0_.length;++_inline_1_k){this_i[_inline_1_k]=_inline_1_arg0_[_inline_1_k]}}}",args:[{name:"_inline_1_arg0_",lvalue:!1,rvalue:!0,count:2},{name:"_inline_1_arg1_",lvalue:!1,rvalue:!0,count:2}],thisVars:["this_i","this_v"],localVars:["_inline_1_k"]},post:{body:"{return this_i}",args:[],thisVars:["this_i"],localVars:[]}}),e.random=s({args:["array"],pre:{args:[],body:"this_f=Math.random",thisVars:["this_f"]},body:{args:["a"],body:"a=this_f()",thisVars:["this_f"]},funcName:"random"}),e.assign=s({args:["array","array"],body:{args:["a","b"],body:"a=b"},funcName:"assign"}),e.assigns=s({args:["array","scalar"],body:{args:["a","b"],body:"a=b"},funcName:"assigns"}),e.equals=n({args:["array","array"],pre:t,body:{args:[{name:"x",lvalue:!1,rvalue:!0,count:1},{name:"y",lvalue:!1,rvalue:!0,count:1}],body:"if(x!==y){return false}",localVars:[],thisVars:[]},post:{args:[],localVars:[],thisVars:[],body:"return true"},funcName:"equals"})}(kc);var Ic=t(kc),Dc=[[474,475],[475,476],[476,477],[477,474]],Tc=[[469,470],[470,471],[471,472],[472,469]],Oc=[[10,338],[338,297],[297,332],[332,284],[284,251],[251,389],[389,356],[356,454],[454,323],[323,361],[361,288],[288,397],[397,365],[365,379],[379,378],[378,400],[400,377],[377,152],[152,148],[148,176],[176,149],[149,150],[150,136],[136,172],[172,58],[58,132],[132,93],[93,234],[234,127],[127,162],[162,21],[21,54],[54,103],[103,67],[67,109],[109,10]];function Pc(e,n,t,i){e.forEach((e=>{const s=n[e[0]].x*t;i(s)}))}function Fc(e,n,t){n.forEach((n=>{const i=e[n];t.push([i.x,i.y])}))}function Nc(e,n,t,i,s){return Math.min(e,n)*s*(t/i)/10}function qc(e){let n=1/0,t=-1/0,i=1/0,s=-1/0;e.forEach((e=>{n=Math.min(n,e[0]),t=Math.max(t,e[0]),i=Math.min(i,e[1]),s=Math.max(s,e[1])}));return{headWidth:t-n,headHeight:s-i,headCenterX:(n+t)/2,headCenterY:(i+s)/2}}function zc(e){let n=0;for(let t=0;t<e.length;t++){const i=(t+1)%e.length;n+=e[t][0]*e[i][1],n-=e[i][0]*e[t][1]}return Math.abs(n/2)}var Vc=Object.freeze({__proto__:null,FACEMESH_FACE_OVAL:Oc,FACEMESH_LEFT_IRIS:Dc,FACEMESH_RIGHT_IRIS:Tc,calculateHeadMetrics:qc,convertToYolo:function(e,n,t){let i=(e[0][0]+e[2][0])/2,s=(e[1][1]+e[3][1])/2,a=e[2][0]-e[0][0],o=e[3][1]-e[1][1],r=[i,s,a,o];return a=r[2]*n,o=r[3]*t,[(r[0]-r[2]/2)*n,(r[1]-r[3]/2)*t,a,o]},defaultDeviceConfig:{screenWidth:30.2,screenHeight:19.6,screenWidthPX:1512,screenHeightPX:892,webcamHeight:2,normalizedFocalLength:1.3},defaultParticipantConfig:{headCenterX:.4383369982242584,headCenterY:.6562557443976402,headHeight:.3467509150505066,headWidth:.17240141332149506,widthLeftIris:29.442644119262695,widthRightIris:29.782133102416992,canvasContour:[[.4412970542907715,.4813721179962158],[.4646510183811188,.4823227524757385],[.48430705070495605,.48748111724853516],[.5025681853294373,.4987863302230835],[.5136374235153198,.5169670581817627],[.5202310681343079,.5401103496551514],[.5239146947860718,.5652479529380798],[.5248485207557678,.5970170497894287],[.5236638784408569,.6280523538589478],[.5220870971679688,.6599369645118713],[.519332766532898,.6945410370826721],[.5138625502586365,.7309722304344177],[.5065117478370667,.7603253722190857],[.4982540011405945,.7814207673072815],[.48702606558799744,.7993608713150024],[.4769010543823242,.8114907741546631],[.46630799770355225,.8215509057044983],[.4544796049594879,.8288376331329346],[.4395001232624054,.8312488794326782],[.42436403036117554,.8285082578659058],[.41225385665893555,.8210300207138062],[.40132373571395874,.8104891777038574],[.3908883333206177,.7982432246208191],[.3792901039123535,.7797933220863342],[.3707539737224579,.7583227753639221],[.36319053173065186,.728979766368866],[.35756009817123413,.6924722790718079],[.35495781898498535,.6577485203742981],[.35378265380859375,.6259740591049194],[.35298871994018555,.594894528388977],[.35470905900001526,.5631847381591797],[.3590857684612274,.5380555391311646],[.3667783737182617,.5149739384651184],[.37868133187294006,.4971347451210022],[.3973395824432373,.4863966703414917],[.41754668951034546,.4818713068962097]]},initEyeTracking:function(e=!1,n=!1){blueCircle=window.document.createElement("div"),blueCircle.setAttribute("id","blueCircle"),blueCircle.style.position="absolute",blueCircle.style.width="20px",blueCircle.style.height="20px",blueCircle.style.backgroundColor="blue",blueCircle.style.borderRadius="50%",blueCircle.style.transform="translate(-50%, -50%)",blueCircle.style.display="none",document.body.appendChild(blueCircle);const t=document.createElement("canvas");t.setAttribute("id","leftEye"),t.setAttribute("width","128"),t.setAttribute("height","128"),t.style.position="absolute",t.style.top="0",t.style.left="0",t.style.display="none",document.body.appendChild(t);const i=document.createElement("canvas");i.setAttribute("id","rightEye"),i.setAttribute("width","128"),i.setAttribute("height","128"),i.style.position="absolute",i.style.top="0",i.style.left="128px",i.style.display="none",document.body.appendChild(i),e&&(t.style.display="block",i.style.display="block"),n&&(blueCircle.style.display="block"),leftEyectx=t.getContext("2d",{willReadFrequently:!0}),rightEyectx=i.getContext("2d",{willReadFrequently:!0})},isAreaWithinRange:function(e,n){const t=zc(e),i=zc(n);return i>=.82*t&&i<=1.17*t},isCentroidInsidePath:function(e,n){return function(e,n){let t=!1;const i=e[0],s=e[1];for(let e=0,a=n.length-1;e<n.length;a=e++){const o=n[e][0],r=n[e][1],c=n[a][0],l=n[a][1];r>s!=l>s&&i<(c-o)*(s-r)/(l-r)+o&&(t=!t)}return t}(function(e){let n=0,t=0;for(let i=0;i<e.length;i++)n+=e[i][0],t+=e[i][1];return[n/e.length,t/e.length]}(n),e)},onResultsFaceMesh:function(e){const n=e.image.width,t=e.image.height,i=[],s=[],a=[];let o=1/0,r=-1/0,c=1/0,l=-1/0;if(headCtx.save(),headCtx.clearRect(0,0,headCanvas.width,headCanvas.height),e.multiFaceLandmarks&&e.multiFaceLandmarks.forEach((e=>{if(Pc(Dc,e,n,(e=>{o=Math.min(o,e),r=Math.max(r,e)})),Pc(Tc,e,n,(e=>{c=Math.min(c,e),l=Math.max(l,e)})),Fc(e,[130,27,243,23],i),Fc(e,[463,257,359,253],s),"undefined"!=typeof canvasContour&&canvasContour){var p=function(e,n,t,i,s,a,o){if(!e)return;const r=[],c=e.map((e=>[e[0]*t,e[1]*i]));return n.beginPath(),c.forEach((([e,t],i)=>{r.push([e,t]),n[0===i?"moveTo":"lineTo"](e,t)})),n.closePath(),n.strokeStyle=s,n.lineWidth=a,n.fillStyle=o,n.stroke(),r}(canvasContour,headCtx,n,t,"rgba(13, 110, 253, 1.0)",3,"transparent");fixedContour=p}var u=function(e,n,t,i,s,a){const o=e.map((e=>{const t=n[e[0]];return a.push([t.x,t.y]),[t.x*i,t.y*s]})),r=[];return t.beginPath(),o.forEach((([e,n],i)=>{r.push([e,n]),t[0===i?"moveTo":"lineTo"](e,n)})),t.closePath(),t.fillStyle="rgba(13, 110, 253, 1.0)",t.fill(),r}(Oc,e,headCtx,n,t,a);movingContour=u})),headCtx.restore(),normalizedFocalLength>0){const e=((Nc(n,t,11.7,r-o,normalizedFocalLength)+Nc(n,t,11.7,l-c,normalizedFocalLength))/2).toFixed(0);current_viewingDistance=e}focalLengthMultiple=Math.min(n,t),irisMetrics={widthLeftIris:r-o,widthRightIris:l-c},headMetrics=qc(a),leftEyeCoordinates=i,rightEyeCoordinates=s,headCoordinates=a},preprocess:function(e,n,t){const i=wc(new Float32Array(e),[n,t,4]),s=wc(new Float32Array(n*t*3),[1,3,t,n]);return Ic.divseq(i,255),Ic.assign(s.pick(0,0,null,null),i.pick(null,null,2)),Ic.assign(s.pick(0,1,null,null),i.pick(null,null,1)),Ic.assign(s.pick(0,2,null,null),i.pick(null,null,0)),new Float32Array(s.data)},preprocess_kps:function(e,n,t){const i=wc(new Float32Array(e),[e.length]),s=wc(new Float32Array(e.length),[1,e.length]);return Ic.assign(s.pick(0,null),i),new Float32Array(s.data)}}),Bc={};const Uc=Object.prototype.toString;function Hc(e){const n=Uc.call(e);return n.endsWith("Array]")&&!n.includes("Big")}var Wc=i(Object.freeze({__proto__:null,isAnyArray:Hc}));var $c=i(Object.freeze({__proto__:null,default:function(e){var n,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!Hc(e))throw new TypeError("input must be an array");if(0===e.length)throw new TypeError("input must not be empty");if(void 0!==t.output){if(!Hc(t.output))throw new TypeError("output option must be an array if specified");n=t.output}else n=new Array(e.length);var i=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!Hc(e))throw new TypeError("input must be an array");if(0===e.length)throw new TypeError("input must not be empty");var t=n.fromIndex,i=void 0===t?0:t,s=n.toIndex,a=void 0===s?e.length:s;if(i<0||i>=e.length||!Number.isInteger(i))throw new Error("fromIndex must be a positive integer smaller than length");if(a<=i||a>e.length||!Number.isInteger(a))throw new Error("toIndex must be an integer greater than fromIndex and at most equal to length");for(var o=e[i],r=i+1;r<a;r++)e[r]<o&&(o=e[r]);return o}(e),s=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!Hc(e))throw new TypeError("input must be an array");if(0===e.length)throw new TypeError("input must not be empty");var t=n.fromIndex,i=void 0===t?0:t,s=n.toIndex,a=void 0===s?e.length:s;if(i<0||i>=e.length||!Number.isInteger(i))throw new Error("fromIndex must be a positive integer smaller than length");if(a<=i||a>e.length||!Number.isInteger(a))throw new Error("toIndex must be an integer greater than fromIndex and at most equal to length");for(var o=e[i],r=i+1;r<a;r++)e[r]>o&&(o=e[r]);return o}(e);if(i===s)throw new RangeError("minimum and maximum input values are equal. Cannot rescale a constant array");var a=t.min,o=void 0===a?t.autoMinMax?i:0:a,r=t.max,c=void 0===r?t.autoMinMax?s:1:r;if(o>=c)throw new RangeError("min option must be smaller than max option");for(var l=(c-o)/(s-i),p=0;p<e.length;p++)n[p]=(e[p]-i)*l+o;return n}}));Object.defineProperty(Bc,"__esModule",{value:!0});var Yc=Wc,Kc=$c;const Xc=" ".repeat(2),Gc=" ".repeat(4);function Jc(e,n={}){const{maxRows:t=15,maxColumns:i=10,maxNumSize:s=8,padMinus:a="auto"}=n;return`${e.constructor.name} {\n${Xc}[\n${Gc}${function(e,n,t,i,s){const{rows:a,columns:o}=e,r=Math.min(a,n),c=Math.min(o,t),l=[];if("auto"===s){s=!1;e:for(let n=0;n<r;n++)for(let t=0;t<c;t++)if(e.get(n,t)<0){s=!0;break e}}for(let n=0;n<r;n++){let t=[];for(let a=0;a<c;a++)t.push(Qc(e.get(n,a),i,s));l.push(`${t.join(" ")}`)}c!==o&&(l[l.length-1]+=` ... ${o-t} more columns`);r!==a&&l.push(`... ${a-n} more rows`);return l.join(`\n${Gc}`)}(e,t,i,s,a)}\n${Xc}]\n${Xc}rows: ${e.rows}\n${Xc}columns: ${e.columns}\n}`}function Qc(e,n,t){return(e>=0&&t?` ${Zc(e,n-1)}`:Zc(e,n)).padEnd(n)}function Zc(e,n){let t=e.toString();if(t.length<=n)return t;let i=e.toFixed(n);if(i.length>n&&(i=e.toFixed(Math.max(0,n-(i.length-n)))),i.length<=n&&!i.startsWith("0.000")&&!i.startsWith("-0.000"))return i;let s=e.toExponential(n);return s.length>n&&(s=e.toExponential(Math.max(0,n-(s.length-n)))),s.slice(0)}function el(e,n,t){let i=t?e.rows:e.rows-1;if(n<0||n>i)throw new RangeError("Row index out of range")}function nl(e,n,t){let i=t?e.columns:e.columns-1;if(n<0||n>i)throw new RangeError("Column index out of range")}function tl(e,n){if(n.to1DArray&&(n=n.to1DArray()),n.length!==e.columns)throw new RangeError("vector size must be the same as the number of columns");return n}function il(e,n){if(n.to1DArray&&(n=n.to1DArray()),n.length!==e.rows)throw new RangeError("vector size must be the same as the number of rows");return n}function sl(e,n){if(!Yc.isAnyArray(n))throw new TypeError("row indices must be an array");for(let t=0;t<n.length;t++)if(n[t]<0||n[t]>=e.rows)throw new RangeError("row indices are out of range")}function al(e,n){if(!Yc.isAnyArray(n))throw new TypeError("column indices must be an array");for(let t=0;t<n.length;t++)if(n[t]<0||n[t]>=e.columns)throw new RangeError("column indices are out of range")}function ol(e,n,t,i,s){if(5!==arguments.length)throw new RangeError("expected 4 arguments");if(cl("startRow",n),cl("endRow",t),cl("startColumn",i),cl("endColumn",s),n>t||i>s||n<0||n>=e.rows||t<0||t>=e.rows||i<0||i>=e.columns||s<0||s>=e.columns)throw new RangeError("Submatrix indices are out of range")}function rl(e,n=0){let t=[];for(let i=0;i<e;i++)t.push(n);return t}function cl(e,n){if("number"!=typeof n)throw new TypeError(`${e} must be a number`)}function ll(e){if(e.isEmpty())throw new Error("Empty matrix has no elements to index")}class pl{static from1DArray(e,n,t){if(e*n!==t.length)throw new RangeError("data length does not match given dimensions");let i=new dl(e,n);for(let s=0;s<e;s++)for(let e=0;e<n;e++)i.set(s,e,t[s*n+e]);return i}static rowVector(e){let n=new dl(1,e.length);for(let t=0;t<e.length;t++)n.set(0,t,e[t]);return n}static columnVector(e){let n=new dl(e.length,1);for(let t=0;t<e.length;t++)n.set(t,0,e[t]);return n}static zeros(e,n){return new dl(e,n)}static ones(e,n){return new dl(e,n).fill(1)}static rand(e,n,t={}){if("object"!=typeof t)throw new TypeError("options must be an object");const{random:i=Math.random}=t;let s=new dl(e,n);for(let t=0;t<e;t++)for(let e=0;e<n;e++)s.set(t,e,i());return s}static randInt(e,n,t={}){if("object"!=typeof t)throw new TypeError("options must be an object");const{min:i=0,max:s=1e3,random:a=Math.random}=t;if(!Number.isInteger(i))throw new TypeError("min must be an integer");if(!Number.isInteger(s))throw new TypeError("max must be an integer");if(i>=s)throw new RangeError("min must be smaller than max");let o=s-i,r=new dl(e,n);for(let t=0;t<e;t++)for(let e=0;e<n;e++){let n=i+Math.round(a()*o);r.set(t,e,n)}return r}static eye(e,n,t){void 0===n&&(n=e),void 0===t&&(t=1);let i=Math.min(e,n),s=this.zeros(e,n);for(let e=0;e<i;e++)s.set(e,e,t);return s}static diag(e,n,t){let i=e.length;void 0===n&&(n=i),void 0===t&&(t=n);let s=Math.min(i,n,t),a=this.zeros(n,t);for(let n=0;n<s;n++)a.set(n,n,e[n]);return a}static min(e,n){e=this.checkMatrix(e),n=this.checkMatrix(n);let t=e.rows,i=e.columns,s=new dl(t,i);for(let a=0;a<t;a++)for(let t=0;t<i;t++)s.set(a,t,Math.min(e.get(a,t),n.get(a,t)));return s}static max(e,n){e=this.checkMatrix(e),n=this.checkMatrix(n);let t=e.rows,i=e.columns,s=new this(t,i);for(let a=0;a<t;a++)for(let t=0;t<i;t++)s.set(a,t,Math.max(e.get(a,t),n.get(a,t)));return s}static checkMatrix(e){return pl.isMatrix(e)?e:new dl(e)}static isMatrix(e){return null!=e&&"Matrix"===e.klass}get size(){return this.rows*this.columns}apply(e){if("function"!=typeof e)throw new TypeError("callback must be a function");for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)e.call(this,n,t);return this}to1DArray(){let e=[];for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)e.push(this.get(n,t));return e}to2DArray(){let e=[];for(let n=0;n<this.rows;n++){e.push([]);for(let t=0;t<this.columns;t++)e[n].push(this.get(n,t))}return e}toJSON(){return this.to2DArray()}isRowVector(){return 1===this.rows}isColumnVector(){return 1===this.columns}isVector(){return 1===this.rows||1===this.columns}isSquare(){return this.rows===this.columns}isEmpty(){return 0===this.rows||0===this.columns}isSymmetric(){if(this.isSquare()){for(let e=0;e<this.rows;e++)for(let n=0;n<=e;n++)if(this.get(e,n)!==this.get(n,e))return!1;return!0}return!1}isDistance(){if(!this.isSymmetric())return!1;for(let e=0;e<this.rows;e++)if(0!==this.get(e,e))return!1;return!0}isEchelonForm(){let e=0,n=0,t=-1,i=!0,s=!1;for(;e<this.rows&&i;){for(n=0,s=!1;n<this.columns&&!1===s;)0===this.get(e,n)?n++:1===this.get(e,n)&&n>t?(s=!0,t=n):(i=!1,s=!0);e++}return i}isReducedEchelonForm(){let e=0,n=0,t=-1,i=!0,s=!1;for(;e<this.rows&&i;){for(n=0,s=!1;n<this.columns&&!1===s;)0===this.get(e,n)?n++:1===this.get(e,n)&&n>t?(s=!0,t=n):(i=!1,s=!0);for(let t=n+1;t<this.rows;t++)0!==this.get(e,t)&&(i=!1);e++}return i}echelonForm(){let e=this.clone(),n=0,t=0;for(;n<e.rows&&t<e.columns;){let i=n;for(let s=n;s<e.rows;s++)e.get(s,t)>e.get(i,t)&&(i=s);if(0===e.get(i,t))t++;else{e.swapRows(n,i);let s=e.get(n,t);for(let i=t;i<e.columns;i++)e.set(n,i,e.get(n,i)/s);for(let i=n+1;i<e.rows;i++){let s=e.get(i,t)/e.get(n,t);e.set(i,t,0);for(let a=t+1;a<e.columns;a++)e.set(i,a,e.get(i,a)-e.get(n,a)*s)}n++,t++}}return e}reducedEchelonForm(){let e=this.echelonForm(),n=e.columns,t=e.rows,i=t-1;for(;i>=0;)if(0===e.maxRow(i))i--;else{let s=0,a=!1;for(;s<t&&!1===a;)1===e.get(i,s)?a=!0:s++;for(let t=0;t<i;t++){let a=e.get(t,s);for(let o=s;o<n;o++){let n=e.get(t,o)-a*e.get(i,o);e.set(t,o,n)}}i--}return e}set(){throw new Error("set method is unimplemented")}get(){throw new Error("get method is unimplemented")}repeat(e={}){if("object"!=typeof e)throw new TypeError("options must be an object");const{rows:n=1,columns:t=1}=e;if(!Number.isInteger(n)||n<=0)throw new TypeError("rows must be a positive integer");if(!Number.isInteger(t)||t<=0)throw new TypeError("columns must be a positive integer");let i=new dl(this.rows*n,this.columns*t);for(let e=0;e<n;e++)for(let n=0;n<t;n++)i.setSubMatrix(this,this.rows*e,this.columns*n);return i}fill(e){for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.set(n,t,e);return this}neg(){return this.mulS(-1)}getRow(e){el(this,e);let n=[];for(let t=0;t<this.columns;t++)n.push(this.get(e,t));return n}getRowVector(e){return dl.rowVector(this.getRow(e))}setRow(e,n){el(this,e),n=tl(this,n);for(let t=0;t<this.columns;t++)this.set(e,t,n[t]);return this}swapRows(e,n){el(this,e),el(this,n);for(let t=0;t<this.columns;t++){let i=this.get(e,t);this.set(e,t,this.get(n,t)),this.set(n,t,i)}return this}getColumn(e){nl(this,e);let n=[];for(let t=0;t<this.rows;t++)n.push(this.get(t,e));return n}getColumnVector(e){return dl.columnVector(this.getColumn(e))}setColumn(e,n){nl(this,e),n=il(this,n);for(let t=0;t<this.rows;t++)this.set(t,e,n[t]);return this}swapColumns(e,n){nl(this,e),nl(this,n);for(let t=0;t<this.rows;t++){let i=this.get(t,e);this.set(t,e,this.get(t,n)),this.set(t,n,i)}return this}addRowVector(e){e=tl(this,e);for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.set(n,t,this.get(n,t)+e[t]);return this}subRowVector(e){e=tl(this,e);for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.set(n,t,this.get(n,t)-e[t]);return this}mulRowVector(e){e=tl(this,e);for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.set(n,t,this.get(n,t)*e[t]);return this}divRowVector(e){e=tl(this,e);for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.set(n,t,this.get(n,t)/e[t]);return this}addColumnVector(e){e=il(this,e);for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.set(n,t,this.get(n,t)+e[n]);return this}subColumnVector(e){e=il(this,e);for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.set(n,t,this.get(n,t)-e[n]);return this}mulColumnVector(e){e=il(this,e);for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.set(n,t,this.get(n,t)*e[n]);return this}divColumnVector(e){e=il(this,e);for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.set(n,t,this.get(n,t)/e[n]);return this}mulRow(e,n){el(this,e);for(let t=0;t<this.columns;t++)this.set(e,t,this.get(e,t)*n);return this}mulColumn(e,n){nl(this,e);for(let t=0;t<this.rows;t++)this.set(t,e,this.get(t,e)*n);return this}max(e){if(this.isEmpty())return NaN;switch(e){case"row":{const e=new Array(this.rows).fill(Number.NEGATIVE_INFINITY);for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.get(n,t)>e[n]&&(e[n]=this.get(n,t));return e}case"column":{const e=new Array(this.columns).fill(Number.NEGATIVE_INFINITY);for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.get(n,t)>e[t]&&(e[t]=this.get(n,t));return e}case void 0:{let e=this.get(0,0);for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.get(n,t)>e&&(e=this.get(n,t));return e}default:throw new Error(`invalid option: ${e}`)}}maxIndex(){ll(this);let e=this.get(0,0),n=[0,0];for(let t=0;t<this.rows;t++)for(let i=0;i<this.columns;i++)this.get(t,i)>e&&(e=this.get(t,i),n[0]=t,n[1]=i);return n}min(e){if(this.isEmpty())return NaN;switch(e){case"row":{const e=new Array(this.rows).fill(Number.POSITIVE_INFINITY);for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.get(n,t)<e[n]&&(e[n]=this.get(n,t));return e}case"column":{const e=new Array(this.columns).fill(Number.POSITIVE_INFINITY);for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.get(n,t)<e[t]&&(e[t]=this.get(n,t));return e}case void 0:{let e=this.get(0,0);for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.get(n,t)<e&&(e=this.get(n,t));return e}default:throw new Error(`invalid option: ${e}`)}}minIndex(){ll(this);let e=this.get(0,0),n=[0,0];for(let t=0;t<this.rows;t++)for(let i=0;i<this.columns;i++)this.get(t,i)<e&&(e=this.get(t,i),n[0]=t,n[1]=i);return n}maxRow(e){if(el(this,e),this.isEmpty())return NaN;let n=this.get(e,0);for(let t=1;t<this.columns;t++)this.get(e,t)>n&&(n=this.get(e,t));return n}maxRowIndex(e){el(this,e),ll(this);let n=this.get(e,0),t=[e,0];for(let i=1;i<this.columns;i++)this.get(e,i)>n&&(n=this.get(e,i),t[1]=i);return t}minRow(e){if(el(this,e),this.isEmpty())return NaN;let n=this.get(e,0);for(let t=1;t<this.columns;t++)this.get(e,t)<n&&(n=this.get(e,t));return n}minRowIndex(e){el(this,e),ll(this);let n=this.get(e,0),t=[e,0];for(let i=1;i<this.columns;i++)this.get(e,i)<n&&(n=this.get(e,i),t[1]=i);return t}maxColumn(e){if(nl(this,e),this.isEmpty())return NaN;let n=this.get(0,e);for(let t=1;t<this.rows;t++)this.get(t,e)>n&&(n=this.get(t,e));return n}maxColumnIndex(e){nl(this,e),ll(this);let n=this.get(0,e),t=[0,e];for(let i=1;i<this.rows;i++)this.get(i,e)>n&&(n=this.get(i,e),t[0]=i);return t}minColumn(e){if(nl(this,e),this.isEmpty())return NaN;let n=this.get(0,e);for(let t=1;t<this.rows;t++)this.get(t,e)<n&&(n=this.get(t,e));return n}minColumnIndex(e){nl(this,e),ll(this);let n=this.get(0,e),t=[0,e];for(let i=1;i<this.rows;i++)this.get(i,e)<n&&(n=this.get(i,e),t[0]=i);return t}diag(){let e=Math.min(this.rows,this.columns),n=[];for(let t=0;t<e;t++)n.push(this.get(t,t));return n}norm(e="frobenius"){switch(e){case"max":return this.max();case"frobenius":return Math.sqrt(this.dot(this));default:throw new RangeError(`unknown norm type: ${e}`)}}cumulativeSum(){let e=0;for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)e+=this.get(n,t),this.set(n,t,e);return this}dot(e){pl.isMatrix(e)&&(e=e.to1DArray());let n=this.to1DArray();if(n.length!==e.length)throw new RangeError("vectors do not have the same size");let t=0;for(let i=0;i<n.length;i++)t+=n[i]*e[i];return t}mmul(e){e=dl.checkMatrix(e);let n=this.rows,t=this.columns,i=e.columns,s=new dl(n,i),a=new Float64Array(t);for(let o=0;o<i;o++){for(let n=0;n<t;n++)a[n]=e.get(n,o);for(let e=0;e<n;e++){let n=0;for(let i=0;i<t;i++)n+=this.get(e,i)*a[i];s.set(e,o,n)}}return s}strassen2x2(e){e=dl.checkMatrix(e);let n=new dl(2,2);const t=this.get(0,0),i=e.get(0,0),s=this.get(0,1),a=e.get(0,1),o=this.get(1,0),r=e.get(1,0),c=this.get(1,1),l=e.get(1,1),p=(t+c)*(i+l),u=(o+c)*i,d=t*(a-l),m=c*(r-i),g=(t+s)*l,v=p+m-g+(s-c)*(r+l),h=d+g,f=u+m,x=p-u+d+(o-t)*(i+a);return n.set(0,0,v),n.set(0,1,h),n.set(1,0,f),n.set(1,1,x),n}strassen3x3(e){e=dl.checkMatrix(e);let n=new dl(3,3);const t=this.get(0,0),i=this.get(0,1),s=this.get(0,2),a=this.get(1,0),o=this.get(1,1),r=this.get(1,2),c=this.get(2,0),l=this.get(2,1),p=this.get(2,2),u=e.get(0,0),d=e.get(0,1),m=e.get(0,2),g=e.get(1,0),v=e.get(1,1),h=e.get(1,2),f=e.get(2,0),x=e.get(2,1),b=e.get(2,2),y=(t-a)*(-d+v),w=(-t+a+o)*(u-d+v),k=(a+o)*(-u+d),S=t*u,j=(-t+c+l)*(u-m+h),_=(-t+c)*(m-h),C=(c+l)*(-u+m),A=(-s+l+p)*(v+f-x),E=(s-p)*(v-x),R=s*f,L=(l+p)*(-f+x),M=(-s+o+r)*(h+f-b),I=(s-r)*(h-b),D=(o+r)*(-f+b),T=S+R+i*g,O=(t+i+s-a-o-l-p)*v+w+k+S+A+R+L,P=S+j+C+(t+i+s-o-r-c-l)*h+R+M+D,F=y+o*(-u+d+g-v-h-f+b)+w+S+R+M+I,N=y+w+k+S+r*x,q=R+M+I+D+a*m,z=S+j+_+l*(-u+m+g-v-h-f+x)+A+E+R,V=A+E+R+L+c*d,B=S+j+_+C+p*b;return n.set(0,0,T),n.set(0,1,O),n.set(0,2,P),n.set(1,0,F),n.set(1,1,N),n.set(1,2,q),n.set(2,0,z),n.set(2,1,V),n.set(2,2,B),n}mmulStrassen(e){e=dl.checkMatrix(e);let n=this.clone(),t=n.rows,i=n.columns,s=e.rows,a=e.columns;function o(e,n,t){let i=e.rows,s=e.columns;if(i===n&&s===t)return e;{let i=pl.zeros(n,t);return i=i.setSubMatrix(e,0,0),i}}i!==s&&console.warn(`Multiplying ${t} x ${i} and ${s} x ${a} matrix: dimensions do not match.`);let r=Math.max(t,s),c=Math.max(i,a);return n=o(n,r,c),function e(n,t,i,s){if(i<=512||s<=512)return n.mmul(t);i%2==1&&s%2==1?(n=o(n,i+1,s+1),t=o(t,i+1,s+1)):i%2==1?(n=o(n,i+1,s),t=o(t,i+1,s)):s%2==1&&(n=o(n,i,s+1),t=o(t,i,s+1));let a=parseInt(n.rows/2,10),r=parseInt(n.columns/2,10),c=n.subMatrix(0,a-1,0,r-1),l=t.subMatrix(0,a-1,0,r-1),p=n.subMatrix(0,a-1,r,n.columns-1),u=t.subMatrix(0,a-1,r,t.columns-1),d=n.subMatrix(a,n.rows-1,0,r-1),m=t.subMatrix(a,t.rows-1,0,r-1),g=n.subMatrix(a,n.rows-1,r,n.columns-1),v=t.subMatrix(a,t.rows-1,r,t.columns-1),h=e(pl.add(c,g),pl.add(l,v),a,r),f=e(pl.add(d,g),l,a,r),x=e(c,pl.sub(u,v),a,r),b=e(g,pl.sub(m,l),a,r),y=e(pl.add(c,p),v,a,r),w=e(pl.sub(d,c),pl.add(l,u),a,r),k=e(pl.sub(p,g),pl.add(m,v),a,r),S=pl.add(h,b);S.sub(y),S.add(k);let j=pl.add(x,y),_=pl.add(f,b),C=pl.sub(h,f);C.add(x),C.add(w);let A=pl.zeros(2*S.rows,2*S.columns);return A=A.setSubMatrix(S,0,0),A=A.setSubMatrix(j,S.rows,0),A=A.setSubMatrix(_,0,S.columns),A=A.setSubMatrix(C,S.rows,S.columns),A.subMatrix(0,i-1,0,s-1)}(n,e=o(e,r,c),r,c)}scaleRows(e={}){if("object"!=typeof e)throw new TypeError("options must be an object");const{min:n=0,max:t=1}=e;if(!Number.isFinite(n))throw new TypeError("min must be a number");if(!Number.isFinite(t))throw new TypeError("max must be a number");if(n>=t)throw new RangeError("min must be smaller than max");let i=new dl(this.rows,this.columns);for(let e=0;e<this.rows;e++){const s=this.getRow(e);s.length>0&&Kc(s,{min:n,max:t,output:s}),i.setRow(e,s)}return i}scaleColumns(e={}){if("object"!=typeof e)throw new TypeError("options must be an object");const{min:n=0,max:t=1}=e;if(!Number.isFinite(n))throw new TypeError("min must be a number");if(!Number.isFinite(t))throw new TypeError("max must be a number");if(n>=t)throw new RangeError("min must be smaller than max");let i=new dl(this.rows,this.columns);for(let e=0;e<this.columns;e++){const s=this.getColumn(e);s.length&&Kc(s,{min:n,max:t,output:s}),i.setColumn(e,s)}return i}flipRows(){const e=Math.ceil(this.columns/2);for(let n=0;n<this.rows;n++)for(let t=0;t<e;t++){let e=this.get(n,t),i=this.get(n,this.columns-1-t);this.set(n,t,i),this.set(n,this.columns-1-t,e)}return this}flipColumns(){const e=Math.ceil(this.rows/2);for(let n=0;n<this.columns;n++)for(let t=0;t<e;t++){let e=this.get(t,n),i=this.get(this.rows-1-t,n);this.set(t,n,i),this.set(this.rows-1-t,n,e)}return this}kroneckerProduct(e){e=dl.checkMatrix(e);let n=this.rows,t=this.columns,i=e.rows,s=e.columns,a=new dl(n*i,t*s);for(let o=0;o<n;o++)for(let n=0;n<t;n++)for(let t=0;t<i;t++)for(let r=0;r<s;r++)a.set(i*o+t,s*n+r,this.get(o,n)*e.get(t,r));return a}kroneckerSum(e){if(e=dl.checkMatrix(e),!this.isSquare()||!e.isSquare())throw new Error("Kronecker Sum needs two Square Matrices");let n=this.rows,t=e.rows,i=this.kroneckerProduct(dl.eye(t,t)),s=dl.eye(n,n).kroneckerProduct(e);return i.add(s)}transpose(){let e=new dl(this.columns,this.rows);for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)e.set(t,n,this.get(n,t));return e}sortRows(e=ul){for(let n=0;n<this.rows;n++)this.setRow(n,this.getRow(n).sort(e));return this}sortColumns(e=ul){for(let n=0;n<this.columns;n++)this.setColumn(n,this.getColumn(n).sort(e));return this}subMatrix(e,n,t,i){ol(this,e,n,t,i);let s=new dl(n-e+1,i-t+1);for(let a=e;a<=n;a++)for(let n=t;n<=i;n++)s.set(a-e,n-t,this.get(a,n));return s}subMatrixRow(e,n,t){if(void 0===n&&(n=0),void 0===t&&(t=this.columns-1),n>t||n<0||n>=this.columns||t<0||t>=this.columns)throw new RangeError("Argument out of range");let i=new dl(e.length,t-n+1);for(let s=0;s<e.length;s++)for(let a=n;a<=t;a++){if(e[s]<0||e[s]>=this.rows)throw new RangeError(`Row index out of range: ${e[s]}`);i.set(s,a-n,this.get(e[s],a))}return i}subMatrixColumn(e,n,t){if(void 0===n&&(n=0),void 0===t&&(t=this.rows-1),n>t||n<0||n>=this.rows||t<0||t>=this.rows)throw new RangeError("Argument out of range");let i=new dl(t-n+1,e.length);for(let s=0;s<e.length;s++)for(let a=n;a<=t;a++){if(e[s]<0||e[s]>=this.columns)throw new RangeError(`Column index out of range: ${e[s]}`);i.set(a-n,s,this.get(a,e[s]))}return i}setSubMatrix(e,n,t){if((e=dl.checkMatrix(e)).isEmpty())return this;ol(this,n,n+e.rows-1,t,t+e.columns-1);for(let i=0;i<e.rows;i++)for(let s=0;s<e.columns;s++)this.set(n+i,t+s,e.get(i,s));return this}selection(e,n){sl(this,e),al(this,n);let t=new dl(e.length,n.length);for(let i=0;i<e.length;i++){let s=e[i];for(let e=0;e<n.length;e++){let a=n[e];t.set(i,e,this.get(s,a))}}return t}trace(){let e=Math.min(this.rows,this.columns),n=0;for(let t=0;t<e;t++)n+=this.get(t,t);return n}clone(){return this.constructor.copy(this,new dl(this.rows,this.columns))}static copy(e,n){for(const[t,i,s]of e.entries())n.set(t,i,s);return n}sum(e){switch(e){case"row":return function(e){let n=rl(e.rows);for(let t=0;t<e.rows;++t)for(let i=0;i<e.columns;++i)n[t]+=e.get(t,i);return n}(this);case"column":return function(e){let n=rl(e.columns);for(let t=0;t<e.rows;++t)for(let i=0;i<e.columns;++i)n[i]+=e.get(t,i);return n}(this);case void 0:return function(e){let n=0;for(let t=0;t<e.rows;t++)for(let i=0;i<e.columns;i++)n+=e.get(t,i);return n}(this);default:throw new Error(`invalid option: ${e}`)}}product(e){switch(e){case"row":return function(e){let n=rl(e.rows,1);for(let t=0;t<e.rows;++t)for(let i=0;i<e.columns;++i)n[t]*=e.get(t,i);return n}(this);case"column":return function(e){let n=rl(e.columns,1);for(let t=0;t<e.rows;++t)for(let i=0;i<e.columns;++i)n[i]*=e.get(t,i);return n}(this);case void 0:return function(e){let n=1;for(let t=0;t<e.rows;t++)for(let i=0;i<e.columns;i++)n*=e.get(t,i);return n}(this);default:throw new Error(`invalid option: ${e}`)}}mean(e){const n=this.sum(e);switch(e){case"row":for(let e=0;e<this.rows;e++)n[e]/=this.columns;return n;case"column":for(let e=0;e<this.columns;e++)n[e]/=this.rows;return n;case void 0:return n/this.size;default:throw new Error(`invalid option: ${e}`)}}variance(e,n={}){if("object"==typeof e&&(n=e,e=void 0),"object"!=typeof n)throw new TypeError("options must be an object");const{unbiased:t=!0,mean:i=this.mean(e)}=n;if("boolean"!=typeof t)throw new TypeError("unbiased must be a boolean");switch(e){case"row":if(!Yc.isAnyArray(i))throw new TypeError("mean must be an array");return function(e,n,t){const i=e.rows,s=e.columns,a=[];for(let o=0;o<i;o++){let i=0,r=0,c=0;for(let n=0;n<s;n++)c=e.get(o,n)-t[o],i+=c,r+=c*c;n?a.push((r-i*i/s)/(s-1)):a.push((r-i*i/s)/s)}return a}(this,t,i);case"column":if(!Yc.isAnyArray(i))throw new TypeError("mean must be an array");return function(e,n,t){const i=e.rows,s=e.columns,a=[];for(let o=0;o<s;o++){let s=0,r=0,c=0;for(let n=0;n<i;n++)c=e.get(n,o)-t[o],s+=c,r+=c*c;n?a.push((r-s*s/i)/(i-1)):a.push((r-s*s/i)/i)}return a}(this,t,i);case void 0:if("number"!=typeof i)throw new TypeError("mean must be a number");return function(e,n,t){const i=e.rows,s=e.columns,a=i*s;let o=0,r=0,c=0;for(let n=0;n<i;n++)for(let i=0;i<s;i++)c=e.get(n,i)-t,o+=c,r+=c*c;return n?(r-o*o/a)/(a-1):(r-o*o/a)/a}(this,t,i);default:throw new Error(`invalid option: ${e}`)}}standardDeviation(e,n){"object"==typeof e&&(n=e,e=void 0);const t=this.variance(e,n);if(void 0===e)return Math.sqrt(t);for(let e=0;e<t.length;e++)t[e]=Math.sqrt(t[e]);return t}center(e,n={}){if("object"==typeof e&&(n=e,e=void 0),"object"!=typeof n)throw new TypeError("options must be an object");const{center:t=this.mean(e)}=n;switch(e){case"row":if(!Yc.isAnyArray(t))throw new TypeError("center must be an array");return function(e,n){for(let t=0;t<e.rows;t++)for(let i=0;i<e.columns;i++)e.set(t,i,e.get(t,i)-n[t])}(this,t),this;case"column":if(!Yc.isAnyArray(t))throw new TypeError("center must be an array");return function(e,n){for(let t=0;t<e.rows;t++)for(let i=0;i<e.columns;i++)e.set(t,i,e.get(t,i)-n[i])}(this,t),this;case void 0:if("number"!=typeof t)throw new TypeError("center must be a number");return function(e,n){for(let t=0;t<e.rows;t++)for(let i=0;i<e.columns;i++)e.set(t,i,e.get(t,i)-n)}(this,t),this;default:throw new Error(`invalid option: ${e}`)}}scale(e,n={}){if("object"==typeof e&&(n=e,e=void 0),"object"!=typeof n)throw new TypeError("options must be an object");let t=n.scale;switch(e){case"row":if(void 0===t)t=function(e){const n=[];for(let t=0;t<e.rows;t++){let i=0;for(let n=0;n<e.columns;n++)i+=e.get(t,n)**2/(e.columns-1);n.push(Math.sqrt(i))}return n}(this);else if(!Yc.isAnyArray(t))throw new TypeError("scale must be an array");return function(e,n){for(let t=0;t<e.rows;t++)for(let i=0;i<e.columns;i++)e.set(t,i,e.get(t,i)/n[t])}(this,t),this;case"column":if(void 0===t)t=function(e){const n=[];for(let t=0;t<e.columns;t++){let i=0;for(let n=0;n<e.rows;n++)i+=e.get(n,t)**2/(e.rows-1);n.push(Math.sqrt(i))}return n}(this);else if(!Yc.isAnyArray(t))throw new TypeError("scale must be an array");return function(e,n){for(let t=0;t<e.rows;t++)for(let i=0;i<e.columns;i++)e.set(t,i,e.get(t,i)/n[i])}(this,t),this;case void 0:if(void 0===t)t=function(e){const n=e.size-1;let t=0;for(let i=0;i<e.columns;i++)for(let s=0;s<e.rows;s++)t+=e.get(s,i)**2/n;return Math.sqrt(t)}(this);else if("number"!=typeof t)throw new TypeError("scale must be a number");return function(e,n){for(let t=0;t<e.rows;t++)for(let i=0;i<e.columns;i++)e.set(t,i,e.get(t,i)/n)}(this,t),this;default:throw new Error(`invalid option: ${e}`)}}toString(e){return Jc(this,e)}[Symbol.iterator](){return this.entries()}*entries(){for(let e=0;e<this.rows;e++)for(let n=0;n<this.columns;n++)yield[e,n,this.get(e,n)]}*values(){for(let e=0;e<this.rows;e++)for(let n=0;n<this.columns;n++)yield this.get(e,n)}}function ul(e,n){return e-n}pl.prototype.klass="Matrix","undefined"!=typeof Symbol&&(pl.prototype[Symbol.for("nodejs.util.inspect.custom")]=function(){return Jc(this)}),pl.random=pl.rand,pl.randomInt=pl.randInt,pl.diagonal=pl.diag,pl.prototype.diagonal=pl.prototype.diag,pl.identity=pl.eye,pl.prototype.negate=pl.prototype.neg,pl.prototype.tensorProduct=pl.prototype.kroneckerProduct;let dl=class e extends pl{data;#e(e,n){if(this.data=[],!(Number.isInteger(n)&&n>=0))throw new TypeError("nColumns must be a positive integer");for(let t=0;t<e;t++)this.data.push(new Float64Array(n));this.rows=e,this.columns=n}constructor(n,t){if(super(),e.isMatrix(n))this.#e(n.rows,n.columns),e.copy(n,this);else if(Number.isInteger(n)&&n>=0)this.#e(n,t);else{if(!Yc.isAnyArray(n))throw new TypeError("First argument must be a positive number or an array");{const e=n;if("number"!=typeof(t=(n=e.length)?e[0].length:0))throw new TypeError("Data must be a 2D array with at least one element");this.data=[];for(let i=0;i<n;i++){if(e[i].length!==t)throw new RangeError("Inconsistent array dimensions");if(!e[i].every((e=>"number"==typeof e)))throw new TypeError("Input data contains non-numeric values");this.data.push(Float64Array.from(e[i]))}this.rows=n,this.columns=t}}}set(e,n,t){return this.data[e][n]=t,this}get(e,n){return this.data[e][n]}removeRow(e){return el(this,e),this.data.splice(e,1),this.rows-=1,this}addRow(e,n){return void 0===n&&(n=e,e=this.rows),el(this,e,!0),n=Float64Array.from(tl(this,n)),this.data.splice(e,0,n),this.rows+=1,this}removeColumn(e){nl(this,e);for(let n=0;n<this.rows;n++){const t=new Float64Array(this.columns-1);for(let i=0;i<e;i++)t[i]=this.data[n][i];for(let i=e+1;i<this.columns;i++)t[i-1]=this.data[n][i];this.data[n]=t}return this.columns-=1,this}addColumn(e,n){void 0===n&&(n=e,e=this.columns),nl(this,e,!0),n=il(this,n);for(let t=0;t<this.rows;t++){const i=new Float64Array(this.columns+1);let s=0;for(;s<e;s++)i[s]=this.data[t][s];for(i[s++]=n[t];s<this.columns+1;s++)i[s]=this.data[t][s-1];this.data[t]=i}return this.columns+=1,this}};!function(e,n){e.prototype.add=function(e){return"number"==typeof e?this.addS(e):this.addM(e)},e.prototype.addS=function(e){for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.set(n,t,this.get(n,t)+e);return this},e.prototype.addM=function(e){if(e=n.checkMatrix(e),this.rows!==e.rows||this.columns!==e.columns)throw new RangeError("Matrices dimensions must be equal");for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.set(n,t,this.get(n,t)+e.get(n,t));return this},e.add=function(e,t){return new n(e).add(t)},e.prototype.sub=function(e){return"number"==typeof e?this.subS(e):this.subM(e)},e.prototype.subS=function(e){for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.set(n,t,this.get(n,t)-e);return this},e.prototype.subM=function(e){if(e=n.checkMatrix(e),this.rows!==e.rows||this.columns!==e.columns)throw new RangeError("Matrices dimensions must be equal");for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.set(n,t,this.get(n,t)-e.get(n,t));return this},e.sub=function(e,t){return new n(e).sub(t)},e.prototype.subtract=e.prototype.sub,e.prototype.subtractS=e.prototype.subS,e.prototype.subtractM=e.prototype.subM,e.subtract=e.sub,e.prototype.mul=function(e){return"number"==typeof e?this.mulS(e):this.mulM(e)},e.prototype.mulS=function(e){for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.set(n,t,this.get(n,t)*e);return this},e.prototype.mulM=function(e){if(e=n.checkMatrix(e),this.rows!==e.rows||this.columns!==e.columns)throw new RangeError("Matrices dimensions must be equal");for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.set(n,t,this.get(n,t)*e.get(n,t));return this},e.mul=function(e,t){return new n(e).mul(t)},e.prototype.multiply=e.prototype.mul,e.prototype.multiplyS=e.prototype.mulS,e.prototype.multiplyM=e.prototype.mulM,e.multiply=e.mul,e.prototype.div=function(e){return"number"==typeof e?this.divS(e):this.divM(e)},e.prototype.divS=function(e){for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.set(n,t,this.get(n,t)/e);return this},e.prototype.divM=function(e){if(e=n.checkMatrix(e),this.rows!==e.rows||this.columns!==e.columns)throw new RangeError("Matrices dimensions must be equal");for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.set(n,t,this.get(n,t)/e.get(n,t));return this},e.div=function(e,t){return new n(e).div(t)},e.prototype.divide=e.prototype.div,e.prototype.divideS=e.prototype.divS,e.prototype.divideM=e.prototype.divM,e.divide=e.div,e.prototype.mod=function(e){return"number"==typeof e?this.modS(e):this.modM(e)},e.prototype.modS=function(e){for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.set(n,t,this.get(n,t)%e);return this},e.prototype.modM=function(e){if(e=n.checkMatrix(e),this.rows!==e.rows||this.columns!==e.columns)throw new RangeError("Matrices dimensions must be equal");for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.set(n,t,this.get(n,t)%e.get(n,t));return this},e.mod=function(e,t){return new n(e).mod(t)},e.prototype.modulus=e.prototype.mod,e.prototype.modulusS=e.prototype.modS,e.prototype.modulusM=e.prototype.modM,e.modulus=e.mod,e.prototype.and=function(e){return"number"==typeof e?this.andS(e):this.andM(e)},e.prototype.andS=function(e){for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.set(n,t,this.get(n,t)&e);return this},e.prototype.andM=function(e){if(e=n.checkMatrix(e),this.rows!==e.rows||this.columns!==e.columns)throw new RangeError("Matrices dimensions must be equal");for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.set(n,t,this.get(n,t)&e.get(n,t));return this},e.and=function(e,t){return new n(e).and(t)},e.prototype.or=function(e){return"number"==typeof e?this.orS(e):this.orM(e)},e.prototype.orS=function(e){for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.set(n,t,this.get(n,t)|e);return this},e.prototype.orM=function(e){if(e=n.checkMatrix(e),this.rows!==e.rows||this.columns!==e.columns)throw new RangeError("Matrices dimensions must be equal");for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.set(n,t,this.get(n,t)|e.get(n,t));return this},e.or=function(e,t){return new n(e).or(t)},e.prototype.xor=function(e){return"number"==typeof e?this.xorS(e):this.xorM(e)},e.prototype.xorS=function(e){for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.set(n,t,this.get(n,t)^e);return this},e.prototype.xorM=function(e){if(e=n.checkMatrix(e),this.rows!==e.rows||this.columns!==e.columns)throw new RangeError("Matrices dimensions must be equal");for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.set(n,t,this.get(n,t)^e.get(n,t));return this},e.xor=function(e,t){return new n(e).xor(t)},e.prototype.leftShift=function(e){return"number"==typeof e?this.leftShiftS(e):this.leftShiftM(e)},e.prototype.leftShiftS=function(e){for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.set(n,t,this.get(n,t)<<e);return this},e.prototype.leftShiftM=function(e){if(e=n.checkMatrix(e),this.rows!==e.rows||this.columns!==e.columns)throw new RangeError("Matrices dimensions must be equal");for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.set(n,t,this.get(n,t)<<e.get(n,t));return this},e.leftShift=function(e,t){return new n(e).leftShift(t)},e.prototype.signPropagatingRightShift=function(e){return"number"==typeof e?this.signPropagatingRightShiftS(e):this.signPropagatingRightShiftM(e)},e.prototype.signPropagatingRightShiftS=function(e){for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.set(n,t,this.get(n,t)>>e);return this},e.prototype.signPropagatingRightShiftM=function(e){if(e=n.checkMatrix(e),this.rows!==e.rows||this.columns!==e.columns)throw new RangeError("Matrices dimensions must be equal");for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.set(n,t,this.get(n,t)>>e.get(n,t));return this},e.signPropagatingRightShift=function(e,t){return new n(e).signPropagatingRightShift(t)},e.prototype.rightShift=function(e){return"number"==typeof e?this.rightShiftS(e):this.rightShiftM(e)},e.prototype.rightShiftS=function(e){for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.set(n,t,this.get(n,t)>>>e);return this},e.prototype.rightShiftM=function(e){if(e=n.checkMatrix(e),this.rows!==e.rows||this.columns!==e.columns)throw new RangeError("Matrices dimensions must be equal");for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.set(n,t,this.get(n,t)>>>e.get(n,t));return this},e.rightShift=function(e,t){return new n(e).rightShift(t)},e.prototype.zeroFillRightShift=e.prototype.rightShift,e.prototype.zeroFillRightShiftS=e.prototype.rightShiftS,e.prototype.zeroFillRightShiftM=e.prototype.rightShiftM,e.zeroFillRightShift=e.rightShift,e.prototype.not=function(){for(let e=0;e<this.rows;e++)for(let n=0;n<this.columns;n++)this.set(e,n,~this.get(e,n));return this},e.not=function(e){return new n(e).not()},e.prototype.abs=function(){for(let e=0;e<this.rows;e++)for(let n=0;n<this.columns;n++)this.set(e,n,Math.abs(this.get(e,n)));return this},e.abs=function(e){return new n(e).abs()},e.prototype.acos=function(){for(let e=0;e<this.rows;e++)for(let n=0;n<this.columns;n++)this.set(e,n,Math.acos(this.get(e,n)));return this},e.acos=function(e){return new n(e).acos()},e.prototype.acosh=function(){for(let e=0;e<this.rows;e++)for(let n=0;n<this.columns;n++)this.set(e,n,Math.acosh(this.get(e,n)));return this},e.acosh=function(e){return new n(e).acosh()},e.prototype.asin=function(){for(let e=0;e<this.rows;e++)for(let n=0;n<this.columns;n++)this.set(e,n,Math.asin(this.get(e,n)));return this},e.asin=function(e){return new n(e).asin()},e.prototype.asinh=function(){for(let e=0;e<this.rows;e++)for(let n=0;n<this.columns;n++)this.set(e,n,Math.asinh(this.get(e,n)));return this},e.asinh=function(e){return new n(e).asinh()},e.prototype.atan=function(){for(let e=0;e<this.rows;e++)for(let n=0;n<this.columns;n++)this.set(e,n,Math.atan(this.get(e,n)));return this},e.atan=function(e){return new n(e).atan()},e.prototype.atanh=function(){for(let e=0;e<this.rows;e++)for(let n=0;n<this.columns;n++)this.set(e,n,Math.atanh(this.get(e,n)));return this},e.atanh=function(e){return new n(e).atanh()},e.prototype.cbrt=function(){for(let e=0;e<this.rows;e++)for(let n=0;n<this.columns;n++)this.set(e,n,Math.cbrt(this.get(e,n)));return this},e.cbrt=function(e){return new n(e).cbrt()},e.prototype.ceil=function(){for(let e=0;e<this.rows;e++)for(let n=0;n<this.columns;n++)this.set(e,n,Math.ceil(this.get(e,n)));return this},e.ceil=function(e){return new n(e).ceil()},e.prototype.clz32=function(){for(let e=0;e<this.rows;e++)for(let n=0;n<this.columns;n++)this.set(e,n,Math.clz32(this.get(e,n)));return this},e.clz32=function(e){return new n(e).clz32()},e.prototype.cos=function(){for(let e=0;e<this.rows;e++)for(let n=0;n<this.columns;n++)this.set(e,n,Math.cos(this.get(e,n)));return this},e.cos=function(e){return new n(e).cos()},e.prototype.cosh=function(){for(let e=0;e<this.rows;e++)for(let n=0;n<this.columns;n++)this.set(e,n,Math.cosh(this.get(e,n)));return this},e.cosh=function(e){return new n(e).cosh()},e.prototype.exp=function(){for(let e=0;e<this.rows;e++)for(let n=0;n<this.columns;n++)this.set(e,n,Math.exp(this.get(e,n)));return this},e.exp=function(e){return new n(e).exp()},e.prototype.expm1=function(){for(let e=0;e<this.rows;e++)for(let n=0;n<this.columns;n++)this.set(e,n,Math.expm1(this.get(e,n)));return this},e.expm1=function(e){return new n(e).expm1()},e.prototype.floor=function(){for(let e=0;e<this.rows;e++)for(let n=0;n<this.columns;n++)this.set(e,n,Math.floor(this.get(e,n)));return this},e.floor=function(e){return new n(e).floor()},e.prototype.fround=function(){for(let e=0;e<this.rows;e++)for(let n=0;n<this.columns;n++)this.set(e,n,Math.fround(this.get(e,n)));return this},e.fround=function(e){return new n(e).fround()},e.prototype.log=function(){for(let e=0;e<this.rows;e++)for(let n=0;n<this.columns;n++)this.set(e,n,Math.log(this.get(e,n)));return this},e.log=function(e){return new n(e).log()},e.prototype.log1p=function(){for(let e=0;e<this.rows;e++)for(let n=0;n<this.columns;n++)this.set(e,n,Math.log1p(this.get(e,n)));return this},e.log1p=function(e){return new n(e).log1p()},e.prototype.log10=function(){for(let e=0;e<this.rows;e++)for(let n=0;n<this.columns;n++)this.set(e,n,Math.log10(this.get(e,n)));return this},e.log10=function(e){return new n(e).log10()},e.prototype.log2=function(){for(let e=0;e<this.rows;e++)for(let n=0;n<this.columns;n++)this.set(e,n,Math.log2(this.get(e,n)));return this},e.log2=function(e){return new n(e).log2()},e.prototype.round=function(){for(let e=0;e<this.rows;e++)for(let n=0;n<this.columns;n++)this.set(e,n,Math.round(this.get(e,n)));return this},e.round=function(e){return new n(e).round()},e.prototype.sign=function(){for(let e=0;e<this.rows;e++)for(let n=0;n<this.columns;n++)this.set(e,n,Math.sign(this.get(e,n)));return this},e.sign=function(e){return new n(e).sign()},e.prototype.sin=function(){for(let e=0;e<this.rows;e++)for(let n=0;n<this.columns;n++)this.set(e,n,Math.sin(this.get(e,n)));return this},e.sin=function(e){return new n(e).sin()},e.prototype.sinh=function(){for(let e=0;e<this.rows;e++)for(let n=0;n<this.columns;n++)this.set(e,n,Math.sinh(this.get(e,n)));return this},e.sinh=function(e){return new n(e).sinh()},e.prototype.sqrt=function(){for(let e=0;e<this.rows;e++)for(let n=0;n<this.columns;n++)this.set(e,n,Math.sqrt(this.get(e,n)));return this},e.sqrt=function(e){return new n(e).sqrt()},e.prototype.tan=function(){for(let e=0;e<this.rows;e++)for(let n=0;n<this.columns;n++)this.set(e,n,Math.tan(this.get(e,n)));return this},e.tan=function(e){return new n(e).tan()},e.prototype.tanh=function(){for(let e=0;e<this.rows;e++)for(let n=0;n<this.columns;n++)this.set(e,n,Math.tanh(this.get(e,n)));return this},e.tanh=function(e){return new n(e).tanh()},e.prototype.trunc=function(){for(let e=0;e<this.rows;e++)for(let n=0;n<this.columns;n++)this.set(e,n,Math.trunc(this.get(e,n)));return this},e.trunc=function(e){return new n(e).trunc()},e.pow=function(e,t){return new n(e).pow(t)},e.prototype.pow=function(e){return"number"==typeof e?this.powS(e):this.powM(e)},e.prototype.powS=function(e){for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.set(n,t,this.get(n,t)**e);return this},e.prototype.powM=function(e){if(e=n.checkMatrix(e),this.rows!==e.rows||this.columns!==e.columns)throw new RangeError("Matrices dimensions must be equal");for(let n=0;n<this.rows;n++)for(let t=0;t<this.columns;t++)this.set(n,t,this.get(n,t)**e.get(n,t));return this}}(pl,dl);class ml extends pl{#n;get size(){return this.#n.size}get rows(){return this.#n.rows}get columns(){return this.#n.columns}get diagonalSize(){return this.rows}static isSymmetricMatrix(e){return dl.isMatrix(e)&&"SymmetricMatrix"===e.klassType}static zeros(e){return new this(e)}static ones(e){return new this(e).fill(1)}constructor(e){if(super(),dl.isMatrix(e)){if(!e.isSymmetric())throw new TypeError("not symmetric data");this.#n=dl.copy(e,new dl(e.rows,e.rows))}else if(Number.isInteger(e)&&e>=0)this.#n=new dl(e,e);else if(this.#n=new dl(e),!this.isSymmetric())throw new TypeError("not symmetric data")}clone(){const e=new ml(this.diagonalSize);for(const[n,t,i]of this.upperRightEntries())e.set(n,t,i);return e}toMatrix(){return new dl(this)}get(e,n){return this.#n.get(e,n)}set(e,n,t){return this.#n.set(e,n,t),this.#n.set(n,e,t),this}removeCross(e){return this.#n.removeRow(e),this.#n.removeColumn(e),this}addCross(e,n){void 0===n&&(n=e,e=this.diagonalSize);const t=n.slice();return t.splice(e,1),this.#n.addRow(e,t),this.#n.addColumn(e,n),this}applyMask(e){if(e.length!==this.diagonalSize)throw new RangeError("Mask size do not match with matrix size");const n=[];for(const[t,i]of e.entries())i||n.push(t);n.reverse();for(const e of n)this.removeCross(e);return this}toCompact(){const{diagonalSize:e}=this,n=new Array(e*(e+1)/2);for(let t=0,i=0,s=0;s<n.length;s++)n[s]=this.get(i,t),++t>=e&&(t=++i);return n}static fromCompact(e){const n=e.length,t=(Math.sqrt(8*n+1)-1)/2;if(!Number.isInteger(t))throw new TypeError(`This array is not a compact representation of a Symmetric Matrix, ${JSON.stringify(e)}`);const i=new ml(t);for(let s=0,a=0,o=0;o<n;o++)i.set(s,a,e[o]),++s>=t&&(s=++a);return i}*upperRightEntries(){for(let e=0,n=0;e<this.diagonalSize;void 0){const t=this.get(e,n);yield[e,n,t],++n>=this.diagonalSize&&(n=++e)}}*upperRightValues(){for(let e=0,n=0;e<this.diagonalSize;void 0){const t=this.get(e,n);yield t,++n>=this.diagonalSize&&(n=++e)}}}ml.prototype.klassType="SymmetricMatrix";class gl extends ml{static isDistanceMatrix(e){return ml.isSymmetricMatrix(e)&&"DistanceMatrix"===e.klassSubType}constructor(e){if(super(e),!this.isDistance())throw new TypeError("Provided arguments do no produce a distance matrix")}set(e,n,t){return e===n&&(t=0),super.set(e,n,t)}addCross(e,n){return void 0===n&&(n=e,e=this.diagonalSize),(n=n.slice())[e]=0,super.addCross(e,n)}toSymmetricMatrix(){return new ml(this)}clone(){const e=new gl(this.diagonalSize);for(const[n,t,i]of this.upperRightEntries())n!==t&&e.set(n,t,i);return e}toCompact(){const{diagonalSize:e}=this,n=new Array((e-1)*e/2);for(let t=1,i=0,s=0;s<n.length;s++)n[s]=this.get(i,t),++t>=e&&(t=1+ ++i);return n}static fromCompact(e){const n=e.length;if(0===n)return new this(0);const t=(Math.sqrt(8*n+1)+1)/2;if(!Number.isInteger(t))throw new TypeError(`This array is not a compact representation of a DistanceMatrix, ${JSON.stringify(e)}`);const i=new this(t);for(let s=1,a=0,o=0;o<n;o++)i.set(s,a,e[o]),++s>=t&&(s=1+ ++a);return i}}gl.prototype.klassSubType="DistanceMatrix";class vl extends pl{constructor(e,n,t){super(),this.matrix=e,this.rows=n,this.columns=t}}class hl extends vl{constructor(e,n,t){sl(e,n),al(e,t),super(e,n.length,t.length),this.rowIndices=n,this.columnIndices=t}set(e,n,t){return this.matrix.set(this.rowIndices[e],this.columnIndices[n],t),this}get(e,n){return this.matrix.get(this.rowIndices[e],this.columnIndices[n])}}class fl extends pl{constructor(e,n={}){const{rows:t=1}=n;if(e.length%t!=0)throw new Error("the data length is not divisible by the number of rows");super(),this.rows=t,this.columns=e.length/t,this.data=e}set(e,n,t){let i=this._calculateIndex(e,n);return this.data[i]=t,this}get(e,n){let t=this._calculateIndex(e,n);return this.data[t]}_calculateIndex(e,n){return e*this.columns+n}}class xl extends pl{constructor(e){super(),this.data=e,this.rows=e.length,this.columns=e[0].length}set(e,n,t){return this.data[e][n]=t,this}get(e,n){return this.data[e][n]}}class bl{constructor(e){let n,t,i,s,a,o,r,c,l,p=(e=xl.checkMatrix(e)).clone(),u=p.rows,d=p.columns,m=new Float64Array(u),g=1;for(n=0;n<u;n++)m[n]=n;for(c=new Float64Array(u),t=0;t<d;t++){for(n=0;n<u;n++)c[n]=p.get(n,t);for(n=0;n<u;n++){for(l=Math.min(n,t),a=0,i=0;i<l;i++)a+=p.get(n,i)*c[i];c[n]-=a,p.set(n,t,c[n])}for(s=t,n=t+1;n<u;n++)Math.abs(c[n])>Math.abs(c[s])&&(s=n);if(s!==t){for(i=0;i<d;i++)o=p.get(s,i),p.set(s,i,p.get(t,i)),p.set(t,i,o);r=m[s],m[s]=m[t],m[t]=r,g=-g}if(t<u&&0!==p.get(t,t))for(n=t+1;n<u;n++)p.set(n,t,p.get(n,t)/p.get(t,t))}this.LU=p,this.pivotVector=m,this.pivotSign=g}isSingular(){let e=this.LU,n=e.columns;for(let t=0;t<n;t++)if(0===e.get(t,t))return!0;return!1}solve(e){e=dl.checkMatrix(e);let n=this.LU;if(n.rows!==e.rows)throw new Error("Invalid matrix dimensions");if(this.isSingular())throw new Error("LU matrix is singular");let t,i,s,a=e.columns,o=e.subMatrixRow(this.pivotVector,0,a-1),r=n.columns;for(s=0;s<r;s++)for(t=s+1;t<r;t++)for(i=0;i<a;i++)o.set(t,i,o.get(t,i)-o.get(s,i)*n.get(t,s));for(s=r-1;s>=0;s--){for(i=0;i<a;i++)o.set(s,i,o.get(s,i)/n.get(s,s));for(t=0;t<s;t++)for(i=0;i<a;i++)o.set(t,i,o.get(t,i)-o.get(s,i)*n.get(t,s))}return o}get determinant(){let e=this.LU;if(!e.isSquare())throw new Error("Matrix must be square");let n=this.pivotSign,t=e.columns;for(let i=0;i<t;i++)n*=e.get(i,i);return n}get lowerTriangularMatrix(){let e=this.LU,n=e.rows,t=e.columns,i=new dl(n,t);for(let s=0;s<n;s++)for(let n=0;n<t;n++)s>n?i.set(s,n,e.get(s,n)):s===n?i.set(s,n,1):i.set(s,n,0);return i}get upperTriangularMatrix(){let e=this.LU,n=e.rows,t=e.columns,i=new dl(n,t);for(let s=0;s<n;s++)for(let n=0;n<t;n++)s<=n?i.set(s,n,e.get(s,n)):i.set(s,n,0);return i}get pivotPermutationVector(){return Array.from(this.pivotVector)}}function yl(e,n){let t=0;return Math.abs(e)>Math.abs(n)?(t=n/e,Math.abs(e)*Math.sqrt(1+t*t)):0!==n?(t=e/n,Math.abs(n)*Math.sqrt(1+t*t)):0}class wl{constructor(e){let n,t,i,s,a=(e=xl.checkMatrix(e)).clone(),o=e.rows,r=e.columns,c=new Float64Array(r);for(i=0;i<r;i++){let e=0;for(n=i;n<o;n++)e=yl(e,a.get(n,i));if(0!==e){for(a.get(i,i)<0&&(e=-e),n=i;n<o;n++)a.set(n,i,a.get(n,i)/e);for(a.set(i,i,a.get(i,i)+1),t=i+1;t<r;t++){for(s=0,n=i;n<o;n++)s+=a.get(n,i)*a.get(n,t);for(s=-s/a.get(i,i),n=i;n<o;n++)a.set(n,t,a.get(n,t)+s*a.get(n,i))}}c[i]=-e}this.QR=a,this.Rdiag=c}solve(e){e=dl.checkMatrix(e);let n=this.QR,t=n.rows;if(e.rows!==t)throw new Error("Matrix row dimensions must agree");if(!this.isFullRank())throw new Error("Matrix is rank deficient");let i,s,a,o,r=e.columns,c=e.clone(),l=n.columns;for(a=0;a<l;a++)for(s=0;s<r;s++){for(o=0,i=a;i<t;i++)o+=n.get(i,a)*c.get(i,s);for(o=-o/n.get(a,a),i=a;i<t;i++)c.set(i,s,c.get(i,s)+o*n.get(i,a))}for(a=l-1;a>=0;a--){for(s=0;s<r;s++)c.set(a,s,c.get(a,s)/this.Rdiag[a]);for(i=0;i<a;i++)for(s=0;s<r;s++)c.set(i,s,c.get(i,s)-c.get(a,s)*n.get(i,a))}return c.subMatrix(0,l-1,0,r-1)}isFullRank(){let e=this.QR.columns;for(let n=0;n<e;n++)if(0===this.Rdiag[n])return!1;return!0}get upperTriangularMatrix(){let e,n,t=this.QR,i=t.columns,s=new dl(i,i);for(e=0;e<i;e++)for(n=0;n<i;n++)e<n?s.set(e,n,t.get(e,n)):e===n?s.set(e,n,this.Rdiag[e]):s.set(e,n,0);return s}get orthogonalMatrix(){let e,n,t,i,s=this.QR,a=s.rows,o=s.columns,r=new dl(a,o);for(t=o-1;t>=0;t--){for(e=0;e<a;e++)r.set(e,t,0);for(r.set(t,t,1),n=t;n<o;n++)if(0!==s.get(t,t)){for(i=0,e=t;e<a;e++)i+=s.get(e,t)*r.get(e,n);for(i=-i/s.get(t,t),e=t;e<a;e++)r.set(e,n,r.get(e,n)+i*s.get(e,t))}}return r}}class kl{constructor(e,n={}){if((e=xl.checkMatrix(e)).isEmpty())throw new Error("Matrix must be non-empty");let t=e.rows,i=e.columns;const{computeLeftSingularVectors:s=!0,computeRightSingularVectors:a=!0,autoTranspose:o=!1}=n;let r,c=Boolean(s),l=Boolean(a),p=!1;if(t<i)if(o){r=e.transpose(),t=r.rows,i=r.columns,p=!0;let n=c;c=l,l=n}else r=e.clone(),console.warn("Computing SVD on a matrix with more columns than rows. Consider enabling autoTranspose");else r=e.clone();let u=Math.min(t,i),d=Math.min(t+1,i),m=new Float64Array(d),g=new dl(t,u),v=new dl(i,i),h=new Float64Array(i),f=new Float64Array(t),x=new Float64Array(d);for(let e=0;e<d;e++)x[e]=e;let b=Math.min(t-1,i),y=Math.max(0,Math.min(i-2,t)),w=Math.max(b,y);for(let e=0;e<w;e++){if(e<b){m[e]=0;for(let n=e;n<t;n++)m[e]=yl(m[e],r.get(n,e));if(0!==m[e]){r.get(e,e)<0&&(m[e]=-m[e]);for(let n=e;n<t;n++)r.set(n,e,r.get(n,e)/m[e]);r.set(e,e,r.get(e,e)+1)}m[e]=-m[e]}for(let n=e+1;n<i;n++){if(e<b&&0!==m[e]){let i=0;for(let s=e;s<t;s++)i+=r.get(s,e)*r.get(s,n);i=-i/r.get(e,e);for(let s=e;s<t;s++)r.set(s,n,r.get(s,n)+i*r.get(s,e))}h[n]=r.get(e,n)}if(c&&e<b)for(let n=e;n<t;n++)g.set(n,e,r.get(n,e));if(e<y){h[e]=0;for(let n=e+1;n<i;n++)h[e]=yl(h[e],h[n]);if(0!==h[e]){h[e+1]<0&&(h[e]=0-h[e]);for(let n=e+1;n<i;n++)h[n]/=h[e];h[e+1]+=1}if(h[e]=-h[e],e+1<t&&0!==h[e]){for(let n=e+1;n<t;n++)f[n]=0;for(let n=e+1;n<t;n++)for(let t=e+1;t<i;t++)f[n]+=h[t]*r.get(n,t);for(let n=e+1;n<i;n++){let i=-h[n]/h[e+1];for(let s=e+1;s<t;s++)r.set(s,n,r.get(s,n)+i*f[s])}}if(l)for(let n=e+1;n<i;n++)v.set(n,e,h[n])}}let k=Math.min(i,t+1);if(b<i&&(m[b]=r.get(b,b)),t<k&&(m[k-1]=0),y+1<k&&(h[y]=r.get(y,k-1)),h[k-1]=0,c){for(let e=b;e<u;e++){for(let n=0;n<t;n++)g.set(n,e,0);g.set(e,e,1)}for(let e=b-1;e>=0;e--)if(0!==m[e]){for(let n=e+1;n<u;n++){let i=0;for(let s=e;s<t;s++)i+=g.get(s,e)*g.get(s,n);i=-i/g.get(e,e);for(let s=e;s<t;s++)g.set(s,n,g.get(s,n)+i*g.get(s,e))}for(let n=e;n<t;n++)g.set(n,e,-g.get(n,e));g.set(e,e,1+g.get(e,e));for(let n=0;n<e-1;n++)g.set(n,e,0)}else{for(let n=0;n<t;n++)g.set(n,e,0);g.set(e,e,1)}}if(l)for(let e=i-1;e>=0;e--){if(e<y&&0!==h[e])for(let n=e+1;n<i;n++){let t=0;for(let s=e+1;s<i;s++)t+=v.get(s,e)*v.get(s,n);t=-t/v.get(e+1,e);for(let s=e+1;s<i;s++)v.set(s,n,v.get(s,n)+t*v.get(s,e))}for(let n=0;n<i;n++)v.set(n,e,0);v.set(e,e,1)}let S=k-1,j=Number.EPSILON;for(;k>0;){let e,n;for(e=k-2;e>=-1&&-1!==e;e--){const n=Number.MIN_VALUE+j*Math.abs(m[e]+Math.abs(m[e+1]));if(Math.abs(h[e])<=n||Number.isNaN(h[e])){h[e]=0;break}}if(e===k-2)n=4;else{let t;for(t=k-1;t>=e&&t!==e;t--){let n=(t!==k?Math.abs(h[t]):0)+(t!==e+1?Math.abs(h[t-1]):0);if(Math.abs(m[t])<=j*n){m[t]=0;break}}t===e?n=3:t===k-1?n=1:(n=2,e=t)}switch(e++,n){case 1:{let n=h[k-2];h[k-2]=0;for(let t=k-2;t>=e;t--){let s=yl(m[t],n),a=m[t]/s,o=n/s;if(m[t]=s,t!==e&&(n=-o*h[t-1],h[t-1]=a*h[t-1]),l)for(let e=0;e<i;e++)s=a*v.get(e,t)+o*v.get(e,k-1),v.set(e,k-1,-o*v.get(e,t)+a*v.get(e,k-1)),v.set(e,t,s)}break}case 2:{let n=h[e-1];h[e-1]=0;for(let i=e;i<k;i++){let s=yl(m[i],n),a=m[i]/s,o=n/s;if(m[i]=s,n=-o*h[i],h[i]=a*h[i],c)for(let n=0;n<t;n++)s=a*g.get(n,i)+o*g.get(n,e-1),g.set(n,e-1,-o*g.get(n,i)+a*g.get(n,e-1)),g.set(n,i,s)}break}case 3:{const n=Math.max(Math.abs(m[k-1]),Math.abs(m[k-2]),Math.abs(h[k-2]),Math.abs(m[e]),Math.abs(h[e])),s=m[k-1]/n,a=m[k-2]/n,o=h[k-2]/n,r=m[e]/n,p=h[e]/n,u=((a+s)*(a-s)+o*o)/2,d=s*o*(s*o);let f=0;0===u&&0===d||(f=u<0?0-Math.sqrt(u*u+d):Math.sqrt(u*u+d),f=d/(u+f));let x=(r+s)*(r-s)+f,b=r*p;for(let n=e;n<k-1;n++){let s=yl(x,b);0===s&&(s=Number.MIN_VALUE);let a=x/s,o=b/s;if(n!==e&&(h[n-1]=s),x=a*m[n]+o*h[n],h[n]=a*h[n]-o*m[n],b=o*m[n+1],m[n+1]=a*m[n+1],l)for(let e=0;e<i;e++)s=a*v.get(e,n)+o*v.get(e,n+1),v.set(e,n+1,-o*v.get(e,n)+a*v.get(e,n+1)),v.set(e,n,s);if(s=yl(x,b),0===s&&(s=Number.MIN_VALUE),a=x/s,o=b/s,m[n]=s,x=a*h[n]+o*m[n+1],m[n+1]=-o*h[n]+a*m[n+1],b=o*h[n+1],h[n+1]=a*h[n+1],c&&n<t-1)for(let e=0;e<t;e++)s=a*g.get(e,n)+o*g.get(e,n+1),g.set(e,n+1,-o*g.get(e,n)+a*g.get(e,n+1)),g.set(e,n,s)}h[k-2]=x;break}case 4:if(m[e]<=0&&(m[e]=m[e]<0?-m[e]:0,l))for(let n=0;n<=S;n++)v.set(n,e,-v.get(n,e));for(;e<S&&!(m[e]>=m[e+1]);){let n=m[e];if(m[e]=m[e+1],m[e+1]=n,l&&e<i-1)for(let t=0;t<i;t++)n=v.get(t,e+1),v.set(t,e+1,v.get(t,e)),v.set(t,e,n);if(c&&e<t-1)for(let i=0;i<t;i++)n=g.get(i,e+1),g.set(i,e+1,g.get(i,e)),g.set(i,e,n);e++}k--}}if(p){let e=v;v=g,g=e}this.m=t,this.n=i,this.s=m,this.U=g,this.V=v}solve(e){let n=e,t=this.threshold,i=this.s.length,s=dl.zeros(i,i);for(let e=0;e<i;e++)Math.abs(this.s[e])<=t?s.set(e,e,0):s.set(e,e,1/this.s[e]);let a=this.U,o=this.rightSingularVectors,r=o.mmul(s),c=o.rows,l=a.rows,p=dl.zeros(c,l);for(let e=0;e<c;e++)for(let n=0;n<l;n++){let t=0;for(let s=0;s<i;s++)t+=r.get(e,s)*a.get(n,s);p.set(e,n,t)}return p.mmul(n)}solveForDiagonal(e){return this.solve(dl.diag(e))}inverse(){let e=this.V,n=this.threshold,t=e.rows,i=e.columns,s=new dl(t,this.s.length);for(let a=0;a<t;a++)for(let t=0;t<i;t++)Math.abs(this.s[t])>n&&s.set(a,t,e.get(a,t)/this.s[t]);let a=this.U,o=a.rows,r=a.columns,c=new dl(t,o);for(let e=0;e<t;e++)for(let n=0;n<o;n++){let t=0;for(let i=0;i<r;i++)t+=s.get(e,i)*a.get(n,i);c.set(e,n,t)}return c}get condition(){return this.s[0]/this.s[Math.min(this.m,this.n)-1]}get norm2(){return this.s[0]}get rank(){let e=Math.max(this.m,this.n)*this.s[0]*Number.EPSILON,n=0,t=this.s;for(let i=0,s=t.length;i<s;i++)t[i]>e&&n++;return n}get diagonal(){return Array.from(this.s)}get threshold(){return Number.EPSILON/2*Math.max(this.m,this.n)*this.s[0]}get leftSingularVectors(){return this.U}get rightSingularVectors(){return this.V}get diagonalMatrix(){return dl.diag(this.s)}}function Sl(e,n,t=!1){return e=xl.checkMatrix(e),n=xl.checkMatrix(n),t?new kl(e).solve(n):e.isSquare()?new bl(e).solve(n):new wl(e).solve(n)}function jl(e,n){let t=[];for(let i=0;i<e;i++)i!==n&&t.push(i);return t}function _l(e,n,t,i=1e-9,s=1e-9){if(e>s)return new Array(n.rows+1).fill(0);{let e=n.addRow(t,[0]);for(let n=0;n<e.rows;n++)Math.abs(e.get(n,0))<i&&e.set(n,0,0);return e.to1DArray()}}class Cl{constructor(e,n={}){const{assumeSymmetric:t=!1}=n;if(!(e=xl.checkMatrix(e)).isSquare())throw new Error("Matrix is not a square matrix");if(e.isEmpty())throw new Error("Matrix must be non-empty");let i,s,a=e.columns,o=new dl(a,a),r=new Float64Array(a),c=new Float64Array(a),l=e,p=!1;if(p=!!t||e.isSymmetric(),p){for(i=0;i<a;i++)for(s=0;s<a;s++)o.set(i,s,l.get(i,s));!function(e,n,t,i){let s,a,o,r,c,l,p,u;for(c=0;c<e;c++)t[c]=i.get(e-1,c);for(r=e-1;r>0;r--){for(u=0,o=0,l=0;l<r;l++)u+=Math.abs(t[l]);if(0===u)for(n[r]=t[r-1],c=0;c<r;c++)t[c]=i.get(r-1,c),i.set(r,c,0),i.set(c,r,0);else{for(l=0;l<r;l++)t[l]/=u,o+=t[l]*t[l];for(s=t[r-1],a=Math.sqrt(o),s>0&&(a=-a),n[r]=u*a,o-=s*a,t[r-1]=s-a,c=0;c<r;c++)n[c]=0;for(c=0;c<r;c++){for(s=t[c],i.set(c,r,s),a=n[c]+i.get(c,c)*s,l=c+1;l<=r-1;l++)a+=i.get(l,c)*t[l],n[l]+=i.get(l,c)*s;n[c]=a}for(s=0,c=0;c<r;c++)n[c]/=o,s+=n[c]*t[c];for(p=s/(o+o),c=0;c<r;c++)n[c]-=p*t[c];for(c=0;c<r;c++){for(s=t[c],a=n[c],l=c;l<=r-1;l++)i.set(l,c,i.get(l,c)-(s*n[l]+a*t[l]));t[c]=i.get(r-1,c),i.set(r,c,0)}}t[r]=o}for(r=0;r<e-1;r++){if(i.set(e-1,r,i.get(r,r)),i.set(r,r,1),o=t[r+1],0!==o){for(l=0;l<=r;l++)t[l]=i.get(l,r+1)/o;for(c=0;c<=r;c++){for(a=0,l=0;l<=r;l++)a+=i.get(l,r+1)*i.get(l,c);for(l=0;l<=r;l++)i.set(l,c,i.get(l,c)-a*t[l])}}for(l=0;l<=r;l++)i.set(l,r+1,0)}for(c=0;c<e;c++)t[c]=i.get(e-1,c),i.set(e-1,c,0);i.set(e-1,e-1,1),n[0]=0}(a,c,r,o),function(e,n,t,i){let s,a,o,r,c,l,p,u,d,m,g,v,h,f,x,b;for(o=1;o<e;o++)n[o-1]=n[o];n[e-1]=0;let y=0,w=0,k=Number.EPSILON;for(l=0;l<e;l++){for(w=Math.max(w,Math.abs(t[l])+Math.abs(n[l])),p=l;p<e&&!(Math.abs(n[p])<=k*w);)p++;if(p>l)do{for(s=t[l],u=(t[l+1]-s)/(2*n[l]),d=yl(u,1),u<0&&(d=-d),t[l]=n[l]/(u+d),t[l+1]=n[l]*(u+d),m=t[l+1],a=s-t[l],o=l+2;o<e;o++)t[o]-=a;for(y+=a,u=t[p],g=1,v=g,h=g,f=n[l+1],x=0,b=0,o=p-1;o>=l;o--)for(h=v,v=g,b=x,s=g*n[o],a=g*u,d=yl(u,n[o]),n[o+1]=x*d,x=n[o]/d,g=u/d,u=g*t[o]-x*s,t[o+1]=a+x*(g*s+x*t[o]),c=0;c<e;c++)a=i.get(c,o+1),i.set(c,o+1,x*i.get(c,o)+g*a),i.set(c,o,g*i.get(c,o)-x*a);u=-x*b*h*f*n[l]/m,n[l]=x*u,t[l]=g*u}while(Math.abs(n[l])>k*w);t[l]=t[l]+y,n[l]=0}for(o=0;o<e-1;o++){for(c=o,u=t[o],r=o+1;r<e;r++)t[r]<u&&(c=r,u=t[r]);if(c!==o)for(t[c]=t[o],t[o]=u,r=0;r<e;r++)u=i.get(r,o),i.set(r,o,i.get(r,c)),i.set(r,c,u)}}(a,c,r,o)}else{let e=new dl(a,a),n=new Float64Array(a);for(s=0;s<a;s++)for(i=0;i<a;i++)e.set(i,s,l.get(i,s));!function(e,n,t,i){let s,a,o,r,c,l,p,u=0,d=e-1;for(l=u+1;l<=d-1;l++){for(p=0,r=l;r<=d;r++)p+=Math.abs(n.get(r,l-1));if(0!==p){for(o=0,r=d;r>=l;r--)t[r]=n.get(r,l-1)/p,o+=t[r]*t[r];for(a=Math.sqrt(o),t[l]>0&&(a=-a),o-=t[l]*a,t[l]=t[l]-a,c=l;c<e;c++){for(s=0,r=d;r>=l;r--)s+=t[r]*n.get(r,c);for(s/=o,r=l;r<=d;r++)n.set(r,c,n.get(r,c)-s*t[r])}for(r=0;r<=d;r++){for(s=0,c=d;c>=l;c--)s+=t[c]*n.get(r,c);for(s/=o,c=l;c<=d;c++)n.set(r,c,n.get(r,c)-s*t[c])}t[l]=p*t[l],n.set(l,l-1,p*a)}}for(r=0;r<e;r++)for(c=0;c<e;c++)i.set(r,c,r===c?1:0);for(l=d-1;l>=u+1;l--)if(0!==n.get(l,l-1)){for(r=l+1;r<=d;r++)t[r]=n.get(r,l-1);for(c=l;c<=d;c++){for(a=0,r=l;r<=d;r++)a+=t[r]*i.get(r,c);for(a=a/t[l]/n.get(l,l-1),r=l;r<=d;r++)i.set(r,c,i.get(r,c)+a*t[r])}}}(a,e,n,o),function(e,n,t,i,s){let a,o,r,c,l,p,u,d,m,g,v,h,f,x,b,y=e-1,w=0,k=e-1,S=Number.EPSILON,j=0,_=0,C=0,A=0,E=0,R=0,L=0,M=0;for(a=0;a<e;a++)for((a<w||a>k)&&(t[a]=s.get(a,a),n[a]=0),o=Math.max(a-1,0);o<e;o++)_+=Math.abs(s.get(a,o));for(;y>=w;){for(c=y;c>w&&(R=Math.abs(s.get(c-1,c-1))+Math.abs(s.get(c,c)),0===R&&(R=_),!(Math.abs(s.get(c,c-1))<S*R));)c--;if(c===y)s.set(y,y,s.get(y,y)+j),t[y]=s.get(y,y),n[y]=0,y--,M=0;else if(c===y-1){if(u=s.get(y,y-1)*s.get(y-1,y),C=(s.get(y-1,y-1)-s.get(y,y))/2,A=C*C+u,L=Math.sqrt(Math.abs(A)),s.set(y,y,s.get(y,y)+j),s.set(y-1,y-1,s.get(y-1,y-1)+j),d=s.get(y,y),A>=0){for(L=C>=0?C+L:C-L,t[y-1]=d+L,t[y]=t[y-1],0!==L&&(t[y]=d-u/L),n[y-1]=0,n[y]=0,d=s.get(y,y-1),R=Math.abs(d)+Math.abs(L),C=d/R,A=L/R,E=Math.sqrt(C*C+A*A),C/=E,A/=E,o=y-1;o<e;o++)L=s.get(y-1,o),s.set(y-1,o,A*L+C*s.get(y,o)),s.set(y,o,A*s.get(y,o)-C*L);for(a=0;a<=y;a++)L=s.get(a,y-1),s.set(a,y-1,A*L+C*s.get(a,y)),s.set(a,y,A*s.get(a,y)-C*L);for(a=w;a<=k;a++)L=i.get(a,y-1),i.set(a,y-1,A*L+C*i.get(a,y)),i.set(a,y,A*i.get(a,y)-C*L)}else t[y-1]=d+C,t[y]=d+C,n[y-1]=L,n[y]=-L;y-=2,M=0}else{if(d=s.get(y,y),m=0,u=0,c<y&&(m=s.get(y-1,y-1),u=s.get(y,y-1)*s.get(y-1,y)),10===M){for(j+=d,a=w;a<=y;a++)s.set(a,a,s.get(a,a)-d);R=Math.abs(s.get(y,y-1))+Math.abs(s.get(y-1,y-2)),d=m=.75*R,u=-.4375*R*R}if(30===M&&(R=(m-d)/2,R=R*R+u,R>0)){for(R=Math.sqrt(R),m<d&&(R=-R),R=d-u/((m-d)/2+R),a=w;a<=y;a++)s.set(a,a,s.get(a,a)-R);j+=R,d=m=u=.964}for(M+=1,l=y-2;l>=c&&(L=s.get(l,l),E=d-L,R=m-L,C=(E*R-u)/s.get(l+1,l)+s.get(l,l+1),A=s.get(l+1,l+1)-L-E-R,E=s.get(l+2,l+1),R=Math.abs(C)+Math.abs(A)+Math.abs(E),C/=R,A/=R,E/=R,l!==c)&&!(Math.abs(s.get(l,l-1))*(Math.abs(A)+Math.abs(E))<S*(Math.abs(C)*(Math.abs(s.get(l-1,l-1))+Math.abs(L)+Math.abs(s.get(l+1,l+1)))));)l--;for(a=l+2;a<=y;a++)s.set(a,a-2,0),a>l+2&&s.set(a,a-3,0);for(r=l;r<=y-1&&(x=r!==y-1,r!==l&&(C=s.get(r,r-1),A=s.get(r+1,r-1),E=x?s.get(r+2,r-1):0,d=Math.abs(C)+Math.abs(A)+Math.abs(E),0!==d&&(C/=d,A/=d,E/=d)),0!==d);r++)if(R=Math.sqrt(C*C+A*A+E*E),C<0&&(R=-R),0!==R){for(r!==l?s.set(r,r-1,-R*d):c!==l&&s.set(r,r-1,-s.get(r,r-1)),C+=R,d=C/R,m=A/R,L=E/R,A/=C,E/=C,o=r;o<e;o++)C=s.get(r,o)+A*s.get(r+1,o),x&&(C+=E*s.get(r+2,o),s.set(r+2,o,s.get(r+2,o)-C*L)),s.set(r,o,s.get(r,o)-C*d),s.set(r+1,o,s.get(r+1,o)-C*m);for(a=0;a<=Math.min(y,r+3);a++)C=d*s.get(a,r)+m*s.get(a,r+1),x&&(C+=L*s.get(a,r+2),s.set(a,r+2,s.get(a,r+2)-C*E)),s.set(a,r,s.get(a,r)-C),s.set(a,r+1,s.get(a,r+1)-C*A);for(a=w;a<=k;a++)C=d*i.get(a,r)+m*i.get(a,r+1),x&&(C+=L*i.get(a,r+2),i.set(a,r+2,i.get(a,r+2)-C*E)),i.set(a,r,i.get(a,r)-C),i.set(a,r+1,i.get(a,r+1)-C*A)}}}if(0===_)return;for(y=e-1;y>=0;y--)if(C=t[y],A=n[y],0===A)for(c=y,s.set(y,y,1),a=y-1;a>=0;a--){for(u=s.get(a,a)-C,E=0,o=c;o<=y;o++)E+=s.get(a,o)*s.get(o,y);if(n[a]<0)L=u,R=E;else if(c=a,0===n[a]?s.set(a,y,0!==u?-E/u:-E/(S*_)):(d=s.get(a,a+1),m=s.get(a+1,a),A=(t[a]-C)*(t[a]-C)+n[a]*n[a],p=(d*R-L*E)/A,s.set(a,y,p),s.set(a+1,y,Math.abs(d)>Math.abs(L)?(-E-u*p)/d:(-R-m*p)/L)),p=Math.abs(s.get(a,y)),S*p*p>1)for(o=a;o<=y;o++)s.set(o,y,s.get(o,y)/p)}else if(A<0)for(c=y-1,Math.abs(s.get(y,y-1))>Math.abs(s.get(y-1,y))?(s.set(y-1,y-1,A/s.get(y,y-1)),s.set(y-1,y,-(s.get(y,y)-C)/s.get(y,y-1))):(b=Al(0,-s.get(y-1,y),s.get(y-1,y-1)-C,A),s.set(y-1,y-1,b[0]),s.set(y-1,y,b[1])),s.set(y,y-1,0),s.set(y,y,1),a=y-2;a>=0;a--){for(g=0,v=0,o=c;o<=y;o++)g+=s.get(a,o)*s.get(o,y-1),v+=s.get(a,o)*s.get(o,y);if(u=s.get(a,a)-C,n[a]<0)L=u,E=g,R=v;else if(c=a,0===n[a]?(b=Al(-g,-v,u,A),s.set(a,y-1,b[0]),s.set(a,y,b[1])):(d=s.get(a,a+1),m=s.get(a+1,a),h=(t[a]-C)*(t[a]-C)+n[a]*n[a]-A*A,f=2*(t[a]-C)*A,0===h&&0===f&&(h=S*_*(Math.abs(u)+Math.abs(A)+Math.abs(d)+Math.abs(m)+Math.abs(L))),b=Al(d*E-L*g+A*v,d*R-L*v-A*g,h,f),s.set(a,y-1,b[0]),s.set(a,y,b[1]),Math.abs(d)>Math.abs(L)+Math.abs(A)?(s.set(a+1,y-1,(-g-u*s.get(a,y-1)+A*s.get(a,y))/d),s.set(a+1,y,(-v-u*s.get(a,y)-A*s.get(a,y-1))/d)):(b=Al(-E-m*s.get(a,y-1),-R-m*s.get(a,y),L,A),s.set(a+1,y-1,b[0]),s.set(a+1,y,b[1]))),p=Math.max(Math.abs(s.get(a,y-1)),Math.abs(s.get(a,y))),S*p*p>1)for(o=a;o<=y;o++)s.set(o,y-1,s.get(o,y-1)/p),s.set(o,y,s.get(o,y)/p)}for(a=0;a<e;a++)if(a<w||a>k)for(o=a;o<e;o++)i.set(a,o,s.get(a,o));for(o=e-1;o>=w;o--)for(a=w;a<=k;a++){for(L=0,r=w;r<=Math.min(o,k);r++)L+=i.get(a,r)*s.get(r,o);i.set(a,o,L)}}(a,c,r,o,e)}this.n=a,this.e=c,this.d=r,this.V=o}get realEigenvalues(){return Array.from(this.d)}get imaginaryEigenvalues(){return Array.from(this.e)}get eigenvectorMatrix(){return this.V}get diagonalMatrix(){let e,n,t=this.n,i=this.e,s=this.d,a=new dl(t,t);for(e=0;e<t;e++){for(n=0;n<t;n++)a.set(e,n,0);a.set(e,e,s[e]),i[e]>0?a.set(e,e+1,i[e]):i[e]<0&&a.set(e,e-1,i[e])}return a}}function Al(e,n,t,i){let s,a;return Math.abs(t)>Math.abs(i)?(s=i/t,a=t+s*i,[(e+s*n)/a,(n-s*e)/a]):(s=t/i,a=i+s*t,[(s*e+n)/a,(s*n-e)/a])}class El{constructor(e){if(!(e=xl.checkMatrix(e)).isSymmetric())throw new Error("Matrix is not symmetric");let n,t,i,s=e,a=s.rows,o=new dl(a,a),r=!0;for(t=0;t<a;t++){let e=0;for(i=0;i<t;i++){let a=0;for(n=0;n<i;n++)a+=o.get(i,n)*o.get(t,n);a=(s.get(t,i)-a)/o.get(i,i),o.set(t,i,a),e+=a*a}for(e=s.get(t,t)-e,r&=e>0,o.set(t,t,Math.sqrt(Math.max(e,0))),i=t+1;i<a;i++)o.set(t,i,0)}this.L=o,this.positiveDefinite=Boolean(r)}isPositiveDefinite(){return this.positiveDefinite}solve(e){e=xl.checkMatrix(e);let n=this.L,t=n.rows;if(e.rows!==t)throw new Error("Matrix dimensions do not match");if(!1===this.isPositiveDefinite())throw new Error("Matrix is not positive definite");let i,s,a,o=e.columns,r=e.clone();for(a=0;a<t;a++)for(s=0;s<o;s++){for(i=0;i<a;i++)r.set(a,s,r.get(a,s)-r.get(i,s)*n.get(a,i));r.set(a,s,r.get(a,s)/n.get(a,a))}for(a=t-1;a>=0;a--)for(s=0;s<o;s++){for(i=a+1;i<t;i++)r.set(a,s,r.get(a,s)-r.get(i,s)*n.get(i,a));r.set(a,s,r.get(a,s)/n.get(a,a))}return r}get lowerTriangularMatrix(){return this.L}}class Rl{constructor(e,n={}){e=xl.checkMatrix(e);let{Y:t}=n;const{scaleScores:i=!1,maxIterations:s=1e3,terminationCriteria:a=1e-10}=n;let o;if(t){if(t=Yc.isAnyArray(t)&&"number"==typeof t[0]?dl.columnVector(t):xl.checkMatrix(t),t.rows!==e.rows)throw new Error("Y should have the same number of rows as X");o=t.getColumnVector(0)}else o=e.getColumnVector(0);let r,c,l,p,u=1;for(let n=0;n<s&&u>a;n++)l=e.transpose().mmul(o).div(o.transpose().mmul(o).get(0,0)),l=l.div(l.norm()),r=e.mmul(l).div(l.transpose().mmul(l).get(0,0)),n>0&&(u=r.clone().sub(p).pow(2).sum()),p=r.clone(),t?(c=t.transpose().mmul(r).div(r.transpose().mmul(r).get(0,0)),c=c.div(c.norm()),o=t.mmul(c).div(c.transpose().mmul(c).get(0,0))):o=r;if(t){let n=e.transpose().mmul(r).div(r.transpose().mmul(r).get(0,0));n=n.div(n.norm());let i=e.clone().sub(r.clone().mmul(n.transpose())),s=o.transpose().mmul(r).div(r.transpose().mmul(r).get(0,0)),a=t.clone().sub(r.clone().mulS(s.get(0,0)).mmul(c.transpose()));this.t=r,this.p=n.transpose(),this.w=l.transpose(),this.q=c,this.u=o,this.s=r.transpose().mmul(r),this.xResidual=i,this.yResidual=a,this.betas=s}else this.w=l.transpose(),this.s=r.transpose().mmul(r).sqrt(),this.t=i?r.clone().div(this.s.get(0,0)):r,this.xResidual=e.sub(r.mmul(l.transpose()))}}Bc.AbstractMatrix=pl,Bc.CHO=El,Bc.CholeskyDecomposition=El,Bc.DistanceMatrix=gl,Bc.EVD=Cl,Bc.EigenvalueDecomposition=Cl,Bc.LU=bl,Bc.LuDecomposition=bl;var Ll=Bc.Matrix=dl;Bc.MatrixColumnSelectionView=class extends vl{constructor(e,n){al(e,n),super(e,e.rows,n.length),this.columnIndices=n}set(e,n,t){return this.matrix.set(e,this.columnIndices[n],t),this}get(e,n){return this.matrix.get(e,this.columnIndices[n])}},Bc.MatrixColumnView=class extends vl{constructor(e,n){nl(e,n),super(e,e.rows,1),this.column=n}set(e,n,t){return this.matrix.set(e,this.column,t),this}get(e){return this.matrix.get(e,this.column)}},Bc.MatrixFlipColumnView=class extends vl{constructor(e){super(e,e.rows,e.columns)}set(e,n,t){return this.matrix.set(e,this.columns-n-1,t),this}get(e,n){return this.matrix.get(e,this.columns-n-1)}},Bc.MatrixFlipRowView=class extends vl{constructor(e){super(e,e.rows,e.columns)}set(e,n,t){return this.matrix.set(this.rows-e-1,n,t),this}get(e,n){return this.matrix.get(this.rows-e-1,n)}},Bc.MatrixRowSelectionView=class extends vl{constructor(e,n){sl(e,n),super(e,n.length,e.columns),this.rowIndices=n}set(e,n,t){return this.matrix.set(this.rowIndices[e],n,t),this}get(e,n){return this.matrix.get(this.rowIndices[e],n)}},Bc.MatrixRowView=class extends vl{constructor(e,n){el(e,n),super(e,1,e.columns),this.row=n}set(e,n,t){return this.matrix.set(this.row,n,t),this}get(e,n){return this.matrix.get(this.row,n)}},Bc.MatrixSelectionView=hl,Bc.MatrixSubView=class extends vl{constructor(e,n,t,i,s){ol(e,n,t,i,s),super(e,t-n+1,s-i+1),this.startRow=n,this.startColumn=i}set(e,n,t){return this.matrix.set(this.startRow+e,this.startColumn+n,t),this}get(e,n){return this.matrix.get(this.startRow+e,this.startColumn+n)}};var Ml=Bc.MatrixTransposeView=class extends vl{constructor(e){super(e,e.columns,e.rows)}set(e,n,t){return this.matrix.set(n,e,t),this}get(e,n){return this.matrix.get(n,e)}};Bc.NIPALS=Rl,Bc.Nipals=Rl,Bc.QR=wl,Bc.QrDecomposition=wl,Bc.SVD=kl,Bc.SingularValueDecomposition=kl,Bc.SymmetricMatrix=ml,Bc.WrapperMatrix1D=fl,Bc.WrapperMatrix2D=xl,Bc.correlation=function(e,n=e,t={}){e=new dl(e);let i=!1;if("object"!=typeof n||dl.isMatrix(n)||Yc.isAnyArray(n)?n=new dl(n):(t=n,n=e,i=!0),e.rows!==n.rows)throw new TypeError("Both matrices must have the same number of rows");const{center:s=!0,scale:a=!0}=t;s&&(e.center("column"),i||n.center("column")),a&&(e.scale("column"),i||n.scale("column"));const o=e.standardDeviation("column",{unbiased:!0}),r=i?o:n.standardDeviation("column",{unbiased:!0}),c=e.transpose().mmul(n);for(let n=0;n<c.rows;n++)for(let t=0;t<c.columns;t++)c.set(n,t,c.get(n,t)*(1/(o[n]*r[t]))*(1/(e.rows-1)));return c},Bc.covariance=function(e,n=e,t={}){e=new dl(e);let i=!1;if("object"!=typeof n||dl.isMatrix(n)||Yc.isAnyArray(n)?n=new dl(n):(t=n,n=e,i=!0),e.rows!==n.rows)throw new TypeError("Both matrices must have the same number of rows");const{center:s=!0}=t;s&&(e=e.center("column"),i||(n=n.center("column")));const a=e.transpose().mmul(n);for(let n=0;n<a.rows;n++)for(let t=0;t<a.columns;t++)a.set(n,t,a.get(n,t)*(1/(e.rows-1)));return a};var Il=Bc.default=dl;Bc.determinant=function e(n){if((n=dl.checkMatrix(n)).isSquare()){if(0===n.columns)return 1;let t,i,s,a;if(2===n.columns)return t=n.get(0,0),i=n.get(0,1),s=n.get(1,0),a=n.get(1,1),t*a-i*s;if(3===n.columns){let a,o,r;return a=new hl(n,[1,2],[1,2]),o=new hl(n,[1,2],[0,2]),r=new hl(n,[1,2],[0,1]),t=n.get(0,0),i=n.get(0,1),s=n.get(0,2),t*e(a)-i*e(o)+s*e(r)}return new bl(n).determinant}throw Error("determinant can only be calculated for a square matrix")},Bc.inverse=function(e,n=!1){return e=xl.checkMatrix(e),n?new kl(e).inverse():Sl(e,dl.eye(e.rows))},Bc.linearDependencies=function(e,n={}){const{thresholdValue:t=1e-9,thresholdError:i=1e-9}=n;let s=(e=dl.checkMatrix(e)).rows,a=new dl(s,s);for(let n=0;n<s;n++){let o=dl.columnVector(e.getRow(n)),r=e.subMatrixRow(jl(s,n)).transpose(),c=new kl(r).solve(o),l=dl.sub(o,r.mmul(c)).abs().max();a.setRow(n,_l(l,c,n,t,i))}return a},Bc.pseudoInverse=function(e,n=Number.EPSILON){if((e=dl.checkMatrix(e)).isEmpty())return e.transpose();let t=new kl(e,{autoTranspose:!0}),i=t.leftSingularVectors,s=t.rightSingularVectors,a=t.diagonal;for(let e=0;e<a.length;e++)Math.abs(a[e])>n?a[e]=1/a[e]:a[e]=0;return s.mmul(dl.diag(a).mmul(i.transpose()))};var Dl=Bc.solve=Sl;Bc.wrap=function(e,n){if(Yc.isAnyArray(e))return e[0]&&Yc.isAnyArray(e[0])?new xl(e):new fl(e,n);throw new Error("the argument is not an array")};const Tl=Ll,Ol=Ml;Il.Matrix&&Il.Matrix;const Pl=Dl;function Fl(e,n){if(!Hc(e)||!Hc(n))throw new TypeError("x and y must be arrays");if(e.length!==n.length)throw new RangeError("x and y arrays must have the same length")}class Nl{constructor(){if(new.target===Nl)throw new Error("BaseRegression must be subclassed")}predict(e){if("number"==typeof e)return this._predict(e);if(Hc(e)){const n=[];for(const t of e)n.push(this._predict(t));return n}throw new TypeError("x must be a number or array")}_predict(e){throw new Error("_predict must be implemented")}train(){}toString(e){return""}toLaTeX(e){return""}score(e,n){Fl(e,n);const t=e.length,i=new Array(t);for(let n=0;n<t;n++)i[n]=this._predict(e[n]);let s=0,a=0,o=0,r=0,c=0,l=0,p=0;for(let e=0;e<t;e++)s+=i[e],a+=n[e],c+=i[e]*i[e],l+=n[e]*n[e],p+=i[e]*n[e],0!==n[e]&&(o+=(n[e]-i[e])*(n[e]-i[e])/n[e]),r+=(n[e]-i[e])*(n[e]-i[e]);const u=(t*p-s*a)/Math.sqrt((t*c-s*s)*(t*l-a*a));return{r:u,r2:u*u,chi2:o,rmsd:Math.sqrt(r/t)}}}function ql(e,n){return e<0?(e=0-e,"number"==typeof n?`- ${e.toPrecision(n)}`:`- ${e.toString()}`):"number"==typeof n?e.toPrecision(n):e.toString()}class zl extends Nl{constructor(e,n,t,i={}){if(super(),!0===e)this.degree=n.degree,this.powers=n.powers,this.coefficients=n.coefficients;else{Fl(e,n);const s=function(e,n,t,i={}){const s=e.length;let{interceptAtZero:a=!1}=i,o=[];if(Array.isArray(t))o=t,a=!1;else if("number"==typeof t)if(a){o=new Array(t);for(let e=0;e<t;e++)o[e]=e+1}else{o=new Array(t+1);for(let e=0;e<=t;e++)o[e]=e}const r=o.length,c=new Tl(s,r),l=new Tl([n]);for(let n=0;n<r;n++)for(let t=0;t<s;t++)0===o[n]?c.set(t,n,1):c.set(t,n,e[t]**o[n]);const p=new Ol(c),u=p.mmul(c),d=p.mmul(new Ol(l));return{coefficients:Pl(u,d).to1DArray(),degree:Math.max(...o),powers:o}}(e,n,t,i);this.degree=s.degree,this.powers=s.powers,this.coefficients=s.coefficients}}_predict(e){let n=0;for(let t=0;t<this.powers.length;t++)n+=this.coefficients[t]*e**this.powers[t];return n}toJSON(){return{name:"polynomialRegression",degree:this.degree,powers:this.powers,coefficients:this.coefficients}}toString(e){return this._toFormula(e,!1)}toLaTeX(e){return this._toFormula(e,!0)}_toFormula(e,n){let t="^",i="",s=" * ";n&&(t="^{",i="}",s="");let a="",o="";for(let n=0;n<this.coefficients.length;n++)o="",0!==this.coefficients[n]&&(o=0===this.powers[n]?ql(this.coefficients[n],e):1===this.powers[n]?`${ql(this.coefficients[n],e)+s}x`:`${ql(this.coefficients[n],e)+s}x${t}${this.powers[n]}${i}`,this.coefficients[n]>0&&n!==this.coefficients.length-1?o=` + ${o}`:n!==this.coefficients.length-1&&(o=` ${o}`)),a=o+a;return a.startsWith("+")&&(a=a.slice(1)),`f(x) = ${a}`}static load(e){if("polynomialRegression"!==e.name)throw new TypeError("not a polynomial regression model");return new zl(!0,e)}}async function Vl(e){var n=new Worker(new URL("worker.063fe12b.js",import.meta.url),{type:"module"});window.myWorker=n;var t='<!doctype html>\n<html lang="en">\n <head>\n <link\n href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css"\n rel="stylesheet"\n integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3"\n crossorigin="anonymous"\n />\n <meta charset="UTF-8" />\n <meta name="viewport" content="width=device-width, initial-scale=1.0" />\n <script src="https://cdn.jsdelivr.net/npm/onnxjs/dist/onnx.min.js"><\/script>\n </head>\n\n <style>\n body {\n margin: 0;\n min-height: 100vh; /* Ensure body takes the full viewport height */\n display: flex; /* Enable Flexbox */\n justify-content: center; /* Center content horizontally */\n align-items: center; /* Center content vertically */\n font-family: sans-serif;\n }\n\n stim {\n position: absolute;\n height: auto;\n cursor: pointer;\n }\n\n #instruction {\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n }\n\n #confirmContainer {\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n }\n\n #stimulus {\n position: absolute;\n width: 25px;\n height: 25px;\n background-color: #1e90ff;\n border-radius: 50%;\n display: block; /* Initially hidden */\n transform: translate(-50%, -50%);\n }\n\n #headCanvas {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n\n #canvas-container {\n position: relative;\n width: 300px;\n height: 300px;\n top: 30px;\n margin: 0 auto;\n }\n </style>\n\n <body>\n \x3c!-- Center Instructions Panel --\x3e\n <div id="calibrationContentArea">\n <div class="row gap-2" id="instruction">\n \n </div>\n </div> \n\n <div id="stimulus"></div>\n <div id="canvas-container" style="display: none">\n <canvas\n id="headCanvas"\n class="frame"\n style="position: relative; display: none"\n ></canvas>\n </div>\n\n \x3c!-- Confirm Button --\x3e\n <div class="row gap-2" id="confirmContainer" style="display: none">\n <div class="card-body" style="text-align: center">\n <h3>Calibration complete!</h3>\n <button type="button" class="btn btn-primary" id="confirmButton">\n Continue\n </button>\n </div>\n </div>\n\n <div class="panel-block" style="display: block" ;>\n <video class="inputVideo" style="display: none"></video>\n </div>\n\n <audio autoplay id="voiceover"></audio>\n\n <script data-dynamic>\n\n // ----------- required -------------------\n function runAfterEveryFrame(output) {\n if (recordEyeMovements) {\n _gridCoordinates.push({\n x: parseFloat(stimulus.style.left),\n y: parseFloat(stimulus.style.top),\n });\n _eyeCoordinates.push({\n x: output.output.cpuData[0] * 100 - 50,\n y: output.output.cpuData[1] * 100,\n });\n _calibrationData.push(calibrationData);\n let time = new Date().getTime();\n _timeData.push(time);\n }\n }\n\n function pageCompleted() {\n continueProcessing = false;\n recordEyeMovements = false;\n const event = new Event("pageComplete");\n document.dispatchEvent(event);\n }\n\n var recordEyeMovements = false;\n var calibrationData = 1;\n var continueProcessing = true;\n\n var deviceConfig = store.session.get("deviceConfig");\n var _gridCoordinates = [];\n var _parentDir = store.session.get("id");\n var _videoURL = "";\n\n var IMAGE_SIZE = 640;\n var upperbound_x = 96;\n var lowerbound_x = 2;\n var upperbound_y = 96;\n var lowerbound_y = 2;\n var stimulus = document.getElementById("stimulus");\n var x = 0;\n var y = 0;\n var counter = 0;\n var incX = 0.15 * 2;\n var incY = 0.02 * 2;\n var timeArray = [];\n var xArray = [];\n var yArray = [];\n var _eyeCoordinates = [];\n var _calibrationData = [];\n var _timeData = [];\n var fixationStimulus_x = [30, 50, 70];\n var fixationStimulus_y = [20, 40, 60];\n\n async function startTest() {\n // Wait for video to be ready\n await new Promise((resolve) => setTimeout(resolve, 500)); // 0.5 second\n await runInference();\n openFullscreen();\n updateCountdown(initStimulus);\n }\n\n async function initStimulus() {\n document.getElementById("stimulus").style.display = "block";\n await startRecording();\n recordEyeMovements = true;\n moveStimulus();\n }\n\n async function moveStimulus() {\n counter = counter + 1;\n if (x > upperbound_x) {\n incX = -0.15 * 2;\n } else if (x < lowerbound_x) {\n incX = 0.15 * 2;\n }\n\n if (y > upperbound_y) {\n incY = -0.02 * 2;\n } else if (y < lowerbound_y) {\n incY = 0.02 * 2;\n }\n x = x + incX;\n y = y + incY;\n let time = new Date().getTime();\n\n timeArray.push(time);\n xArray.push(x);\n yArray.push(y);\n\n stimulus.style.left = `${x}%`; // Adjust for half of the cell width\n stimulus.style.top = `${y}%`; // Adjust for half of the cell height\n\n if (y < 75) {\n setTimeout(moveStimulus, 10);\n } else {\n calibrationData = 0;\n\n await stopRecording();\n pageCompleted();\n // setTimeout(fixationStimulus, 10);\n }\n }\n\n async function fixationStimulus() {\n for (let x of fixationStimulus_x) {\n for (let y of fixationStimulus_y) {\n let time = new Date().getTime();\n timeArray.push(time);\n xArray.push(x);\n yArray.push(y);\n\n stimulus.style.left = `${x}%`; // Adjust for half of the cell width\n stimulus.style.top = `${y}%`; // Adjust for half of the cell height\n\n // Wait for 4 seconds before moving to the next position\n await new Promise((resolve) => setTimeout(resolve, 4000));\n }\n }\n\n await stopRecording();\n pageCompleted();\n }\n <\/script>\n </body>\n</html>\n';"short"===e.firekit.task.variantParams.calibrationType&&(t='<!doctype html>\n<html lang="en">\n <head>\n <link\n href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css"\n rel="stylesheet"\n integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3"\n crossorigin="anonymous"\n />\n <meta charset="UTF-8" />\n <meta name="viewport" content="width=device-width, initial-scale=1.0" />\n <script src="https://cdn.jsdelivr.net/npm/onnxjs/dist/onnx.min.js"><\/script>\n </head>\n\n <style>\n body {\n margin: 0;\n min-height: 100vh; /* Ensure body takes the full viewport height */\n display: flex; /* Enable Flexbox */\n justify-content: center; /* Center content horizontally */\n align-items: center; /* Center content vertically */\n font-family: sans-serif;\n }\n\n\n .bubble {\n position: absolute;\n border-radius: 50%;\n animation: spin 2s linear infinite;\n }\n\n\n .piece {\n width: 10px;\n height: 10px;\n background-color: inherit;\n border-radius: 50%;\n position: absolute;\n transform: translate(-50%, -50%);\n opacity: 0;\n }\n\n @keyframes spin {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg); /* Constant speed */\n }\n }\n\n .spin {\n animation: spin 2s linear infinite;\n }\n\n stim {\n position: absolute;\n height: auto;\n cursor: pointer;\n }\n\n #instruction {\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n }\n\n #confirmContainer {\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n }\n\n #stimulus {\n position: absolute;\n /* animation: pulsate 1s infinite; */\n /* animation: spin 2s linear infinite; */\n width: 25px;\n height: 50px;\n background-color: #1e90ff;\n border-radius: 50%;\n display: block; /* Initially hidden */\n transform: translate(-50%, -50%);\n visibility: hidden;\n }\n\n #headCanvas {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n\n #canvas-container {\n position: relative;\n width: 300px;\n height: 300px;\n top: 30px;\n margin: 0 auto;\n }\n\n @keyframes pulsate {\n 0% {\n transform: scale(1) translate(-50%, -50%);\n }\n 50% {\n transform: scale(1.2) translate(-50%, -50%);\n }\n 100% {\n transform: scale(1) translate(-50%, -50%);\n }\n }\n\n @keyframes burst {\n 0% {\n transform: scale(1);\n opacity: 1;\n }\n 100% {\n transform: translate(var(--dx), var(--dy)) scale(0.5);\n opacity: 0;\n }\n }\n\n </style>\n\n <body>\n \x3c!-- Center Instructions Panel --\x3e\n <div id="calibrationContentArea">\n <div class="row gap-2" id="instruction">\n </div>\n </div> \n\n <div id="stimulus" class="pulsating-disc"></div>\n <div id="canvas-container" style="display: none">\n <canvas\n id="headCanvas"\n class="frame"\n style="position: relative; display: none"\n ></canvas>\n </div>\n\n \x3c!-- Confirm Button --\x3e\n <div class="row gap-2" id="confirmContainer" style="display: none">\n <div class="card-body" style="text-align: center">\n <h3>Calibration complete!</h3>\n <button type="button" class="btn btn-primary" id="confirmButton">\n Continue\n </button>\n </div>\n </div>\n\n <div class="panel-block" style="display: block" ;>\n <video class="inputVideo" style="display: none"></video>\n </div>\n\n <audio autoplay id="voiceover"></audio>\n\n <script data-dynamic>\n\n // ----------- required -------------------\n function runAfterEveryFrame(output) {\n if (recordEyeMovements) {\n _gridCoordinates.push({\n x: parseFloat(stimulus.style.left),\n y: parseFloat(stimulus.style.top),\n });\n _eyeCoordinates.push({\n x: output.output.cpuData[0] * 100 - 50,\n y: output.output.cpuData[1] * 100,\n });\n _calibrationData.push(calibrationData);\n let time = new Date().getTime();\n _timeData.push(time);\n }\n }\n \n\n function pageCompleted() {\n continueProcessing = false;\n recordEyeMovements = false;\n const event = new Event("pageComplete");\n document.dispatchEvent(event);\n }\n\n var current_viewingDistance = 0;\n var recordEyeMovements = false;\n var calibrationData = 1;\n var continueProcessing = true;\n var deviceConfig = store.session.get("deviceConfig");\n var _gridCoordinates = [];\n var _parentDir = store.session.get("id");\n var _videoURL = "";\n\n var IMAGE_SIZE = 640;\n var upperbound_x = 96;\n var lowerbound_x = 2;\n var upperbound_y = 96;\n var lowerbound_y = 2;\n var stimulus = document.getElementById("stimulus");\n var x = 0;\n var y = 0;\n var counter = 0;\n var incX = 0.15 * 2;\n var incY = 0.02 * 2;\n var timeArray = [];\n var xArray = [];\n var yArray = [];\n var _eyeCoordinates = [];\n var _calibrationData = [];\n var _timeData = [];\n var fixationStimulus_x = [30, 50, 70];\n var fixationStimulus_y = [20, 40, 60];\n\n async function startTest() {\n // Wait for video to be ready\n await new Promise((resolve) => setTimeout(resolve, 500)); // 0.5 second\n await runInference();\n openFullscreen();\n stimulus.classList.add(\'spin\')\n updateCountdown(initStimulus);\n }\n\n async function initStimulus() {\n document.getElementById("stimulus").style.display = "block";\n await startRecording();\n recordEyeMovements = true;\n stimulus.style.visibility = \'visible\';\n moveStimulus();\n }\n\n\n // Function to create the burst effect\n function createBurstEffect(x,y,size=50) {\n const numPieces = 8; // Number of pieces\n // Play the burst audio\n const burstAudio = new Audio(\'https://eyetrackingdata.blob.core.windows.net/public/Audios/feedbackCorrect.mp3\'); // Replace with your audio file path\n burstAudio.play();\n for (let i = 0; i < numPieces; i++) {\n const piece = document.createElement(\'div\');\n piece.style.position = \'absolute\';\n piece.style.transform = \'translate(-50%, -50%)\';\n piece.classList.add(\'piece\');\n piece.style.backgroundColor = \'#1e90ff\';\n piece.style.left = `${x + size / 2 - 5}px`;\n piece.style.top = `${y + size / 4 - 5}px`;\n\n // Random direction for each piece\n const angle = (i / numPieces) * Math.PI * 2;\n const dx = Math.cos(angle) * size + \'px\';\n const dy = Math.sin(angle) * size + \'px\';\n\n // Set custom properties for animation\n piece.style.setProperty(\'--dx\', dx);\n piece.style.setProperty(\'--dy\', dy);\n piece.style.animation = `burst 0.8s ease-out forwards`;\n document.body.appendChild(piece);\n // Remove the piece after animation ends\n // Hide the element\n stimulus.style.visibility = \'hidden\';\n setTimeout(() => piece.remove(), 800);\n\n }\n // Show the element again after 200ms\n setTimeout(() => {\n stimulus.style.visibility = \'visible\';\n stimulus.classList.add(\'spin\')\n // setTimeout(() => {\n // stimulus.classList.add(\'spin\'); // Add the spin class after 500ms\n // }, 200);\n }, 800); // 200ms delayue)\n\n \n // Remove the bubble after bursting\n }\n\n // Define the locations with repetition to cover 3 seconds at 10ms intervals\n var locations = [\n { x: 25, y: 25 }, // Location 1 (25,25)\n { x: 75, y: 25 }, // Location 2 (25,25)\n { x: 25, y: 65 }, // Location 3 (25,25)\n { x: 75, y: 65 }, // Location 4 (25,25)\n // { x: 50, y: 50 }, // Location 5 (25,50)\n ];\n\n // Create an array that repeats each location enough times to cover 3 seconds at 10ms intervals\n var sequence = [];\n locations.forEach((loc) => {\n for (let i = 0; i < 6; i++) { // 6 iterations for 3 seconds at 500ms intervals\n sequence.push(loc);\n }\n });\n\n async function moveStimulus() {\n if (counter < (sequence.length-1)) {\n let point = document.getElementById("point");\n stimulus.style.left = `${sequence[counter].x}%`; // Adjust for half of the cell width\n stimulus.style.top = `${sequence[counter].y}%`; // Adjust for half of the cell height\n \n counter += 1;\n // Toggle recording of eye movements\n if (counter % 6 <= 1) { // First 500ms\n if (counter>2 & counter % 6 == 0){\n var leftInPixels = (sequence[counter-1].x / 100) * document.body.offsetWidth;;\n var topInPixels = (sequence[counter-1].y / 100) * document.body.offsetHeight;;\n if (stimulus.classList.contains(\'spin\')) {\n stimulus.classList.remove(\'spin\');\n }\n createBurstEffect(leftInPixels-12.5,topInPixels+12.5)\n }\n recordEyeMovements = false;\n } else {\n recordEyeMovements = true;\n }\n // console.log(\'counter\',counter,counter%6,recordEyeMovements,stimulus.style.left ,`${sequence[counter].x}%`)\n\n setTimeout(moveStimulus, 500); // Call this function every 500ms\n } else {\n calibrationData = 0;\n await stopRecording();\n continueProcessing = false;\n recordEyeMovements = false;\n var leftInPixels = (sequence[counter-1].x / 100) * document.body.offsetWidth;;\n var topInPixels = (sequence[counter-1].y / 100) * document.body.offsetHeight;;\n createBurstEffect(leftInPixels-12.5,topInPixels+12.5)\n setTimeout(() => pageCompleted(), 500); // Proper callback structure\n }\n }\n // async function moveStimulus() {\n // counter = counter + 1;\n // if (x > upperbound_x) {\n // incX = -0.15 * 2;\n // } else if (x < lowerbound_x) {\n // incX = 0.15 * 2;\n // }\n\n // if (y > upperbound_y) {\n // incY = -0.02 * 2;\n // } else if (y < lowerbound_y) {\n // incY = 0.02 * 2;\n // }\n // x = x + incX;\n // y = y + incY;\n // let time = new Date().getTime();\n\n // timeArray.push(time);\n // xArray.push(x);\n // yArray.push(y);\n\n // stimulus.style.left = `${x}%`; // Adjust for half of the cell width\n // stimulus.style.top = `${y}%`; // Adjust for half of the cell height\n\n // if (y < 75) {\n // setTimeout(moveStimulus, 10);\n // } else {\n // calibrationData = 0;\n\n // await stopRecording();\n // pageCompleted();\n // // setTimeout(fixationStimulus, 10);\n // }\n // }\n\n async function fixationStimulus() {\n for (let x of fixationStimulus_x) {\n for (let y of fixationStimulus_y) {\n let time = new Date().getTime();\n timeArray.push(time);\n xArray.push(x);\n yArray.push(y);\n\n stimulus.style.left = `${x}%`; // Adjust for half of the cell width\n stimulus.style.top = `${y}%`; // Adjust for half of the cell height\n\n // Wait for 4 seconds before moving to the next position\n await new Promise((resolve) => setTimeout(resolve, 4000));\n }\n }\n\n await stopRecording();\n pageCompleted();\n }\n <\/script>\n </body>\n</html>\n');const i=document.createElement("div");i.innerHTML=dc;const s=document.createElement("div");s.style.position="fixed",s.style.top="0",s.style.left="0",s.style.width="100%",s.style.height="100%",qr(pc),qr(Vc),s.innerHTML=t;const a=Hr;document.body.appendChild(s),await Fr(s),await Fr(i),Nr(i),Nr(s),async function(e){initEyeTracking(!1);try{const e=o.session.get("deviceConfig"),n=e.bEyeTracking,t=e.storeVideo;await giveAccess(n,t)}catch(e){console.error("Camera access failed:",e)}startTest()}(),Ur(be.store.data[be.language].translation),await new Promise((n=>{document.addEventListener("pageComplete",(async()=>{s.innerHTML=a,Br(s);var t=_eyeCoordinates.filter(((e,n)=>1==_calibrationData[n])),i=_gridCoordinates.filter(((e,n)=>1==_calibrationData[n]));let r=null,c=!1;if(t.length>=2&&i.length>=2)try{r=function(e,n){const t=new zl(e.map((e=>e.x)),n.map((e=>e.x)),1),i=new zl(e.map((e=>e.y)),n.map((e=>e.y)),1);return{x_regressor:t.coefficients,y_regressor:i.coefficients}}(t,i),function(e){o.session.set("x_coef",e.x_regressor[1]),o.session.set("x_intercept",e.x_regressor[0]),o.session.set("y_coef",e.y_regressor[1]),o.session.set("y_intercept",e.y_regressor[0])}(r),c=!0}catch(e){console.warn("Calibration failed due to insufficient or invalid data:",e),console.warn("Proceeding without eye tracking calibration.")}else console.warn("Insufficient calibration data collected. Face detection may have failed."),console.warn("Proceeding without eye tracking calibration.");await async function(e,n,t){console.log("Test Finished");const i=(new Date).getTime();await stopRecording();var s="RAN_eyeCalibration_"+t.toString()+"_"+i+".webm";try{let i=null;Dr(window.deviceConfig.storeVideo)&&(i=await saveRecordings({filename:s,deviceConfig:window.deviceConfig,config:e,metadata:{}}));const a={assessment_type:"MEP",assessment_stage:"eyeCalibration",recordedVideo:s,distance:t,regressors:n,stimulusPosition:_gridCoordinates,eyeCoordinates:_eyeCoordinates,calibrationData:_calibrationData,uploadURL:i,_timeData:_timeData,parentDir:o.session.get("id"),deviceConfig:o.session.get("deviceConfig"),participantConfig:o.session.get("participantConfig"),correct:1};e.firekit.writeTrial(a)}catch(e){console.error("Error in saveRecordings:",e)}}(e,r,50),zr(pc),zr(Vc),s.remove(),Vr(),n()}),{once:!0})}))}var Bl=5,Ul=10,Hl=24.75,Wl=13;function $l(e){let n,t,i,s;if(e.screenWidth>0&&e.screenHeight>0){const i=Wl/Bl;n=Hl/Ul*(e.screenWidthPX/e.screenWidth),t=i*(e.screenHeightPX/e.screenHeight)}else{const i=.8*e.screenWidthPX,s=.8*e.screenHeightPX;n=i/Ul,t=s/Bl}i=n*Ul,s=t*Bl;const a=(e.screenWidthPX-i)/2,o=(e.screenHeightPX-s)/2,r=[];for(let e=0;e<Bl;e++)for(let i=0;i<Ul;i++){const s=a+i*n+n/2,c=o+e*t+t/2;r.push({x:s,y:c,width:n,height:t})}return r}function Yl(e){const n=[...new Set(e.stimulus)],t=[];for(;t.length<9;){const e=t[t.length-1],i=n.filter((n=>n!==e));t.push(i[Math.floor(Math.random()*i.length)])}return t}function Kl(e,n,t){const i=document.getElementById("grid-container");"Practice"===type?(Ul=3,Bl=3,Hl=2.475*3,Wl=2.6*3,e=$l(deviceConfig),n=Yl(t)):(Ul=10,Bl=5,Hl=24.75,Wl=13,e=$l(deviceConfig));const s=Bl*Ul;for(let a=0;a<s;a++){const s=document.createElement("div"),{x:o,y:r,width:c,height:l}=e[a];s.style.width=`${c}px`,s.style.height=`${l}px`,s.style.left=`${o}px`,s.style.top=`${r}px`,s.style.position="absolute",s.style.transform="translate(-50%, -50%)",s.style.display="flex",s.style.justifyContent="center",s.style.alignItems="center";const p=n[a],u=document.createElement("img");u.src=`${t.dir}/${p}`,u.style.width="50%",u.style.height="auto",s.appendChild(u),i.appendChild(s);const d=u.getBoundingClientRect();d.x=d.x+d.width/2,d.y=d.y+d.height/2;const m={x:parseFloat(s.style.left),y:parseFloat(s.style.top),width:parseFloat(s.style.width),height:parseFloat(s.style.height),stim_x:d.x,stim_y:d.y,stim_width:d.width,stim_height:d.height};_gridCoordinates.push(m),_shuffledImages.push(p.slice(0,-4))}}async function Xl(){return new Promise((e=>{const n=()=>{inputVideo&&inputVideo.videoWidth>0&&inputVideo.videoHeight>0?e():setTimeout(n,100)};n()}))}var Gl=4;function Jl(e){0==--Gl?(document.getElementById("instruction").style.display="none",document.getElementById("grid-container").style.visibility="visible",Gl=4,trialRunnning=!0):(document.getElementById("instruction").innerHTML="<h1>"+Gl+"</h1>",setTimeout((function(){Jl()}),1e3))}var Ql=Object.freeze({__proto__:null,get countdown(){return Gl},generateGridCoordinates:$l,generatePracticeStimuli:Yl,generateStimulusOrder:function(e){const n=Bl*Ul,t=e.stimulus.slice(),i=Math.ceil(n/t.length),s=[];for(let e=0;e<i;e++){const e=t.sort((()=>Math.random()-.5));s.push(...e)}for(let e=1;e<s.length;e++)if(s[e]===s[e-1]){const n=s[e];s[e]=s[e+1],s[e+1]=n}return s.slice(0,n)},get gridHeightCM(){return Wl},get gridWidthCM(){return Hl},get numCols(){return Ul},get numRows(){return Bl},populateGrid:Kl,startTest:async function(e){if(e)try{await Xl(),continueProcessing=!0,runInference()}catch(e){console.warn("Eye tracking inference failed, continuing without eye tracking:",e),continueProcessing=!1}openFullscreen(),startRecording(),Kl(gridCoordinates,shuffledImages,testConfig),Jl(),setTimeout((function(){document.querySelector(".finish-button").disabled=!1}),5e3)},updateCountdown:Jl,waitForVideoReady:Xl});async function Zl(e,n,t={}){var i=new Worker(new URL("worker.063fe12b.js",import.meta.url),{type:"module"});window.myWorker=i;const s=document.createElement("div");s.innerHTML=dc;const a=document.createElement("div");a.style.position="fixed",a.style.top="0",a.style.left="0",a.style.width="100%",a.style.height="100%",window.deviceConfig=o.session.get("deviceConfig");const{bEyeTracking:r,storeVideo:c}=window.deviceConfig;qr(Ql),qr(pc),qr(Vc),a.innerHTML='<!DOCTYPE html>\n<html lang="en">\n<head>\n <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">\n <meta charset="UTF-8">\n <meta name="viewport" content="width=device-width, initial-scale=1.0">\n <title>Image and Audio Recording</title>\n\n \x3c!-- <script data-dynamic src="./RAN.js"><\/script> --\x3e\n</head>\n\n<style> \n body {\n margin: 0;\n min-height: 100vh; /* Ensure body takes the full viewport height */\n display: flex; /* Enable Flexbox */\n justify-content: center; /* Center content horizontally */\n align-items: center; /* Center content vertically */\n font-family: sans-serif;\n }\n\n stim {\n position: absolute;\n height: auto;\n cursor: pointer;\n }\n\n #instruction {\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n }\n\n #confirmContainer {\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n }\n\n #headCanvas {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n\n #canvas-container {\n position: relative;\n width: 300px;\n height: 300px;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n text-align: center;\n }\n\n /* TODO: Using RAN Intro Container temporarily */\n #ran-intro-container {\n position: fixed;\n top: 0; left: 0;\n width: 100vw; height: 100vh;\n }\n</style>\n\n\n<body> \n <div id="grid-container" style="position: absolute; width: 100%; height: 100%; visibility: hidden;"></div>\n <div id="canvas-container" style="visibility: hidden">\n <h5 id="message"></h5>\n <canvas id="headCanvas" class="frame" style="position: relative"></canvas>\n </div>\n \x3c!-- Countdown display (used by updateCountdown in RAN.js after intro hides) --\x3e\n <div id="instruction"></div>\n\n \x3c!-- Intro Panel --\x3e\n <div id="ran-intro-container" class="container-fluid h-100"> \n <div class="static-container">\n <div class="header-container--ran"> \n <h2 class="header"></h2>\n <h3 class="subtitle"></h3>\n </div>\n <img class="lion-char" src="https://storage.googleapis.com/roav-ran/shared/assets/pointingLeftLionAge12.webp" alt="Lion character">\n <p class="next-text"></p>\n </div>\n </div>\n\n \x3c!-- Continue Button (shown during intro, hidden once test starts) --\x3e\n <button class="next-button" disabled aria-label="Start"></button>\n\n\n <div class="panel-block" style="display: block" ;>\n <video class="inputVideo" style="display: none"></video>\n </div>\n \n \x3c!-- Audio Playing --\x3e \n <audio autoplay id="voiceover"> </audio>\n \n \x3c!--TODO: Check if we need this--\x3e\n \x3c!-- Confirm Button --\x3e\n \x3c!--<div class="row gap-2" id="confirmContainer" style="display: none;">\n <div class="card-body" style="text-align: center;">\n <h3> <span id="capName"></span> Test Complete </h3>\n <button type="button" class="btn btn-primary" id="confirmButton">Back to Menu</button>\n </div>\n </div>--\x3e\n\n \x3c!-- Finish Button --\x3e\n <button class="finish-button" disabled aria-label="Finish"></button>\n\n<script data-dynamic>\n\nvar deviceConfig = store.session.get(\'deviceConfig\')\n// var deviceConfig = {screenWidth: 29, screenHeight: 16.2, screenWidthPX: 960, screenHeightPX: 540, webcamHeight: 0.5}\nvar testConfig = store.session.get(\'testConfig\')\n// var testConfig = {dir: "https://eyetrackingdata.blob.core.windows.net/public/assets/Letter",\n// stimulus : ["C.svg", "D.svg", "H.svg", "K.svg", "N.svg", "O.svg", "R.svg", "S.svg", "V.svg", "Z.svg"],\n// sizecm: 2}\n\nif (testConfig && testConfig[\'testname\'] === \'Letters\') {\n var subtestText = [\'Letter\', \'letter\']\n} else {\n var subtestText = [\'Number\', \'number\']\n}\n\nvar nextButton = document.querySelector(\'.next-button\');\nvoiceover.addEventListener(\'ended\', function() {\n nextButton.disabled = false;\n});\n// Fallback: enable button after 5 seconds if audio fails or has no src\nvar _audioFallbackTimer = setTimeout(function() {\n nextButton.disabled = false;\n}, 7000);\nnextButton.addEventListener(\'click\', function() {\n pre_startTest();\n});\n\nvar desktop = document.documentElement;\nvar canvasContainer = document.getElementById("canvas-container");\nvar camera_stream;\nvar mediaRecorder;\nvar mediaChunks = [];\nvar current_viewingDistance;\n\nvar clickedTests = store.session.get(\'clickedTests\') || [];\nif (type!==\'Practice\') {\nclickedTests.push(testConfig[\'testname\'])\n}\n\nstore.session.set(\'clickedTests\',clickedTests)\n\nvar gridCoordinates = generateGridCoordinates(deviceConfig)\nvar shuffledImages = testConfig.stimulus; \n// var shuffledImages = generateStimulusOrder(testConfig)\n \nvar _gridCoordinates = []\n// gridCoordinates\nvar _shuffledImages = []\n// shuffledImages.map(filename => filename.split(\'.\')[0]);\nvar _parentDir = store.session.get("id")\nvar _videoURL = \'\'\nvar _deviceConfig = deviceConfig\nvar _testConfig = testConfig\n\nvar x_coef =\nstore.session.get("x_coef") !== null\n ? store.session.get("x_coef")\n : -3.49; // Default value can be 0 or any other default you choose\nvar x_intercept =\nstore.session.get("x_intercept") !== null\n ? store.session.get("x_intercept")\n : 45; // Default value can be 0\nvar y_coef =\nstore.session.get("y_coef") !== null ? store.session.get("y_coef") : 0; // Default value can be 0\nvar y_intercept =\nstore.session.get("y_intercept") !== null\n ? store.session.get("y_intercept")\n : 0; // Default value can be 0\n\n\nvar xpreds = []\nvar ypreds = []\nvar eyetTimer = []\nvar trialRunnning = false\nvar continueProcessing = false\nfunction pre_startTest(){\n clearTimeout(_audioFallbackTimer);\n voiceover.pause();\n voiceover.currentTime = 0;\n document.querySelector(\'.container-fluid.h-100\').style.display = \'none\';\n document.querySelector(\'.next-button\').style.display = \'none\';\n document.querySelector(\'.finish-button\').style.display = \'flex\';\n startTest(deviceConfig.bEyeTracking);\n }\n\nfunction runAfterEveryFrame(output) {\n var xpred =\n ((x_coef * (output.output.cpuData[0] * 100 - 50) + x_intercept) *\n screen.width) /\n 100;\n var ypred = ((y_coef*((output.output.cpuData[1]*100)) + y_intercept) * screen.height) /100;\n if (trialRunnning) {\n xpreds.push(xpred);\n ypreds.push(ypred);\n eyetTimer.push(Date.now()); // corrected from \'eyetTimer\' and \'data.now()\' to \'eyeTimer\' and \'Date.now()\'\n }\n }\n\n\n\n\n<\/script>\n\n</body>\n</html>';const l=Hr;document.body.appendChild(a),window.type=e,await Fr(a),await Fr(s),Nr(s),Nr(a),async function(e,n,t,i){initEyeTracking(!1),await giveAccess(n,t),document.querySelector(".header").innerHTML=(i.header.text??"").replace(/\n/g,"<br>"),document.querySelector(".subtitle").innerHTML=(i.subtitle.text??"").replace(/\n/g,"<br>"),document.querySelector(".next-text").textContent=i.footer.text??"";var s=document.getElementById("voiceover"),a=[i.header?.audioSrc,i.subtitle?.audioSrc,i.footer?.audioSrc].filter(Boolean);function o(e){if(0!==e.length){var[n,...t]=e;s.src=n,t.length>0&&s.addEventListener("ended",(function(){o(t)}),{once:!0}),s.play().catch((function(){}))}}a.length>0?o(a):s.src=""}(0,r,c,t);const p=new AbortController;await new Promise((e=>{document.body.addEventListener("click",(async function(t){t.target.classList.contains("finish-button")&&(window.continueProcessing=!1,a.innerHTML=l,Br(a),await ep(n,{stimulus:_shuffledImages}),a.remove(),p.abort(),function(e){zr(e);document.querySelectorAll("button").forEach((e=>{if(e.parentNode){const n=e.cloneNode(!0);e.parentNode.replaceChild(n,e)}})),Vr();for(;document.body.firstChild;)document.body.removeChild(document.body.firstChild)}(Ql),e())}),{signal:p.signal})}))}async function ep(e,n){console.log("Test Finished"),await stopRecording();let t=null;const i=(new Date).getTime(),s="RAN_"+testConfig.testname+"_"+i+".webm";try{t=await saveRecordings({filename:s,deviceConfig:window.deviceConfig,config:e,metadata:n})}catch(e){console.error("Error in saveRecordings:",e)}const a={assessment_type:testConfig.testname,assessment_stage:type,stimulusPosition:_gridCoordinates,stimulus:n.stimulus,recordedVideo:s,parentDir:_parentDir,uploadURL:t,xpreds:xpreds,ypreds:ypreds,eyetTimer:eyetTimer,correct:1,deviceConfig:_deviceConfig,testConfig:_testConfig};await e.firekit.writeTrial(a)}async function np(e){const n=Hr,t=document.createElement("div");t.innerHTML=n,document.body.appendChild(t);const i=["https://eyetrackingdata.blob.core.windows.net/public/Images/squareAddition_white.png","./views/eyetracking_google.onnx",`https://eyetrackingdata.blob.core.windows.net/public/Audios/${be.language}/calibration.mp3`,"https://eyetrackingdata.blob.core.windows.net/public/Images/eyecalibration.gif","https://eyetrackingdata.blob.core.windows.net/public/Images/eyecalibration_short.gif","https://eyetrackingdata.blob.core.windows.net/public/Images/parent-help-icon.png","https://eyetrackingdata.blob.core.windows.net/public/Images/webcamCentered.jpg","https://eyetrackingdata.blob.core.windows.net/public/Images/webcamPosition.PNG","https://eyetrackingdata.blob.core.windows.net/public/Images/badlighting.jpg","https://eyetrackingdata.blob.core.windows.net/public/Images/glassesReflection.jpg","https://eyetrackingdata.blob.core.windows.net/public/Images/goodPosition.jpg",`https://eyetrackingdata.blob.core.windows.net/public/Audios/${be.language}/deviceConfig.mp3`,"https://eyetrackingdata.blob.core.windows.net/public/Audios/deviceConfig.mp3","https://eyetrackingdata.blob.core.windows.net/public/Images/squareAddition.png",`https://eyetrackingdata.blob.core.windows.net/public/Audios/${be.language}/headCalibration.mp3`,"https://eyetrackingdata.blob.core.windows.net/public/Audios/letterStoryCalibration.mp3","https://eyetrackingdata.blob.core.windows.net/public/Audios/numberStoryCalibration.mp3","https://eyetrackingdata.blob.core.windows.net/public/Audios/letterCalibration.mp3","https://eyetrackingdata.blob.core.windows.net/public/Audios/letterPractice.mp3","https://eyetrackingdata.blob.core.windows.net/public/Audios/letterTest.mp3","https://eyetrackingdata.blob.core.windows.net/public/Audios/numberCalibration.mp3","https://eyetrackingdata.blob.core.windows.net/public/Audios/numberPractice.mp3","https://eyetrackingdata.blob.core.windows.net/public/Audios/numberTest.mp3","https://eyetrackingdata.blob.core.windows.net/public/Images/letter-practice-reading-order.gif","https://eyetrackingdata.blob.core.windows.net/public/Images/letter-test-reading-order.gif","https://eyetrackingdata.blob.core.windows.net/public/Images/number-practice-reading-order.gif","https://eyetrackingdata.blob.core.windows.net/public/Images/number-test-reading-order.gif","https://eyetrackingdata.blob.core.windows.net/public/Images/squareAddition_white.png","https://cdn.jsdelivr.net/npm/onnxjs/dist/onnx.min.js","https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css","https://cdn.jsdelivr.net/npm/@mediapipe/face_mesh@0.4/face_mesh_solution_simd_wasm_bin.wasm","https://cdn.jsdelivr.net/npm/@mediapipe/face_mesh@0.4/face_mesh_solution_packed_assets.data","https://cdn.jsdelivr.net/npm/@mediapipe/face_mesh@0.4/face_mesh_solution_simd_wasm_bin.js"],s=["https://eyetrackingdata.blob.core.windows.net/public/Images/astronaut-girl-default.png","https://eyetrackingdata.blob.core.windows.net/public/Images/astronaut-girl-panicked.png","https://eyetrackingdata.blob.core.windows.net/public/Images/astronaut-girl-unsure.png","https://eyetrackingdata.blob.core.windows.net/public/Images/astronaut-girl-confused.png","https://eyetrackingdata.blob.core.windows.net/public/Images/astronaut-girl-smile.png","https://eyetrackingdata.blob.core.windows.net/public/Images/astronaut-girl-happy.png","https://eyetrackingdata.blob.core.windows.net/public/Images/astronaut-girl-bye.png","https://eyetrackingdata.blob.core.windows.net/public/Images/space-ship-control.png","https://eyetrackingdata.blob.core.windows.net/public/Images/purple-planet.png","https://eyetrackingdata.blob.core.windows.net/public/Images/orange-planet.png","https://eyetrackingdata.blob.core.windows.net/public/Audios/intro.mp3","https://eyetrackingdata.blob.core.windows.net/public/Audios/intro2.mp3","https://eyetrackingdata.blob.core.windows.net/public/Audios/intro3.mp3","https://eyetrackingdata.blob.core.windows.net/public/Audios/letterStoryPractice.mp3","https://eyetrackingdata.blob.core.windows.net/public/Audios/numberStoryPractice.mp3","https://eyetrackingdata.blob.core.windows.net/public/Audios/letterStoryTest.mp3","https://eyetrackingdata.blob.core.windows.net/public/Audios/numberStoryTest.mp3","https://eyetrackingdata.blob.core.windows.net/public/Audios/end.mp3","https://eyetrackingdata.blob.core.windows.net/public/Audios/end2.mp3"],a=[...new Set(e.story?[...i,...s]:i)];await function(e,n){return new Promise(((t,i)=>{let s=0;e.forEach((a=>{if("fetch"==="fetch")fetch(a).then((e=>{e.ok?o():r()})).catch(r);else console.error("Unknown asset type:",a),r();function o(){s++,s==e.length&&(n.remove(),t())}function r(e){console.error("Error loading asset:",a,e),i(e)}}))}))}(a,t),console.log("All assets preloaded.")}function tp(){window.instructionAbortController&&(window.instructionAbortController.abort(),delete window.instructionAbortController),Vr()}async function ip(e,n){Array.isArray(e)||(e=[e]);const t=document.createElement("div");t.innerHTML='<!DOCTYPE html>\n<html lang="en">\n<head>\n <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">\n <meta charset="UTF-8">\n <meta name="viewport" content="width=device-width, initial-scale=1.0">\n</head>\n\n<body>\n <div class="container-fluid h-100">\n <div class="static-container">\n <h2 class="header--center"></h2>\n <img class="lion-char" src="https://storage.googleapis.com/roav-ran/shared/assets/pointingLeftLionAge12.webp" alt="Lion character">\n <p class="next-text"></p>\n </div>\n <button class="next-button" id="info-next-button" aria-label="Continue"></button>\n </div>\n <audio id="voiceover"></audio>\n</body>\n\n<script data-dynamic>\n var slideIndex = 0;\n var slides = window.infoSlides || [];\n var infoSignal = window.infoSlideAbortController\n ? window.infoSlideAbortController.signal\n : undefined;\n var voiceover = document.getElementById(\'voiceover\');\n\n document.querySelector(\'.next-button\').addEventListener(\'click\', function () {\n voiceover.pause();\n showSlide(++slideIndex);\n }, { signal: infoSignal });\n\n showSlide(slideIndex);\n\n function showSlide(index) {\n if (index >= slides.length) {\n document.dispatchEvent(new Event(\'pageComplete\'));\n return;\n }\n\n var slide = slides[index];\n document.querySelector(\'.header--center\').textContent = slide.header.text || \'\';\n document.querySelector(\'.next-text\').textContent = slide.footer.text || \'\';\n\n var btn = document.querySelector(\'.next-button\');\n if (slide.showButton === false) {\n btn.classList.add(\'hidden\');\n } else {\n btn.classList.remove(\'hidden\');\n }\n\n var headerSrc = slide.header && slide.header.audioSrc;\n var footerSrc = slide.footer && slide.footer.audioSrc;\n\n if (headerSrc || footerSrc) {\n btn.disabled = true;\n }\n\n if (headerSrc) {\n voiceover.src = headerSrc;\n voiceover.addEventListener(\'ended\', function onHeaderEnded() {\n if (footerSrc) {\n voiceover.src = footerSrc;\n voiceover.addEventListener(\'ended\', function () {\n btn.disabled = false;\n }, { once: true, signal: infoSignal });\n voiceover.play().catch(function () {});\n } else {\n btn.disabled = false;\n }\n }, { once: true, signal: infoSignal });\n voiceover.play().catch(function () {});\n } else if (footerSrc) {\n voiceover.src = footerSrc;\n voiceover.addEventListener(\'ended\', function () {\n btn.disabled = false;\n }, { once: true, signal: infoSignal });\n voiceover.play().catch(function () {});\n }\n }\n<\/script>\n</html>\n',document.body.appendChild(t),window.infoSlides=e,window.infoSlideAbortController=new AbortController,await Fr(t),Nr(t),await new Promise((e=>{document.addEventListener("pageComplete",(()=>{t.remove(),function(){window.infoSlideAbortController&&(window.infoSlideAbortController.abort(),delete window.infoSlideAbortController);delete window.infoSlides,Vr()}(),e()}),{once:!0})}))}async function sp(e,n){const t=document.createElement("div");t.innerHTML='<!DOCTYPE html>\n<html lang="en">\n<head>\n <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">\n <meta charset="UTF-8">\n <meta name="viewport" content="width=device-width, initial-scale=1.0">\n</head>\n\n<body>\n <div class="container-fluid h-100">\n <div class="static-container">\n \x3c!-- <h2 class="header--center"></h2> --\x3e\n <div class="speech-bubble" role="status"></div>\n <img class="lion-char" src="https://storage.googleapis.com/roav-ran/shared/assets/sadLionAge12.webp" alt="Lion character">\n <p class="next-text"></p>\n </div>\n <button class="next-button" id="mic-fail-next-button" aria-label="Continue"></button>\n </div>\n <audio id="voiceover"></audio>\n</body>\n\n<script data-dynamic>\n var slide = window.micFailSlide || {};\n var micFailSignal = window.micFailAbortController\n ? window.micFailAbortController.signal\n : undefined;\n var voiceover = document.getElementById(\'voiceover\');\n\n document.querySelector(\'.speech-bubble\').innerHTML = (slide.header && slide.header.text) || \'\';\n document.querySelector(\'.next-text\').textContent = (slide.footer && slide.footer.text) || \'\';\n\n document.querySelector(\'.next-button\').addEventListener(\'click\', function () {\n voiceover.pause();\n document.dispatchEvent(new Event(\'pageComplete\'));\n }, { signal: micFailSignal });\n\n var headerSrc = slide.header && slide.header.audioSrc;\n var footerSrc = slide.footer && slide.footer.audioSrc;\n\n if (headerSrc) {\n voiceover.src = headerSrc;\n voiceover.addEventListener(\'ended\', function () {\n if (footerSrc) {\n voiceover.src = footerSrc;\n voiceover.play().catch(function () {});\n }\n }, { once: true, signal: micFailSignal });\n voiceover.play().catch(function () {});\n } else if (footerSrc) {\n voiceover.src = footerSrc;\n voiceover.play().catch(function () {});\n }\n<\/script>\n</html>\n',document.body.appendChild(t),window.micFailSlide=e,window.micFailAbortController=new AbortController,await Fr(t),Nr(t),await new Promise((e=>{document.addEventListener("pageComplete",(()=>{t.remove(),function(){window.micFailAbortController&&(window.micFailAbortController.abort(),delete window.micFailAbortController);delete window.micFailSlide,Vr()}(),e()}),{once:!0})}))}async function ap(e,n){await sc(!1,!1);const t=document.createElement("div");t.innerHTML="<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <link href=\"https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css\" rel=\"stylesheet\" integrity=\"sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3\" crossorigin=\"anonymous\">\n <meta charset=\"UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n</head>\n\n<style>\n #stimulus-grid {\n position: absolute;\n top: 30%;\n left: 3%;\n display: grid;\n grid-template-columns: repeat(3, auto);\n gap: clamp(8px, 2vw, 24px) clamp(16px, 4vw, 56px);\n align-items: center;\n width: 60%;\n }\n\n .stimulus-cell {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: clamp(6px, 1.2vw, 16px);\n border-radius: 14px;\n transition: background-color 0.15s ease;\n }\n\n .stimulus-cell.highlighted {\n background-color: #f5d9a8;\n }\n\n .stimulus-cell img {\n height: clamp(80px, 18vh, 200px);\n width: auto;\n display: block;\n }\n</style>\n\n<body>\n <div class=\"container-fluid h-100\">\n <div class=\"static-container\">\n <div class=\"header-container--practice-intro\"> \n <h2 class=\"header\"></h2>\n <h3 class=\"subtitle--practice-intro\"></h3>\n </div>\n <div id=\"stimulus-grid\"></div>\n <img class=\"lion-char-practice-intro\" src=\"https://storage.googleapis.com/roav-ran/shared/assets/pointingLeftLionAge12.webp\" alt=\"Lion character\">\n </div>\n </div>\n <button disabled class=\"next-button\" aria-label=\"Continue\"></button>\n <audio id=\"practice-intro-audio\"></audio>\n</body>\n\n<script data-dynamic>\n var cfg = window.practiceIntroConfig || {};\n var stimuliImages = cfg.assets.stimuli.images || [];\n var stimuliAudios = cfg.assets.stimuli.audioSrcs || [];\n var stimulusDir = cfg.stimulusDir || '';\n var practiceSignal = window.practiceIntroAbortController\n ? window.practiceIntroAbortController.signal\n : undefined;\n\n var FALLBACK_DELAY_MS = 1200;\n var userSpoke = false;\n var animFrameId = null;\n var micStream = null;\n var mediaRecorder;\n var mediaChunks = [];\n var timeoutId = null;\n\n function stripSsml(str) {\n return (str || '').replace(/<[^>]*>/g, '').trim();\n }\n\n function playAudio(src, onEnded) {\n if (src) {\n audio.src = src;\n audio.currentTime = 0;\n var handler = function () {\n audio.removeEventListener('ended', handler);\n onEnded();\n };\n audio.addEventListener('ended', handler, { signal: practiceSignal });\n audio.play().catch(function () {\n audio.removeEventListener('ended', handler);\n setTimeout(onEnded, FALLBACK_DELAY_MS);\n });\n } else {\n setTimeout(onEnded, FALLBACK_DELAY_MS);\n }\n }\n\n // Build the stimulus grid\n var grid = document.getElementById('stimulus-grid');\n stimuliImages.forEach(function (filename) {\n var cell = document.createElement('div');\n cell.className = 'stimulus-cell';\n var img = document.createElement('img');\n img.src = stimulusDir + '/' + filename;\n img.alt = filename.replace('.svg', '');\n cell.appendChild(img);\n grid.appendChild(cell);\n });\n\n var cells = grid.querySelectorAll('.stimulus-cell');\n var audio = document.getElementById('practice-intro-audio');\n var title = document.querySelector('.header');\n var subtitle = document.querySelector('.subtitle--practice-intro');\n var nextBtn = document.querySelector('.next-button');\n\n nextBtn.addEventListener('click', async function () {\n nextBtn.disabled = true;\n cleanupAudio();\n if (window.endPractice) {\n await window.endPractice();\n } else {\n document.dispatchEvent(new Event('pageComplete'));\n }\n }, { signal: practiceSignal });\n\n // Phase 1: show header text, play header audio; next button stays disabled\n title.innerHTML = stripSsml(cfg.assets.header.text);\n playAudio(cfg.assets.header.audioSrc, function () {\n highlightStep(0);\n });\n\n // Phase 2: play each stimulus audio sequentially, highlighting the matching cell\n function highlightStep(index) {\n cells.forEach(function (c) { c.classList.remove('highlighted'); });\n if (index >= stimuliImages.length) {\n showHeader2Phase();\n return;\n }\n cells[index].classList.add('highlighted');\n playAudio(stimuliAudios[index] || '', function () {\n highlightStep(index + 1);\n });\n }\n\n // Phase 3: remove highlights, play header2 audio with header2 text\n function showHeader2Phase() {\n var header2Text = cfg.assets.header2.text || '';\n var breakMatch = header2Text.match(/^(.*?)<break[^>]*\\/>(.*)$/s);\n if (breakMatch) {\n title.innerHTML = breakMatch[1].trim();\n subtitle.innerHTML = breakMatch[2].trim();\n subtitle.style.display = 'block';\n } else {\n title.innerHTML = stripSsml(header2Text);\n }\n playAudio(cfg.assets.header2.audioSrc, function () {\n showPracticePhase();\n });\n }\n\n // Phase 4: start RMS mic detection; enable next button when user speaks\n function showPracticePhase() {\n nextBtn.disabled = true;\n setupMediaStream();\n if (window.startPracticeRecording) window.startPracticeRecording();\n }\n\n async function setupMediaStream() {\n try {\n const audioContext = new AudioContext();\n micStream = await navigator.mediaDevices.getUserMedia({ audio: true });\n\n const micSource = audioContext.createMediaStreamSource(micStream);\n const analyser = audioContext.createAnalyser();\n analyser.fftSize = 2048;\n micSource.connect(analyser);\n\n const bufferLength = analyser.frequencyBinCount;\n const dataArray = new Uint8Array(bufferLength);\n\n function detectAudio() {\n analyser.getByteTimeDomainData(dataArray);\n let sum = 0;\n for (let i = 0; i < bufferLength; i++) {\n sum += (dataArray[i] - 128) * (dataArray[i] - 128);\n }\n const rms = Math.sqrt(sum / bufferLength);\n if (rms > 7.0) {\n if (timeoutId !== null) { clearTimeout(timeoutId); timeoutId = null; }\n userSpoke = true;\n nextBtn.disabled = false;\n return;\n }\n animFrameId = requestAnimationFrame(detectAudio);\n }\n\n animFrameId = requestAnimationFrame(detectAudio);\n timeoutId = setTimeout(function () {\n if (!userSpoke) {\n nextBtn.disabled = false;\n }\n }, 5000);\n } catch (err) {\n console.error('Microphone access failed:', err);\n nextBtn.disabled = false;\n }\n }\n\n function cleanupAudio() {\n if (timeoutId !== null) { clearTimeout(timeoutId); timeoutId = null; }\n if (animFrameId !== null) { cancelAnimationFrame(animFrameId); animFrameId = null; }\n if (micStream !== null) { micStream.getTracks().forEach(function (t) { t.stop(); }); micStream = null; }\n }\n<\/script>\n</html>\n",window.practiceIntroConfig=e,window.practiceIntroAbortController=new AbortController,window.startPracticeRecording=oc,window.endPractice=async function(){await rc();const e=(new Date).getTime(),t="RAN_practice_"+window.practiceIntroConfig.assets.ranType+"_"+e+".webm";try{await cc({filename:t,deviceConfig:window.deviceConfig,config:n,metadata:{stimulus:"practice"}})}catch(e){console.error("Error saving practice recording:",e)}document.dispatchEvent(new Event("pageComplete"))},document.body.appendChild(t),await Fr(t),Nr(t),await new Promise((e=>{document.addEventListener("pageComplete",(()=>{t.remove(),function(){window.practiceIntroAbortController&&(window.practiceIntroAbortController.abort(),delete window.practiceIntroAbortController);delete window.practiceIntroConfig,delete window.startPracticeRecording,delete window.endPractice,Vr()}(),e()}),{once:!0})}))}var op={subtestOrder:["Letters","Numbers"],infoSlideView:{welcome:{header:{audioSrc:"https://storage.googleapis.com/roav-ran/en/shared/audio/welcomeHeader.mp3",text:"Welcome to Letters and Numbers"},footer:{audioSrc:"https://storage.googleapis.com/roav-ran/en/shared/audio/welcomeFooter.mp3",text:"Let's get started! Click the yellow button to continue."},showButton:!0},calibrationIntro:{header:{audioSrc:"https://storage.googleapis.com/roav-ran/en/shared/audio/calibrationIntroHeader.mp3",text:"You will see blue circles show up on the screen. Look at them until they pop!"},footer:{text:"Click the yellow button to continue."},showButton:!0},calibrationEnd:{header:{audioSrc:"https://storage.googleapis.com/roav-ran/en/shared/audio/calibrationEndHeader.mp3",text:"Great job! Today, you are going to help me \n read some letters and numbers."},footer:{audioSrc:"https://storage.googleapis.com/roav-ran/en/shared/audio/calibrationEndFooter.mp3",text:"Let's start with letters! Click the yellow button to continue."},showButton:!0},guidedPracticeLetters:{header:{audioSrc:"https://storage.googleapis.com/roav-ran/en/shared/audio/guidedPracticeLetters.mp3",text:"Now let's try to do more than one letter at a time!"},footer:{text:"Click the yellow button to continue."},showButton:!0},guidedPracticeNumbers:{header:{audioSrc:"https://storage.googleapis.com/roav-ran/en/shared/audio/guidedPracticeNumbers.mp3",text:"Nice Job!\n Now, we are going to read some numbers."},footer:{text:"Click the yellow button to continue."},showButton:!0},assessmentEnd:{header:{audioSrc:"https://storage.googleapis.com/roav-ran/en/shared/audio/assessmentEndHeader.mp3",text:"You did an amazing job reading\nletters and numbers today!"},footer:{audioSrc:"https://storage.googleapis.com/roav-ran/en/shared/audio/assessmentEndFooter.mp3",text:"You are all done with this game!"},showButton:!0}},micFailView:{header:{text:"Uh-Oh! I can't hear you.<br />Please exit the game and try again later.",audioSrc:"https://storage.googleapis.com/roav-ran/en/shared/audio/micFailViewHeader.mp3"},footer:{text:"Click the yellow button to exit.",audioSrc:"https://storage.googleapis.com/roav-ran/en/shared/audio/micFailViewFooter.mp3"}},instructionView:{maxFeedbackRetries:3,letterB:{header:{audioSrc:"https://storage.googleapis.com/roav-ran/en/shared/audio/letterBHeader.mp3",text:"The name of the letter is B. Can you say B?"},footer:{text:"Click the yellow button to continue."}},letterD:{header:{audioSrc:"https://storage.googleapis.com/roav-ran/en/shared/audio/letterDHeader.mp3",text:"Awesome! Can you tell me the name of this letter?"},footer:{text:"Click the yellow button to continue."}},feedback:{header:{audioSrc:"https://storage.googleapis.com/roav-ran/en/shared/audio/feedbackHeader.mp3",text:"I can't hear you. Can you say it again?"},footer:{text:"Click the yellow button to continue."}}},practiceView:{letter:{ranType:"Letters",header:{audioSrc:"https://storage.googleapis.com/roav-ran/en/shared/audio/letterHeader.mp3",text:"Watch me say these letter names first!"},header2:{audioSrc:"https://storage.googleapis.com/roav-ran/en/shared/audio/letterHeader2.mp3",text:"Your turn! Start from the left and read each one as fast as you can."},stimuli:{audioSrcs:["https://storage.googleapis.com/roav-ran/en/shared/audio/stimuli/M.mp3","https://storage.googleapis.com/roav-ran/en/shared/audio/stimuli/A.mp3","https://storage.googleapis.com/roav-ran/en/shared/audio/stimuli/Z.mp3","https://storage.googleapis.com/roav-ran/en/shared/audio/stimuli/X.mp3","https://storage.googleapis.com/roav-ran/en/shared/audio/stimuli/Z.mp3","https://storage.googleapis.com/roav-ran/en/shared/audio/stimuli/F.mp3"],images:["M.svg","A.svg","Z.svg","X.svg","Z.svg","F.svg"]},footer:{audioSrc:"https://storage.googleapis.com/roav-ran/en/shared/audio/clickDoneButton.mp3",text:"Click the yellow button when you are done."}},number:{ranType:"Numbers",header:{audioSrc:"https://storage.googleapis.com/roav-ran/en/shared/audio/numberHeader.mp3",text:"Watch me say these numbers first!"},header2:{audioSrc:"https://storage.googleapis.com/roav-ran/en/shared/audio/numberHeader2.mp3",text:"Your turn! Start from the left and read each one as fast as you can."},stimuli:{audioSrcs:["https://storage.googleapis.com/roav-ran/en/shared/audio/stimuli/one.mp3","https://storage.googleapis.com/roav-ran/en/shared/audio/stimuli/four.mp3","https://storage.googleapis.com/roav-ran/en/shared/audio/stimuli/three.mp3","https://storage.googleapis.com/roav-ran/en/shared/audio/stimuli/five.mp3","https://storage.googleapis.com/roav-ran/en/shared/audio/stimuli/nine.mp3","https://storage.googleapis.com/roav-ran/en/shared/audio/stimuli/two.mp3"],images:["one.svg","four.svg","three.svg","five.svg","nine.svg","two.svg"]},footer:{audioSrc:"https://storage.googleapis.com/roav-ran/en/shared/audio/clickDoneButton.mp3",text:"Click the yellow button when you are done."}}},ranView:{letter:{practiceIntro:{header:{audioSrc:"https://storage.googleapis.com/roav-ran/en/shared/audio/practiceIntroHeader.mp3",text:"Great job! Now let's practice."},subtitle:{audioSrc:"https://storage.googleapis.com/roav-ran/en/shared/audio/letterPracticeIntroSubtitle.mp3",text:"Remember to read the letters as fast as you can."},footer:{audioSrc:"https://storage.googleapis.com/roav-ran/en/shared/audio/clickDoneButton.mp3",text:"Click the yellow button when you are done."}},testIntro:{header:{audioSrc:"https://storage.googleapis.com/roav-ran/en/shared/audio/letterTestIntroHeader.mp3",text:"Perfect!\n Let's try saying more letter names!"},subtitle:{audioSrc:"https://storage.googleapis.com/roav-ran/en/shared/audio/testIntroSubtitle.mp3",text:"Remember to read as fast as you can."},footer:{audioSrc:"https://storage.googleapis.com/roav-ran/en/shared/audio/clickDoneButton.mp3",text:"Click the yellow button when you are done."}}},number:{practiceIntro:{header:{audioSrc:"https://storage.googleapis.com/roav-ran/en/shared/audio/practiceIntroHeader.mp3",text:"Great job!\nNow let's practice."},subtitle:{audioSrc:"https://storage.googleapis.com/roav-ran/en/shared/audio/numberPracticeIntroSubtitle.mp3",text:"Remember to read the numbers as fast as you can!"},footer:{audioSrc:"https://storage.googleapis.com/roav-ran/en/shared/audio/clickDoneButton.mp3",text:"Click the yellow button when you are done."}},testIntro:{header:{audioSrc:"https://storage.googleapis.com/roav-ran/en/shared/audio/numberTestIntroHeader.mp3",text:"Perfect!\nLet's try saying more numbers!"},subtitle:{audioSrc:"https://storage.googleapis.com/roav-ran/en/shared/audio/testIntroSubtitle.mp3",text:"Remember to read as fast as you can."},footer:{audioSrc:"https://storage.googleapis.com/roav-ran/en/shared/audio/clickDoneButton.mp3",text:"Click the yellow button when you are done."}}}}};window.store=o,window.i18next=be;class rp{constructor(e,n,t,i){this.gameParams=n,this.userParams=t,this.firekit=e,this.displayElement=i}async init(){}async run(){this.gameParams.consent&&await async function(){const e=document.createElement("div");e.innerHTML='<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">\n\n\x3c!-- <h5 style="text-align:left;">\n Stanford University Research Consent Form\n <span style="float:right;">\n For IRB Use Only\n </span>\n</h5>\n\n<h5 style="text-align:left;">\n Protocol Director: Jason D. Yeatman, Ph.D.\n <span style="float:right;">\n Approval Date: October 31, 2023\n </span>\n</h5>\n\n<h5 style="text-align:left;">\n Protocol Title: Plasticity and Reading\n <span style="float:right;">\n Expiration Date: October 31, 2024\n </span>\n</h5> --\x3e\n\n<style>\n body {\n margin: 20px; /* Adjust the margin size as needed */\n }\n</style>\n\n<body>\n<h3 style="text-align: center;"> STANFORD UNIVERSITY CONSENT FORM </h3>\n\n<h4 style="text-align: center;"> Stanford University Reading &amp; Dyslexia Research Program: Behavioral Testing </h4>\n\n<blockquote>\n<h4 id="principal-investigator-">Principal Investigator:</h4>\n<p>Jason D. Yeatman </p>\n<p>Associate Professor</p>\n<p>Graduate School of Education</p>\n<p>School of Medicine, Division of Developmental Behavioral Pediatrics</p>\n<h4 id="contact-">Contact:</h4>\n<p>readingresearch@stanford.edu</p>\n<p><a href="https://dyslexia.stanford.edu/">https://dyslexia.stanford.edu/</a> </p>\n</blockquote>\n<h4 id="purpose-of-the-study">PURPOSE OF THE STUDY</h4>\n<p>Data collected through games in the web-browser will help researchers understand relationships between academic skills, reading proficiency, cognition, perception, and/or attitudes towards reading and school in individuals with a broad range of reading skills.</p>\n<h4 id="study-procedures">STUDY PROCEDURES</h4>\n<p>In this study, you or your child will be asked to complete computer tasks via a computer screen. An eye-tracking software will request access to your webcam and will be used to measure eye movements. You will be asked to provide verbal responses in which case the web browser will request access to your computer microphone. You or your child may be asked to complete multiple activities in one session depending on the study. </p>\n<h4 id="privacy-or-data-collection">PRIVACY OR DATA COLLECTION</h4>\n<p>We will do our best to ensure your privacy. Data that is collected through this online experiment is stored separately from identifying information such as your name. For the sake of payment, sometimes we store an email address you provide, but this is stored separately from the responses that are recorded in the online experiment. Each participant is assigned a code and that is used rather than names. This is called “coded data” and we try to ensure that the identity of our research participants is kept confidential. Data collected as part of this study may be used for many years to help discover trends in the population and explore changes due to development and education. In addition, coded data may be shared online or with collaborators to allow for new and unforeseen discoveries. Researchers may choose to include coded data in publications to support findings, or they may choose to release coded data alongside findings for replicability.</p>\n<p>We will collect mouse and click data, scrolling behavior, scores earned, button presses and their timestamps, time spent on each page, audio recordings, or other data that may be derived from your behavior on our page. This data will be stored on servers. The eye-tracking software will use your webcam to track your eyes. This software will record and save video data for future analysis. Once analysis has been completed, the video data will be deleted. Incomplete data may be logged if you quit out of the experiment early. If you would like to void your data, you may request it through our contact email.</p>\n<h4 id="compensation">COMPENSATION</h4>\n<p>We value [your/your child’s] participation. A Tango gift card will be sent through email upon completion of this study. Specific reward amounts will be indicated on the task card and/or study invitation, which you can view before launching the task or scheduling the appointment. If you or your child is completing these activities as part of another study, the compensation rate will remain consistent with the rate of the study you or your child is enrolled in. </p>\n<p>Please note that the gift card system we use to pay participants is not affiliated with Stanford and we will need to input your name and email into this system to send you the electronic gift card payment. If you feel uncomfortable with this process, please let us know before signing the consent form. Depending on the study, we may be able to look into other forms of payment for you.</p>\n<h4 id="risks-stress-or-discomfort">RISKS, STRESS, OR DISCOMFORT</h4>\n<p>If there is any reason to believe you are/your child is not safe to participate in any of the tasks, please contact us at readingresearch@stanford.edu. Some people may experience some physical discomfort or boredom due to being asked to sit for long periods. For computer tasks, some people may also experience dry eyes or eye fatigue. For some tasks that are untimed, breaks can be taken as needed during the session.</p>\n<h4 id="contact-information">CONTACT INFORMATION</h4>\n<p>If you have any additional questions or concerns about our research, feel free to email us at readingresearch@stanford.edu. We will be more than happy to help!</p>\n<p>For general information regarding questions or concerns about [your/your child’s] rights as a research participant, please call 1-866-680-2906 to reach the Administrative Panel on Human Subjects in Medical Research, Stanford University.</p>\n<form id="consentForm">\n <p>\n <input type="checkbox" id="webcamConsent" name="consent">\n I confirm that I have a webcam, and I agree to have my webcam track my eyes. I understand that the webcam will record or save video data and that it will be deleted once analysis is complete.\n </p>\n <p>\n <input type="checkbox" id="voiceConsent" name="consent">\n I agree to have my voice recorded. This data will only be used for data scoring purposes, will be stored securely, and will not be shared with others outside the lab.\n </p>\n <p>\n <input type="checkbox" id="participationConsent" name="consent">\n I agree to participate in this research. Participation in this research is voluntary, and I can stop at any time without penalty. I feel that I understand what I am getting into, and I know I am free to leave the experiment at any time by simply closing the web browser.\n </p>\n <button id="confirmButton" disabled>Continue to test</button>\n</form>\n</body>\n\n<h5 class="card-title" style="display: none;"></h5>\n\n<script>\n document.getElementById(\'consentForm\').addEventListener(\'change\', function() {\n var checkboxes = document.querySelectorAll(\'input[type="checkbox"][name="consent"]\');\n var allChecked = Array.from(checkboxes).every(checkbox => checkbox.checked);\n document.getElementById(\'confirmButton\').disabled = !allChecked;\n });\n<\/script>\n\n',document.body.appendChild(e),await Fr(e),Nr(e),await new Promise((n=>{const t=document.getElementById("confirmButton");t&&t.addEventListener("click",(()=>{Vr(),e.remove(),n()}))}))}(),await this.firekit.startRun();const e=await(async(e,n,t,i)=>{const s=er(er({...n,...t},nr),tr),{userMetadata:a={},audioFeedback:o,grade:r,language:c=be.language,skipInstructions:l,practiceCorpus:p,stimulusCorpus:u,sequentialPractice:d,sequentialStimulus:m,buttonLayout:g,numberOfTrials:v,storyCorpus:h,taskName:f,stimulusBlocks:x,numOfPracticeTrials:b,storyOption:y,keyHelpers:w}=s;"en"!==c&&be.changeLanguage(c);const k={userMetadata:{...a,grade:r},audioFeedback:o||"neutral",skipInstructions:l??!0,startTime:new Date,firekit:e,displayElement:i||null,practiceCorpus:p??"math-item-bank-practice-pz",stimulusCorpus:u??"math-item-bank-pz",sequentialPractice:d??!0,sequentialStimulus:m??!0,buttonLayout:g||"default",numberOfTrials:v??10,task:f??"egma-math",stimulusBlocks:x??3,numOfPracticeTrials:b??2,storyOption:y,story:Tr(y,r),keyHelpers:w??!0};console.log("this is grade:",r),console.log("this is storyOption:",y);const S=Object.fromEntries(Object.entries(n).map((([e,n])=>[e,"story"===e?n:k[e]??n])));return await k.firekit.updateTaskParams(S),null!==k.pid&&await k.firekit.updateUser({assessmentPid:k.pid,...a}),k})(this.firekit,this.gameParams,this.userParams,this.displayElement);o.session.set("config",e),await np(e),await uc(e),Dr(this.gameParams.bEyeTracking)?(await ip([op.infoSlideView.welcome,op.infoSlideView.calibrationIntro]),await Vl(e),await ip(op.infoSlideView.calibrationEnd)):await ip([op.infoSlideView.welcome]);if((await async function(e,n){const t=document.createElement("div");return t.innerHTML="<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <link href=\"https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css\" rel=\"stylesheet\" integrity=\"sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3\" crossorigin=\"anonymous\">\n <meta charset=\"UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n</head>\n\n<style>\n #stimulus-letter {\n height: 30%;\n }\n</style>\n\n<body>\n <div class=\"container-fluid h-100\">\n <div class=\"static-container\"> \n <div class=\"speech-bubble\" role=\"status\"></div>\n <img class=\"lion-char-instructions\" src=\"https://storage.googleapis.com/roav-ran/shared/assets/pointingRightLionAge12.webp\" alt=\"Lion character\">\n \x3c!--TODO: Add alt--\x3e\n <img id=\"stimulus-letter\">\n \x3c!--TODO: Extract to constants--\x3e\n <p class=\"next-text\">Click the yellow button to continue.</p>\n \x3c!-- Audio Playing --\x3e \n <audio autoplay id=\"voiceover\"> </audio>\n <button class=\"next-button\" aria-label=\"Continue\"></button>\n </div>\n </div>\n <audio id=\"voiceover\"></audio>\n</body>\n\n<script data-dynamic>\n\n var counter = 0;\n var userSpoke = false;\n var animFrameId = null;\n var micStream = null;\n var timeoutId = null;\n var feedbackRetryCount = 0;\n var maxFeedbackRetries = (window.instructionStage && window.instructionStage.maxFeedbackRetries) || 3;\n var instructionSignal = window.instructionAbortController\n ? window.instructionAbortController.signal\n : undefined;\n\n var nextButton = document.querySelector('.next-button');\n var nextText = document.querySelector('.next-text');\n nextButton.disabled = true;\n nextText.textContent = '';\n nextButton.addEventListener('click', function () {\n startNextView();\n }, { signal: instructionSignal });\n\n var voiceover = document.getElementById('voiceover');\n voiceover.addEventListener('ended', function () {\n setupMediaStream();\n }, { signal: instructionSignal });\n\n // Show first slide immediately\n startNextView();\n\n function startNextView() {\n \n counter++;\n\n if (timeoutId !== null) {\n clearTimeout(timeoutId);\n timeoutId = null;\n }\n if (animFrameId !== null) {\n cancelAnimationFrame(animFrameId);\n animFrameId = null;\n }\n if (micStream !== null) {\n micStream.getTracks().forEach(function (track) { track.stop(); });\n micStream = null;\n }\n var speechBubble = document.querySelector('.speech-bubble');\n var stimulusLetter = document.getElementById('stimulus-letter');\n var voiceover = document.getElementById('voiceover');\n\n if (window.instructionStage) {\n\n if (userSpoke && (counter === 2 || counter === 4)) counter += 1; // skip feedback if user spoke\n\n switch (counter) {\n case 1:\n userSpoke = false; // reset for next time\n nextButton.disabled = true;\n nextText.textContent = '';\n // Teaching slide: introduce the letter B\n speechBubble.innerHTML = window.instructionStage.letterB.header.text;\n stimulusLetter.src = 'https://storage.googleapis.com/roav-ran/shared/Letters/B.svg';\n voiceover.src = window.instructionStage.letterB.header.audioSrc;\n break;\n case 2:\n // \"I can't hear you\" retry for letter B\n feedbackRetryCount = 1;\n userSpoke = false;\n nextButton.disabled = true;\n nextText.textContent = '';\n speechBubble.innerHTML = window.instructionStage.feedback.header.text;\n stimulusLetter.src = 'https://storage.googleapis.com/roav-ran/shared/Letters/B.svg';\n voiceover.src = window.instructionStage.feedback.header.audioSrc;\n break;\n case 3:\n // Practice prompt: ask student to identify the letter D\n feedbackRetryCount = 0;\n userSpoke = false;\n nextButton.disabled = true;\n nextText.textContent = '';\n speechBubble.innerHTML = window.instructionStage.letterD.header.text;\n stimulusLetter.src = 'https://storage.googleapis.com/roav-ran/shared/Letters/D.svg';\n voiceover.src = window.instructionStage.letterD.header.audioSrc;\n break;\n case 4:\n // \"I can't hear you\" retry for letter D\n feedbackRetryCount = 1;\n userSpoke = false;\n nextButton.disabled = true;\n nextText.textContent = '';\n speechBubble.innerHTML = window.instructionStage.feedback.header.text;\n stimulusLetter.src = 'https://storage.googleapis.com/roav-ran/shared/Letters/D.svg';\n voiceover.src = window.instructionStage.feedback.header.audioSrc;\n break;\n default:\n counter = 0;\n pageCompleted();\n return;\n }\n }\n\n if (voiceover.src && voiceover.src !== window.location.href) {\n voiceover.play();\n }\n }\n\n async function setupMediaStream() {\n try {\n const audioContext = new AudioContext();\n micStream = await navigator.mediaDevices.getUserMedia({ audio: true });\n\n const micSource = audioContext.createMediaStreamSource(micStream);\n const analyser = audioContext.createAnalyser();\n analyser.fftSize = 2048;\n micSource.connect(analyser);\n\n const bufferLength = analyser.frequencyBinCount;\n const dataArray = new Uint8Array(bufferLength);\n\n function detectAudio() {\n analyser.getByteTimeDomainData(dataArray);\n let sum = 0;\n for (let i = 0; i < bufferLength; i++) {\n sum += (dataArray[i] - 128) * (dataArray[i] - 128);\n }\n const rms = Math.sqrt(sum / bufferLength);\n // console.log('RMS:', rms);\n if (rms > 7.0) {\n // This is for testing audio thresholds\n // console.log('Audio detected with RMS:', rms);\n if (timeoutId !== null) {\n clearTimeout(timeoutId);\n timeoutId = null;\n }\n userSpoke = true;\n nextButton.disabled = false;\n nextText.textContent = 'Click the yellow button to continue.';\n }\n animFrameId = requestAnimationFrame(detectAudio);\n }\n\n animFrameId = requestAnimationFrame(detectAudio);\n timeoutId = setTimeout(function () {\n if (!userSpoke) {\n if ((counter === 2 || counter === 4) && feedbackRetryCount < maxFeedbackRetries) {\n feedbackRetryCount++;\n restartCurrentFeedbackSlide();\n } else if (counter === 2 || counter === 4) {\n pageFailedMic();\n } else {\n startNextView();\n }\n }\n }, 5000);\n } catch (err) {\n console.error('Microphone access failed:', err);\n }\n }\n\n function restartCurrentFeedbackSlide() {\n if (animFrameId !== null) { cancelAnimationFrame(animFrameId); animFrameId = null; }\n if (micStream !== null) { micStream.getTracks().forEach(function (t) { t.stop(); }); micStream = null; }\n userSpoke = false;\n var vo = document.getElementById('voiceover');\n vo.currentTime = 0;\n vo.play();\n }\n\n function pageFailedMic() {\n if (timeoutId !== null) { clearTimeout(timeoutId); timeoutId = null; }\n if (animFrameId !== null) { cancelAnimationFrame(animFrameId); animFrameId = null; }\n if (micStream !== null) { micStream.getTracks().forEach(function (t) { t.stop(); }); micStream = null; }\n document.dispatchEvent(new Event('instructionMicFailed'));\n }\n\n function pageCompleted() {\n if (timeoutId !== null) {\n clearTimeout(timeoutId);\n timeoutId = null;\n }\n if (animFrameId !== null) {\n cancelAnimationFrame(animFrameId);\n animFrameId = null;\n }\n if (micStream !== null) {\n micStream.getTracks().forEach(function (track) { track.stop(); });\n micStream = null;\n }\n document.dispatchEvent(new Event('pageComplete'));\n }\n\n<\/script>\n</html>\n",document.body.appendChild(t),window.instructionStage=e,window.instructionAbortController=new AbortController,await Fr(t),Nr(t),new Promise((e=>{document.addEventListener("pageComplete",(()=>{t.remove(),tp(),e({micFailed:!1})}),{once:!0}),document.addEventListener("instructionMicFailed",(()=>{t.remove(),tp(),e({micFailed:!0})}),{once:!0})}))}(op.instructionView)).micFailed)return lc(),await sp(op.micFailView),await e.firekit.updateEngagementFlags(["noAudioDetected"],!1),await e.firekit.abortRun(),"aborted";await ip(op.infoSlideView.guidedPracticeLetters);const n={Letters:{dir:"https://storage.googleapis.com/roav-ran/shared/Letters",stimulus:Lr[Math.floor(Math.random()*Lr.length)],sizecm:2,testname:"Letters"},Numbers:{dir:"https://storage.googleapis.com/roav-ran/shared/Numbers",stimulus:Mr[Math.floor(Math.random()*Mr.length)],sizecm:2,testname:"Numbers"}},t=op.subtestOrder;for(let a=0;a<t.length;a++){const r=t[a];if(o.session.set("testConfig",n[r]),"Letters"===r)var i={assets:op.practiceView.letter,stimulusDir:"https://storage.googleapis.com/roav-ran/shared/Letters"},s=op.ranView.letter;else i={assets:op.practiceView.number,stimulusDir:"https://storage.googleapis.com/roav-ran/shared/Numbers"},s=op.ranView.number;await ap(i,e),await Zl("Practice",e,s.practiceIntro),await Zl("Test",e,s.testIntro),a<t.length-1&&"Letters"===r&&await ip(op.infoSlideView.guidedPracticeNumbers)}return await ip(op.infoSlideView.assessmentEnd),await e.firekit.updateEngagementFlags([],!0),await e.firekit.finishRun(),"success"}}export{rp as default};
11
+ //# sourceMappingURL=index.be3e39ea.js.map