From 1c6c74bde06d8cdb2052af59e896e9b2427dd19a Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Mon, 25 May 2020 18:56:13 +0200 Subject: [PATCH] Update --- ...undle.74134.esm.js => bundle.ca0cc.esm.js} | 4 +-- ...134.esm.js.map => bundle.ca0cc.esm.js.map} | 2 +- docs/{bundle.fb716.js => bundle.f6a31.js} | 4 +-- ...undle.fb716.js.map => bundle.f6a31.js.map} | 2 +- docs/index.html | 2 +- ...t.097656f7b3d3f849be5cd65abd2c2890.esm.js} | 26 +++++++++---------- ...ifest.4c3e7a8015e5e75e77ad3c23bfc02e4c.js} | 24 ++++++++--------- docs/push-manifest.json | 2 +- docs/route-calcoloNumerico.chunk.67eea.js | 2 ++ docs/route-calcoloNumerico.chunk.67eea.js.map | 1 + docs/route-calcoloNumerico.chunk.abaa3.esm.js | 2 -- docs/route-calcoloNumerico.chunk.b64db.js | 2 -- docs/route-calcoloNumerico.chunk.b64db.js.map | 1 - docs/route-calcoloNumerico.chunk.d6955.esm.js | 2 ++ ...te-calcoloNumerico.chunk.d6955.esm.js.map} | 2 +- ...route-ottimizzazioneLineare.chunk.0d083.js | 2 ++ ...e-ottimizzazioneLineare.chunk.0d083.js.map | 1 + ...e-ottimizzazioneLineare.chunk.353b8.esm.js | 9 ------- ...route-ottimizzazioneLineare.chunk.762b1.js | 2 -- ...e-ottimizzazioneLineare.chunk.762b1.js.map | 1 - ...ute-ottimizzazioneLineare.chunk.ce59d.css} | 2 +- ...e-ottimizzazioneLineare.chunk.f48cc.esm.js | 23 ++++++++++++++++ ...imizzazioneLineare.chunk.f48cc.esm.js.map} | 2 +- docs/sw-esm.js | 2 +- docs/sw.js | 2 +- src/components/OttimizzazioneLineare/Max.js | 7 +++++ src/components/OttimizzazioneLineare/Min.js | 7 +++++ .../{Unbounded.less => Styles.less} | 0 .../OttimizzazioneLineare/Unfeasible.less | 2 -- 29 files changed, 83 insertions(+), 57 deletions(-) rename docs/{bundle.74134.esm.js => bundle.ca0cc.esm.js} (85%) rename docs/{bundle.74134.esm.js.map => bundle.ca0cc.esm.js.map} (66%) rename docs/{bundle.fb716.js => bundle.f6a31.js} (99%) rename docs/{bundle.fb716.js.map => bundle.f6a31.js.map} (99%) rename docs/{precache-manifest.40c748ad559066accc883673cce8ce47.esm.js => precache-manifest.097656f7b3d3f849be5cd65abd2c2890.esm.js} (79%) rename docs/{precache-manifest.c174bc8e42d4199c747cda8554c67ae3.js => precache-manifest.4c3e7a8015e5e75e77ad3c23bfc02e4c.js} (79%) create mode 100644 docs/route-calcoloNumerico.chunk.67eea.js create mode 100644 docs/route-calcoloNumerico.chunk.67eea.js.map delete mode 100644 docs/route-calcoloNumerico.chunk.abaa3.esm.js delete mode 100644 docs/route-calcoloNumerico.chunk.b64db.js delete mode 100644 docs/route-calcoloNumerico.chunk.b64db.js.map create mode 100644 docs/route-calcoloNumerico.chunk.d6955.esm.js rename docs/{route-calcoloNumerico.chunk.abaa3.esm.js.map => route-calcoloNumerico.chunk.d6955.esm.js.map} (54%) create mode 100644 docs/route-ottimizzazioneLineare.chunk.0d083.js create mode 100644 docs/route-ottimizzazioneLineare.chunk.0d083.js.map delete mode 100644 docs/route-ottimizzazioneLineare.chunk.353b8.esm.js delete mode 100644 docs/route-ottimizzazioneLineare.chunk.762b1.js delete mode 100644 docs/route-ottimizzazioneLineare.chunk.762b1.js.map rename docs/{route-ottimizzazioneLineare.chunk.9a20b.css => route-ottimizzazioneLineare.chunk.ce59d.css} (82%) create mode 100644 docs/route-ottimizzazioneLineare.chunk.f48cc.esm.js rename docs/{route-ottimizzazioneLineare.chunk.353b8.esm.js.map => route-ottimizzazioneLineare.chunk.f48cc.esm.js.map} (52%) create mode 100644 src/components/OttimizzazioneLineare/Max.js create mode 100644 src/components/OttimizzazioneLineare/Min.js rename src/components/OttimizzazioneLineare/{Unbounded.less => Styles.less} (100%) delete mode 100644 src/components/OttimizzazioneLineare/Unfeasible.less diff --git a/docs/bundle.74134.esm.js b/docs/bundle.ca0cc.esm.js similarity index 85% rename from docs/bundle.74134.esm.js rename to docs/bundle.ca0cc.esm.js index 03ef76a..3ab9fda 100644 --- a/docs/bundle.74134.esm.js +++ b/docs/bundle.ca0cc.esm.js @@ -1,2 +1,2 @@ -!function(t){function e(e){for(var n,o,r=e[0],a=e[1],u=0,c=[];u{e=this.base=this.nextBase||this.__b,t(t=>{this.setState({child:t.default||t})})},this.shouldComponentUpdate=(t,r)=>(n=(r=void 0===r.child)&&void 0===n&&e?3===e.nodeType?e.data:Object(o.h)(e.nodeName,{dangerouslySetInnerHTML:{__html:e.innerHTML}}):"",!r),this.render=(t,e)=>e.child?Object(o.h)(e.child,t):n}return(e.prototype=new o.Component).constructor=e,e}},Vh2B:function(t,e,n){"use strict";var o=n("SdNZ");e.a=Object(o.a)((function(t){n.e(4).then(function(){t(n("HmML"))}.bind(null,n)).catch(n.oe)}))},WC2o:function(t,e,n){"use strict";var o=n("SdNZ");e.a=Object(o.a)((function(t){n.e(7).then(function(){t(n("EIZr"))}.bind(null,n)).catch(n.oe)}))},Y3FI:function(t,e,n){"use strict";function o(t,e){for(var n in e)t[n]=e[n];return t}function r(t,e,n){var o,r=/(?:\?([^#]*))?(#.*)?$/,i=t.match(r),a={};if(i&&i[1])for(var c=i[1].split("&"),l=0;le.rank?-1:t.index-e.index}function a(t,e){return t.index=e,t.rank=function(t){return t.props.default?0:u(t.props.path).map(c).join("")}(t),t.props}function u(t){return t.replace(/(^\/+|\/+$)/g,"").split("/")}function c(t){return":"==t.charAt(0)?1+"*+?".indexOf(t.charAt(t.length-1))||4:5}function l(){var t;return""+((t=y&&y.location?y.location:y&&y.getCurrentLocation?y.getCurrentLocation():"undefined"!=typeof location?location:w).pathname||"")+(t.search||"")}function s(t,e){return void 0===e&&(e=!1),"string"!=typeof t&&t.url&&(e=t.replace,t=t.url),function(t){for(var e=g.length;e--;)if(g[e].canRoute(t))return!0;return!1}(t)&&function(t,e){void 0===e&&(e="push"),y&&y[e]?y[e](t):"undefined"!=typeof history&&history[e+"State"]&&history[e+"State"](null,null,t)}(t,e?"replace":"push"),f(t)}function f(t){for(var e=!1,n=0;n0},e.prototype.routeTo=function(t){this.setState({url:t});var e=this.canRoute(t);return this.updating||this.forceUpdate(),e},e.prototype.componentWillMount=function(){g.push(this),this.updating=!0},e.prototype.componentDidMount=function(){var t=this;y&&(this.unlisten=y.listen((function(e){t.routeTo(""+(e.pathname||"")+(e.search||""))}))),this.updating=!1},e.prototype.componentWillUnmount=function(){"function"==typeof this.unlisten&&this.unlisten(),g.splice(g.indexOf(this),1)},e.prototype.componentWillUpdate=function(){this.updating=!0},e.prototype.componentDidUpdate=function(){this.updating=!1},e.prototype.getMatchingChildren=function(t,e,n){return t.filter(a).sort(i).map((function(t){var i=r(e,t.props.path,t.props);if(i){if(!1!==n){var a={url:e,matches:i};return o(a,i),delete a.ref,delete a.key,Object(v.cloneElement)(t,a)}return t}})).filter(Boolean)},e.prototype.render=function(t,e){var n=t.children,o=t.onChange,r=e.url,i=this.getMatchingChildren(Object(v.toChildArray)(n),r,!0),a=i[0]||null,u=this.previousUrl;return r!==u&&(this.previousUrl=r,"function"==typeof o&&o({router:this,url:r,previous:u,active:i,current:a})),a},e}(v.Component);C.subscribers=b,C.getCurrentUrl=l,C.route=s,C.Router=C,C.Route=function(t){return Object(v.createElement)(t.component,t)},C.Link=function(t){return Object(v.createElement)("a",o({onClick:h},t))},C.exec=r,e.a=C},afj4:function(){},hosL:function(t,e,n){"use strict";function o(t,e){for(var n in e)t[n]=e[n];return t}function r(t){var e=t.parentNode;e&&e.removeChild(t)}function i(t,e,n){var o,r=arguments,i={};for(o in e)"key"!==o&&"ref"!==o&&(i[o]=e[o]);if(arguments.length>3)for(n=[n],o=3;o2&&(e.children=W.slice.call(arguments,2)),a(t.type,e,e.key||t.key,e.ref||t.ref,null)}function P(t){var e={},n={__c:"__cC"+D++,__:t,Consumer:function(t,e){return t.children(e)},Provider:function(t){var o,r=this;return this.getChildContext||(o=[],this.getChildContext=function(){return e[n.__c]=r,e},this.shouldComponentUpdate=function(t){r.props.value!==t.value&&o.some((function(e){e.context=t.value,p(e)}))},this.sub=function(t){o.push(t);var e=t.componentWillUnmount;t.componentWillUnmount=function(){o.splice(o.indexOf(t),1),e&&e.call(t)}}),t.children}};return n.Consumer.contextType=n,n}n.r(e),n.d(e,"render",(function(){return O})),n.d(e,"hydrate",(function(){return S})),n.d(e,"createElement",(function(){return i})),n.d(e,"h",(function(){return i})),n.d(e,"Fragment",(function(){return c})),n.d(e,"createRef",(function(){return u})),n.d(e,"isValidElement",(function(){return T})),n.d(e,"Component",(function(){return l})),n.d(e,"cloneElement",(function(){return x})),n.d(e,"createContext",(function(){return P})),n.d(e,"toChildArray",(function(){return _})),n.d(e,"_unmount",(function(){return C})),n.d(e,"options",(function(){return A}));var A,T,L,j,U,N,I,D,M={},W=[],z=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord/i;A={__e:function(t,e){for(var n,o;e=e.__;)if((n=e.__c)&&!n.__)try{if(n.constructor&&null!=n.constructor.getDerivedStateFromError&&(o=!0,n.setState(n.constructor.getDerivedStateFromError(t))),null!=n.componentDidCatch&&(o=!0,n.componentDidCatch(t)),o)return p(n.__E=n)}catch(e){t=e}throw t}},T=function(t){return null!=t&&void 0===t.constructor},l.prototype.setState=function(t,e){var n;n=this.__s!==this.state?this.__s:this.__s=o({},this.state),"function"==typeof t&&(t=t(n,this.props)),t&&o(n,t),null!=t&&this.__v&&(e&&this.__h.push(e),p(this))},l.prototype.forceUpdate=function(t){this.__v&&(this.__e=!0,t&&this.__h.push(t),p(this))},l.prototype.render=c,L=[],j=0,U="function"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,I=M,D=0},lSvg:function(t,e,n){"use strict";(function(t){n.d(e,"a",(function(){return a}));var o=n("K9Cg"),r=n.n(o),i=n("hosL");class a extends i.Component{render(){return t("div",{class:r.a.copyright},"© 2020 - Stefano Pigozzi - ",t("a",{href:"https://creativecommons.org/licenses/by-sa/4.0/"},"CC BY-SA 4.0")," - ",t("a",{href:"https://github.com/Steffo99/appuntiweb"},"Codice sorgente")," - ",t("a",{href:"https://ko-fi.com/steffo"},"Supportami"))}}}).call(this,n("hosL").h)},mIK7:function(t,e,n){"use strict";var o=n("SdNZ");e.a=Object(o.a)((function(t){Promise.all([n.e(0),n.e(9)]).then(function(){t(n("/fDt"))}.bind(null,n)).catch(n.oe)}))},mdyV:function(t,e,n){"use strict";n.r(e);var o=n("hosL");const{h:r,render:i}=o,a=t=>t&&t.default?t.default:t;if("serviceWorker"in navigator&&navigator.serviceWorker.register(n.p+"sw-esm.js"),"function"==typeof a(n("QfWi"))){let t=document.getElementById("preact_root")||document.body.firstElementChild;(()=>{let e=a(n("QfWi")),o={};const u=document.querySelector('[type="__PREACT_CLI_DATA__"]');u&&(o=JSON.parse(u.innerHTML).preRenderData||o),t=i(r(e,{CLI_DATA:{preRenderData:o}}),document.body,t)})()}},ve3R:function(t,e,n){"use strict";function o(){return(o=Object.assign||function(t){for(var e=1;e=0;p--){var h=a[p];"."===h?i(a,p):".."===h?(i(a,p),f++):f&&(i(a,p),f--)}if(!l)for(;f--;f)a.unshift("..");!l||""===a[0]||a[0]&&r(a[0])||a.unshift("");var d=a.join("/");return n&&"/"!==d.substr(-1)&&(d+="/"),d},v=function(t){if(!t)throw new Error("Invariant failed")},m=!("undefined"==typeof window||!window.document||!window.document.createElement),y={hashbang:{encodePath:function(t){return"!"===t.charAt(0)?t:"!/"+u(t)},decodePath:function(t){return"!"===t.charAt(0)?t.substr(1):t}},noslash:{encodePath:u,decodePath:a},slash:{encodePath:a,decodePath:a}}},"y+LV":function(t,e,n){"use strict";function o(t){return t.type===c.Fragment?"Fragment":"function"==typeof t.type?t.type.displayName||t.type.name:"string"==typeof t.type?t.type:"#text"}function r(){return s.length>0?s[s.length-1]:null}function i(t){return"function"==typeof t.type&&t.type!=c.Fragment}function a(t){for(var e=[t],n=t;null!=n.__o;)e.push(n.__o),n=n.__o;return e.reduce((function(t,e){t+=" in "+o(e);var n=e.__source;return n?t+=" (at "+n.fileName+":"+n.lineNumber+")":p||(p=!0,console.warn("Add @babel/plugin-transform-react-jsx-source to get a more detailed component stack. Note that you should not add it to production builds of your App for bundle size reasons.")),t+"\n"}),"")}function u(t){var e=t.props,n=o(t),r="";for(var i in e)if(e.hasOwnProperty(i)&&"children"!==i){var a=e[i];"function"==typeof a&&(a="function "+(a.displayName||a.name)+"() {}"),a=Object(a)!==a||a.toString?a+"":Object.prototype.toString.call(a),r+=" "+i+"="+JSON.stringify(a)}var u=e.children;return"<"+n+r+(u&&u.length?">..":" />")}var c=n("hosL");"undefined"!=typeof window&&window.__PREACT_DEVTOOLS__&&window.__PREACT_DEVTOOLS__.attachPreact("10.0.5",c.options,{Fragment:c.Fragment});var l={},s=[],f=[],p=!1,h="function"==typeof WeakMap,d=c.Component.prototype.setState;c.Component.prototype.setState=function(t,e){return null==this.__v?null==this.state&&console.warn('Calling "this.setState" inside the constructor of a component is a no-op and might be a bug in your application. Instead, set "this.state = {}" directly.\n\n'+a(r())):null==this.__P&&console.warn('Can\'t call "this.setState" on an unmounted component. This is a no-op, but it indicates a memory leak in your application. To fix, cancel all subscriptions and asynchronous tasks in the componentWillUnmount method.\n\n'+a(this.__v)),d.call(this,t,e)};var _=c.Component.prototype.forceUpdate;c.Component.prototype.forceUpdate=function(t){return null==this.__v?console.warn('Calling "this.forceUpdate" inside the constructor of a component is a no-op and might be a bug in your application.\n\n'+a(r())):null==this.__P&&console.warn('Can\'t call "this.forceUpdate" on an unmounted component. This is a no-op, but it indicates a memory leak in your application. To fix, cancel all subscriptions and asynchronous tasks in the componentWillUnmount method.\n\n'+a(this.__v)),_.call(this,t)},function(){!function(){var t=c.options.__b,e=c.options.diffed,n=c.options.__,o=c.options.vnode,r=c.options.__r;c.options.diffed=function(t){i(t)&&f.pop(),s.pop(),e&&e(t)},c.options.__b=function(e){i(e)&&s.push(e),t&&t(e)},c.options.__=function(t,e){f=[],n&&n(t,e)},c.options.vnode=function(t){t.__o=f.length>0?f[f.length-1]:null,o&&o(t)},c.options.__r=function(t){i(t)&&f.push(t),r&&r(t)}}();var t=c.options.__b,e=c.options.diffed,n=c.options.vnode,r=c.options.__e,p=c.options.__,d=c.options.__h,_=h?{useEffect:new WeakMap,useLayoutEffect:new WeakMap,lazyPropTypes:new WeakMap}:null;c.options.__e=function(t,e,n){if(e&&e.__c&&"function"==typeof t.then){var i=t;t=new Error("Missing Suspense. The throwing component was: "+o(e));for(var a=e;a;a=a.__)if(a.__c&&a.__c.__c){t=i;break}if(t instanceof Error)throw t}r(t,e,n)},c.options.__=function(t,e){if(!e)throw new Error("Undefined parent passed to render(), this is the second argument.\nCheck if the element is available in the DOM/has the correct id.");var n;switch(e.nodeType){case 1:case 11:case 9:n=!0;break;default:n=!1}if(!n){var r=o(t);throw new Error("Expected a valid HTML node as a second argument to render.\tReceived "+e+" instead: render(<"+r+" />, "+e+");")}p&&p(t,e)},c.options.__b=function(e){var n,r,i,c=e.type,s=function t(e){return e?"function"==typeof e.type?t(e.__):e:{}}(e.__);if(void 0===c)throw new Error("Undefined component passed to createElement()\n\nYou likely forgot to export your component or might have mixed up default and named imports"+u(e)+"\n\n"+a(e));if(null!=c&&"object"==typeof c){if(void 0!==c.__k&&void 0!==c.__e)throw new Error("Invalid type passed to createElement(): "+c+"\n\nDid you accidentally pass a JSX literal as JSX twice?\n\n let My"+o(e)+" = "+u(c)+";\n let vnode = ;\n\nThis usually happens when you export a JSX literal and not the component.\n\n"+a(e));throw new Error("Invalid type passed to createElement(): "+(Array.isArray(c)?"array":c))}if("thead"!==c&&"tfoot"!==c&&"tbody"!==c||"table"===s.type?"tr"===c&&"thead"!==s.type&&"tfoot"!==s.type&&"tbody"!==s.type&&"table"!==s.type?console.error("Improper nesting of table. Your should have a parent."+u(e)+"\n\n"+a(e)):"td"===c&&"tr"!==s.type?console.error("Improper nesting of table. Your should have a parent."+u(e)+"\n\n"+a(e)):"th"===c&&"tr"!==s.type&&console.error("Improper nesting of table. Your should have a ."+u(e)+"\n\n"+a(e)):console.error("Improper nesting of table. Your should have a parent."+u(e)+"\n\n"+a(e)),void 0!==e.ref&&"function"!=typeof e.ref&&"object"!=typeof e.ref&&!("$$typeof"in e))throw new Error('Component\'s "ref" property should be a function, or an object created by createRef(), but got ['+typeof e.ref+"] instead\n"+u(e)+"\n\n"+a(e));if("string"==typeof e.type)for(var f in e.props)if("o"===f[0]&&"n"===f[1]&&"function"!=typeof e.props[f]&&null!=e.props[f])throw new Error("Component's \""+f+'" property should be a function, but got ['+typeof e.props[f]+"] instead\n"+u(e)+"\n\n"+a(e));if("function"==typeof e.type&&e.type.propTypes){if("Lazy"===e.type.displayName&&_&&!_.lazyPropTypes.has(e.type)){var p="PropTypes are not supported on lazy(). Use propTypes on the wrapped component itself. ";try{var h=e.type();_.lazyPropTypes.set(e.type,!0),console.warn(p+"Component wrapped in lazy() is "+o(h))}catch(e){console.warn(p+"We will log the wrapped component's name once it is loaded.")}}n=e.type.propTypes,r=e.props,i=o(e),Object.keys(n).forEach((function(t){var e;try{e=n[t](r,t,i,"prop",null,"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED")}catch(t){e=t}!e||e.message in l||(l[e.message]=!0,console.error("Failed prop type: "+e.message))}))}t&&t(e)},c.options.__h=function(t){if(!t)throw new Error("Hook can only be invoked from render methods.");d&&d(t)};var v=function(t,e){return{get:function(){throw new Error("getting vnode."+t+" is deprecated, "+e)},set:function(){throw new Error("setting vnode."+t+" is not allowed, "+e)}}},m={nodeName:v("nodeName","use vnode.type"),attributes:v("attributes","use vnode.props"),children:v("children","use vnode.props.children")},y=Object.create({},m);c.options.vnode=function(t){var e=t.props;if(null!==t.type&&null!=e&&("__source"in e||"__self"in e)){var o=t.props={};for(var r in e){var i=e[r];"__source"===r?t.__source=i:"__self"===r?t.__self=i:o[r]=i}}Object.setPrototypeOf(t,y),n&&n(t)},c.options.diffed=function(t){t.__k&&t.__k.forEach((function(e){if(e&&void 0===e.type){delete e.__,delete e.__b;var n=Object.keys(e).join(",");throw new Error("Objects are not valid as a child. Encountered an object with the keys {"+n+"}.\n\n"+a(t))}}));var n=t.__c;if(n&&n.__H){var r=n.__H;Array.isArray(r.__)&&r.__.forEach((function(e){if(e.__h&&(!e.__H||!Array.isArray(e.__H))){var n=o(t);console.warn("In "+n+" you are calling useMemo/useCallback without passing arguments.\nThis is a noop since it will not be able to memoize, it will execute it every render.\n\n"+a(t))}}))}if(e&&e(t),null!=t.__k)for(var i=[],c=0;c{e=this.base=this.nextBase||this.__b,t(t=>{this.setState({child:t.default||t})})},this.shouldComponentUpdate=(t,r)=>(n=(r=void 0===r.child)&&void 0===n&&e?3===e.nodeType?e.data:Object(o.h)(e.nodeName,{dangerouslySetInnerHTML:{__html:e.innerHTML}}):"",!r),this.render=(t,e)=>e.child?Object(o.h)(e.child,t):n}return(e.prototype=new o.Component).constructor=e,e}},Vh2B:function(t,e,n){"use strict";var o=n("SdNZ");e.a=Object(o.a)((function(t){n.e(4).then(function(){t(n("HmML"))}.bind(null,n)).catch(n.oe)}))},WC2o:function(t,e,n){"use strict";var o=n("SdNZ");e.a=Object(o.a)((function(t){n.e(7).then(function(){t(n("EIZr"))}.bind(null,n)).catch(n.oe)}))},Y3FI:function(t,e,n){"use strict";function o(t,e){for(var n in e)t[n]=e[n];return t}function r(t,e,n){var o,r=/(?:\?([^#]*))?(#.*)?$/,i=t.match(r),a={};if(i&&i[1])for(var c=i[1].split("&"),l=0;le.rank?-1:t.index-e.index}function a(t,e){return t.index=e,t.rank=function(t){return t.props.default?0:u(t.props.path).map(c).join("")}(t),t.props}function u(t){return t.replace(/(^\/+|\/+$)/g,"").split("/")}function c(t){return":"==t.charAt(0)?1+"*+?".indexOf(t.charAt(t.length-1))||4:5}function l(){var t;return""+((t=y&&y.location?y.location:y&&y.getCurrentLocation?y.getCurrentLocation():"undefined"!=typeof location?location:w).pathname||"")+(t.search||"")}function s(t,e){return void 0===e&&(e=!1),"string"!=typeof t&&t.url&&(e=t.replace,t=t.url),function(t){for(var e=g.length;e--;)if(g[e].canRoute(t))return!0;return!1}(t)&&function(t,e){void 0===e&&(e="push"),y&&y[e]?y[e](t):"undefined"!=typeof history&&history[e+"State"]&&history[e+"State"](null,null,t)}(t,e?"replace":"push"),f(t)}function f(t){for(var e=!1,n=0;n0},e.prototype.routeTo=function(t){this.setState({url:t});var e=this.canRoute(t);return this.updating||this.forceUpdate(),e},e.prototype.componentWillMount=function(){g.push(this),this.updating=!0},e.prototype.componentDidMount=function(){var t=this;y&&(this.unlisten=y.listen((function(e){t.routeTo(""+(e.pathname||"")+(e.search||""))}))),this.updating=!1},e.prototype.componentWillUnmount=function(){"function"==typeof this.unlisten&&this.unlisten(),g.splice(g.indexOf(this),1)},e.prototype.componentWillUpdate=function(){this.updating=!0},e.prototype.componentDidUpdate=function(){this.updating=!1},e.prototype.getMatchingChildren=function(t,e,n){return t.filter(a).sort(i).map((function(t){var i=r(e,t.props.path,t.props);if(i){if(!1!==n){var a={url:e,matches:i};return o(a,i),delete a.ref,delete a.key,Object(v.cloneElement)(t,a)}return t}})).filter(Boolean)},e.prototype.render=function(t,e){var n=t.children,o=t.onChange,r=e.url,i=this.getMatchingChildren(Object(v.toChildArray)(n),r,!0),a=i[0]||null,u=this.previousUrl;return r!==u&&(this.previousUrl=r,"function"==typeof o&&o({router:this,url:r,previous:u,active:i,current:a})),a},e}(v.Component);C.subscribers=b,C.getCurrentUrl=l,C.route=s,C.Router=C,C.Route=function(t){return Object(v.createElement)(t.component,t)},C.Link=function(t){return Object(v.createElement)("a",o({onClick:d},t))},C.exec=r,e.a=C},afj4:function(){},hosL:function(t,e,n){"use strict";function o(t,e){for(var n in e)t[n]=e[n];return t}function r(t){var e=t.parentNode;e&&e.removeChild(t)}function i(t,e,n){var o,r=arguments,i={};for(o in e)"key"!==o&&"ref"!==o&&(i[o]=e[o]);if(arguments.length>3)for(n=[n],o=3;o2&&(e.children=W.slice.call(arguments,2)),a(t.type,e,e.key||t.key,e.ref||t.ref,null)}function P(t){var e={},n={__c:"__cC"+D++,__:t,Consumer:function(t,e){return t.children(e)},Provider:function(t){var o,r=this;return this.getChildContext||(o=[],this.getChildContext=function(){return e[n.__c]=r,e},this.shouldComponentUpdate=function(t){r.props.value!==t.value&&o.some((function(e){e.context=t.value,p(e)}))},this.sub=function(t){o.push(t);var e=t.componentWillUnmount;t.componentWillUnmount=function(){o.splice(o.indexOf(t),1),e&&e.call(t)}}),t.children}};return n.Consumer.contextType=n,n}n.r(e),n.d(e,"render",(function(){return O})),n.d(e,"hydrate",(function(){return S})),n.d(e,"createElement",(function(){return i})),n.d(e,"h",(function(){return i})),n.d(e,"Fragment",(function(){return c})),n.d(e,"createRef",(function(){return u})),n.d(e,"isValidElement",(function(){return T})),n.d(e,"Component",(function(){return l})),n.d(e,"cloneElement",(function(){return x})),n.d(e,"createContext",(function(){return P})),n.d(e,"toChildArray",(function(){return _})),n.d(e,"_unmount",(function(){return C})),n.d(e,"options",(function(){return A}));var A,T,L,j,U,N,I,D,M={},W=[],z=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord/i;A={__e:function(t,e){for(var n,o;e=e.__;)if((n=e.__c)&&!n.__)try{if(n.constructor&&null!=n.constructor.getDerivedStateFromError&&(o=!0,n.setState(n.constructor.getDerivedStateFromError(t))),null!=n.componentDidCatch&&(o=!0,n.componentDidCatch(t)),o)return p(n.__E=n)}catch(e){t=e}throw t}},T=function(t){return null!=t&&void 0===t.constructor},l.prototype.setState=function(t,e){var n;n=this.__s!==this.state?this.__s:this.__s=o({},this.state),"function"==typeof t&&(t=t(n,this.props)),t&&o(n,t),null!=t&&this.__v&&(e&&this.__h.push(e),p(this))},l.prototype.forceUpdate=function(t){this.__v&&(this.__e=!0,t&&this.__h.push(t),p(this))},l.prototype.render=c,L=[],j=0,U="function"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,I=M,D=0},lSvg:function(t,e,n){"use strict";(function(t){n.d(e,"a",(function(){return a}));var o=n("K9Cg"),r=n.n(o),i=n("hosL");class a extends i.Component{render(){return t("div",{class:r.a.copyright},"© 2020 - Stefano Pigozzi - ",t("a",{href:"https://creativecommons.org/licenses/by-sa/4.0/"},"CC BY-SA 4.0")," - ",t("a",{href:"https://github.com/Steffo99/appuntiweb"},"Codice sorgente")," - ",t("a",{href:"https://ko-fi.com/steffo"},"Supportami"))}}}).call(this,n("hosL").h)},mIK7:function(t,e,n){"use strict";var o=n("SdNZ");e.a=Object(o.a)((function(t){Promise.all([n.e(0),n.e(9)]).then(function(){t(n("/fDt"))}.bind(null,n)).catch(n.oe)}))},mdyV:function(t,e,n){"use strict";n.r(e);var o=n("hosL");const{h:r,render:i}=o,a=t=>t&&t.default?t.default:t;if("serviceWorker"in navigator&&navigator.serviceWorker.register(n.p+"sw-esm.js"),"function"==typeof a(n("QfWi"))){let t=document.getElementById("preact_root")||document.body.firstElementChild;(()=>{let e=a(n("QfWi")),o={};const u=document.querySelector('[type="__PREACT_CLI_DATA__"]');u&&(o=JSON.parse(u.innerHTML).preRenderData||o),t=i(r(e,{CLI_DATA:{preRenderData:o}}),document.body,t)})()}},ve3R:function(t,e,n){"use strict";function o(){return(o=Object.assign||function(t){for(var e=1;e=0;p--){var d=a[p];"."===d?i(a,p):".."===d?(i(a,p),f++):f&&(i(a,p),f--)}if(!l)for(;f--;f)a.unshift("..");!l||""===a[0]||a[0]&&r(a[0])||a.unshift("");var h=a.join("/");return n&&"/"!==h.substr(-1)&&(h+="/"),h},v=function(t){if(!t)throw new Error("Invariant failed")},m=!("undefined"==typeof window||!window.document||!window.document.createElement),y={hashbang:{encodePath:function(t){return"!"===t.charAt(0)?t:"!/"+u(t)},decodePath:function(t){return"!"===t.charAt(0)?t.substr(1):t}},noslash:{encodePath:u,decodePath:a},slash:{encodePath:a,decodePath:a}}},"y+LV":function(t,e,n){"use strict";function o(t){return t.type===c.Fragment?"Fragment":"function"==typeof t.type?t.type.displayName||t.type.name:"string"==typeof t.type?t.type:"#text"}function r(){return s.length>0?s[s.length-1]:null}function i(t){return"function"==typeof t.type&&t.type!=c.Fragment}function a(t){for(var e=[t],n=t;null!=n.__o;)e.push(n.__o),n=n.__o;return e.reduce((function(t,e){t+=" in "+o(e);var n=e.__source;return n?t+=" (at "+n.fileName+":"+n.lineNumber+")":p||(p=!0,console.warn("Add @babel/plugin-transform-react-jsx-source to get a more detailed component stack. Note that you should not add it to production builds of your App for bundle size reasons.")),t+"\n"}),"")}function u(t){var e=t.props,n=o(t),r="";for(var i in e)if(e.hasOwnProperty(i)&&"children"!==i){var a=e[i];"function"==typeof a&&(a="function "+(a.displayName||a.name)+"() {}"),a=Object(a)!==a||a.toString?a+"":Object.prototype.toString.call(a),r+=" "+i+"="+JSON.stringify(a)}var u=e.children;return"<"+n+r+(u&&u.length?">..":" />")}var c=n("hosL");"undefined"!=typeof window&&window.__PREACT_DEVTOOLS__&&window.__PREACT_DEVTOOLS__.attachPreact("10.0.5",c.options,{Fragment:c.Fragment});var l={},s=[],f=[],p=!1,d="function"==typeof WeakMap,h=c.Component.prototype.setState;c.Component.prototype.setState=function(t,e){return null==this.__v?null==this.state&&console.warn('Calling "this.setState" inside the constructor of a component is a no-op and might be a bug in your application. Instead, set "this.state = {}" directly.\n\n'+a(r())):null==this.__P&&console.warn('Can\'t call "this.setState" on an unmounted component. This is a no-op, but it indicates a memory leak in your application. To fix, cancel all subscriptions and asynchronous tasks in the componentWillUnmount method.\n\n'+a(this.__v)),h.call(this,t,e)};var _=c.Component.prototype.forceUpdate;c.Component.prototype.forceUpdate=function(t){return null==this.__v?console.warn('Calling "this.forceUpdate" inside the constructor of a component is a no-op and might be a bug in your application.\n\n'+a(r())):null==this.__P&&console.warn('Can\'t call "this.forceUpdate" on an unmounted component. This is a no-op, but it indicates a memory leak in your application. To fix, cancel all subscriptions and asynchronous tasks in the componentWillUnmount method.\n\n'+a(this.__v)),_.call(this,t)},function(){!function(){var t=c.options.__b,e=c.options.diffed,n=c.options.__,o=c.options.vnode,r=c.options.__r;c.options.diffed=function(t){i(t)&&f.pop(),s.pop(),e&&e(t)},c.options.__b=function(e){i(e)&&s.push(e),t&&t(e)},c.options.__=function(t,e){f=[],n&&n(t,e)},c.options.vnode=function(t){t.__o=f.length>0?f[f.length-1]:null,o&&o(t)},c.options.__r=function(t){i(t)&&f.push(t),r&&r(t)}}();var t=c.options.__b,e=c.options.diffed,n=c.options.vnode,r=c.options.__e,p=c.options.__,h=c.options.__h,_=d?{useEffect:new WeakMap,useLayoutEffect:new WeakMap,lazyPropTypes:new WeakMap}:null;c.options.__e=function(t,e,n){if(e&&e.__c&&"function"==typeof t.then){var i=t;t=new Error("Missing Suspense. The throwing component was: "+o(e));for(var a=e;a;a=a.__)if(a.__c&&a.__c.__c){t=i;break}if(t instanceof Error)throw t}r(t,e,n)},c.options.__=function(t,e){if(!e)throw new Error("Undefined parent passed to render(), this is the second argument.\nCheck if the element is available in the DOM/has the correct id.");var n;switch(e.nodeType){case 1:case 11:case 9:n=!0;break;default:n=!1}if(!n){var r=o(t);throw new Error("Expected a valid HTML node as a second argument to render.\tReceived "+e+" instead: render(<"+r+" />, "+e+");")}p&&p(t,e)},c.options.__b=function(e){var n,r,i,c=e.type,s=function t(e){return e?"function"==typeof e.type?t(e.__):e:{}}(e.__);if(void 0===c)throw new Error("Undefined component passed to createElement()\n\nYou likely forgot to export your component or might have mixed up default and named imports"+u(e)+"\n\n"+a(e));if(null!=c&&"object"==typeof c){if(void 0!==c.__k&&void 0!==c.__e)throw new Error("Invalid type passed to createElement(): "+c+"\n\nDid you accidentally pass a JSX literal as JSX twice?\n\n let My"+o(e)+" = "+u(c)+";\n let vnode = ;\n\nThis usually happens when you export a JSX literal and not the component.\n\n"+a(e));throw new Error("Invalid type passed to createElement(): "+(Array.isArray(c)?"array":c))}if("thead"!==c&&"tfoot"!==c&&"tbody"!==c||"table"===s.type?"tr"===c&&"thead"!==s.type&&"tfoot"!==s.type&&"tbody"!==s.type&&"table"!==s.type?console.error("Improper nesting of table. Your should have a parent."+u(e)+"\n\n"+a(e)):"td"===c&&"tr"!==s.type?console.error("Improper nesting of table. Your parent."+u(e)+"\n\n"+a(e)):"th"===c&&"tr"!==s.type&&console.error("Improper nesting of table. Your ."+u(e)+"\n\n"+a(e)):console.error("Improper nesting of table. Your should have a
should have a
should have a
parent."+u(e)+"\n\n"+a(e)),void 0!==e.ref&&"function"!=typeof e.ref&&"object"!=typeof e.ref&&!("$$typeof"in e))throw new Error('Component\'s "ref" property should be a function, or an object created by createRef(), but got ['+typeof e.ref+"] instead\n"+u(e)+"\n\n"+a(e));if("string"==typeof e.type)for(var f in e.props)if("o"===f[0]&&"n"===f[1]&&"function"!=typeof e.props[f]&&null!=e.props[f])throw new Error("Component's \""+f+'" property should be a function, but got ['+typeof e.props[f]+"] instead\n"+u(e)+"\n\n"+a(e));if("function"==typeof e.type&&e.type.propTypes){if("Lazy"===e.type.displayName&&_&&!_.lazyPropTypes.has(e.type)){var p="PropTypes are not supported on lazy(). Use propTypes on the wrapped component itself. ";try{var d=e.type();_.lazyPropTypes.set(e.type,!0),console.warn(p+"Component wrapped in lazy() is "+o(d))}catch(e){console.warn(p+"We will log the wrapped component's name once it is loaded.")}}n=e.type.propTypes,r=e.props,i=o(e),Object.keys(n).forEach((function(t){var e;try{e=n[t](r,t,i,"prop",null,"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED")}catch(t){e=t}!e||e.message in l||(l[e.message]=!0,console.error("Failed prop type: "+e.message))}))}t&&t(e)},c.options.__h=function(t){if(!t)throw new Error("Hook can only be invoked from render methods.");h&&h(t)};var v=function(t,e){return{get:function(){throw new Error("getting vnode."+t+" is deprecated, "+e)},set:function(){throw new Error("setting vnode."+t+" is not allowed, "+e)}}},m={nodeName:v("nodeName","use vnode.type"),attributes:v("attributes","use vnode.props"),children:v("children","use vnode.props.children")},y=Object.create({},m);c.options.vnode=function(t){var e=t.props;if(null!==t.type&&null!=e&&("__source"in e||"__self"in e)){var o=t.props={};for(var r in e){var i=e[r];"__source"===r?t.__source=i:"__self"===r?t.__self=i:o[r]=i}}Object.setPrototypeOf(t,y),n&&n(t)},c.options.diffed=function(t){t.__k&&t.__k.forEach((function(e){if(e&&void 0===e.type){delete e.__,delete e.__b;var n=Object.keys(e).join(",");throw new Error("Objects are not valid as a child. Encountered an object with the keys {"+n+"}.\n\n"+a(t))}}));var n=t.__c;if(n&&n.__H){var r=n.__H;Array.isArray(r.__)&&r.__.forEach((function(e){if(e.__h&&(!e.__H||!Array.isArray(e.__H))){var n=o(t);console.warn("In "+n+" you are calling useMemo/useCallback without passing arguments.\nThis is a noop since it will not be able to memoize, it will execute it every render.\n\n"+a(t))}}))}if(e&&e(t),null!=t.__k)for(var i=[],c=0;ce.rank?-1:t.index-e.index}function a(t,e){return t.index=e,t.rank=function(t){return t.props.default?0:(e=t.props.path,u(e).map(c).join(""));var e}(t),t.props}function u(t){return t.replace(/(^\/+|\/+$)/g,"").split("/")}function c(t){return":"==t.charAt(0)?1+"*+?".indexOf(t.charAt(t.length-1))||4:5}function l(){var t;return""+((t=m&&m.location?m.location:m&&m.getCurrentLocation?m.getCurrentLocation():"undefined"!=typeof location?location:w).pathname||"")+(t.search||"")}function s(t,e){return void 0===e&&(e=!1),"string"!=typeof t&&t.url&&(e=t.replace,t=t.url),function(t){for(var e=g.length;e--;)if(g[e].canRoute(t))return!0;return!1}(t)&&function(t,e){void 0===e&&(e="push"),m&&m[e]?m[e](t):"undefined"!=typeof history&&history[e+"State"]&&history[e+"State"](null,null,t)}(t,e?"replace":"push"),f(t)}function f(t){for(var e=!1,n=0;n0},e.prototype.routeTo=function(t){this.setState({url:t});var e=this.canRoute(t);return this.updating||this.forceUpdate(),e},e.prototype.componentWillMount=function(){g.push(this),this.updating=!0},e.prototype.componentDidMount=function(){var t=this;m&&(this.unlisten=m.listen((function(e){t.routeTo(""+(e.pathname||"")+(e.search||""))}))),this.updating=!1},e.prototype.componentWillUnmount=function(){"function"==typeof this.unlisten&&this.unlisten(),g.splice(g.indexOf(this),1)},e.prototype.componentWillUpdate=function(){this.updating=!0},e.prototype.componentDidUpdate=function(){this.updating=!1},e.prototype.getMatchingChildren=function(t,e,n){return t.filter(a).sort(i).map((function(t){var i=r(e,t.props.path,t.props);if(i){if(!1!==n){var a={url:e,matches:i};return o(a,i),delete a.ref,delete a.key,Object(v.cloneElement)(t,a)}return t}})).filter(Boolean)},e.prototype.render=function(t,e){var n=t.children,o=t.onChange,r=e.url,i=this.getMatchingChildren(Object(v.toChildArray)(n),r,!0),a=i[0]||null,u=this.previousUrl;return r!==u&&(this.previousUrl=r,"function"==typeof o&&o({router:this,url:r,previous:u,active:i,current:a})),a},e}(v.Component);C.subscribers=b,C.getCurrentUrl=l,C.route=s,C.Router=C,C.Route=function(t){return Object(v.createElement)(t.component,t)},C.Link=function(t){return Object(v.createElement)("a",o({onClick:d},t))},C.exec=r,e.a=C},afj4:function(){},hosL:function(t,e,n){"use strict";function o(t,e){for(var n in e)t[n]=e[n];return t}function r(t){var e=t.parentNode;e&&e.removeChild(t)}function i(t,e,n){var o,r=arguments,i={};for(o in e)"key"!==o&&"ref"!==o&&(i[o]=e[o]);if(arguments.length>3)for(n=[n],o=3;o2&&(e.children=W.slice.call(arguments,2)),a(t.type,e,e.key||t.key,e.ref||t.ref,null)}function P(t){var e={},n={__c:"__cC"+D++,__:t,Consumer:function(t,e){return t.children(e)},Provider:function(t){var o,r=this;return this.getChildContext||(o=[],this.getChildContext=function(){return e[n.__c]=r,e},this.shouldComponentUpdate=function(t){r.props.value!==t.value&&o.some((function(e){e.context=t.value,p(e)}))},this.sub=function(t){o.push(t);var e=t.componentWillUnmount;t.componentWillUnmount=function(){o.splice(o.indexOf(t),1),e&&e.call(t)}}),t.children}};return n.Consumer.contextType=n,n}n.r(e),n.d(e,"render",(function(){return E})),n.d(e,"hydrate",(function(){return S})),n.d(e,"createElement",(function(){return i})),n.d(e,"h",(function(){return i})),n.d(e,"Fragment",(function(){return c})),n.d(e,"createRef",(function(){return u})),n.d(e,"isValidElement",(function(){return T})),n.d(e,"Component",(function(){return l})),n.d(e,"cloneElement",(function(){return x})),n.d(e,"createContext",(function(){return P})),n.d(e,"toChildArray",(function(){return _})),n.d(e,"_unmount",(function(){return C})),n.d(e,"options",(function(){return A}));var A,T,L,j,U,N,I,D,M={},W=[],z=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord/i;A={__e:function(t,e){for(var n,o;e=e.__;)if((n=e.__c)&&!n.__)try{if(n.constructor&&null!=n.constructor.getDerivedStateFromError&&(o=!0,n.setState(n.constructor.getDerivedStateFromError(t))),null!=n.componentDidCatch&&(o=!0,n.componentDidCatch(t)),o)return p(n.__E=n)}catch(e){t=e}throw t}},T=function(t){return null!=t&&void 0===t.constructor},l.prototype.setState=function(t,e){var n;n=this.__s!==this.state?this.__s:this.__s=o({},this.state),"function"==typeof t&&(t=t(n,this.props)),t&&o(n,t),null!=t&&this.__v&&(e&&this.__h.push(e),p(this))},l.prototype.forceUpdate=function(t){this.__v&&(this.__e=!0,t&&this.__h.push(t),p(this))},l.prototype.render=c,L=[],j=0,U="function"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,I=M,D=0},lSvg:function(t,e,n){"use strict";(function(t){n.d(e,"a",(function(){return i}));var o=n("K9Cg"),r=n.n(o),i=function(e){function n(){return e.apply(this,arguments)||this}var o,i;return i=e,(o=n).prototype=Object.create(i.prototype),o.prototype.constructor=o,o.__proto__=i,n.prototype.render=function(){return t("div",{class:r.a.copyright},"© 2020 - Stefano Pigozzi - ",t("a",{href:"https://creativecommons.org/licenses/by-sa/4.0/"},"CC BY-SA 4.0")," - ",t("a",{href:"https://github.com/Steffo99/appuntiweb"},"Codice sorgente")," - ",t("a",{href:"https://ko-fi.com/steffo"},"Supportami"))},n}(n("hosL").Component)}).call(this,n("hosL").h)},mIK7:function(t,e,n){"use strict";var o=n("SdNZ");e.a=Object(o.a)((function(t){Promise.all([n.e(0),n.e(9)]).then(function(){t(n("/fDt"))}.bind(null,n)).catch(n.oe)}))},mdyV:function(t,e,n){"use strict";n.r(e);var o=n("hosL"),r=o.h,i=o.render,a=function(t){return t&&t.default?t.default:t};if("serviceWorker"in navigator&&navigator.serviceWorker.register(n.p+"sw.js"),"function"==typeof a(n("QfWi"))){var u=document.getElementById("preact_root")||document.body.firstElementChild;0,function(){var t=a(n("QfWi")),e={},o=document.querySelector('[type="__PREACT_CLI_DATA__"]');o&&(e=JSON.parse(o.innerHTML).preRenderData||e);var c;e.url&&(c=e.url);u=i(r(t,{CLI_DATA:{preRenderData:e}}),document.body,u)}()}},ve3R:function(t,e,n){"use strict";function o(){return(o=Object.assign||function(t){for(var e=1;e=0;p--){var d=a[p];"."===d?i(a,p):".."===d?(i(a,p),f++):f&&(i(a,p),f--)}if(!l)for(;f--;f)a.unshift("..");!l||""===a[0]||a[0]&&r(a[0])||a.unshift("");var h=a.join("/");return n&&"/"!==h.substr(-1)&&(h+="/"),h},g=function(t){if(!t)throw new Error("Invariant failed")},b=!("undefined"==typeof window||!window.document||!window.document.createElement),w={hashbang:{encodePath:function(t){return"!"===t.charAt(0)?t:"!/"+u(t)},decodePath:function(t){return"!"===t.charAt(0)?t.substr(1):t}},noslash:{encodePath:u,decodePath:a},slash:{encodePath:a,decodePath:a}}},"y+LV":function(t,e,n){"use strict";function o(t){return t.type===c.Fragment?"Fragment":"function"==typeof t.type?t.type.displayName||t.type.name:"string"==typeof t.type?t.type:"#text"}function r(){return s.length>0?s[s.length-1]:null}function i(t){return"function"==typeof t.type&&t.type!=c.Fragment}function a(t){for(var e=[t],n=t;null!=n.__o;)e.push(n.__o),n=n.__o;return e.reduce((function(t,e){t+=" in "+o(e);var n=e.__source;return n?t+=" (at "+n.fileName+":"+n.lineNumber+")":p||(p=!0,console.warn("Add @babel/plugin-transform-react-jsx-source to get a more detailed component stack. Note that you should not add it to production builds of your App for bundle size reasons.")),t+"\n"}),"")}function u(t){var e=t.props,n=o(t),r="";for(var i in e)if(e.hasOwnProperty(i)&&"children"!==i){var a=e[i];"function"==typeof a&&(a="function "+(a.displayName||a.name)+"() {}"),a=Object(a)!==a||a.toString?a+"":Object.prototype.toString.call(a),r+=" "+i+"="+JSON.stringify(a)}var u=e.children;return"<"+n+r+(u&&u.length?">..":" />")}var c=n("hosL");"undefined"!=typeof window&&window.__PREACT_DEVTOOLS__&&window.__PREACT_DEVTOOLS__.attachPreact("10.0.5",c.options,{Fragment:c.Fragment});var l={},s=[],f=[],p=!1,d="function"==typeof WeakMap,h=c.Component.prototype.setState;c.Component.prototype.setState=function(t,e){return null==this.__v?null==this.state&&console.warn('Calling "this.setState" inside the constructor of a component is a no-op and might be a bug in your application. Instead, set "this.state = {}" directly.\n\n'+a(r())):null==this.__P&&console.warn('Can\'t call "this.setState" on an unmounted component. This is a no-op, but it indicates a memory leak in your application. To fix, cancel all subscriptions and asynchronous tasks in the componentWillUnmount method.\n\n'+a(this.__v)),h.call(this,t,e)};var _=c.Component.prototype.forceUpdate;c.Component.prototype.forceUpdate=function(t){return null==this.__v?console.warn('Calling "this.forceUpdate" inside the constructor of a component is a no-op and might be a bug in your application.\n\n'+a(r())):null==this.__P&&console.warn('Can\'t call "this.forceUpdate" on an unmounted component. This is a no-op, but it indicates a memory leak in your application. To fix, cancel all subscriptions and asynchronous tasks in the componentWillUnmount method.\n\n'+a(this.__v)),_.call(this,t)},function(){!function(){var t=c.options.__b,e=c.options.diffed,n=c.options.__,o=c.options.vnode,r=c.options.__r;c.options.diffed=function(t){i(t)&&f.pop(),s.pop(),e&&e(t)},c.options.__b=function(e){i(e)&&s.push(e),t&&t(e)},c.options.__=function(t,e){f=[],n&&n(t,e)},c.options.vnode=function(t){t.__o=f.length>0?f[f.length-1]:null,o&&o(t)},c.options.__r=function(t){i(t)&&f.push(t),r&&r(t)}}();var t=c.options.__b,e=c.options.diffed,n=c.options.vnode,r=c.options.__e,p=c.options.__,h=c.options.__h,_=d?{useEffect:new WeakMap,useLayoutEffect:new WeakMap,lazyPropTypes:new WeakMap}:null;c.options.__e=function(t,e,n){if(e&&e.__c&&"function"==typeof t.then){var i=t;t=new Error("Missing Suspense. The throwing component was: "+o(e));for(var a=e;a;a=a.__)if(a.__c&&a.__c.__c){t=i;break}if(t instanceof Error)throw t}r(t,e,n)},c.options.__=function(t,e){if(!e)throw new Error("Undefined parent passed to render(), this is the second argument.\nCheck if the element is available in the DOM/has the correct id.");var n;switch(e.nodeType){case 1:case 11:case 9:n=!0;break;default:n=!1}if(!n){var r=o(t);throw new Error("Expected a valid HTML node as a second argument to render.\tReceived "+e+" instead: render(<"+r+" />, "+e+");")}p&&p(t,e)},c.options.__b=function(e){var n,r,i,c=e.type,s=function t(e){return e?"function"==typeof e.type?t(e.__):e:{}}(e.__);if(void 0===c)throw new Error("Undefined component passed to createElement()\n\nYou likely forgot to export your component or might have mixed up default and named imports"+u(e)+"\n\n"+a(e));if(null!=c&&"object"==typeof c){if(void 0!==c.__k&&void 0!==c.__e)throw new Error("Invalid type passed to createElement(): "+c+"\n\nDid you accidentally pass a JSX literal as JSX twice?\n\n let My"+o(e)+" = "+u(c)+";\n let vnode = ;\n\nThis usually happens when you export a JSX literal and not the component.\n\n"+a(e));throw new Error("Invalid type passed to createElement(): "+(Array.isArray(c)?"array":c))}if("thead"!==c&&"tfoot"!==c&&"tbody"!==c||"table"===s.type?"tr"===c&&"thead"!==s.type&&"tfoot"!==s.type&&"tbody"!==s.type&&"table"!==s.type?console.error("Improper nesting of table. Your should have a parent."+u(e)+"\n\n"+a(e)):"td"===c&&"tr"!==s.type?console.error("Improper nesting of table. Your parent."+u(e)+"\n\n"+a(e)):"th"===c&&"tr"!==s.type&&console.error("Improper nesting of table. Your ."+u(e)+"\n\n"+a(e)):console.error("Improper nesting of table. Your should have a
should have a
should have a
parent."+u(e)+"\n\n"+a(e)),void 0!==e.ref&&"function"!=typeof e.ref&&"object"!=typeof e.ref&&!("$$typeof"in e))throw new Error('Component\'s "ref" property should be a function, or an object created by createRef(), but got ['+typeof e.ref+"] instead\n"+u(e)+"\n\n"+a(e));if("string"==typeof e.type)for(var f in e.props)if("o"===f[0]&&"n"===f[1]&&"function"!=typeof e.props[f]&&null!=e.props[f])throw new Error("Component's \""+f+'" property should be a function, but got ['+typeof e.props[f]+"] instead\n"+u(e)+"\n\n"+a(e));if("function"==typeof e.type&&e.type.propTypes){if("Lazy"===e.type.displayName&&_&&!_.lazyPropTypes.has(e.type)){var p="PropTypes are not supported on lazy(). Use propTypes on the wrapped component itself. ";try{var d=e.type();_.lazyPropTypes.set(e.type,!0),console.warn(p+"Component wrapped in lazy() is "+o(d))}catch(e){console.warn(p+"We will log the wrapped component's name once it is loaded.")}}n=e.type.propTypes,r=e.props,i=o(e),Object.keys(n).forEach((function(t){var e;try{e=n[t](r,t,i,"prop",null,"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED")}catch(t){e=t}!e||e.message in l||(l[e.message]=!0,console.error("Failed prop type: "+e.message))}))}t&&t(e)},c.options.__h=function(t){if(!t)throw new Error("Hook can only be invoked from render methods.");h&&h(t)};var v=function(t,e){return{get:function(){throw new Error("getting vnode."+t+" is deprecated, "+e)},set:function(){throw new Error("setting vnode."+t+" is not allowed, "+e)}}},y={nodeName:v("nodeName","use vnode.type"),attributes:v("attributes","use vnode.props"),children:v("children","use vnode.props.children")},m=Object.create({},y);c.options.vnode=function(t){var e=t.props;if(null!==t.type&&null!=e&&("__source"in e||"__self"in e)){var o=t.props={};for(var r in e){var i=e[r];"__source"===r?t.__source=i:"__self"===r?t.__self=i:o[r]=i}}Object.setPrototypeOf(t,m),n&&n(t)},c.options.diffed=function(t){t.__k&&t.__k.forEach((function(e){if(e&&void 0===e.type){delete e.__,delete e.__b;var n=Object.keys(e).join(",");throw new Error("Objects are not valid as a child. Encountered an object with the keys {"+n+"}.\n\n"+a(t))}}));var n=t.__c;if(n&&n.__H){var r=n.__H;Array.isArray(r.__)&&r.__.forEach((function(e){if(e.__h&&(!e.__H||!Array.isArray(e.__H))){var n=o(t);console.warn("In "+n+" you are calling useMemo/useCallback without passing arguments.\nThis is a noop since it will not be able to memoize, it will execute it every render.\n\n"+a(t))}}))}if(e&&e(t),null!=t.__k)for(var i=[],c=0;ce.rank?-1:t.index-e.index}function a(t,e){return t.index=e,t.rank=function(t){return t.props.default?0:(e=t.props.path,u(e).map(c).join(""));var e}(t),t.props}function u(t){return t.replace(/(^\/+|\/+$)/g,"").split("/")}function c(t){return":"==t.charAt(0)?1+"*+?".indexOf(t.charAt(t.length-1))||4:5}function l(){var t;return""+((t=m&&m.location?m.location:m&&m.getCurrentLocation?m.getCurrentLocation():"undefined"!=typeof location?location:w).pathname||"")+(t.search||"")}function s(t,e){return void 0===e&&(e=!1),"string"!=typeof t&&t.url&&(e=t.replace,t=t.url),function(t){for(var e=g.length;e--;)if(g[e].canRoute(t))return!0;return!1}(t)&&function(t,e){void 0===e&&(e="push"),m&&m[e]?m[e](t):"undefined"!=typeof history&&history[e+"State"]&&history[e+"State"](null,null,t)}(t,e?"replace":"push"),f(t)}function f(t){for(var e=!1,n=0;n0},e.prototype.routeTo=function(t){this.setState({url:t});var e=this.canRoute(t);return this.updating||this.forceUpdate(),e},e.prototype.componentWillMount=function(){g.push(this),this.updating=!0},e.prototype.componentDidMount=function(){var t=this;m&&(this.unlisten=m.listen((function(e){t.routeTo(""+(e.pathname||"")+(e.search||""))}))),this.updating=!1},e.prototype.componentWillUnmount=function(){"function"==typeof this.unlisten&&this.unlisten(),g.splice(g.indexOf(this),1)},e.prototype.componentWillUpdate=function(){this.updating=!0},e.prototype.componentDidUpdate=function(){this.updating=!1},e.prototype.getMatchingChildren=function(t,e,n){return t.filter(a).sort(i).map((function(t){var i=r(e,t.props.path,t.props);if(i){if(!1!==n){var a={url:e,matches:i};return o(a,i),delete a.ref,delete a.key,Object(v.cloneElement)(t,a)}return t}})).filter(Boolean)},e.prototype.render=function(t,e){var n=t.children,o=t.onChange,r=e.url,i=this.getMatchingChildren(Object(v.toChildArray)(n),r,!0),a=i[0]||null,u=this.previousUrl;return r!==u&&(this.previousUrl=r,"function"==typeof o&&o({router:this,url:r,previous:u,active:i,current:a})),a},e}(v.Component);C.subscribers=b,C.getCurrentUrl=l,C.route=s,C.Router=C,C.Route=function(t){return Object(v.createElement)(t.component,t)},C.Link=function(t){return Object(v.createElement)("a",o({onClick:d},t))},C.exec=r,e.a=C},afj4:function(){},hosL:function(t,e,n){"use strict";function o(t,e){for(var n in e)t[n]=e[n];return t}function r(t){var e=t.parentNode;e&&e.removeChild(t)}function i(t,e,n){var o,r=arguments,i={};for(o in e)"key"!==o&&"ref"!==o&&(i[o]=e[o]);if(arguments.length>3)for(n=[n],o=3;o2&&(e.children=W.slice.call(arguments,2)),a(t.type,e,e.key||t.key,e.ref||t.ref,null)}function P(t){var e={},n={__c:"__cC"+D++,__:t,Consumer:function(t,e){return t.children(e)},Provider:function(t){var o,r=this;return this.getChildContext||(o=[],this.getChildContext=function(){return e[n.__c]=r,e},this.shouldComponentUpdate=function(t){r.props.value!==t.value&&o.some((function(e){e.context=t.value,p(e)}))},this.sub=function(t){o.push(t);var e=t.componentWillUnmount;t.componentWillUnmount=function(){o.splice(o.indexOf(t),1),e&&e.call(t)}}),t.children}};return n.Consumer.contextType=n,n}n.r(e),n.d(e,"render",(function(){return E})),n.d(e,"hydrate",(function(){return S})),n.d(e,"createElement",(function(){return i})),n.d(e,"h",(function(){return i})),n.d(e,"Fragment",(function(){return c})),n.d(e,"createRef",(function(){return u})),n.d(e,"isValidElement",(function(){return T})),n.d(e,"Component",(function(){return l})),n.d(e,"cloneElement",(function(){return x})),n.d(e,"createContext",(function(){return P})),n.d(e,"toChildArray",(function(){return _})),n.d(e,"_unmount",(function(){return C})),n.d(e,"options",(function(){return A}));var A,T,L,j,U,N,I,D,M={},W=[],z=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord/i;A={__e:function(t,e){for(var n,o;e=e.__;)if((n=e.__c)&&!n.__)try{if(n.constructor&&null!=n.constructor.getDerivedStateFromError&&(o=!0,n.setState(n.constructor.getDerivedStateFromError(t))),null!=n.componentDidCatch&&(o=!0,n.componentDidCatch(t)),o)return p(n.__E=n)}catch(e){t=e}throw t}},T=function(t){return null!=t&&void 0===t.constructor},l.prototype.setState=function(t,e){var n;n=this.__s!==this.state?this.__s:this.__s=o({},this.state),"function"==typeof t&&(t=t(n,this.props)),t&&o(n,t),null!=t&&this.__v&&(e&&this.__h.push(e),p(this))},l.prototype.forceUpdate=function(t){this.__v&&(this.__e=!0,t&&this.__h.push(t),p(this))},l.prototype.render=c,L=[],j=0,U="function"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,I=M,D=0},lSvg:function(t,e,n){"use strict";(function(t){n.d(e,"a",(function(){return i}));var o=n("K9Cg"),r=n.n(o),i=function(e){function n(){return e.apply(this,arguments)||this}var o,i;return i=e,(o=n).prototype=Object.create(i.prototype),o.prototype.constructor=o,o.__proto__=i,n.prototype.render=function(){return t("div",{class:r.a.copyright},"© 2020 - Stefano Pigozzi - ",t("a",{href:"https://creativecommons.org/licenses/by-sa/4.0/"},"CC BY-SA 4.0")," - ",t("a",{href:"https://github.com/Steffo99/appuntiweb"},"Codice sorgente")," - ",t("a",{href:"https://ko-fi.com/steffo"},"Supportami"))},n}(n("hosL").Component)}).call(this,n("hosL").h)},mIK7:function(t,e,n){"use strict";var o=n("SdNZ");e.a=Object(o.a)((function(t){Promise.all([n.e(0),n.e(9)]).then(function(){t(n("/fDt"))}.bind(null,n)).catch(n.oe)}))},mdyV:function(t,e,n){"use strict";n.r(e);var o=n("hosL"),r=o.h,i=o.render,a=function(t){return t&&t.default?t.default:t};if("serviceWorker"in navigator&&navigator.serviceWorker.register(n.p+"sw.js"),"function"==typeof a(n("QfWi"))){var u=document.getElementById("preact_root")||document.body.firstElementChild;0,function(){var t=a(n("QfWi")),e={},o=document.querySelector('[type="__PREACT_CLI_DATA__"]');o&&(e=JSON.parse(o.innerHTML).preRenderData||e);var c;e.url&&(c=e.url);u=i(r(t,{CLI_DATA:{preRenderData:e}}),document.body,u)}()}},ve3R:function(t,e,n){"use strict";function o(){return(o=Object.assign||function(t){for(var e=1;e=0;p--){var d=a[p];"."===d?i(a,p):".."===d?(i(a,p),f++):f&&(i(a,p),f--)}if(!l)for(;f--;f)a.unshift("..");!l||""===a[0]||a[0]&&r(a[0])||a.unshift("");var h=a.join("/");return n&&"/"!==h.substr(-1)&&(h+="/"),h},g=function(t){if(!t)throw new Error("Invariant failed")},b=!("undefined"==typeof window||!window.document||!window.document.createElement),w={hashbang:{encodePath:function(t){return"!"===t.charAt(0)?t:"!/"+u(t)},decodePath:function(t){return"!"===t.charAt(0)?t.substr(1):t}},noslash:{encodePath:u,decodePath:a},slash:{encodePath:a,decodePath:a}}},"y+LV":function(t,e,n){"use strict";function o(t){return t.type===c.Fragment?"Fragment":"function"==typeof t.type?t.type.displayName||t.type.name:"string"==typeof t.type?t.type:"#text"}function r(){return s.length>0?s[s.length-1]:null}function i(t){return"function"==typeof t.type&&t.type!=c.Fragment}function a(t){for(var e=[t],n=t;null!=n.__o;)e.push(n.__o),n=n.__o;return e.reduce((function(t,e){t+=" in "+o(e);var n=e.__source;return n?t+=" (at "+n.fileName+":"+n.lineNumber+")":p||(p=!0,console.warn("Add @babel/plugin-transform-react-jsx-source to get a more detailed component stack. Note that you should not add it to production builds of your App for bundle size reasons.")),t+"\n"}),"")}function u(t){var e=t.props,n=o(t),r="";for(var i in e)if(e.hasOwnProperty(i)&&"children"!==i){var a=e[i];"function"==typeof a&&(a="function "+(a.displayName||a.name)+"() {}"),a=Object(a)!==a||a.toString?a+"":Object.prototype.toString.call(a),r+=" "+i+"="+JSON.stringify(a)}var u=e.children;return"<"+n+r+(u&&u.length?">..":" />")}var c=n("hosL");"undefined"!=typeof window&&window.__PREACT_DEVTOOLS__&&window.__PREACT_DEVTOOLS__.attachPreact("10.0.5",c.options,{Fragment:c.Fragment});var l={},s=[],f=[],p=!1,d="function"==typeof WeakMap,h=c.Component.prototype.setState;c.Component.prototype.setState=function(t,e){return null==this.__v?null==this.state&&console.warn('Calling "this.setState" inside the constructor of a component is a no-op and might be a bug in your application. Instead, set "this.state = {}" directly.\n\n'+a(r())):null==this.__P&&console.warn('Can\'t call "this.setState" on an unmounted component. This is a no-op, but it indicates a memory leak in your application. To fix, cancel all subscriptions and asynchronous tasks in the componentWillUnmount method.\n\n'+a(this.__v)),h.call(this,t,e)};var _=c.Component.prototype.forceUpdate;c.Component.prototype.forceUpdate=function(t){return null==this.__v?console.warn('Calling "this.forceUpdate" inside the constructor of a component is a no-op and might be a bug in your application.\n\n'+a(r())):null==this.__P&&console.warn('Can\'t call "this.forceUpdate" on an unmounted component. This is a no-op, but it indicates a memory leak in your application. To fix, cancel all subscriptions and asynchronous tasks in the componentWillUnmount method.\n\n'+a(this.__v)),_.call(this,t)},function(){!function(){var t=c.options.__b,e=c.options.diffed,n=c.options.__,o=c.options.vnode,r=c.options.__r;c.options.diffed=function(t){i(t)&&f.pop(),s.pop(),e&&e(t)},c.options.__b=function(e){i(e)&&s.push(e),t&&t(e)},c.options.__=function(t,e){f=[],n&&n(t,e)},c.options.vnode=function(t){t.__o=f.length>0?f[f.length-1]:null,o&&o(t)},c.options.__r=function(t){i(t)&&f.push(t),r&&r(t)}}();var t=c.options.__b,e=c.options.diffed,n=c.options.vnode,r=c.options.__e,p=c.options.__,h=c.options.__h,_=d?{useEffect:new WeakMap,useLayoutEffect:new WeakMap,lazyPropTypes:new WeakMap}:null;c.options.__e=function(t,e,n){if(e&&e.__c&&"function"==typeof t.then){var i=t;t=new Error("Missing Suspense. The throwing component was: "+o(e));for(var a=e;a;a=a.__)if(a.__c&&a.__c.__c){t=i;break}if(t instanceof Error)throw t}r(t,e,n)},c.options.__=function(t,e){if(!e)throw new Error("Undefined parent passed to render(), this is the second argument.\nCheck if the element is available in the DOM/has the correct id.");var n;switch(e.nodeType){case 1:case 11:case 9:n=!0;break;default:n=!1}if(!n){var r=o(t);throw new Error("Expected a valid HTML node as a second argument to render.\tReceived "+e+" instead: render(<"+r+" />, "+e+");")}p&&p(t,e)},c.options.__b=function(e){var n,r,i,c=e.type,s=function t(e){return e?"function"==typeof e.type?t(e.__):e:{}}(e.__);if(void 0===c)throw new Error("Undefined component passed to createElement()\n\nYou likely forgot to export your component or might have mixed up default and named imports"+u(e)+"\n\n"+a(e));if(null!=c&&"object"==typeof c){if(void 0!==c.__k&&void 0!==c.__e)throw new Error("Invalid type passed to createElement(): "+c+"\n\nDid you accidentally pass a JSX literal as JSX twice?\n\n let My"+o(e)+" = "+u(c)+";\n let vnode = ;\n\nThis usually happens when you export a JSX literal and not the component.\n\n"+a(e));throw new Error("Invalid type passed to createElement(): "+(Array.isArray(c)?"array":c))}if("thead"!==c&&"tfoot"!==c&&"tbody"!==c||"table"===s.type?"tr"===c&&"thead"!==s.type&&"tfoot"!==s.type&&"tbody"!==s.type&&"table"!==s.type?console.error("Improper nesting of table. Your should have a parent."+u(e)+"\n\n"+a(e)):"td"===c&&"tr"!==s.type?console.error("Improper nesting of table. Your parent."+u(e)+"\n\n"+a(e)):"th"===c&&"tr"!==s.type&&console.error("Improper nesting of table. Your ."+u(e)+"\n\n"+a(e)):console.error("Improper nesting of table. Your should have a
should have a
should have a
parent."+u(e)+"\n\n"+a(e)),void 0!==e.ref&&"function"!=typeof e.ref&&"object"!=typeof e.ref&&!("$$typeof"in e))throw new Error('Component\'s "ref" property should be a function, or an object created by createRef(), but got ['+typeof e.ref+"] instead\n"+u(e)+"\n\n"+a(e));if("string"==typeof e.type)for(var f in e.props)if("o"===f[0]&&"n"===f[1]&&"function"!=typeof e.props[f]&&null!=e.props[f])throw new Error("Component's \""+f+'" property should be a function, but got ['+typeof e.props[f]+"] instead\n"+u(e)+"\n\n"+a(e));if("function"==typeof e.type&&e.type.propTypes){if("Lazy"===e.type.displayName&&_&&!_.lazyPropTypes.has(e.type)){var p="PropTypes are not supported on lazy(). Use propTypes on the wrapped component itself. ";try{var d=e.type();_.lazyPropTypes.set(e.type,!0),console.warn(p+"Component wrapped in lazy() is "+o(d))}catch(e){console.warn(p+"We will log the wrapped component's name once it is loaded.")}}n=e.type.propTypes,r=e.props,i=o(e),Object.keys(n).forEach((function(t){var e;try{e=n[t](r,t,i,"prop",null,"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED")}catch(t){e=t}!e||e.message in l||(l[e.message]=!0,console.error("Failed prop type: "+e.message))}))}t&&t(e)},c.options.__h=function(t){if(!t)throw new Error("Hook can only be invoked from render methods.");h&&h(t)};var v=function(t,e){return{get:function(){throw new Error("getting vnode."+t+" is deprecated, "+e)},set:function(){throw new Error("setting vnode."+t+" is not allowed, "+e)}}},y={nodeName:v("nodeName","use vnode.type"),attributes:v("attributes","use vnode.props"),children:v("children","use vnode.props.children")},m=Object.create({},y);c.options.vnode=function(t){var e=t.props;if(null!==t.type&&null!=e&&("__source"in e||"__self"in e)){var o=t.props={};for(var r in e){var i=e[r];"__source"===r?t.__source=i:"__self"===r?t.__self=i:o[r]=i}}Object.setPrototypeOf(t,m),n&&n(t)},c.options.diffed=function(t){t.__k&&t.__k.forEach((function(e){if(e&&void 0===e.type){delete e.__,delete e.__b;var n=Object.keys(e).join(",");throw new Error("Objects are not valid as a child. Encountered an object with the keys {"+n+"}.\n\n"+a(t))}}));var n=t.__c;if(n&&n.__H){var r=n.__H;Array.isArray(r.__)&&r.__.forEach((function(e){if(e.__h&&(!e.__H||!Array.isArray(e.__H))){var n=o(t);console.warn("In "+n+" you are calling useMemo/useCallback without passing arguments.\nThis is a noop since it will not be able to memoize, it will execute it every render.\n\n"+a(t))}}))}if(e&&e(t),null!=t.__k)for(var i=[],c=0;c\n\t\t\t\n\t\t\t\t

Appuntiweb di Steffo

\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\n\t);\n}\n","import { h, Component } from 'preact';\n\nexport default function(req) {\n\tfunction Async() {\n\t\tComponent.call(this);\n\n\t\tlet b, old;\n\t\tthis.componentWillMount = () => {\n\t\t\tb = this.base = this.nextBase || this.__b; // short circuits 1st render\n\t\t\treq(m => {\n\t\t\t\tthis.setState({ child: m.default || m });\n\t\t\t});\n\t\t};\n\n\t\tthis.shouldComponentUpdate = (_, nxt) => {\n\t\t\tnxt = nxt.child === void 0;\n\t\t\tif (nxt && old === void 0 && b) {\n\t\t\t\t// Node.TEXT_NODE\n\t\t\t\tif (b.nodeType === 3) {\n\t\t\t\t\told = b.data;\n\t\t\t\t} else {\n\t\t\t\t\told = h(b.nodeName, {\n\t\t\t\t\t\tdangerouslySetInnerHTML: { __html: b.innerHTML },\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\told = ''; // dump it\n\t\t\t}\n\t\t\treturn !nxt;\n\t\t};\n\n\t\tthis.render = (p, s) => (s.child ? h(s.child, p) : old);\n\t}\n\t(Async.prototype = new Component()).constructor = Async;\n\treturn Async;\n}\n","\n\t\timport Async from \"../../node_modules/@preact/async-loader/async-legacy.js\";\n\n\t\tfunction load(cb) {\n\t\t\trequire.ensure([], function (require) {\n\t\t\t\tcb( require(\"!!../../node_modules/babel-loader/lib/index.js??ref--4!./basiDiDati.js\") );\n\t\t\t}, \"route-basiDiDati\");\n\t\t}\n\n\t\texport default Async(load);\n\t","\n\t\timport Async from \"../../node_modules/@preact/async-loader/async-legacy.js\";\n\n\t\tfunction load(cb) {\n\t\t\trequire.ensure([], function (require) {\n\t\t\t\tcb( require(\"!!../../node_modules/babel-loader/lib/index.js??ref--4!./home.js\") );\n\t\t\t}, \"route-home\");\n\t\t}\n\n\t\texport default Async(load);\n\t","/**\n * Assign properties from `props` to `obj`\n * @template O, P The obj and props types\n * @param {O} obj The object to copy properties to\n * @param {P} props The object to copy properties from\n * @returns {O & P}\n */\nexport function assign(obj, props) {\n\tfor (let i in props) obj[i] = props[i];\n\treturn /** @type {O & P} */ (obj);\n}\n\n/**\n * Remove a child node from its parent if attached. This is a workaround for\n * IE11 which doesn't support `Element.prototype.remove()`. Using this function\n * is smaller than including a dedicated polyfill.\n * @param {Node} node The node to remove\n */\nexport function removeNode(node) {\n\tlet parentNode = node.parentNode;\n\tif (parentNode) parentNode.removeChild(node);\n}\n","import { cloneElement, createElement, Component, toChildArray } from 'preact';\nimport { exec, prepareVNodeForRanking, assign, pathRankSort } from './util';\n\nlet customHistory = null;\n\nconst ROUTERS = [];\n\nconst subscribers = [];\n\nconst EMPTY = {};\n\nfunction setUrl(url, type='push') {\n\tif (customHistory && customHistory[type]) {\n\t\tcustomHistory[type](url);\n\t}\n\telse if (typeof history!=='undefined' && history[type+'State']) {\n\t\thistory[type+'State'](null, null, url);\n\t}\n}\n\n\nfunction getCurrentUrl() {\n\tlet url;\n\tif (customHistory && customHistory.location) {\n\t\turl = customHistory.location;\n\t}\n\telse if (customHistory && customHistory.getCurrentLocation) {\n\t\turl = customHistory.getCurrentLocation();\n\t}\n\telse {\n\t\turl = typeof location!=='undefined' ? location : EMPTY;\n\t}\n\treturn `${url.pathname || ''}${url.search || ''}`;\n}\n\n\n\nfunction route(url, replace=false) {\n\tif (typeof url!=='string' && url.url) {\n\t\treplace = url.replace;\n\t\turl = url.url;\n\t}\n\n\t// only push URL into history if we can handle it\n\tif (canRoute(url)) {\n\t\tsetUrl(url, replace ? 'replace' : 'push');\n\t}\n\n\treturn routeTo(url);\n}\n\n\n/** Check if the given URL can be handled by any router instances. */\nfunction canRoute(url) {\n\tfor (let i=ROUTERS.length; i--; ) {\n\t\tif (ROUTERS[i].canRoute(url)) return true;\n\t}\n\treturn false;\n}\n\n\n/** Tell all router instances to handle the given URL. */\nfunction routeTo(url) {\n\tlet didRoute = false;\n\tfor (let i=0; i {\n\t\t\t\trouteTo(getCurrentUrl());\n\t\t\t});\n\t\t}\n\t\taddEventListener('click', delegateLinkHandler);\n\t}\n\teventListenersInitialized = true;\n}\n\n\nclass Router extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tif (props.history) {\n\t\t\tcustomHistory = props.history;\n\t\t}\n\n\t\tthis.state = {\n\t\t\turl: props.url || getCurrentUrl()\n\t\t};\n\n\t\tinitEventListeners();\n\t}\n\n\tshouldComponentUpdate(props) {\n\t\tif (props.static!==true) return true;\n\t\treturn props.url!==this.props.url || props.onChange!==this.props.onChange;\n\t}\n\n\t/** Check if the given URL can be matched against any children */\n\tcanRoute(url) {\n\t\tconst children = toChildArray(this.props.children);\n\t\treturn this.getMatchingChildren(children, url, false).length > 0;\n\t}\n\n\t/** Re-render children with a new URL to match against. */\n\trouteTo(url) {\n\t\tthis.setState({ url });\n\n\t\tconst didRoute = this.canRoute(url);\n\n\t\t// trigger a manual re-route if we're not in the middle of an update:\n\t\tif (!this.updating) this.forceUpdate();\n\n\t\treturn didRoute;\n\t}\n\n\tcomponentWillMount() {\n\t\tROUTERS.push(this);\n\t\tthis.updating = true;\n\t}\n\n\tcomponentDidMount() {\n\t\tif (customHistory) {\n\t\t\tthis.unlisten = customHistory.listen((location) => {\n\t\t\t\tthis.routeTo(`${location.pathname || ''}${location.search || ''}`);\n\t\t\t});\n\t\t}\n\t\tthis.updating = false;\n\t}\n\n\tcomponentWillUnmount() {\n\t\tif (typeof this.unlisten==='function') this.unlisten();\n\t\tROUTERS.splice(ROUTERS.indexOf(this), 1);\n\t}\n\n\tcomponentWillUpdate() {\n\t\tthis.updating = true;\n\t}\n\n\tcomponentDidUpdate() {\n\t\tthis.updating = false;\n\t}\n\n\tgetMatchingChildren(children, url, invoke) {\n\t\treturn children\n\t\t\t.filter(prepareVNodeForRanking)\n\t\t\t.sort(pathRankSort)\n\t\t\t.map( vnode => {\n\t\t\t\tlet matches = exec(url, vnode.props.path, vnode.props);\n\t\t\t\tif (matches) {\n\t\t\t\t\tif (invoke !== false) {\n\t\t\t\t\t\tlet newProps = { url, matches };\n\t\t\t\t\t\tassign(newProps, matches);\n\t\t\t\t\t\tdelete newProps.ref;\n\t\t\t\t\t\tdelete newProps.key;\n\t\t\t\t\t\treturn cloneElement(vnode, newProps);\n\t\t\t\t\t}\n\t\t\t\t\treturn vnode;\n\t\t\t\t}\n\t\t\t}).filter(Boolean);\n\t}\n\n\trender({ children, onChange }, { url }) {\n\t\tlet active = this.getMatchingChildren(toChildArray(children), url, true);\n\n\t\tlet current = active[0] || null;\n\n\t\tlet previous = this.previousUrl;\n\t\tif (url!==previous) {\n\t\t\tthis.previousUrl = url;\n\t\t\tif (typeof onChange==='function') {\n\t\t\t\tonChange({\n\t\t\t\t\trouter: this,\n\t\t\t\t\turl,\n\t\t\t\t\tprevious,\n\t\t\t\t\tactive,\n\t\t\t\t\tcurrent\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn current;\n\t}\n}\n\nconst Link = (props) => (\n\tcreateElement('a', assign({ onClick: handleLinkClick }, props))\n);\n\nconst Route = props => createElement(props.component, props);\n\nRouter.subscribers = subscribers;\nRouter.getCurrentUrl = getCurrentUrl;\nRouter.route = route;\nRouter.Router = Router;\nRouter.Route = Route;\nRouter.Link = Link;\nRouter.exec = exec;\n\nexport { subscribers, getCurrentUrl, route, Router, Route, Link, exec };\nexport default Router;\n","import options from './options';\n\n/**\n * Create an virtual node (used for JSX)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * constructor for this virtual node\n * @param {object | null | undefined} [props] The properties of the virtual node\n * @param {Array} [children] The children of the virtual node\n * @returns {import('./internal').VNode}\n */\nexport function createElement(type, props, children) {\n\tlet normalizedProps = {},\n\t\ti;\n\tfor (i in props) {\n\t\tif (i !== 'key' && i !== 'ref') normalizedProps[i] = props[i];\n\t}\n\n\tif (arguments.length > 3) {\n\t\tchildren = [children];\n\t\t// https://github.com/preactjs/preact/issues/1916\n\t\tfor (i = 3; i < arguments.length; i++) {\n\t\t\tchildren.push(arguments[i]);\n\t\t}\n\t}\n\tif (children != null) {\n\t\tnormalizedProps.children = children;\n\t}\n\n\t// If a Component VNode, check for and apply defaultProps\n\t// Note: type may be undefined in development, must never error here.\n\tif (typeof type == 'function' && type.defaultProps != null) {\n\t\tfor (i in type.defaultProps) {\n\t\t\tif (normalizedProps[i] === undefined) {\n\t\t\t\tnormalizedProps[i] = type.defaultProps[i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn createVNode(\n\t\ttype,\n\t\tnormalizedProps,\n\t\tprops && props.key,\n\t\tprops && props.ref,\n\t\tnull\n\t);\n}\n\n/**\n * Create a VNode (used internally by Preact)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * Constructor for this virtual node\n * @param {object | string | number | null} props The properties of this virtual node.\n * If this virtual node represents a text node, this is the text of the node (string or number).\n * @param {string | number | null} key The key for this virtual node, used when\n * diffing it against its children\n * @param {import('./internal').VNode[\"ref\"]} ref The ref property that will\n * receive a reference to its created child\n * @returns {import('./internal').VNode}\n */\nexport function createVNode(type, props, key, ref, original) {\n\t// V8 seems to be better at detecting type shapes if the object is allocated from the same call site\n\t// Do not inline into createElement and coerceToVNode!\n\tconst vnode = {\n\t\ttype,\n\t\tprops,\n\t\tkey,\n\t\tref,\n\t\t_children: null,\n\t\t_parent: null,\n\t\t_depth: 0,\n\t\t_dom: null,\n\t\t// _nextDom must be initialized to undefined b/c it will eventually\n\t\t// be set to dom.nextSibling which can return `null` and it is important\n\t\t// to be able to distinguish between an uninitialized _nextDom and\n\t\t// a _nextDom that has been set to `null`\n\t\t_nextDom: undefined,\n\t\t_component: null,\n\t\tconstructor: undefined,\n\t\t_original: original\n\t};\n\n\tif (original == null) vnode._original = vnode;\n\tif (options.vnode) options.vnode(vnode);\n\n\treturn vnode;\n}\n\nexport function createRef() {\n\treturn {};\n}\n\nexport function Fragment(props) {\n\treturn props.children;\n}\n\n/**\n * Check if a the argument is a valid Preact VNode.\n * @param {*} vnode\n * @returns {vnode is import('./internal').VNode}\n */\nexport const isValidElement = vnode =>\n\tvnode != null && vnode.constructor === undefined;\n","import { assign } from './util';\nimport { diff, commitRoot } from './diff/index';\nimport options from './options';\nimport { Fragment } from './create-element';\n\n/**\n * Base Component class. Provides `setState()` and `forceUpdate()`, which\n * trigger rendering\n * @param {object} props The initial component props\n * @param {object} context The initial context from parent components'\n * getChildContext\n */\nexport function Component(props, context) {\n\tthis.props = props;\n\tthis.context = context;\n}\n\n/**\n * Update component state and schedule a re-render.\n * @param {object | ((s: object, p: object) => object)} update A hash of state\n * properties to update with new values or a function that given the current\n * state and props returns a new partial state\n * @param {() => void} [callback] A function to be called once component state is\n * updated\n */\nComponent.prototype.setState = function(update, callback) {\n\t// only clone state when copying to nextState the first time.\n\tlet s;\n\tif (this._nextState !== this.state) {\n\t\ts = this._nextState;\n\t} else {\n\t\ts = this._nextState = assign({}, this.state);\n\t}\n\n\tif (typeof update == 'function') {\n\t\tupdate = update(s, this.props);\n\t}\n\n\tif (update) {\n\t\tassign(s, update);\n\t}\n\n\t// Skip update if updater function returned null\n\tif (update == null) return;\n\n\tif (this._vnode) {\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Immediately perform a synchronous re-render of the component\n * @param {() => void} [callback] A function to be called after component is\n * re-rendered\n */\nComponent.prototype.forceUpdate = function(callback) {\n\tif (this._vnode) {\n\t\t// Set render mode so that we can differentiate where the render request\n\t\t// is coming from. We need this because forceUpdate should never call\n\t\t// shouldComponentUpdate\n\t\tthis._force = true;\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\n * Virtual DOM is generally constructed via [JSX](http://jasonformat.com/wtf-is-jsx).\n * @param {object} props Props (eg: JSX attributes) received from parent\n * element/component\n * @param {object} state The component's current state\n * @param {object} context Context object, as returned by the nearest\n * ancestor's `getChildContext()`\n * @returns {import('./index').ComponentChildren | void}\n */\nComponent.prototype.render = Fragment;\n\n/**\n * @param {import('./internal').VNode} vnode\n * @param {number | null} [childIndex]\n */\nexport function getDomSibling(vnode, childIndex) {\n\tif (childIndex == null) {\n\t\t// Use childIndex==null as a signal to resume the search from the vnode's sibling\n\t\treturn vnode._parent\n\t\t\t? getDomSibling(vnode._parent, vnode._parent._children.indexOf(vnode) + 1)\n\t\t\t: null;\n\t}\n\n\tlet sibling;\n\tfor (; childIndex < vnode._children.length; childIndex++) {\n\t\tsibling = vnode._children[childIndex];\n\n\t\tif (sibling != null && sibling._dom != null) {\n\t\t\t// Since updateParentDomPointers keeps _dom pointer correct,\n\t\t\t// we can rely on _dom to tell us if this subtree contains a\n\t\t\t// rendered DOM node, and what the first rendered DOM node is\n\t\t\treturn sibling._dom;\n\t\t}\n\t}\n\n\t// If we get here, we have not found a DOM node in this vnode's children.\n\t// We must resume from this vnode's sibling (in it's parent _children array)\n\t// Only climb up and search the parent if we aren't searching through a DOM\n\t// VNode (meaning we reached the DOM parent of the original vnode that began\n\t// the search)\n\treturn typeof vnode.type == 'function' ? getDomSibling(vnode) : null;\n}\n\n/**\n * Trigger in-place re-rendering of a component.\n * @param {import('./internal').Component} component The component to rerender\n */\nfunction renderComponent(component) {\n\tlet vnode = component._vnode,\n\t\toldDom = vnode._dom,\n\t\tparentDom = component._parentDom;\n\n\tif (parentDom) {\n\t\tlet commitQueue = [];\n\t\tconst oldVNode = assign({}, vnode);\n\t\toldVNode._original = oldVNode;\n\n\t\tlet newDom = diff(\n\t\t\tparentDom,\n\t\t\tvnode,\n\t\t\toldVNode,\n\t\t\tcomponent._globalContext,\n\t\t\tparentDom.ownerSVGElement !== undefined,\n\t\t\tnull,\n\t\t\tcommitQueue,\n\t\t\toldDom == null ? getDomSibling(vnode) : oldDom\n\t\t);\n\t\tcommitRoot(commitQueue, vnode);\n\n\t\tif (newDom != oldDom) {\n\t\t\tupdateParentDomPointers(vnode);\n\t\t}\n\t}\n}\n\n/**\n * @param {import('./internal').VNode} vnode\n */\nfunction updateParentDomPointers(vnode) {\n\tif ((vnode = vnode._parent) != null && vnode._component != null) {\n\t\tvnode._dom = vnode._component.base = null;\n\t\tfor (let i = 0; i < vnode._children.length; i++) {\n\t\t\tlet child = vnode._children[i];\n\t\t\tif (child != null && child._dom != null) {\n\t\t\t\tvnode._dom = vnode._component.base = child._dom;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn updateParentDomPointers(vnode);\n\t}\n}\n\n/**\n * The render queue\n * @type {Array}\n */\nlet rerenderQueue = [];\nlet rerenderCount = 0;\n\n/**\n * Asynchronously schedule a callback\n * @type {(cb: () => void) => void}\n */\n/* istanbul ignore next */\n// Note the following line isn't tree-shaken by rollup cuz of rollup/rollup#2566\nconst defer =\n\ttypeof Promise == 'function'\n\t\t? Promise.prototype.then.bind(Promise.resolve())\n\t\t: setTimeout;\n\n/*\n * The value of `Component.debounce` must asynchronously invoke the passed in callback. It is\n * important that contributors to Preact can consistently reason about what calls to `setState`, etc.\n * do, and when their effects will be applied. See the links below for some further reading on designing\n * asynchronous APIs.\n * * [Designing APIs for Asynchrony](https://blog.izs.me/2013/08/designing-apis-for-asynchrony)\n * * [Callbacks synchronous and asynchronous](https://blog.ometer.com/2011/07/24/callbacks-synchronous-and-asynchronous/)\n */\n\nlet prevDebounce;\n\n/**\n * Enqueue a rerender of a component\n * @param {import('./internal').Component} c The component to rerender\n */\nexport function enqueueRender(c) {\n\tif (\n\t\t(!c._dirty &&\n\t\t\t(c._dirty = true) &&\n\t\t\trerenderQueue.push(c) &&\n\t\t\t!rerenderCount++) ||\n\t\tprevDebounce !== options.debounceRendering\n\t) {\n\t\tprevDebounce = options.debounceRendering;\n\t\t(prevDebounce || defer)(process);\n\t}\n}\n\n/** Flush the render queue by rerendering all queued components */\nfunction process() {\n\tlet queue;\n\twhile ((rerenderCount = rerenderQueue.length)) {\n\t\tqueue = rerenderQueue.sort((a, b) => a._vnode._depth - b._vnode._depth);\n\t\trerenderQueue = [];\n\t\t// Don't update `renderCount` yet. Keep its value non-zero to prevent unnecessary\n\t\t// process() calls from getting scheduled while `queue` is still being consumed.\n\t\tqueue.some(c => {\n\t\t\tif (c._dirty) renderComponent(c);\n\t\t});\n\t}\n}\n","import { diff, unmount, applyRef } from './index';\nimport { createVNode } from '../create-element';\nimport { EMPTY_OBJ, EMPTY_ARR } from '../constants';\nimport { removeNode } from '../util';\nimport { getDomSibling } from '../component';\n\n/**\n * Diff the children of a virtual node\n * @param {import('../internal').PreactElement} parentDom The DOM element whose\n * children are being diffed\n * @param {import('../internal').VNode} newParentVNode The new virtual\n * node whose children should be diff'ed against oldParentVNode\n * @param {import('../internal').VNode} oldParentVNode The old virtual\n * node whose children should be diff'ed against newParentVNode\n * @param {object} globalContext The current context object - modified by getChildContext\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {Array} excessDomChildren\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {Node | Text} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} isHydrating Whether or not we are in hydration\n */\nexport function diffChildren(\n\tparentDom,\n\tnewParentVNode,\n\toldParentVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating\n) {\n\tlet i, j, oldVNode, newDom, sibDom, firstChildDom, refs;\n\n\t// This is a compression of oldParentVNode!=null && oldParentVNode != EMPTY_OBJ && oldParentVNode._children || EMPTY_ARR\n\t// as EMPTY_OBJ._children should be `undefined`.\n\tlet oldChildren = (oldParentVNode && oldParentVNode._children) || EMPTY_ARR;\n\n\tlet oldChildrenLength = oldChildren.length;\n\n\t// Only in very specific places should this logic be invoked (top level `render` and `diffElementNodes`).\n\t// I'm using `EMPTY_OBJ` to signal when `diffChildren` is invoked in these situations. I can't use `null`\n\t// for this purpose, because `null` is a valid value for `oldDom` which can mean to skip to this logic\n\t// (e.g. if mounting a new tree in which the old DOM should be ignored (usually for Fragments).\n\tif (oldDom == EMPTY_OBJ) {\n\t\tif (excessDomChildren != null) {\n\t\t\toldDom = excessDomChildren[0];\n\t\t} else if (oldChildrenLength) {\n\t\t\toldDom = getDomSibling(oldParentVNode, 0);\n\t\t} else {\n\t\t\toldDom = null;\n\t\t}\n\t}\n\n\ti = 0;\n\tnewParentVNode._children = toChildArray(\n\t\tnewParentVNode._children,\n\t\tchildVNode => {\n\t\t\tif (childVNode != null) {\n\t\t\t\tchildVNode._parent = newParentVNode;\n\t\t\t\tchildVNode._depth = newParentVNode._depth + 1;\n\n\t\t\t\t// Check if we find a corresponding element in oldChildren.\n\t\t\t\t// If found, delete the array item by setting to `undefined`.\n\t\t\t\t// We use `undefined`, as `null` is reserved for empty placeholders\n\t\t\t\t// (holes).\n\t\t\t\toldVNode = oldChildren[i];\n\n\t\t\t\tif (\n\t\t\t\t\toldVNode === null ||\n\t\t\t\t\t(oldVNode &&\n\t\t\t\t\t\tchildVNode.key == oldVNode.key &&\n\t\t\t\t\t\tchildVNode.type === oldVNode.type)\n\t\t\t\t) {\n\t\t\t\t\toldChildren[i] = undefined;\n\t\t\t\t} else {\n\t\t\t\t\t// Either oldVNode === undefined or oldChildrenLength > 0,\n\t\t\t\t\t// so after this loop oldVNode == null or oldVNode is a valid value.\n\t\t\t\t\tfor (j = 0; j < oldChildrenLength; j++) {\n\t\t\t\t\t\toldVNode = oldChildren[j];\n\t\t\t\t\t\t// If childVNode is unkeyed, we only match similarly unkeyed nodes, otherwise we match by key.\n\t\t\t\t\t\t// We always match by type (in either case).\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\toldVNode &&\n\t\t\t\t\t\t\tchildVNode.key == oldVNode.key &&\n\t\t\t\t\t\t\tchildVNode.type === oldVNode.type\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\toldChildren[j] = undefined;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\toldVNode = null;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\toldVNode = oldVNode || EMPTY_OBJ;\n\n\t\t\t\t// Morph the old element into the new one, but don't append it to the dom yet\n\t\t\t\tnewDom = diff(\n\t\t\t\t\tparentDom,\n\t\t\t\t\tchildVNode,\n\t\t\t\t\toldVNode,\n\t\t\t\t\tglobalContext,\n\t\t\t\t\tisSvg,\n\t\t\t\t\texcessDomChildren,\n\t\t\t\t\tcommitQueue,\n\t\t\t\t\toldDom,\n\t\t\t\t\tisHydrating\n\t\t\t\t);\n\n\t\t\t\tif ((j = childVNode.ref) && oldVNode.ref != j) {\n\t\t\t\t\tif (!refs) refs = [];\n\t\t\t\t\tif (oldVNode.ref) refs.push(oldVNode.ref, null, childVNode);\n\t\t\t\t\trefs.push(j, childVNode._component || newDom, childVNode);\n\t\t\t\t}\n\n\t\t\t\t// Only proceed if the vnode has not been unmounted by `diff()` above.\n\t\t\t\tif (newDom != null) {\n\t\t\t\t\tif (firstChildDom == null) {\n\t\t\t\t\t\tfirstChildDom = newDom;\n\t\t\t\t\t}\n\n\t\t\t\t\tlet nextDom;\n\t\t\t\t\tif (childVNode._nextDom !== undefined) {\n\t\t\t\t\t\t// Only Fragments or components that return Fragment like VNodes will\n\t\t\t\t\t\t// have a non-undefined _nextDom. Continue the diff from the sibling\n\t\t\t\t\t\t// of last DOM child of this child VNode\n\t\t\t\t\t\tnextDom = childVNode._nextDom;\n\n\t\t\t\t\t\t// Eagerly cleanup _nextDom. We don't need to persist the value because\n\t\t\t\t\t\t// it is only used by `diffChildren` to determine where to resume the diff after\n\t\t\t\t\t\t// diffing Components and Fragments. Once we store it the nextDOM local var, we\n\t\t\t\t\t\t// can clean up the property\n\t\t\t\t\t\tchildVNode._nextDom = undefined;\n\t\t\t\t\t} else if (\n\t\t\t\t\t\texcessDomChildren == oldVNode ||\n\t\t\t\t\t\tnewDom != oldDom ||\n\t\t\t\t\t\tnewDom.parentNode == null\n\t\t\t\t\t) {\n\t\t\t\t\t\t// NOTE: excessDomChildren==oldVNode above:\n\t\t\t\t\t\t// This is a compression of excessDomChildren==null && oldVNode==null!\n\t\t\t\t\t\t// The values only have the same type when `null`.\n\n\t\t\t\t\t\touter: if (oldDom == null || oldDom.parentNode !== parentDom) {\n\t\t\t\t\t\t\tparentDom.appendChild(newDom);\n\t\t\t\t\t\t\tnextDom = null;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// `j import('../internal').VNode} [callback]\n * A function to invoke for each child before it is added to the flattened list.\n * @param {Array} [flattened] An flat array of children to modify\n * @returns {import('../internal').VNode[]}\n */\nexport function toChildArray(children, callback, flattened) {\n\tif (flattened == null) flattened = [];\n\n\tif (children == null || typeof children == 'boolean') {\n\t\tif (callback) flattened.push(callback(null));\n\t} else if (Array.isArray(children)) {\n\t\tfor (let i = 0; i < children.length; i++) {\n\t\t\ttoChildArray(children[i], callback, flattened);\n\t\t}\n\t} else if (!callback) {\n\t\tflattened.push(children);\n\t} else if (typeof children == 'string' || typeof children == 'number') {\n\t\tflattened.push(callback(createVNode(null, children, null, null, children)));\n\t} else if (children._dom != null || children._component != null) {\n\t\tflattened.push(\n\t\t\tcallback(\n\t\t\t\tcreateVNode(\n\t\t\t\t\tchildren.type,\n\t\t\t\t\tchildren.props,\n\t\t\t\t\tchildren.key,\n\t\t\t\t\tnull,\n\t\t\t\t\tchildren._original\n\t\t\t\t)\n\t\t\t)\n\t\t);\n\t} else {\n\t\tflattened.push(callback(children));\n\t}\n\n\treturn flattened;\n}\n","import { IS_NON_DIMENSIONAL } from '../constants';\nimport options from '../options';\n\n/**\n * Diff the old and new properties of a VNode and apply changes to the DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to apply\n * changes to\n * @param {object} newProps The new props\n * @param {object} oldProps The old props\n * @param {boolean} isSvg Whether or not this node is an SVG node\n * @param {boolean} hydrate Whether or not we are in hydration mode\n */\nexport function diffProps(dom, newProps, oldProps, isSvg, hydrate) {\n\tlet i;\n\n\tfor (i in oldProps) {\n\t\tif (i !== 'children' && i !== 'key' && !(i in newProps)) {\n\t\t\tsetProperty(dom, i, null, oldProps[i], isSvg);\n\t\t}\n\t}\n\n\tfor (i in newProps) {\n\t\tif (\n\t\t\t(!hydrate || typeof newProps[i] == 'function') &&\n\t\t\ti !== 'children' &&\n\t\t\ti !== 'key' &&\n\t\t\ti !== 'value' &&\n\t\t\ti !== 'checked' &&\n\t\t\toldProps[i] !== newProps[i]\n\t\t) {\n\t\t\tsetProperty(dom, i, newProps[i], oldProps[i], isSvg);\n\t\t}\n\t}\n}\n\nfunction setStyle(style, key, value) {\n\tif (key[0] === '-') {\n\t\tstyle.setProperty(key, value);\n\t} else if (\n\t\ttypeof value == 'number' &&\n\t\tIS_NON_DIMENSIONAL.test(key) === false\n\t) {\n\t\tstyle[key] = value + 'px';\n\t} else if (value == null) {\n\t\tstyle[key] = '';\n\t} else {\n\t\tstyle[key] = value;\n\t}\n}\n\n/**\n * Set a property value on a DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to modify\n * @param {string} name The name of the property to set\n * @param {*} value The value to set the property to\n * @param {*} oldValue The old value the property had\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node or not\n */\nfunction setProperty(dom, name, value, oldValue, isSvg) {\n\tlet s, useCapture, nameLower;\n\n\tif (isSvg) {\n\t\tif (name === 'className') {\n\t\t\tname = 'class';\n\t\t}\n\t} else if (name === 'class') {\n\t\tname = 'className';\n\t}\n\n\tif (name === 'style') {\n\t\ts = dom.style;\n\n\t\tif (typeof value == 'string') {\n\t\t\ts.cssText = value;\n\t\t} else {\n\t\t\tif (typeof oldValue == 'string') {\n\t\t\t\ts.cssText = '';\n\t\t\t\toldValue = null;\n\t\t\t}\n\n\t\t\tif (oldValue) {\n\t\t\t\tfor (let i in oldValue) {\n\t\t\t\t\tif (!(value && i in value)) {\n\t\t\t\t\t\tsetStyle(s, i, '');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (value) {\n\t\t\t\tfor (let i in value) {\n\t\t\t\t\tif (!oldValue || value[i] !== oldValue[i]) {\n\t\t\t\t\t\tsetStyle(s, i, value[i]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Benchmark for comparison: https://esbench.com/bench/574c954bdb965b9a00965ac6\n\telse if (name[0] === 'o' && name[1] === 'n') {\n\t\tuseCapture = name !== (name = name.replace(/Capture$/, ''));\n\t\tnameLower = name.toLowerCase();\n\t\tname = (nameLower in dom ? nameLower : name).slice(2);\n\n\t\tif (value) {\n\t\t\tif (!oldValue) dom.addEventListener(name, eventProxy, useCapture);\n\t\t\t(dom._listeners || (dom._listeners = {}))[name] = value;\n\t\t} else {\n\t\t\tdom.removeEventListener(name, eventProxy, useCapture);\n\t\t}\n\t} else if (\n\t\tname !== 'list' &&\n\t\tname !== 'tagName' &&\n\t\t// HTMLButtonElement.form and HTMLInputElement.form are read-only but can be set using\n\t\t// setAttribute\n\t\tname !== 'form' &&\n\t\tname !== 'type' &&\n\t\tname !== 'size' &&\n\t\t!isSvg &&\n\t\tname in dom\n\t) {\n\t\tdom[name] = value == null ? '' : value;\n\t} else if (typeof value != 'function' && name !== 'dangerouslySetInnerHTML') {\n\t\tif (name !== (name = name.replace(/^xlink:?/, ''))) {\n\t\t\tif (value == null || value === false) {\n\t\t\t\tdom.removeAttributeNS(\n\t\t\t\t\t'http://www.w3.org/1999/xlink',\n\t\t\t\t\tname.toLowerCase()\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tdom.setAttributeNS(\n\t\t\t\t\t'http://www.w3.org/1999/xlink',\n\t\t\t\t\tname.toLowerCase(),\n\t\t\t\t\tvalue\n\t\t\t\t);\n\t\t\t}\n\t\t} else if (\n\t\t\tvalue == null ||\n\t\t\t(value === false &&\n\t\t\t\t// ARIA-attributes have a different notion of boolean values.\n\t\t\t\t// The value `false` is different from the attribute not\n\t\t\t\t// existing on the DOM, so we can't remove it. For non-boolean\n\t\t\t\t// ARIA-attributes we could treat false as a removal, but the\n\t\t\t\t// amount of exceptions would cost us too many bytes. On top of\n\t\t\t\t// that other VDOM frameworks also always stringify `false`.\n\t\t\t\t!/^ar/.test(name))\n\t\t) {\n\t\t\tdom.removeAttribute(name);\n\t\t} else {\n\t\t\tdom.setAttribute(name, value);\n\t\t}\n\t}\n}\n\n/**\n * Proxy an event to hooked event handlers\n * @param {Event} e The event object from the browser\n * @private\n */\nfunction eventProxy(e) {\n\tthis._listeners[e.type](options.event ? options.event(e) : e);\n}\n","import { EMPTY_OBJ, EMPTY_ARR } from '../constants';\nimport { Component } from '../component';\nimport { Fragment } from '../create-element';\nimport { diffChildren } from './children';\nimport { diffProps } from './props';\nimport { assign, removeNode } from '../util';\nimport options from '../options';\n\n/**\n * Diff two virtual nodes and apply proper changes to the DOM\n * @param {import('../internal').PreactElement} parentDom The parent of the DOM element\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object. Modified by getChildContext\n * @param {boolean} isSvg Whether or not this element is an SVG node\n * @param {Array} excessDomChildren\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {Element | Text} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} [isHydrating] Whether or not we are in hydration\n */\nexport function diff(\n\tparentDom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating\n) {\n\tlet tmp,\n\t\tnewType = newVNode.type;\n\n\t// When passing through createElement it assigns the object\n\t// constructor as undefined. This to prevent JSON-injection.\n\tif (newVNode.constructor !== undefined) return null;\n\n\tif ((tmp = options._diff)) tmp(newVNode);\n\n\ttry {\n\t\touter: if (typeof newType == 'function') {\n\t\t\tlet c, isNew, oldProps, oldState, snapshot, clearProcessingException;\n\t\t\tlet newProps = newVNode.props;\n\n\t\t\t// Necessary for createContext api. Setting this property will pass\n\t\t\t// the context value as `this.context` just for this component.\n\t\t\ttmp = newType.contextType;\n\t\t\tlet provider = tmp && globalContext[tmp._id];\n\t\t\tlet componentContext = tmp\n\t\t\t\t? provider\n\t\t\t\t\t? provider.props.value\n\t\t\t\t\t: tmp._defaultValue\n\t\t\t\t: globalContext;\n\n\t\t\t// Get component and set it to `c`\n\t\t\tif (oldVNode._component) {\n\t\t\t\tc = newVNode._component = oldVNode._component;\n\t\t\t\tclearProcessingException = c._processingException = c._pendingError;\n\t\t\t} else {\n\t\t\t\t// Instantiate the new component\n\t\t\t\tif ('prototype' in newType && newType.prototype.render) {\n\t\t\t\t\tnewVNode._component = c = new newType(newProps, componentContext); // eslint-disable-line new-cap\n\t\t\t\t} else {\n\t\t\t\t\tnewVNode._component = c = new Component(newProps, componentContext);\n\t\t\t\t\tc.constructor = newType;\n\t\t\t\t\tc.render = doRender;\n\t\t\t\t}\n\t\t\t\tif (provider) provider.sub(c);\n\n\t\t\t\tc.props = newProps;\n\t\t\t\tif (!c.state) c.state = {};\n\t\t\t\tc.context = componentContext;\n\t\t\t\tc._globalContext = globalContext;\n\t\t\t\tisNew = c._dirty = true;\n\t\t\t\tc._renderCallbacks = [];\n\t\t\t}\n\n\t\t\t// Invoke getDerivedStateFromProps\n\t\t\tif (c._nextState == null) {\n\t\t\t\tc._nextState = c.state;\n\t\t\t}\n\t\t\tif (newType.getDerivedStateFromProps != null) {\n\t\t\t\tif (c._nextState == c.state) {\n\t\t\t\t\tc._nextState = assign({}, c._nextState);\n\t\t\t\t}\n\n\t\t\t\tassign(\n\t\t\t\t\tc._nextState,\n\t\t\t\t\tnewType.getDerivedStateFromProps(newProps, c._nextState)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\toldProps = c.props;\n\t\t\toldState = c.state;\n\n\t\t\t// Invoke pre-render lifecycle methods\n\t\t\tif (isNew) {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tc.componentWillMount != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillMount();\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidMount != null) {\n\t\t\t\t\tc._renderCallbacks.push(c.componentDidMount);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tnewProps !== oldProps &&\n\t\t\t\t\tc.componentWillReceiveProps != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillReceiveProps(newProps, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t(!c._force &&\n\t\t\t\t\t\tc.shouldComponentUpdate != null &&\n\t\t\t\t\t\tc.shouldComponentUpdate(\n\t\t\t\t\t\t\tnewProps,\n\t\t\t\t\t\t\tc._nextState,\n\t\t\t\t\t\t\tcomponentContext\n\t\t\t\t\t\t) === false) ||\n\t\t\t\t\t(newVNode._original === oldVNode._original && !c._processingException)\n\t\t\t\t) {\n\t\t\t\t\tc.props = newProps;\n\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t\t// More info about this here: https://gist.github.com/JoviDeCroock/bec5f2ce93544d2e6070ef8e0036e4e8\n\t\t\t\t\tif (newVNode._original !== oldVNode._original) c._dirty = false;\n\t\t\t\t\tc._vnode = newVNode;\n\t\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\t\t\tcommitQueue.push(c);\n\t\t\t\t\t}\n\n\t\t\t\t\tfor (tmp = 0; tmp < newVNode._children.length; tmp++) {\n\t\t\t\t\t\tif (newVNode._children[tmp]) {\n\t\t\t\t\t\t\tnewVNode._children[tmp]._parent = newVNode;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\n\t\t\t\tif (c.componentWillUpdate != null) {\n\t\t\t\t\tc.componentWillUpdate(newProps, c._nextState, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidUpdate != null) {\n\t\t\t\t\tc._renderCallbacks.push(() => {\n\t\t\t\t\t\tc.componentDidUpdate(oldProps, oldState, snapshot);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tc.context = componentContext;\n\t\t\tc.props = newProps;\n\t\t\tc.state = c._nextState;\n\n\t\t\tif ((tmp = options._render)) tmp(newVNode);\n\n\t\t\tc._dirty = false;\n\t\t\tc._vnode = newVNode;\n\t\t\tc._parentDom = parentDom;\n\n\t\t\ttmp = c.render(c.props, c.state, c.context);\n\t\t\tlet isTopLevelFragment =\n\t\t\t\ttmp != null && tmp.type == Fragment && tmp.key == null;\n\t\t\tnewVNode._children = isTopLevelFragment\n\t\t\t\t? tmp.props.children\n\t\t\t\t: Array.isArray(tmp)\n\t\t\t\t? tmp\n\t\t\t\t: [tmp];\n\n\t\t\tif (c.getChildContext != null) {\n\t\t\t\tglobalContext = assign(assign({}, globalContext), c.getChildContext());\n\t\t\t}\n\n\t\t\tif (!isNew && c.getSnapshotBeforeUpdate != null) {\n\t\t\t\tsnapshot = c.getSnapshotBeforeUpdate(oldProps, oldState);\n\t\t\t}\n\n\t\t\tdiffChildren(\n\t\t\t\tparentDom,\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\toldDom,\n\t\t\t\tisHydrating\n\t\t\t);\n\n\t\t\tc.base = newVNode._dom;\n\n\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\tcommitQueue.push(c);\n\t\t\t}\n\n\t\t\tif (clearProcessingException) {\n\t\t\t\tc._pendingError = c._processingException = null;\n\t\t\t}\n\n\t\t\tc._force = false;\n\t\t} else if (\n\t\t\texcessDomChildren == null &&\n\t\t\tnewVNode._original === oldVNode._original\n\t\t) {\n\t\t\tnewVNode._children = oldVNode._children;\n\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t} else {\n\t\t\tnewVNode._dom = diffElementNodes(\n\t\t\t\toldVNode._dom,\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\tisHydrating\n\t\t\t);\n\t\t}\n\n\t\tif ((tmp = options.diffed)) tmp(newVNode);\n\t} catch (e) {\n\t\tnewVNode._original = null;\n\t\toptions._catchError(e, newVNode, oldVNode);\n\t}\n\n\treturn newVNode._dom;\n}\n\n/**\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').VNode} root\n */\nexport function commitRoot(commitQueue, root) {\n\tif (options._commit) options._commit(root, commitQueue);\n\n\tcommitQueue.some(c => {\n\t\ttry {\n\t\t\tcommitQueue = c._renderCallbacks;\n\t\t\tc._renderCallbacks = [];\n\t\t\tcommitQueue.some(cb => {\n\t\t\t\tcb.call(c);\n\t\t\t});\n\t\t} catch (e) {\n\t\t\toptions._catchError(e, c._vnode);\n\t\t}\n\t});\n}\n\n/**\n * Diff two virtual nodes representing DOM element\n * @param {import('../internal').PreactElement} dom The DOM element representing\n * the virtual nodes being diffed\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {*} excessDomChildren\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @returns {import('../internal').PreactElement}\n */\nfunction diffElementNodes(\n\tdom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\tisHydrating\n) {\n\tlet i;\n\tlet oldProps = oldVNode.props;\n\tlet newProps = newVNode.props;\n\n\t// Tracks entering and exiting SVG namespace when descending through the tree.\n\tisSvg = newVNode.type === 'svg' || isSvg;\n\n\tif (excessDomChildren != null) {\n\t\tfor (i = 0; i < excessDomChildren.length; i++) {\n\t\t\tconst child = excessDomChildren[i];\n\n\t\t\t// if newVNode matches an element in excessDomChildren or the `dom`\n\t\t\t// argument matches an element in excessDomChildren, remove it from\n\t\t\t// excessDomChildren so it isn't later removed in diffChildren\n\t\t\tif (\n\t\t\t\tchild != null &&\n\t\t\t\t((newVNode.type === null\n\t\t\t\t\t? child.nodeType === 3\n\t\t\t\t\t: child.localName === newVNode.type) ||\n\t\t\t\t\tdom == child)\n\t\t\t) {\n\t\t\t\tdom = child;\n\t\t\t\texcessDomChildren[i] = null;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (dom == null) {\n\t\tif (newVNode.type === null) {\n\t\t\treturn document.createTextNode(newProps);\n\t\t}\n\n\t\tdom = isSvg\n\t\t\t? document.createElementNS('http://www.w3.org/2000/svg', newVNode.type)\n\t\t\t: document.createElement(\n\t\t\t\t\tnewVNode.type,\n\t\t\t\t\tnewProps.is && { is: newProps.is }\n\t\t\t );\n\t\t// we created a new parent, so none of the previously attached children can be reused:\n\t\texcessDomChildren = null;\n\t\t// we are creating a new node, so we can assume this is a new subtree (in case we are hydrating), this deopts the hydrate\n\t\tisHydrating = false;\n\t}\n\n\tif (newVNode.type === null) {\n\t\tif (oldProps !== newProps && dom.data != newProps) {\n\t\t\tdom.data = newProps;\n\t\t}\n\t} else {\n\t\tif (excessDomChildren != null) {\n\t\t\texcessDomChildren = EMPTY_ARR.slice.call(dom.childNodes);\n\t\t}\n\n\t\toldProps = oldVNode.props || EMPTY_OBJ;\n\n\t\tlet oldHtml = oldProps.dangerouslySetInnerHTML;\n\t\tlet newHtml = newProps.dangerouslySetInnerHTML;\n\n\t\t// During hydration, props are not diffed at all (including dangerouslySetInnerHTML)\n\t\t// @TODO we should warn in debug mode when props don't match here.\n\t\tif (!isHydrating) {\n\t\t\tif (oldProps === EMPTY_OBJ) {\n\t\t\t\toldProps = {};\n\t\t\t\tfor (let i = 0; i < dom.attributes.length; i++) {\n\t\t\t\t\toldProps[dom.attributes[i].name] = dom.attributes[i].value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (newHtml || oldHtml) {\n\t\t\t\t// Avoid re-applying the same '__html' if it did not changed between re-render\n\t\t\t\tif (!newHtml || !oldHtml || newHtml.__html != oldHtml.__html) {\n\t\t\t\t\tdom.innerHTML = (newHtml && newHtml.__html) || '';\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tdiffProps(dom, newProps, oldProps, isSvg, isHydrating);\n\n\t\tnewVNode._children = newVNode.props.children;\n\n\t\t// If the new vnode didn't have dangerouslySetInnerHTML, diff its children\n\t\tif (!newHtml) {\n\t\t\tdiffChildren(\n\t\t\t\tdom,\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tnewVNode.type === 'foreignObject' ? false : isSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\tEMPTY_OBJ,\n\t\t\t\tisHydrating\n\t\t\t);\n\t\t}\n\n\t\t// (as above, don't diff props during hydration)\n\t\tif (!isHydrating) {\n\t\t\tif (\n\t\t\t\t'value' in newProps &&\n\t\t\t\tnewProps.value !== undefined &&\n\t\t\t\tnewProps.value !== dom.value\n\t\t\t) {\n\t\t\t\tdom.value = newProps.value == null ? '' : newProps.value;\n\t\t\t}\n\t\t\tif (\n\t\t\t\t'checked' in newProps &&\n\t\t\t\tnewProps.checked !== undefined &&\n\t\t\t\tnewProps.checked !== dom.checked\n\t\t\t) {\n\t\t\t\tdom.checked = newProps.checked;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn dom;\n}\n\n/**\n * Invoke or update a ref, depending on whether it is a function or object ref.\n * @param {object|function} ref\n * @param {any} value\n * @param {import('../internal').VNode} vnode\n */\nexport function applyRef(ref, value, vnode) {\n\ttry {\n\t\tif (typeof ref == 'function') ref(value);\n\t\telse ref.current = value;\n\t} catch (e) {\n\t\toptions._catchError(e, vnode);\n\t}\n}\n\n/**\n * Unmount a virtual node from the tree and apply DOM changes\n * @param {import('../internal').VNode} vnode The virtual node to unmount\n * @param {import('../internal').VNode} parentVNode The parent of the VNode that\n * initiated the unmount\n * @param {boolean} [skipRemove] Flag that indicates that a parent node of the\n * current element is already detached from the DOM.\n */\nexport function unmount(vnode, parentVNode, skipRemove) {\n\tlet r;\n\tif (options.unmount) options.unmount(vnode);\n\n\tif ((r = vnode.ref)) {\n\t\tif (!r.current || r.current === vnode._dom) applyRef(r, null, parentVNode);\n\t}\n\n\tlet dom;\n\tif (!skipRemove && typeof vnode.type != 'function') {\n\t\tskipRemove = (dom = vnode._dom) != null;\n\t}\n\n\t// Must be set to `undefined` to properly clean up `_nextDom`\n\t// for which `null` is a valid value. See comment in `create-element.js`\n\tvnode._dom = vnode._nextDom = undefined;\n\n\tif ((r = vnode._component) != null) {\n\t\tif (r.componentWillUnmount) {\n\t\t\ttry {\n\t\t\t\tr.componentWillUnmount();\n\t\t\t} catch (e) {\n\t\t\t\toptions._catchError(e, parentVNode);\n\t\t\t}\n\t\t}\n\n\t\tr.base = r._parentDom = null;\n\t}\n\n\tif ((r = vnode._children)) {\n\t\tfor (let i = 0; i < r.length; i++) {\n\t\t\tif (r[i]) unmount(r[i], parentVNode, skipRemove);\n\t\t}\n\t}\n\n\tif (dom != null) removeNode(dom);\n}\n\n/** The `.render()` method for a PFC backing instance. */\nfunction doRender(props, state, context) {\n\treturn this.constructor(props, context);\n}\n","import { EMPTY_OBJ, EMPTY_ARR } from './constants';\nimport { commitRoot, diff } from './diff/index';\nimport { createElement, Fragment } from './create-element';\nimport options from './options';\n\nconst IS_HYDRATE = EMPTY_OBJ;\n\n/**\n * Render a Preact virtual node into a DOM element\n * @param {import('./index').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to\n * render into\n * @param {Element | Text} [replaceNode] Optional: Attempt to re-use an\n * existing DOM tree rooted at `replaceNode`\n */\nexport function render(vnode, parentDom, replaceNode) {\n\tif (options._root) options._root(vnode, parentDom);\n\n\t// We abuse the `replaceNode` parameter in `hydrate()` to signal if we\n\t// are in hydration mode or not by passing `IS_HYDRATE` instead of a\n\t// DOM element.\n\tlet isHydrating = replaceNode === IS_HYDRATE;\n\n\t// To be able to support calling `render()` multiple times on the same\n\t// DOM node, we need to obtain a reference to the previous tree. We do\n\t// this by assigning a new `_children` property to DOM nodes which points\n\t// to the last rendered tree. By default this property is not present, which\n\t// means that we are mounting a new tree for the first time.\n\tlet oldVNode = isHydrating\n\t\t? null\n\t\t: (replaceNode && replaceNode._children) || parentDom._children;\n\tvnode = createElement(Fragment, null, [vnode]);\n\n\t// List of effects that need to be called after diffing.\n\tlet commitQueue = [];\n\tdiff(\n\t\tparentDom,\n\t\t// Determine the new vnode tree and store it on the DOM element on\n\t\t// our custom `_children` property.\n\t\t((isHydrating ? parentDom : replaceNode || parentDom)._children = vnode),\n\t\toldVNode || EMPTY_OBJ,\n\t\tEMPTY_OBJ,\n\t\tparentDom.ownerSVGElement !== undefined,\n\t\treplaceNode && !isHydrating\n\t\t\t? [replaceNode]\n\t\t\t: oldVNode\n\t\t\t? null\n\t\t\t: EMPTY_ARR.slice.call(parentDom.childNodes),\n\t\tcommitQueue,\n\t\treplaceNode || EMPTY_OBJ,\n\t\tisHydrating\n\t);\n\n\t// Flush all queued effects\n\tcommitRoot(commitQueue, vnode);\n}\n\n/**\n * Update an existing DOM element with data from a Preact virtual node\n * @param {import('./index').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to\n * update\n */\nexport function hydrate(vnode, parentDom) {\n\trender(vnode, parentDom, IS_HYDRATE);\n}\n","import { assign } from './util';\nimport { EMPTY_ARR } from './constants';\nimport { createVNode } from './create-element';\n\n/**\n * Clones the given VNode, optionally adding attributes/props and replacing its children.\n * @param {import('./internal').VNode} vnode The virtual DOM element to clone\n * @param {object} props Attributes/props to add when cloning\n * @param {Array} rest Any additional arguments will be used as replacement children.\n * @returns {import('./internal').VNode}\n */\nexport function cloneElement(vnode, props) {\n\tprops = assign(assign({}, vnode.props), props);\n\tif (arguments.length > 2) props.children = EMPTY_ARR.slice.call(arguments, 2);\n\treturn createVNode(\n\t\tvnode.type,\n\t\tprops,\n\t\tprops.key || vnode.key,\n\t\tprops.ref || vnode.ref,\n\t\tnull\n\t);\n}\n","import { enqueueRender } from './component';\n\nexport let i = 0;\n\nexport function createContext(defaultValue) {\n\tconst ctx = {};\n\n\tconst context = {\n\t\t_id: '__cC' + i++,\n\t\t_defaultValue: defaultValue,\n\t\tConsumer(props, context) {\n\t\t\treturn props.children(context);\n\t\t},\n\t\tProvider(props) {\n\t\t\tif (!this.getChildContext) {\n\t\t\t\tconst subs = [];\n\t\t\t\tthis.getChildContext = () => {\n\t\t\t\t\tctx[context._id] = this;\n\t\t\t\t\treturn ctx;\n\t\t\t\t};\n\n\t\t\t\tthis.shouldComponentUpdate = _props => {\n\t\t\t\t\tif (this.props.value !== _props.value) {\n\t\t\t\t\t\tsubs.some(c => {\n\t\t\t\t\t\t\tc.context = _props.value;\n\t\t\t\t\t\t\tenqueueRender(c);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tthis.sub = c => {\n\t\t\t\t\tsubs.push(c);\n\t\t\t\t\tlet old = c.componentWillUnmount;\n\t\t\t\t\tc.componentWillUnmount = () => {\n\t\t\t\t\t\tsubs.splice(subs.indexOf(c), 1);\n\t\t\t\t\t\told && old.call(c);\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn props.children;\n\t\t}\n\t};\n\n\tcontext.Consumer.contextType = context;\n\n\treturn context;\n}\n","export const ELEMENT_NODE = 1;\nexport const DOCUMENT_NODE = 9;\nexport const DOCUMENT_FRAGMENT_NODE = 11;\n","import { _catchError } from './diff/catch-error';\n\n/**\n * The `option` object can potentially contain callback functions\n * that are called during various stages of our renderer. This is the\n * foundation on which all our addons like `preact/debug`, `preact/compat`,\n * and `preact/hooks` are based on. See the `Options` type in `internal.d.ts`\n * for a full list of available option hooks (most editors/IDEs allow you to\n * ctrl+click or cmd+click on mac the type definition below).\n * @type {import('./internal').Options}\n */\nconst options = {\n\t_catchError\n};\n\nexport default options;\n","import { enqueueRender } from '../component';\n\n/**\n * Find the closest error boundary to a thrown error and call it\n * @param {object} error The thrown value\n * @param {import('../internal').VNode} vnode The vnode that threw\n * the error that was caught (except for unmounting when this parameter\n * is the highest parent that was being unmounted)\n */\nexport function _catchError(error, vnode) {\n\t/** @type {import('../internal').Component} */\n\tlet component, hasCaught;\n\n\tfor (; (vnode = vnode._parent); ) {\n\t\tif ((component = vnode._component) && !component._processingException) {\n\t\t\ttry {\n\t\t\t\tif (\n\t\t\t\t\tcomponent.constructor &&\n\t\t\t\t\tcomponent.constructor.getDerivedStateFromError != null\n\t\t\t\t) {\n\t\t\t\t\thasCaught = true;\n\t\t\t\t\tcomponent.setState(\n\t\t\t\t\t\tcomponent.constructor.getDerivedStateFromError(error)\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (component.componentDidCatch != null) {\n\t\t\t\t\thasCaught = true;\n\t\t\t\t\tcomponent.componentDidCatch(error);\n\t\t\t\t}\n\n\t\t\t\tif (hasCaught)\n\t\t\t\t\treturn enqueueRender((component._pendingError = component));\n\t\t\t} catch (e) {\n\t\t\t\terror = e;\n\t\t\t}\n\t\t}\n\t}\n\n\tthrow error;\n}\n","import style from './copyright.css';\nimport { Component } from 'preact';\n\nexport default class Copyright extends Component {\n\trender() {\n\t\treturn
© 2020 - Stefano Pigozzi - CC BY-SA 4.0 - Codice sorgente - Supportami
;\n\t}\n}\n","\n\t\timport Async from \"../../node_modules/@preact/async-loader/async-legacy.js\";\n\n\t\tfunction load(cb) {\n\t\t\trequire.ensure([], function (require) {\n\t\t\t\tcb( require(\"!!../../node_modules/babel-loader/lib/index.js??ref--4!./ottimizzazioneLineare.js\") );\n\t\t\t}, \"route-ottimizzazioneLineare\");\n\t\t}\n\n\t\texport default Async(load);\n\t","/* global __webpack_public_path__ */\n\nimport * as Preact from 'preact';\nconst { h, render, hydrate } = Preact;\n\nconst interopDefault = m => (m && m.default ? m.default : m);\n\nconst normalizeURL = url => (url[url.length - 1] === '/' ? url : url + '/');\n\nif (process.env.NODE_ENV === 'development') {\n\t// enable preact devtools\n\trequire('preact/debug');\n\tif (process.env.RHL) {\n\t\t// enable hot loader\n\t\tconst hotLoader = interopDefault(require('react-hot-loader'));\n\t\thotLoader.preact(interopDefault(require('preact')));\n\t}\n\t// only add a debug sw if webpack service worker is not requested.\n\tif (process.env.ADD_SW === undefined && 'serviceWorker' in navigator) {\n\t\t// eslint-disable-next-line no-undef\n\t\tnavigator.serviceWorker.register(__webpack_public_path__ + 'sw-debug.js');\n\t} else if (process.env.ADD_SW && 'serviceWorker' in navigator) {\n\t\t// eslint-disable-next-line no-undef\n\t\tnavigator.serviceWorker.register(\n\t\t\t__webpack_public_path__ + (process.env.ES_BUILD ? 'sw-esm.js' : 'sw.js')\n\t\t);\n\t}\n} else if (process.env.ADD_SW && 'serviceWorker' in navigator) {\n\t// eslint-disable-next-line no-undef\n\tnavigator.serviceWorker.register(\n\t\t__webpack_public_path__ + (process.env.ES_BUILD ? 'sw-esm.js' : 'sw.js')\n\t);\n}\n\nlet app = interopDefault(require('preact-cli-entrypoint'));\n\nif (typeof app === 'function') {\n\tlet root =\n\t\tdocument.getElementById('preact_root') || document.body.firstElementChild;\n\n\tlet init = () => {\n\t\tlet app = interopDefault(require('preact-cli-entrypoint'));\n\t\tlet preRenderData = {};\n\t\tconst inlineDataElement = document.querySelector(\n\t\t\t'[type=\"__PREACT_CLI_DATA__\"]'\n\t\t);\n\t\tif (inlineDataElement) {\n\t\t\tpreRenderData =\n\t\t\t\tJSON.parse(inlineDataElement.innerHTML).preRenderData || preRenderData;\n\t\t}\n\t\t/* An object named CLI_DATA is passed as a prop,\n\t\t * this keeps us future proof if in case we decide,\n\t\t * to send other data like at some point in time.\n\t\t */\n\t\tconst CLI_DATA = { preRenderData };\n\t\tconst currentURL = preRenderData.url ? normalizeURL(preRenderData.url) : '';\n\t\tconst canHydrate =\n\t\t\tprocess.env.PRERENDER &&\n\t\t\tprocess.env.NODE_ENV === 'production' &&\n\t\t\thydrate &&\n\t\t\tcurrentURL === location.pathname;\n\t\tconst doRender = canHydrate ? hydrate : render;\n\t\troot = doRender(h(app, { CLI_DATA }), document.body, root);\n\t};\n\n\tif (module.hot) module.hot.accept('preact-cli-entrypoint', init);\n\n\tinit();\n}\n","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","function isAbsolute(pathname) {\n return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n list[i] = list[k];\n }\n\n list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to, from) {\n if (from === undefined) from = '';\n\n var toParts = (to && to.split('/')) || [];\n var fromParts = (from && from.split('/')) || [];\n\n var isToAbs = to && isAbsolute(to);\n var isFromAbs = from && isAbsolute(from);\n var mustEndAbs = isToAbs || isFromAbs;\n\n if (to && isAbsolute(to)) {\n // to is absolute\n fromParts = toParts;\n } else if (toParts.length) {\n // to is relative, drop the filename\n fromParts.pop();\n fromParts = fromParts.concat(toParts);\n }\n\n if (!fromParts.length) return '/';\n\n var hasTrailingSlash;\n if (fromParts.length) {\n var last = fromParts[fromParts.length - 1];\n hasTrailingSlash = last === '.' || last === '..' || last === '';\n } else {\n hasTrailingSlash = false;\n }\n\n var up = 0;\n for (var i = fromParts.length; i >= 0; i--) {\n var part = fromParts[i];\n\n if (part === '.') {\n spliceOne(fromParts, i);\n } else if (part === '..') {\n spliceOne(fromParts, i);\n up++;\n } else if (up) {\n spliceOne(fromParts, i);\n up--;\n }\n }\n\n if (!mustEndAbs) for (; up--; up) fromParts.unshift('..');\n\n if (\n mustEndAbs &&\n fromParts[0] !== '' &&\n (!fromParts[0] || !isAbsolute(fromParts[0]))\n )\n fromParts.unshift('');\n\n var result = fromParts.join('/');\n\n if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n return result;\n}\n\nexport default resolvePathname;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport warning from 'tiny-warning';\nimport invariant from 'tiny-invariant';\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n}\nfunction stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n}\nfunction hasBasename(path, prefix) {\n return path.toLowerCase().indexOf(prefix.toLowerCase()) === 0 && '/?#'.indexOf(path.charAt(prefix.length)) !== -1;\n}\nfunction stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\nfunction stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n}\nfunction parsePath(path) {\n var pathname = path || '/';\n var search = '';\n var hash = '';\n var hashIndex = pathname.indexOf('#');\n\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === '?' ? '' : search,\n hash: hash === '#' ? '' : hash\n };\n}\nfunction createPath(location) {\n var pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n var path = pathname || '/';\n if (search && search !== '?') path += search.charAt(0) === '?' ? search : \"?\" + search;\n if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : \"#\" + hash;\n return path;\n}\n\nfunction createLocation(path, state, key, currentLocation) {\n var location;\n\n if (typeof path === 'string') {\n // Two-arg form: push(path, state)\n location = parsePath(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = _extends({}, path);\n if (location.pathname === undefined) location.pathname = '';\n\n if (location.search) {\n if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n } else {\n location.search = '';\n }\n\n if (location.hash) {\n if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n } else {\n location.hash = '';\n }\n\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) {\n throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n } else {\n throw e;\n }\n }\n\n if (key) location.key = key;\n\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) {\n location.pathname = currentLocation.pathname;\n } else if (location.pathname.charAt(0) !== '/') {\n location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n }\n } else {\n // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) {\n location.pathname = '/';\n }\n }\n\n return location;\n}\nfunction locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n}\n\nfunction createTransitionManager() {\n var prompt = null;\n\n function setPrompt(nextPrompt) {\n process.env.NODE_ENV !== \"production\" ? warning(prompt == null, 'A history supports only one prompt at a time') : void 0;\n prompt = nextPrompt;\n return function () {\n if (prompt === nextPrompt) prompt = null;\n };\n }\n\n function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n // TODO: If another transition starts while we're still confirming\n // the previous one, we may end up in a weird state. Figure out the\n // best way to handle this.\n if (prompt != null) {\n var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n if (typeof result === 'string') {\n if (typeof getUserConfirmation === 'function') {\n getUserConfirmation(result, callback);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message') : void 0;\n callback(true);\n }\n } else {\n // Return false from a transition hook to cancel the transition.\n callback(result !== false);\n }\n } else {\n callback(true);\n }\n }\n\n var listeners = [];\n\n function appendListener(fn) {\n var isActive = true;\n\n function listener() {\n if (isActive) fn.apply(void 0, arguments);\n }\n\n listeners.push(listener);\n return function () {\n isActive = false;\n listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n }\n\n function notifyListeners() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n listeners.forEach(function (listener) {\n return listener.apply(void 0, args);\n });\n }\n\n return {\n setPrompt: setPrompt,\n confirmTransitionTo: confirmTransitionTo,\n appendListener: appendListener,\n notifyListeners: notifyListeners\n };\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction getConfirmation(message, callback) {\n callback(window.confirm(message)); // eslint-disable-line no-alert\n}\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\n\nfunction supportsHistory() {\n var ua = window.navigator.userAgent;\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n return window.history && 'pushState' in window.history;\n}\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\n\nfunction supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n}\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\n}\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\n\nfunction isExtraneousPopstateEvent(event) {\n return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n}\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nfunction getHistoryState() {\n try {\n return window.history.state || {};\n } catch (e) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n return {};\n }\n}\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\n\n\nfunction createBrowserHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Browser history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canUseHistory = supportsHistory();\n var needsHashChangeListener = !supportsPopStateOnHashChange();\n var _props = props,\n _props$forceRefresh = _props.forceRefresh,\n forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n function getDOMLocation(historyState) {\n var _ref = historyState || {},\n key = _ref.key,\n state = _ref.state;\n\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n var path = pathname + search + hash;\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path, state, key);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function handlePopState(event) {\n // Ignore extraneous popstate events in WebKit.\n if (isExtraneousPopstateEvent(event)) return;\n handlePop(getDOMLocation(event.state));\n }\n\n function handleHashChange() {\n handlePop(getDOMLocation(getHistoryState()));\n }\n\n var forceNextPop = false;\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of keys we've seen in sessionStorage.\n // Instead, we just default to 0 for keys we don't know.\n\n var toIndex = allKeys.indexOf(toLocation.key);\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allKeys.indexOf(fromLocation.key);\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n }\n\n var initialLocation = getDOMLocation(getHistoryState());\n var allKeys = [initialLocation.key]; // Public interface\n\n function createHref(location) {\n return basename + createPath(location);\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.pushState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.href = href;\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n var nextKeys = allKeys.slice(0, prevIndex + 1);\n nextKeys.push(location.key);\n allKeys = nextKeys;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history') : void 0;\n window.location.href = href;\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.replaceState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.replace(href);\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history') : void 0;\n window.location.replace(href);\n }\n });\n }\n\n function go(n) {\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nvar HashChangeEvent$1 = 'hashchange';\nvar HashPathCoders = {\n hashbang: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n },\n decodePath: function decodePath(path) {\n return path.charAt(0) === '!' ? path.substr(1) : path;\n }\n },\n noslash: {\n encodePath: stripLeadingSlash,\n decodePath: addLeadingSlash\n },\n slash: {\n encodePath: addLeadingSlash,\n decodePath: addLeadingSlash\n }\n};\n\nfunction stripHash(url) {\n var hashIndex = url.indexOf('#');\n return hashIndex === -1 ? url : url.slice(0, hashIndex);\n}\n\nfunction getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var hashIndex = href.indexOf('#');\n return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n}\n\nfunction pushHashPath(path) {\n window.location.hash = path;\n}\n\nfunction replaceHashPath(path) {\n window.location.replace(stripHash(window.location.href) + '#' + path);\n}\n\nfunction createHashHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Hash history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n var _props = props,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$hashType = _props.hashType,\n hashType = _props$hashType === void 0 ? 'slash' : _props$hashType;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n var _HashPathCoders$hashT = HashPathCoders[hashType],\n encodePath = _HashPathCoders$hashT.encodePath,\n decodePath = _HashPathCoders$hashT.decodePath;\n\n function getDOMLocation() {\n var path = decodePath(getHashPath());\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n var forceNextPop = false;\n var ignorePath = null;\n\n function locationsAreEqual$$1(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash;\n }\n\n function handleHashChange() {\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) {\n // Ensure we always have a properly-encoded hash.\n replaceHashPath(encodedPath);\n } else {\n var location = getDOMLocation();\n var prevLocation = history.location;\n if (!forceNextPop && locationsAreEqual$$1(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n ignorePath = null;\n handlePop(location);\n }\n }\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of paths we've seen in sessionStorage.\n // Instead, we just default to 0 for paths we don't know.\n\n var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n } // Ensure the hash is encoded properly before doing anything else.\n\n\n var path = getHashPath();\n var encodedPath = encodePath(path);\n if (path !== encodedPath) replaceHashPath(encodedPath);\n var initialLocation = getDOMLocation();\n var allPaths = [createPath(initialLocation)]; // Public interface\n\n function createHref(location) {\n var baseTag = document.querySelector('base');\n var href = '';\n\n if (baseTag && baseTag.getAttribute('href')) {\n href = stripHash(window.location.href);\n }\n\n return href + '#' + encodePath(basename + createPath(location));\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot push state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a PUSH, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n pushHashPath(encodedPath);\n var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n var nextPaths = allPaths.slice(0, prevIndex + 1);\n nextPaths.push(path);\n allPaths = nextPaths;\n setState({\n action: action,\n location: location\n });\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack') : void 0;\n setState();\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot replace state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n replaceHashPath(encodedPath);\n }\n\n var prevIndex = allPaths.indexOf(createPath(history.location));\n if (prevIndex !== -1) allPaths[prevIndex] = path;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n process.env.NODE_ENV !== \"production\" ? warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(HashChangeEvent$1, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(HashChangeEvent$1, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nfunction clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n}\n/**\n * Creates a history object that stores locations in memory.\n */\n\n\nfunction createMemoryHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n var _props = props,\n getUserConfirmation = _props.getUserConfirmation,\n _props$initialEntries = _props.initialEntries,\n initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries,\n _props$initialIndex = _props.initialIndex,\n initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = history.entries.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var index = clamp(initialIndex, 0, initialEntries.length - 1);\n var entries = initialEntries.map(function (entry) {\n return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n }); // Public interface\n\n var createHref = createPath;\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var prevIndex = history.index;\n var nextIndex = prevIndex + 1;\n var nextEntries = history.entries.slice(0);\n\n if (nextEntries.length > nextIndex) {\n nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n } else {\n nextEntries.push(location);\n }\n\n setState({\n action: action,\n location: location,\n index: nextIndex,\n entries: nextEntries\n });\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n history.entries[history.index] = location;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n var action = 'POP';\n var location = history.entries[nextIndex];\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location,\n index: nextIndex\n });\n } else {\n // Mimic the behavior of DOM histories by\n // causing a render after a cancelled POP.\n setState();\n }\n });\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n function canGo(n) {\n var nextIndex = history.index + n;\n return nextIndex >= 0 && nextIndex < history.entries.length;\n }\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n return transitionManager.setPrompt(prompt);\n }\n\n function listen(listener) {\n return transitionManager.appendListener(listener);\n }\n\n var history = {\n length: entries.length,\n action: 'POP',\n location: entries[index],\n index: index,\n entries: entries,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n canGo: canGo,\n block: block,\n listen: listen\n };\n return history;\n}\n\nexport { createBrowserHistory, createHashHistory, createMemoryHistory, createLocation, locationsAreEqual, parsePath, createPath };\n","var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n if (condition) {\n return;\n }\n if (isProduction) {\n throw new Error(prefix);\n }\n throw new Error(prefix + \": \" + (message || ''));\n}\n\nexport default invariant;\n","import { options, Fragment } from 'preact';\n\n/**\n * Get human readable name of the component/dom node\n * @param {import('./internal').VNode} vnode\n * @param {import('./internal').VNode} vnode\n * @returns {string}\n */\nexport function getDisplayName(vnode) {\n\tif (vnode.type === Fragment) {\n\t\treturn 'Fragment';\n\t} else if (typeof vnode.type == 'function') {\n\t\treturn vnode.type.displayName || vnode.type.name;\n\t} else if (typeof vnode.type == 'string') {\n\t\treturn vnode.type;\n\t}\n\n\treturn '#text';\n}\n\n/**\n * Used to keep track of the currently rendered `vnode` and print it\n * in debug messages.\n */\nlet renderStack = [];\n\n/**\n * Keep track of the current owners. An owner describes a component\n * which was responsible to render a specific `vnode`. This exclude\n * children that are passed via `props.children`, because they belong\n * to the parent owner.\n *\n * ```jsx\n * const Foo = props =>
{props.children}
// div's owner is Foo\n * const Bar = props => {\n * return (\n * // Foo's owner is Bar, span's owner is Bar\n * )\n * }\n * ```\n *\n * Note: A `vnode` may be hoisted to the root scope due to compiler\n * optimiztions. In these cases the `_owner` will be different.\n */\nlet ownerStack = [];\n\n/**\n * Get the currently rendered `vnode`\n * @returns {import('./internal').VNode | null}\n */\nexport function getCurrentVNode() {\n\treturn renderStack.length > 0 ? renderStack[renderStack.length - 1] : null;\n}\n\n/**\n * If the user doesn't have `@babel/plugin-transform-react-jsx-source`\n * somewhere in his tool chain we can't print the filename and source\n * location of a component. In that case we just omit that, but we'll\n * print a helpful message to the console, notifying the user of it.\n */\nlet hasBabelPlugin = false;\n\n/**\n * Check if a `vnode` is a possible owner.\n * @param {import('./internal').VNode} vnode\n */\nfunction isPossibleOwner(vnode) {\n\treturn typeof vnode.type == 'function' && vnode.type != Fragment;\n}\n\n/**\n * Return the component stack that was captured up to this point.\n * @param {import('./internal').VNode} vnode\n * @returns {string}\n */\nexport function getOwnerStack(vnode) {\n\tconst stack = [vnode];\n\tlet next = vnode;\n\twhile (next._owner != null) {\n\t\tstack.push(next._owner);\n\t\tnext = next._owner;\n\t}\n\n\treturn stack.reduce((acc, owner) => {\n\t\tacc += ` in ${getDisplayName(owner)}`;\n\n\t\tconst source = owner.__source;\n\t\tif (source) {\n\t\t\tacc += ` (at ${source.fileName}:${source.lineNumber})`;\n\t\t} else if (!hasBabelPlugin) {\n\t\t\thasBabelPlugin = true;\n\t\t\tconsole.warn(\n\t\t\t\t'Add @babel/plugin-transform-react-jsx-source to get a more detailed component stack. Note that you should not add it to production builds of your App for bundle size reasons.'\n\t\t\t);\n\t\t}\n\n\t\treturn (acc += '\\n');\n\t}, '');\n}\n\n/**\n * Setup code to capture the component trace while rendering. Note that\n * we cannot simply traverse `vnode._parent` upwards, because we have some\n * debug messages for `this.setState` where the `vnode` is `undefined`.\n */\nexport function setupComponentStack() {\n\tlet oldDiff = options._diff;\n\tlet oldDiffed = options.diffed;\n\tlet oldRoot = options._root;\n\tlet oldVNode = options.vnode;\n\tlet oldRender = options._render;\n\n\toptions.diffed = vnode => {\n\t\tif (isPossibleOwner(vnode)) {\n\t\t\townerStack.pop();\n\t\t}\n\t\trenderStack.pop();\n\t\tif (oldDiffed) oldDiffed(vnode);\n\t};\n\n\toptions._diff = vnode => {\n\t\tif (isPossibleOwner(vnode)) {\n\t\t\trenderStack.push(vnode);\n\t\t}\n\t\tif (oldDiff) oldDiff(vnode);\n\t};\n\n\toptions._root = (vnode, parent) => {\n\t\townerStack = [];\n\t\tif (oldRoot) oldRoot(vnode, parent);\n\t};\n\n\toptions.vnode = vnode => {\n\t\tvnode._owner =\n\t\t\townerStack.length > 0 ? ownerStack[ownerStack.length - 1] : null;\n\t\tif (oldVNode) oldVNode(vnode);\n\t};\n\n\toptions._render = vnode => {\n\t\tif (isPossibleOwner(vnode)) {\n\t\t\townerStack.push(vnode);\n\t\t}\n\n\t\tif (oldRender) oldRender(vnode);\n\t};\n}\n","import { checkPropTypes } from './check-props';\nimport { options, Component } from 'preact';\nimport {\n\tELEMENT_NODE,\n\tDOCUMENT_NODE,\n\tDOCUMENT_FRAGMENT_NODE\n} from './constants';\nimport {\n\tgetOwnerStack,\n\tsetupComponentStack,\n\tgetCurrentVNode,\n\tgetDisplayName\n} from './component-stack';\n\nconst isWeakMapSupported = typeof WeakMap == 'function';\n\nfunction getClosestDomNodeParent(parent) {\n\tif (!parent) return {};\n\tif (typeof parent.type == 'function') {\n\t\treturn getClosestDomNodeParent(parent._parent);\n\t}\n\treturn parent;\n}\n\nexport function initDebug() {\n\tsetupComponentStack();\n\n\t/* eslint-disable no-console */\n\tlet oldBeforeDiff = options._diff;\n\tlet oldDiffed = options.diffed;\n\tlet oldVnode = options.vnode;\n\tlet oldCatchError = options._catchError;\n\tlet oldRoot = options._root;\n\tlet oldHook = options._hook;\n\tconst warnedComponents = !isWeakMapSupported\n\t\t? null\n\t\t: {\n\t\t\t\tuseEffect: new WeakMap(),\n\t\t\t\tuseLayoutEffect: new WeakMap(),\n\t\t\t\tlazyPropTypes: new WeakMap()\n\t\t };\n\n\toptions._catchError = (error, vnode, oldVNode) => {\n\t\tlet component = vnode && vnode._component;\n\t\tif (component && typeof error.then == 'function') {\n\t\t\tconst promise = error;\n\t\t\terror = new Error(\n\t\t\t\t`Missing Suspense. The throwing component was: ${getDisplayName(vnode)}`\n\t\t\t);\n\n\t\t\tlet parent = vnode;\n\t\t\tfor (; parent; parent = parent._parent) {\n\t\t\t\tif (parent._component && parent._component._childDidSuspend) {\n\t\t\t\t\terror = promise;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// We haven't recovered and we know at this point that there is no\n\t\t\t// Suspense component higher up in the tree\n\t\t\tif (error instanceof Error) {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t}\n\n\t\toldCatchError(error, vnode, oldVNode);\n\t};\n\n\toptions._root = (vnode, parentNode) => {\n\t\tif (!parentNode) {\n\t\t\tthrow new Error(\n\t\t\t\t'Undefined parent passed to render(), this is the second argument.\\n' +\n\t\t\t\t\t'Check if the element is available in the DOM/has the correct id.'\n\t\t\t);\n\t\t}\n\t\tlet isValid;\n\t\tswitch (parentNode.nodeType) {\n\t\t\tcase ELEMENT_NODE:\n\t\t\tcase DOCUMENT_FRAGMENT_NODE:\n\t\t\tcase DOCUMENT_NODE:\n\t\t\t\tisValid = true;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tisValid = false;\n\t\t}\n\n\t\tif (!isValid) {\n\t\t\tlet componentName = getDisplayName(vnode);\n\t\t\tthrow new Error(\n\t\t\t\t`Expected a valid HTML node as a second argument to render.\tReceived ${parentNode} instead: render(<${componentName} />, ${parentNode});`\n\t\t\t);\n\t\t}\n\n\t\tif (oldRoot) oldRoot(vnode, parentNode);\n\t};\n\n\toptions._diff = vnode => {\n\t\tlet { type, _parent: parent } = vnode;\n\t\tlet parentVNode = getClosestDomNodeParent(parent);\n\n\t\tif (type === undefined) {\n\t\t\tthrow new Error(\n\t\t\t\t'Undefined component passed to createElement()\\n\\n' +\n\t\t\t\t\t'You likely forgot to export your component or might have mixed up default and named imports' +\n\t\t\t\t\tserializeVNode(vnode) +\n\t\t\t\t\t`\\n\\n${getOwnerStack(vnode)}`\n\t\t\t);\n\t\t} else if (type != null && typeof type == 'object') {\n\t\t\tif (type._children !== undefined && type._dom !== undefined) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Invalid type passed to createElement(): ${type}\\n\\n` +\n\t\t\t\t\t\t'Did you accidentally pass a JSX literal as JSX twice?\\n\\n' +\n\t\t\t\t\t\t` let My${getDisplayName(vnode)} = ${serializeVNode(type)};\\n` +\n\t\t\t\t\t\t` let vnode = ;\\n\\n` +\n\t\t\t\t\t\t'This usually happens when you export a JSX literal and not the component.' +\n\t\t\t\t\t\t`\\n\\n${getOwnerStack(vnode)}`\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthrow new Error(\n\t\t\t\t'Invalid type passed to createElement(): ' +\n\t\t\t\t\t(Array.isArray(type) ? 'array' : type)\n\t\t\t);\n\t\t}\n\n\t\tif (\n\t\t\t(type === 'thead' || type === 'tfoot' || type === 'tbody') &&\n\t\t\tparentVNode.type !== 'table'\n\t\t) {\n\t\t\tconsole.error(\n\t\t\t\t'Improper nesting of table. Your
should have a
parent.' +\n\t\t\t\t\tserializeVNode(vnode) +\n\t\t\t\t\t`\\n\\n${getOwnerStack(vnode)}`\n\t\t\t);\n\t\t} else if (\n\t\t\ttype === 'tr' &&\n\t\t\tparentVNode.type !== 'thead' &&\n\t\t\tparentVNode.type !== 'tfoot' &&\n\t\t\tparentVNode.type !== 'tbody' &&\n\t\t\tparentVNode.type !== 'table'\n\t\t) {\n\t\t\tconsole.error(\n\t\t\t\t'Improper nesting of table. Your should have a parent.' +\n\t\t\t\t\tserializeVNode(vnode) +\n\t\t\t\t\t`\\n\\n${getOwnerStack(vnode)}`\n\t\t\t);\n\t\t} else if (type === 'td' && parentVNode.type !== 'tr') {\n\t\t\tconsole.error(\n\t\t\t\t'Improper nesting of table. Your parent.' +\n\t\t\t\t\tserializeVNode(vnode) +\n\t\t\t\t\t`\\n\\n${getOwnerStack(vnode)}`\n\t\t\t);\n\t\t} else if (type === 'th' && parentVNode.type !== 'tr') {\n\t\t\tconsole.error(\n\t\t\t\t'Improper nesting of table. Your .' +\n\t\t\t\t\tserializeVNode(vnode) +\n\t\t\t\t\t`\\n\\n${getOwnerStack(vnode)}`\n\t\t\t);\n\t\t}\n\n\t\tif (\n\t\t\tvnode.ref !== undefined &&\n\t\t\ttypeof vnode.ref != 'function' &&\n\t\t\ttypeof vnode.ref != 'object' &&\n\t\t\t!('$$typeof' in vnode) // allow string refs when preact-compat is installed\n\t\t) {\n\t\t\tthrow new Error(\n\t\t\t\t`Component's \"ref\" property should be a function, or an object created ` +\n\t\t\t\t\t`by createRef(), but got [${typeof vnode.ref}] instead\\n` +\n\t\t\t\t\tserializeVNode(vnode) +\n\t\t\t\t\t`\\n\\n${getOwnerStack(vnode)}`\n\t\t\t);\n\t\t}\n\n\t\tif (typeof vnode.type == 'string') {\n\t\t\tfor (const key in vnode.props) {\n\t\t\t\tif (\n\t\t\t\t\tkey[0] === 'o' &&\n\t\t\t\t\tkey[1] === 'n' &&\n\t\t\t\t\ttypeof vnode.props[key] != 'function' &&\n\t\t\t\t\tvnode.props[key] != null\n\t\t\t\t) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t`Component's \"${key}\" property should be a function, ` +\n\t\t\t\t\t\t\t`but got [${typeof vnode.props[key]}] instead\\n` +\n\t\t\t\t\t\t\tserializeVNode(vnode) +\n\t\t\t\t\t\t\t`\\n\\n${getOwnerStack(vnode)}`\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Check prop-types if available\n\t\tif (typeof vnode.type == 'function' && vnode.type.propTypes) {\n\t\t\tif (\n\t\t\t\tvnode.type.displayName === 'Lazy' &&\n\t\t\t\twarnedComponents &&\n\t\t\t\t!warnedComponents.lazyPropTypes.has(vnode.type)\n\t\t\t) {\n\t\t\t\tconst m =\n\t\t\t\t\t'PropTypes are not supported on lazy(). Use propTypes on the wrapped component itself. ';\n\t\t\t\ttry {\n\t\t\t\t\tconst lazyVNode = vnode.type();\n\t\t\t\t\twarnedComponents.lazyPropTypes.set(vnode.type, true);\n\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\tm + `Component wrapped in lazy() is ${getDisplayName(lazyVNode)}`\n\t\t\t\t\t);\n\t\t\t\t} catch (promise) {\n\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\tm + \"We will log the wrapped component's name once it is loaded.\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t\tcheckPropTypes(\n\t\t\t\tvnode.type.propTypes,\n\t\t\t\tvnode.props,\n\t\t\t\t'prop',\n\t\t\t\tgetDisplayName(vnode)\n\t\t\t);\n\t\t}\n\n\t\tif (oldBeforeDiff) oldBeforeDiff(vnode);\n\t};\n\n\toptions._hook = comp => {\n\t\tif (!comp) {\n\t\t\tthrow new Error('Hook can only be invoked from render methods.');\n\t\t}\n\n\t\tif (oldHook) oldHook(comp);\n\t};\n\n\tconst warn = (property, err) => ({\n\t\tget() {\n\t\t\tthrow new Error(`getting vnode.${property} is deprecated, ${err}`);\n\t\t},\n\t\tset() {\n\t\t\tthrow new Error(`setting vnode.${property} is not allowed, ${err}`);\n\t\t}\n\t});\n\n\tconst deprecatedAttributes = {\n\t\tnodeName: warn('nodeName', 'use vnode.type'),\n\t\tattributes: warn('attributes', 'use vnode.props'),\n\t\tchildren: warn('children', 'use vnode.props.children')\n\t};\n\n\tconst deprecatedProto = Object.create({}, deprecatedAttributes);\n\n\toptions.vnode = vnode => {\n\t\tconst props = vnode.props;\n\t\tif (\n\t\t\tvnode.type !== null &&\n\t\t\tprops != null &&\n\t\t\t('__source' in props || '__self' in props)\n\t\t) {\n\t\t\tconst newProps = (vnode.props = {});\n\t\t\tfor (let i in props) {\n\t\t\t\tconst v = props[i];\n\t\t\t\tif (i === '__source') vnode.__source = v;\n\t\t\t\telse if (i === '__self') vnode.__self = v;\n\t\t\t\telse newProps[i] = v;\n\t\t\t}\n\t\t}\n\t\tObject.setPrototypeOf(vnode, deprecatedProto);\n\t\tif (oldVnode) oldVnode(vnode);\n\t};\n\n\toptions.diffed = vnode => {\n\t\t// Check if the user passed plain objects as children. Note that we cannot\n\t\t// move this check into `options.vnode` because components can receive\n\t\t// children in any shape they want (e.g.\n\t\t// `{{ foo: 123, bar: \"abc\" }}`).\n\t\t// Putting this check in `options.diffed` ensures that\n\t\t// `vnode._children` is set and that we only validate the children\n\t\t// that were actually rendered.\n\t\tif (vnode._children) {\n\t\t\tvnode._children.forEach(child => {\n\t\t\t\tif (child && child.type === undefined) {\n\t\t\t\t\t// Remove internal vnode keys that will always be patched\n\t\t\t\t\tdelete child._parent;\n\t\t\t\t\tdelete child._depth;\n\t\t\t\t\tconst keys = Object.keys(child).join(',');\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t`Objects are not valid as a child. Encountered an object with the keys {${keys}}.` +\n\t\t\t\t\t\t\t`\\n\\n${getOwnerStack(vnode)}`\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t/** @type {import('./internal').Component} */\n\t\tconst component = vnode._component;\n\t\tif (component && component.__hooks) {\n\t\t\tlet hooks = component.__hooks;\n\t\t\tif (Array.isArray(hooks._list)) {\n\t\t\t\thooks._list.forEach(hook => {\n\t\t\t\t\tif (hook._factory && (!hook._args || !Array.isArray(hook._args))) {\n\t\t\t\t\t\tlet componentName = getDisplayName(vnode);\n\t\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t\t`In ${componentName} you are calling useMemo/useCallback without passing arguments.\\n` +\n\t\t\t\t\t\t\t\t`This is a noop since it will not be able to memoize, it will execute it every render.` +\n\t\t\t\t\t\t\t\t`\\n\\n${getOwnerStack(vnode)}`\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tif (oldDiffed) oldDiffed(vnode);\n\n\t\tif (vnode._children != null) {\n\t\t\tconst keys = [];\n\t\t\tfor (let i = 0; i < vnode._children.length; i++) {\n\t\t\t\tconst child = vnode._children[i];\n\t\t\t\tif (!child || child.key == null) continue;\n\n\t\t\t\tconst key = child.key;\n\t\t\t\tif (keys.indexOf(key) !== -1) {\n\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t'Following component has two or more children with the ' +\n\t\t\t\t\t\t\t`same key attribute: \"${key}\". This may cause glitches and misbehavior ` +\n\t\t\t\t\t\t\t'in rendering process. Component: \\n\\n' +\n\t\t\t\t\t\t\tserializeVNode(vnode) +\n\t\t\t\t\t\t\t`\\n\\n${getOwnerStack(vnode)}`\n\t\t\t\t\t);\n\n\t\t\t\t\t// Break early to not spam the console\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tkeys.push(key);\n\t\t\t}\n\t\t}\n\t};\n}\n\nconst setState = Component.prototype.setState;\nComponent.prototype.setState = function(update, callback) {\n\tif (this._vnode == null) {\n\t\t// `this._vnode` will be `null` during componentWillMount. But it\n\t\t// is perfectly valid to call `setState` during cWM. So we\n\t\t// need an additional check to verify that we are dealing with a\n\t\t// call inside constructor.\n\t\tif (this.state == null) {\n\t\t\tconsole.warn(\n\t\t\t\t`Calling \"this.setState\" inside the constructor of a component is a ` +\n\t\t\t\t\t`no-op and might be a bug in your application. Instead, set ` +\n\t\t\t\t\t`\"this.state = {}\" directly.\\n\\n${getOwnerStack(getCurrentVNode())}`\n\t\t\t);\n\t\t}\n\t} else if (this._parentDom == null) {\n\t\tconsole.warn(\n\t\t\t`Can't call \"this.setState\" on an unmounted component. This is a no-op, ` +\n\t\t\t\t`but it indicates a memory leak in your application. To fix, cancel all ` +\n\t\t\t\t`subscriptions and asynchronous tasks in the componentWillUnmount method.` +\n\t\t\t\t`\\n\\n${getOwnerStack(this._vnode)}`\n\t\t);\n\t}\n\n\treturn setState.call(this, update, callback);\n};\n\nconst forceUpdate = Component.prototype.forceUpdate;\nComponent.prototype.forceUpdate = function(callback) {\n\tif (this._vnode == null) {\n\t\tconsole.warn(\n\t\t\t`Calling \"this.forceUpdate\" inside the constructor of a component is a ` +\n\t\t\t\t`no-op and might be a bug in your application.\\n\\n${getOwnerStack(\n\t\t\t\t\tgetCurrentVNode()\n\t\t\t\t)}`\n\t\t);\n\t} else if (this._parentDom == null) {\n\t\tconsole.warn(\n\t\t\t`Can't call \"this.forceUpdate\" on an unmounted component. This is a no-op, ` +\n\t\t\t\t`but it indicates a memory leak in your application. To fix, cancel all ` +\n\t\t\t\t`subscriptions and asynchronous tasks in the componentWillUnmount method.` +\n\t\t\t\t`\\n\\n${getOwnerStack(this._vnode)}`\n\t\t);\n\t}\n\treturn forceUpdate.call(this, callback);\n};\n\n/**\n * Serialize a vnode tree to a string\n * @param {import('./internal').VNode} vnode\n * @returns {string}\n */\nexport function serializeVNode(vnode) {\n\tlet { props } = vnode;\n\tlet name = getDisplayName(vnode);\n\n\tlet attrs = '';\n\tfor (let prop in props) {\n\t\tif (props.hasOwnProperty(prop) && prop !== 'children') {\n\t\t\tlet value = props[prop];\n\n\t\t\t// If it is an object but doesn't have toString(), use Object.toString\n\t\t\tif (typeof value == 'function') {\n\t\t\t\tvalue = `function ${value.displayName || value.name}() {}`;\n\t\t\t}\n\n\t\t\tvalue =\n\t\t\t\tObject(value) === value && !value.toString\n\t\t\t\t\t? Object.prototype.toString.call(value)\n\t\t\t\t\t: value + '';\n\n\t\t\tattrs += ` ${prop}=${JSON.stringify(value)}`;\n\t\t}\n\t}\n\n\tlet children = props.children;\n\treturn `<${name}${attrs}${\n\t\tchildren && children.length ? '>..' : ' />'\n\t}`;\n}\n","import { options, Fragment } from 'preact';\n\nexport function initDevTools() {\n\tif (typeof window != 'undefined' && window.__PREACT_DEVTOOLS__) {\n\t\twindow.__PREACT_DEVTOOLS__.attachPreact('10.0.5', options, {\n\t\t\tFragment\n\t\t});\n\t}\n}\n","const ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nlet loggedTypeFailures = {};\n\n/**\n * Reset the history of which prop type warnings have been logged.\n */\nexport function resetPropWarnings() {\n\tloggedTypeFailures = {};\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * Adapted from https://github.com/facebook/prop-types/blob/master/checkPropTypes.js\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n */\nexport function checkPropTypes(\n\ttypeSpecs,\n\tvalues,\n\tlocation,\n\tcomponentName,\n\tgetStack\n) {\n\tObject.keys(typeSpecs).forEach(typeSpecName => {\n\t\tlet error;\n\t\ttry {\n\t\t\terror = typeSpecs[typeSpecName](\n\t\t\t\tvalues,\n\t\t\t\ttypeSpecName,\n\t\t\t\tcomponentName,\n\t\t\t\tlocation,\n\t\t\t\tnull,\n\t\t\t\tReactPropTypesSecret\n\t\t\t);\n\t\t} catch (e) {\n\t\t\terror = e;\n\t\t}\n\t\tif (error && !(error.message in loggedTypeFailures)) {\n\t\t\tloggedTypeFailures[error.message] = true;\n\t\t\tconsole.error(\n\t\t\t\t`Failed ${location} type: ${error.message}${(getStack && getStack()) ||\n\t\t\t\t\t''}`\n\t\t\t);\n\t\t}\n\t});\n}\n","\n\t\timport Async from \"../../node_modules/@preact/async-loader/async-legacy.js\";\n\n\t\tfunction load(cb) {\n\t\t\trequire.ensure([], function (require) {\n\t\t\t\tcb( require(\"!!../../node_modules/babel-loader/lib/index.js??ref--4!./fisica.js\") );\n\t\t\t}, \"route-fisica\");\n\t\t}\n\n\t\texport default Async(load);\n\t"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./routes/vldigeometria.js?971d","webpack:///./routes/apprendimentoSistemiArtificiali.js?75cd","webpack:///./routes/statistica.js?3c70","webpack:///./contexts/LatexRenderColor.js","webpack:///./routes/mingwinstall.js?cec4","webpack:///./routes/calcoloNumerico.js?8c12","webpack:///./components/old/copyright.css","webpack:///./index.js","webpack:///../node_modules/@preact/async-loader/async-legacy.js","webpack:///./routes/basiDiDati.js?e91b","webpack:///./routes/home.js?7109","webpack:///../src/util.js","webpack:///../src/index.js","webpack:///../src/create-element.js","webpack:///../src/component.js","webpack:///../src/diff/children.js","webpack:///../src/diff/props.js","webpack:///../src/diff/index.js","webpack:///../src/render.js","webpack:///../src/clone-element.js","webpack:///../src/create-context.js","webpack:///../src/constants.js","webpack:///../src/options.js","webpack:///../src/diff/catch-error.js","webpack:///./components/old/copyright.js","webpack:///./routes/ottimizzazioneLineare.js?deb9","webpack:///../node_modules/preact-cli/lib/lib/entry.js","webpack:///../node_modules/@babel/runtime/helpers/esm/extends.js","webpack:///../node_modules/resolve-pathname/esm/resolve-pathname.js","webpack:///../node_modules/history/esm/history.js","webpack:///../node_modules/tiny-invariant/dist/tiny-invariant.esm.js","webpack:///../src/component-stack.js","webpack:///../src/debug.js","webpack:///../src/devtools.js","webpack:///../src/check-props.js","webpack:///./routes/fisica.js?9847"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","__webpack_require__","installedModules","exports","module","l","installedCssChunks","1","e","promises","Promise","resolve","reject","href","fullhref","p","existingLinkTags","document","getElementsByTagName","dataHref","tag","getAttribute","rel","existingStyleTags","linkTag","createElement","type","onload","onerror","event","request","target","src","err","Error","code","parentNode","removeChild","appendChild","then","installedChunkData","promise","onScriptComplete","script","charset","timeout","nc","setAttribute","jsonpScriptSrc","error","clearTimeout","chunk","errorType","realSrc","message","name","undefined","setTimeout","head","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","console","jsonpArray","window","oldJsonpFunction","slice","s","cb","createContext","id","Provider","history","createHashHistory","path","req","Async","b","old","Component","this","componentWillMount","base","nextBase","__b","setState","child","default","shouldComponentUpdate","_","nxt","nodeType","h","nodeName","dangerouslySetInnerHTML","__html","innerHTML","render","constructor","let","EMPTY","getCurrentUrl","url","customHistory","location","getCurrentLocation","pathname","search","route","replace","ROUTERS","canRoute","setUrl","routeTo","didRoute","subscribers","routeFromLink","node","match","handleLinkClick","ctrlKey","metaKey","altKey","shiftKey","button","currentTarget","prevent","stopImmediatePropagation","stopPropagation","preventDefault","delegateLinkHandler","String","toUpperCase","hasAttribute","eventListenersInitialized","Router","props","super","state","addEventListener","static","onChange","const","children","getMatchingChildren","updating","forceUpdate","componentDidMount","unlisten","listen","componentWillUnmount","splice","indexOf","componentWillUpdate","componentDidUpdate","invoke","filter","prepareVNodeForRanking","sort","pathRankSort","map","vnode","matches","exec","newProps","assign","ref","Boolean","active","current","previous","previousUrl","router","Route","component","Link","onClick","obj","removeNode","normalizedProps","arguments","defaultProps","createVNode","original","_children","_parent","_depth","_dom","_nextDom","_component","_original","options","createRef","Fragment","context","getDomSibling","childIndex","sibling","updateParentDomPointers","enqueueRender","_dirty","rerenderQueue","rerenderCount","prevDebounce","debounceRendering","defer","process","queue","a","_vnode","some","commitQueue","oldVNode","newDom","oldDom","parentDom","_parentDom","diff","_globalContext","ownerSVGElement","commitRoot","diffChildren","newParentVNode","oldParentVNode","globalContext","isSvg","excessDomChildren","isHydrating","j","sibDom","firstChildDom","refs","oldChildren","EMPTY_ARR","oldChildrenLength","EMPTY_OBJ","toChildArray","childVNode","nextDom","outer","nextSibling","insertBefore","unmount","applyRef","callback","flattened","Array","isArray","setStyle","style","setProperty","IS_NON_DIMENSIONAL","test","dom","oldValue","useCapture","nameLower","cssText","toLowerCase","eventProxy","_listeners","removeEventListener","removeAttributeNS","setAttributeNS","removeAttribute","newVNode","tmp","isNew","oldProps","oldState","snapshot","clearProcessingException","provider","componentContext","newType","_diff","contextType","_id","_defaultValue","_processingException","_pendingError","doRender","sub","_renderCallbacks","_nextState","getDerivedStateFromProps","componentWillReceiveProps","_force","_render","getChildContext","getSnapshotBeforeUpdate","diffElementNodes","diffed","_catchError","root","_commit","oldHtml","newHtml","localName","createTextNode","createElementNS","is","childNodes","attributes","hydrate","diffProps","checked","parentVNode","skipRemove","replaceNode","_root","IS_HYDRATE","cloneElement","defaultValue","ctx","Consumer","subs","_this","_props","isValidElement","hasCaught","getDerivedStateFromError","componentDidCatch","update","Copyright","class","copyright","Preact","interopDefault","navigator","serviceWorker","register","__webpack_public_path__","require","getElementById","body","firstElementChild","app","preRenderData","inlineDataElement","querySelector","JSON","parse","CLI_DATA","init","_extends","source","apply","isAbsolute","charAt","spliceOne","list","index","k","pop","addLeadingSlash","stripLeadingSlash","substr","stripBasename","prefix","hasBasename","stripTrailingSlash","createPath","hash","createLocation","currentLocation","hashIndex","searchIndex","parsePath","decodeURI","URIError","resolvePathname","createTransitionManager","prompt","listeners","setPrompt","nextPrompt","confirmTransitionTo","action","getUserConfirmation","result","appendListener","fn","listener","isActive","item","notifyListeners","_len","args","_key","forEach","getConfirmation","confirm","stripHash","getHashPath","substring","replaceHashPath","getDOMLocation","decodePath","basename","nextState","globalHistory","transitionManager","handleHashChange","encodedPath","encodePath","forceNextPop","ignorePath","ok","fromLocation","toIndex","allPaths","lastIndexOf","fromIndex","delta","go","revertPop","handlePop","checkDOMListeners","listenerCount","canUseDOM","invariant","_props$getUserConfirm","userAgent","_props$hashType","hashType","_HashPathCoders$hashT","HashPathCoders","initialLocation","isBlocked","createHref","baseTag","pushHashPath","prevIndex","nextPaths","goBack","goForward","block","unblock","to","from","hasTrailingSlash","toParts","split","fromParts","isToAbs","isFromAbs","mustEndAbs","concat","last","up","part","unshift","join","condition","hashbang","noslash","slash","getDisplayName","displayName","getCurrentVNode","renderStack","isPossibleOwner","getOwnerStack","stack","next","_owner","reduce","acc","owner","__source","fileName","lineNumber","hasBabelPlugin","warn","serializeVNode","attrs","prop","toString","stringify","__PREACT_DEVTOOLS__","attachPreact","loggedTypeFailures","ownerStack","isWeakMapSupported","WeakMap","oldDiff","oldDiffed","oldRoot","oldRender","parent","setupComponentStack","oldBeforeDiff","oldVnode","oldCatchError","oldHook","_hook","warnedComponents","useEffect","useLayoutEffect","lazyPropTypes","_childDidSuspend","isValid","componentName","typeSpecs","values","getClosestDomNodeParent","propTypes","has","lazyVNode","set","keys","typeSpecName","comp","deprecatedAttributes","deprecatedProto","v","__self","setPrototypeOf","__hooks","hooks","_list","hook","_factory","_args"],"mappings":"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","file":"bundle.f6a31.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t};\n\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded CSS chunks\n \tvar installedCssChunks = {\n \t\t1: 0\n \t}\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t1: 0\n \t};\n\n\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"\" + ({\"0\":\"route-apprendimentoSistemiArtificiali~route-ottimizzazioneLineare\",\"3\":\"route-apprendimentoSistemiArtificiali\",\"4\":\"route-basiDiDati\",\"5\":\"route-calcoloNumerico\",\"6\":\"route-fisica\",\"7\":\"route-home\",\"8\":\"route-mingwinstall\",\"9\":\"route-ottimizzazioneLineare\",\"10\":\"route-statistica\",\"11\":\"route-vldigeometria\"}[chunkId]||chunkId) + \".chunk.\" + {\"0\":\"0ad22\",\"3\":\"d0fa4\",\"4\":\"0e8d8\",\"5\":\"67eea\",\"6\":\"9892b\",\"7\":\"6edcf\",\"8\":\"22ffb\",\"9\":\"0d083\",\"10\":\"67526\",\"11\":\"ddac8\"}[chunkId] + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// mini-css-extract-plugin CSS loading\n \t\tvar cssChunks = {\"0\":1,\"4\":1,\"5\":1,\"6\":1,\"7\":1,\"8\":1,\"9\":1,\"10\":1,\"11\":1};\n \t\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n \t\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n \t\t\tpromises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {\n \t\t\t\tvar href = \"\" + ({\"0\":\"route-apprendimentoSistemiArtificiali~route-ottimizzazioneLineare\",\"3\":\"route-apprendimentoSistemiArtificiali\",\"4\":\"route-basiDiDati\",\"5\":\"route-calcoloNumerico\",\"6\":\"route-fisica\",\"7\":\"route-home\",\"8\":\"route-mingwinstall\",\"9\":\"route-ottimizzazioneLineare\",\"10\":\"route-statistica\",\"11\":\"route-vldigeometria\"}[chunkId]||chunkId) + \".chunk.\" + {\"0\":\"2ca12\",\"3\":\"31d6c\",\"4\":\"e409b\",\"5\":\"4d04d\",\"6\":\"598fe\",\"7\":\"81f93\",\"8\":\"5a95a\",\"9\":\"ce59d\",\"10\":\"4bfa5\",\"11\":\"96070\"}[chunkId] + \".css\";\n \t\t\t\tvar fullhref = __webpack_require__.p + href;\n \t\t\t\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n \t\t\t\tfor(var i = 0; i < existingLinkTags.length; i++) {\n \t\t\t\t\tvar tag = existingLinkTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n \t\t\t\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return resolve();\n \t\t\t\t}\n \t\t\t\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n \t\t\t\tfor(var i = 0; i < existingStyleTags.length; i++) {\n \t\t\t\t\tvar tag = existingStyleTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\");\n \t\t\t\t\tif(dataHref === href || dataHref === fullhref) return resolve();\n \t\t\t\t}\n \t\t\t\tvar linkTag = document.createElement(\"link\");\n \t\t\t\tlinkTag.rel = \"stylesheet\";\n \t\t\t\tlinkTag.type = \"text/css\";\n \t\t\t\tlinkTag.onload = resolve;\n \t\t\t\tlinkTag.onerror = function(event) {\n \t\t\t\t\tvar request = event && event.target && event.target.src || fullhref;\n \t\t\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + request + \")\");\n \t\t\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n \t\t\t\t\terr.request = request;\n \t\t\t\t\tdelete installedCssChunks[chunkId]\n \t\t\t\t\tlinkTag.parentNode.removeChild(linkTag)\n \t\t\t\t\treject(err);\n \t\t\t\t};\n \t\t\t\tlinkTag.href = fullhref;\n\n \t\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\t\t\thead.appendChild(linkTag);\n \t\t\t}).then(function() {\n \t\t\t\tinstalledCssChunks[chunkId] = 0;\n \t\t\t}));\n \t\t}\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"mdyV\");\n","\n\t\timport Async from \"../../node_modules/@preact/async-loader/async-legacy.js\";\n\n\t\tfunction load(cb) {\n\t\t\trequire.ensure([], function (require) {\n\t\t\t\tcb( require(\"!!../../node_modules/babel-loader/lib/index.js??ref--4!./vldigeometria.js\") );\n\t\t\t}, \"route-vldigeometria\");\n\t\t}\n\n\t\texport default Async(load);\n\t","\n\t\timport Async from \"../../node_modules/@preact/async-loader/async-legacy.js\";\n\n\t\tfunction load(cb) {\n\t\t\trequire.ensure([], function (require) {\n\t\t\t\tcb( require(\"!!../../node_modules/babel-loader/lib/index.js??ref--4!./apprendimentoSistemiArtificiali.js\") );\n\t\t\t}, \"route-apprendimentoSistemiArtificiali\");\n\t\t}\n\n\t\texport default Async(load);\n\t","\n\t\timport Async from \"../../node_modules/@preact/async-loader/async-legacy.js\";\n\n\t\tfunction load(cb) {\n\t\t\trequire.ensure([], function (require) {\n\t\t\t\tcb( require(\"!!../../node_modules/babel-loader/lib/index.js??ref--4!./statistica.js\") );\n\t\t\t}, \"route-statistica\");\n\t\t}\n\n\t\texport default Async(load);\n\t","import {createContext} from \"preact\";\r\n\r\nexport default createContext(\"White\");\r\n","\n\t\timport Async from \"../../node_modules/@preact/async-loader/async-legacy.js\";\n\n\t\tfunction load(cb) {\n\t\t\trequire.ensure([], function (require) {\n\t\t\t\tcb( require(\"!!../../node_modules/babel-loader/lib/index.js??ref--4!./mingwinstall.js\") );\n\t\t\t}, \"route-mingwinstall\");\n\t\t}\n\n\t\texport default Async(load);\n\t","\n\t\timport Async from \"../../node_modules/@preact/async-loader/async-legacy.js\";\n\n\t\tfunction load(cb) {\n\t\t\trequire.ensure([], function (require) {\n\t\t\t\tcb( require(\"!!../../node_modules/babel-loader/lib/index.js??ref--4!./calcoloNumerico.js\") );\n\t\t\t}, \"route-calcoloNumerico\");\n\t\t}\n\n\t\texport default Async(load);\n\t","// extracted by mini-css-extract-plugin\nmodule.exports = {\"copyright\":\"copyright__E8xyG\"};","import \"preact/debug\";\n\n// noinspection ES6UnusedImports\nimport _style from './index.less';\n// noinspection ES6UnusedImports\nimport _manifest from './meta/manifest.json';\n// noinspection ES6UnusedImports\nimport _cname from './meta/CNAME';\n// noinspection ES6UnusedImports\nimport _nojekyll from './meta/.nojekyll';\n\nimport Router from 'preact-router';\nimport {createHashHistory} from \"history\";\nimport Home from './routes/home';\nimport Fisica from './routes/fisica';\nimport VlDiGeometria from './routes/vldigeometria';\nimport MingwInstall from './routes/mingwinstall';\nimport Copyright from './components/old/copyright';\nimport Statistica from './routes/statistica';\nimport OttimizzazioneLineare from \"./routes/ottimizzazioneLineare\";\nimport BasiDiDati from './routes/basiDiDati';\nimport CalcoloNumerico from './routes/calcoloNumerico';\nimport ApprendimentoSistemiArtificiali from \"./routes/apprendimentoSistemiArtificiali\";\nimport LatexRenderColor from \"./contexts/LatexRenderColor\";\n\n// noinspection JSUnusedGlobalSymbols\nexport default function(props) {\n\treturn (\n\t\t
\n\t\t\t\n\t\t\t\t

Appuntiweb di Steffo

\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t
\n\t);\n}\n","import { h, Component } from 'preact';\n\nexport default function(req) {\n\tfunction Async() {\n\t\tComponent.call(this);\n\n\t\tlet b, old;\n\t\tthis.componentWillMount = () => {\n\t\t\tb = this.base = this.nextBase || this.__b; // short circuits 1st render\n\t\t\treq(m => {\n\t\t\t\tthis.setState({ child: m.default || m });\n\t\t\t});\n\t\t};\n\n\t\tthis.shouldComponentUpdate = (_, nxt) => {\n\t\t\tnxt = nxt.child === void 0;\n\t\t\tif (nxt && old === void 0 && b) {\n\t\t\t\t// Node.TEXT_NODE\n\t\t\t\tif (b.nodeType === 3) {\n\t\t\t\t\told = b.data;\n\t\t\t\t} else {\n\t\t\t\t\told = h(b.nodeName, {\n\t\t\t\t\t\tdangerouslySetInnerHTML: { __html: b.innerHTML },\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\told = ''; // dump it\n\t\t\t}\n\t\t\treturn !nxt;\n\t\t};\n\n\t\tthis.render = (p, s) => (s.child ? h(s.child, p) : old);\n\t}\n\t(Async.prototype = new Component()).constructor = Async;\n\treturn Async;\n}\n","\n\t\timport Async from \"../../node_modules/@preact/async-loader/async-legacy.js\";\n\n\t\tfunction load(cb) {\n\t\t\trequire.ensure([], function (require) {\n\t\t\t\tcb( require(\"!!../../node_modules/babel-loader/lib/index.js??ref--4!./basiDiDati.js\") );\n\t\t\t}, \"route-basiDiDati\");\n\t\t}\n\n\t\texport default Async(load);\n\t","\n\t\timport Async from \"../../node_modules/@preact/async-loader/async-legacy.js\";\n\n\t\tfunction load(cb) {\n\t\t\trequire.ensure([], function (require) {\n\t\t\t\tcb( require(\"!!../../node_modules/babel-loader/lib/index.js??ref--4!./home.js\") );\n\t\t\t}, \"route-home\");\n\t\t}\n\n\t\texport default Async(load);\n\t","/**\n * Assign properties from `props` to `obj`\n * @template O, P The obj and props types\n * @param {O} obj The object to copy properties to\n * @param {P} props The object to copy properties from\n * @returns {O & P}\n */\nexport function assign(obj, props) {\n\tfor (let i in props) obj[i] = props[i];\n\treturn /** @type {O & P} */ (obj);\n}\n\n/**\n * Remove a child node from its parent if attached. This is a workaround for\n * IE11 which doesn't support `Element.prototype.remove()`. Using this function\n * is smaller than including a dedicated polyfill.\n * @param {Node} node The node to remove\n */\nexport function removeNode(node) {\n\tlet parentNode = node.parentNode;\n\tif (parentNode) parentNode.removeChild(node);\n}\n","import { cloneElement, createElement, Component, toChildArray } from 'preact';\nimport { exec, prepareVNodeForRanking, assign, pathRankSort } from './util';\n\nlet customHistory = null;\n\nconst ROUTERS = [];\n\nconst subscribers = [];\n\nconst EMPTY = {};\n\nfunction setUrl(url, type='push') {\n\tif (customHistory && customHistory[type]) {\n\t\tcustomHistory[type](url);\n\t}\n\telse if (typeof history!=='undefined' && history[type+'State']) {\n\t\thistory[type+'State'](null, null, url);\n\t}\n}\n\n\nfunction getCurrentUrl() {\n\tlet url;\n\tif (customHistory && customHistory.location) {\n\t\turl = customHistory.location;\n\t}\n\telse if (customHistory && customHistory.getCurrentLocation) {\n\t\turl = customHistory.getCurrentLocation();\n\t}\n\telse {\n\t\turl = typeof location!=='undefined' ? location : EMPTY;\n\t}\n\treturn `${url.pathname || ''}${url.search || ''}`;\n}\n\n\n\nfunction route(url, replace=false) {\n\tif (typeof url!=='string' && url.url) {\n\t\treplace = url.replace;\n\t\turl = url.url;\n\t}\n\n\t// only push URL into history if we can handle it\n\tif (canRoute(url)) {\n\t\tsetUrl(url, replace ? 'replace' : 'push');\n\t}\n\n\treturn routeTo(url);\n}\n\n\n/** Check if the given URL can be handled by any router instances. */\nfunction canRoute(url) {\n\tfor (let i=ROUTERS.length; i--; ) {\n\t\tif (ROUTERS[i].canRoute(url)) return true;\n\t}\n\treturn false;\n}\n\n\n/** Tell all router instances to handle the given URL. */\nfunction routeTo(url) {\n\tlet didRoute = false;\n\tfor (let i=0; i {\n\t\t\t\trouteTo(getCurrentUrl());\n\t\t\t});\n\t\t}\n\t\taddEventListener('click', delegateLinkHandler);\n\t}\n\teventListenersInitialized = true;\n}\n\n\nclass Router extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tif (props.history) {\n\t\t\tcustomHistory = props.history;\n\t\t}\n\n\t\tthis.state = {\n\t\t\turl: props.url || getCurrentUrl()\n\t\t};\n\n\t\tinitEventListeners();\n\t}\n\n\tshouldComponentUpdate(props) {\n\t\tif (props.static!==true) return true;\n\t\treturn props.url!==this.props.url || props.onChange!==this.props.onChange;\n\t}\n\n\t/** Check if the given URL can be matched against any children */\n\tcanRoute(url) {\n\t\tconst children = toChildArray(this.props.children);\n\t\treturn this.getMatchingChildren(children, url, false).length > 0;\n\t}\n\n\t/** Re-render children with a new URL to match against. */\n\trouteTo(url) {\n\t\tthis.setState({ url });\n\n\t\tconst didRoute = this.canRoute(url);\n\n\t\t// trigger a manual re-route if we're not in the middle of an update:\n\t\tif (!this.updating) this.forceUpdate();\n\n\t\treturn didRoute;\n\t}\n\n\tcomponentWillMount() {\n\t\tROUTERS.push(this);\n\t\tthis.updating = true;\n\t}\n\n\tcomponentDidMount() {\n\t\tif (customHistory) {\n\t\t\tthis.unlisten = customHistory.listen((location) => {\n\t\t\t\tthis.routeTo(`${location.pathname || ''}${location.search || ''}`);\n\t\t\t});\n\t\t}\n\t\tthis.updating = false;\n\t}\n\n\tcomponentWillUnmount() {\n\t\tif (typeof this.unlisten==='function') this.unlisten();\n\t\tROUTERS.splice(ROUTERS.indexOf(this), 1);\n\t}\n\n\tcomponentWillUpdate() {\n\t\tthis.updating = true;\n\t}\n\n\tcomponentDidUpdate() {\n\t\tthis.updating = false;\n\t}\n\n\tgetMatchingChildren(children, url, invoke) {\n\t\treturn children\n\t\t\t.filter(prepareVNodeForRanking)\n\t\t\t.sort(pathRankSort)\n\t\t\t.map( vnode => {\n\t\t\t\tlet matches = exec(url, vnode.props.path, vnode.props);\n\t\t\t\tif (matches) {\n\t\t\t\t\tif (invoke !== false) {\n\t\t\t\t\t\tlet newProps = { url, matches };\n\t\t\t\t\t\tassign(newProps, matches);\n\t\t\t\t\t\tdelete newProps.ref;\n\t\t\t\t\t\tdelete newProps.key;\n\t\t\t\t\t\treturn cloneElement(vnode, newProps);\n\t\t\t\t\t}\n\t\t\t\t\treturn vnode;\n\t\t\t\t}\n\t\t\t}).filter(Boolean);\n\t}\n\n\trender({ children, onChange }, { url }) {\n\t\tlet active = this.getMatchingChildren(toChildArray(children), url, true);\n\n\t\tlet current = active[0] || null;\n\n\t\tlet previous = this.previousUrl;\n\t\tif (url!==previous) {\n\t\t\tthis.previousUrl = url;\n\t\t\tif (typeof onChange==='function') {\n\t\t\t\tonChange({\n\t\t\t\t\trouter: this,\n\t\t\t\t\turl,\n\t\t\t\t\tprevious,\n\t\t\t\t\tactive,\n\t\t\t\t\tcurrent\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn current;\n\t}\n}\n\nconst Link = (props) => (\n\tcreateElement('a', assign({ onClick: handleLinkClick }, props))\n);\n\nconst Route = props => createElement(props.component, props);\n\nRouter.subscribers = subscribers;\nRouter.getCurrentUrl = getCurrentUrl;\nRouter.route = route;\nRouter.Router = Router;\nRouter.Route = Route;\nRouter.Link = Link;\nRouter.exec = exec;\n\nexport { subscribers, getCurrentUrl, route, Router, Route, Link, exec };\nexport default Router;\n","import options from './options';\n\n/**\n * Create an virtual node (used for JSX)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * constructor for this virtual node\n * @param {object | null | undefined} [props] The properties of the virtual node\n * @param {Array} [children] The children of the virtual node\n * @returns {import('./internal').VNode}\n */\nexport function createElement(type, props, children) {\n\tlet normalizedProps = {},\n\t\ti;\n\tfor (i in props) {\n\t\tif (i !== 'key' && i !== 'ref') normalizedProps[i] = props[i];\n\t}\n\n\tif (arguments.length > 3) {\n\t\tchildren = [children];\n\t\t// https://github.com/preactjs/preact/issues/1916\n\t\tfor (i = 3; i < arguments.length; i++) {\n\t\t\tchildren.push(arguments[i]);\n\t\t}\n\t}\n\tif (children != null) {\n\t\tnormalizedProps.children = children;\n\t}\n\n\t// If a Component VNode, check for and apply defaultProps\n\t// Note: type may be undefined in development, must never error here.\n\tif (typeof type == 'function' && type.defaultProps != null) {\n\t\tfor (i in type.defaultProps) {\n\t\t\tif (normalizedProps[i] === undefined) {\n\t\t\t\tnormalizedProps[i] = type.defaultProps[i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn createVNode(\n\t\ttype,\n\t\tnormalizedProps,\n\t\tprops && props.key,\n\t\tprops && props.ref,\n\t\tnull\n\t);\n}\n\n/**\n * Create a VNode (used internally by Preact)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * Constructor for this virtual node\n * @param {object | string | number | null} props The properties of this virtual node.\n * If this virtual node represents a text node, this is the text of the node (string or number).\n * @param {string | number | null} key The key for this virtual node, used when\n * diffing it against its children\n * @param {import('./internal').VNode[\"ref\"]} ref The ref property that will\n * receive a reference to its created child\n * @returns {import('./internal').VNode}\n */\nexport function createVNode(type, props, key, ref, original) {\n\t// V8 seems to be better at detecting type shapes if the object is allocated from the same call site\n\t// Do not inline into createElement and coerceToVNode!\n\tconst vnode = {\n\t\ttype,\n\t\tprops,\n\t\tkey,\n\t\tref,\n\t\t_children: null,\n\t\t_parent: null,\n\t\t_depth: 0,\n\t\t_dom: null,\n\t\t// _nextDom must be initialized to undefined b/c it will eventually\n\t\t// be set to dom.nextSibling which can return `null` and it is important\n\t\t// to be able to distinguish between an uninitialized _nextDom and\n\t\t// a _nextDom that has been set to `null`\n\t\t_nextDom: undefined,\n\t\t_component: null,\n\t\tconstructor: undefined,\n\t\t_original: original\n\t};\n\n\tif (original == null) vnode._original = vnode;\n\tif (options.vnode) options.vnode(vnode);\n\n\treturn vnode;\n}\n\nexport function createRef() {\n\treturn {};\n}\n\nexport function Fragment(props) {\n\treturn props.children;\n}\n\n/**\n * Check if a the argument is a valid Preact VNode.\n * @param {*} vnode\n * @returns {vnode is import('./internal').VNode}\n */\nexport const isValidElement = vnode =>\n\tvnode != null && vnode.constructor === undefined;\n","import { assign } from './util';\nimport { diff, commitRoot } from './diff/index';\nimport options from './options';\nimport { Fragment } from './create-element';\n\n/**\n * Base Component class. Provides `setState()` and `forceUpdate()`, which\n * trigger rendering\n * @param {object} props The initial component props\n * @param {object} context The initial context from parent components'\n * getChildContext\n */\nexport function Component(props, context) {\n\tthis.props = props;\n\tthis.context = context;\n}\n\n/**\n * Update component state and schedule a re-render.\n * @param {object | ((s: object, p: object) => object)} update A hash of state\n * properties to update with new values or a function that given the current\n * state and props returns a new partial state\n * @param {() => void} [callback] A function to be called once component state is\n * updated\n */\nComponent.prototype.setState = function(update, callback) {\n\t// only clone state when copying to nextState the first time.\n\tlet s;\n\tif (this._nextState !== this.state) {\n\t\ts = this._nextState;\n\t} else {\n\t\ts = this._nextState = assign({}, this.state);\n\t}\n\n\tif (typeof update == 'function') {\n\t\tupdate = update(s, this.props);\n\t}\n\n\tif (update) {\n\t\tassign(s, update);\n\t}\n\n\t// Skip update if updater function returned null\n\tif (update == null) return;\n\n\tif (this._vnode) {\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Immediately perform a synchronous re-render of the component\n * @param {() => void} [callback] A function to be called after component is\n * re-rendered\n */\nComponent.prototype.forceUpdate = function(callback) {\n\tif (this._vnode) {\n\t\t// Set render mode so that we can differentiate where the render request\n\t\t// is coming from. We need this because forceUpdate should never call\n\t\t// shouldComponentUpdate\n\t\tthis._force = true;\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\n * Virtual DOM is generally constructed via [JSX](http://jasonformat.com/wtf-is-jsx).\n * @param {object} props Props (eg: JSX attributes) received from parent\n * element/component\n * @param {object} state The component's current state\n * @param {object} context Context object, as returned by the nearest\n * ancestor's `getChildContext()`\n * @returns {import('./index').ComponentChildren | void}\n */\nComponent.prototype.render = Fragment;\n\n/**\n * @param {import('./internal').VNode} vnode\n * @param {number | null} [childIndex]\n */\nexport function getDomSibling(vnode, childIndex) {\n\tif (childIndex == null) {\n\t\t// Use childIndex==null as a signal to resume the search from the vnode's sibling\n\t\treturn vnode._parent\n\t\t\t? getDomSibling(vnode._parent, vnode._parent._children.indexOf(vnode) + 1)\n\t\t\t: null;\n\t}\n\n\tlet sibling;\n\tfor (; childIndex < vnode._children.length; childIndex++) {\n\t\tsibling = vnode._children[childIndex];\n\n\t\tif (sibling != null && sibling._dom != null) {\n\t\t\t// Since updateParentDomPointers keeps _dom pointer correct,\n\t\t\t// we can rely on _dom to tell us if this subtree contains a\n\t\t\t// rendered DOM node, and what the first rendered DOM node is\n\t\t\treturn sibling._dom;\n\t\t}\n\t}\n\n\t// If we get here, we have not found a DOM node in this vnode's children.\n\t// We must resume from this vnode's sibling (in it's parent _children array)\n\t// Only climb up and search the parent if we aren't searching through a DOM\n\t// VNode (meaning we reached the DOM parent of the original vnode that began\n\t// the search)\n\treturn typeof vnode.type == 'function' ? getDomSibling(vnode) : null;\n}\n\n/**\n * Trigger in-place re-rendering of a component.\n * @param {import('./internal').Component} component The component to rerender\n */\nfunction renderComponent(component) {\n\tlet vnode = component._vnode,\n\t\toldDom = vnode._dom,\n\t\tparentDom = component._parentDom;\n\n\tif (parentDom) {\n\t\tlet commitQueue = [];\n\t\tconst oldVNode = assign({}, vnode);\n\t\toldVNode._original = oldVNode;\n\n\t\tlet newDom = diff(\n\t\t\tparentDom,\n\t\t\tvnode,\n\t\t\toldVNode,\n\t\t\tcomponent._globalContext,\n\t\t\tparentDom.ownerSVGElement !== undefined,\n\t\t\tnull,\n\t\t\tcommitQueue,\n\t\t\toldDom == null ? getDomSibling(vnode) : oldDom\n\t\t);\n\t\tcommitRoot(commitQueue, vnode);\n\n\t\tif (newDom != oldDom) {\n\t\t\tupdateParentDomPointers(vnode);\n\t\t}\n\t}\n}\n\n/**\n * @param {import('./internal').VNode} vnode\n */\nfunction updateParentDomPointers(vnode) {\n\tif ((vnode = vnode._parent) != null && vnode._component != null) {\n\t\tvnode._dom = vnode._component.base = null;\n\t\tfor (let i = 0; i < vnode._children.length; i++) {\n\t\t\tlet child = vnode._children[i];\n\t\t\tif (child != null && child._dom != null) {\n\t\t\t\tvnode._dom = vnode._component.base = child._dom;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn updateParentDomPointers(vnode);\n\t}\n}\n\n/**\n * The render queue\n * @type {Array}\n */\nlet rerenderQueue = [];\nlet rerenderCount = 0;\n\n/**\n * Asynchronously schedule a callback\n * @type {(cb: () => void) => void}\n */\n/* istanbul ignore next */\n// Note the following line isn't tree-shaken by rollup cuz of rollup/rollup#2566\nconst defer =\n\ttypeof Promise == 'function'\n\t\t? Promise.prototype.then.bind(Promise.resolve())\n\t\t: setTimeout;\n\n/*\n * The value of `Component.debounce` must asynchronously invoke the passed in callback. It is\n * important that contributors to Preact can consistently reason about what calls to `setState`, etc.\n * do, and when their effects will be applied. See the links below for some further reading on designing\n * asynchronous APIs.\n * * [Designing APIs for Asynchrony](https://blog.izs.me/2013/08/designing-apis-for-asynchrony)\n * * [Callbacks synchronous and asynchronous](https://blog.ometer.com/2011/07/24/callbacks-synchronous-and-asynchronous/)\n */\n\nlet prevDebounce;\n\n/**\n * Enqueue a rerender of a component\n * @param {import('./internal').Component} c The component to rerender\n */\nexport function enqueueRender(c) {\n\tif (\n\t\t(!c._dirty &&\n\t\t\t(c._dirty = true) &&\n\t\t\trerenderQueue.push(c) &&\n\t\t\t!rerenderCount++) ||\n\t\tprevDebounce !== options.debounceRendering\n\t) {\n\t\tprevDebounce = options.debounceRendering;\n\t\t(prevDebounce || defer)(process);\n\t}\n}\n\n/** Flush the render queue by rerendering all queued components */\nfunction process() {\n\tlet queue;\n\twhile ((rerenderCount = rerenderQueue.length)) {\n\t\tqueue = rerenderQueue.sort((a, b) => a._vnode._depth - b._vnode._depth);\n\t\trerenderQueue = [];\n\t\t// Don't update `renderCount` yet. Keep its value non-zero to prevent unnecessary\n\t\t// process() calls from getting scheduled while `queue` is still being consumed.\n\t\tqueue.some(c => {\n\t\t\tif (c._dirty) renderComponent(c);\n\t\t});\n\t}\n}\n","import { diff, unmount, applyRef } from './index';\nimport { createVNode } from '../create-element';\nimport { EMPTY_OBJ, EMPTY_ARR } from '../constants';\nimport { removeNode } from '../util';\nimport { getDomSibling } from '../component';\n\n/**\n * Diff the children of a virtual node\n * @param {import('../internal').PreactElement} parentDom The DOM element whose\n * children are being diffed\n * @param {import('../internal').VNode} newParentVNode The new virtual\n * node whose children should be diff'ed against oldParentVNode\n * @param {import('../internal').VNode} oldParentVNode The old virtual\n * node whose children should be diff'ed against newParentVNode\n * @param {object} globalContext The current context object - modified by getChildContext\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {Array} excessDomChildren\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {Node | Text} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} isHydrating Whether or not we are in hydration\n */\nexport function diffChildren(\n\tparentDom,\n\tnewParentVNode,\n\toldParentVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating\n) {\n\tlet i, j, oldVNode, newDom, sibDom, firstChildDom, refs;\n\n\t// This is a compression of oldParentVNode!=null && oldParentVNode != EMPTY_OBJ && oldParentVNode._children || EMPTY_ARR\n\t// as EMPTY_OBJ._children should be `undefined`.\n\tlet oldChildren = (oldParentVNode && oldParentVNode._children) || EMPTY_ARR;\n\n\tlet oldChildrenLength = oldChildren.length;\n\n\t// Only in very specific places should this logic be invoked (top level `render` and `diffElementNodes`).\n\t// I'm using `EMPTY_OBJ` to signal when `diffChildren` is invoked in these situations. I can't use `null`\n\t// for this purpose, because `null` is a valid value for `oldDom` which can mean to skip to this logic\n\t// (e.g. if mounting a new tree in which the old DOM should be ignored (usually for Fragments).\n\tif (oldDom == EMPTY_OBJ) {\n\t\tif (excessDomChildren != null) {\n\t\t\toldDom = excessDomChildren[0];\n\t\t} else if (oldChildrenLength) {\n\t\t\toldDom = getDomSibling(oldParentVNode, 0);\n\t\t} else {\n\t\t\toldDom = null;\n\t\t}\n\t}\n\n\ti = 0;\n\tnewParentVNode._children = toChildArray(\n\t\tnewParentVNode._children,\n\t\tchildVNode => {\n\t\t\tif (childVNode != null) {\n\t\t\t\tchildVNode._parent = newParentVNode;\n\t\t\t\tchildVNode._depth = newParentVNode._depth + 1;\n\n\t\t\t\t// Check if we find a corresponding element in oldChildren.\n\t\t\t\t// If found, delete the array item by setting to `undefined`.\n\t\t\t\t// We use `undefined`, as `null` is reserved for empty placeholders\n\t\t\t\t// (holes).\n\t\t\t\toldVNode = oldChildren[i];\n\n\t\t\t\tif (\n\t\t\t\t\toldVNode === null ||\n\t\t\t\t\t(oldVNode &&\n\t\t\t\t\t\tchildVNode.key == oldVNode.key &&\n\t\t\t\t\t\tchildVNode.type === oldVNode.type)\n\t\t\t\t) {\n\t\t\t\t\toldChildren[i] = undefined;\n\t\t\t\t} else {\n\t\t\t\t\t// Either oldVNode === undefined or oldChildrenLength > 0,\n\t\t\t\t\t// so after this loop oldVNode == null or oldVNode is a valid value.\n\t\t\t\t\tfor (j = 0; j < oldChildrenLength; j++) {\n\t\t\t\t\t\toldVNode = oldChildren[j];\n\t\t\t\t\t\t// If childVNode is unkeyed, we only match similarly unkeyed nodes, otherwise we match by key.\n\t\t\t\t\t\t// We always match by type (in either case).\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\toldVNode &&\n\t\t\t\t\t\t\tchildVNode.key == oldVNode.key &&\n\t\t\t\t\t\t\tchildVNode.type === oldVNode.type\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\toldChildren[j] = undefined;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\toldVNode = null;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\toldVNode = oldVNode || EMPTY_OBJ;\n\n\t\t\t\t// Morph the old element into the new one, but don't append it to the dom yet\n\t\t\t\tnewDom = diff(\n\t\t\t\t\tparentDom,\n\t\t\t\t\tchildVNode,\n\t\t\t\t\toldVNode,\n\t\t\t\t\tglobalContext,\n\t\t\t\t\tisSvg,\n\t\t\t\t\texcessDomChildren,\n\t\t\t\t\tcommitQueue,\n\t\t\t\t\toldDom,\n\t\t\t\t\tisHydrating\n\t\t\t\t);\n\n\t\t\t\tif ((j = childVNode.ref) && oldVNode.ref != j) {\n\t\t\t\t\tif (!refs) refs = [];\n\t\t\t\t\tif (oldVNode.ref) refs.push(oldVNode.ref, null, childVNode);\n\t\t\t\t\trefs.push(j, childVNode._component || newDom, childVNode);\n\t\t\t\t}\n\n\t\t\t\t// Only proceed if the vnode has not been unmounted by `diff()` above.\n\t\t\t\tif (newDom != null) {\n\t\t\t\t\tif (firstChildDom == null) {\n\t\t\t\t\t\tfirstChildDom = newDom;\n\t\t\t\t\t}\n\n\t\t\t\t\tlet nextDom;\n\t\t\t\t\tif (childVNode._nextDom !== undefined) {\n\t\t\t\t\t\t// Only Fragments or components that return Fragment like VNodes will\n\t\t\t\t\t\t// have a non-undefined _nextDom. Continue the diff from the sibling\n\t\t\t\t\t\t// of last DOM child of this child VNode\n\t\t\t\t\t\tnextDom = childVNode._nextDom;\n\n\t\t\t\t\t\t// Eagerly cleanup _nextDom. We don't need to persist the value because\n\t\t\t\t\t\t// it is only used by `diffChildren` to determine where to resume the diff after\n\t\t\t\t\t\t// diffing Components and Fragments. Once we store it the nextDOM local var, we\n\t\t\t\t\t\t// can clean up the property\n\t\t\t\t\t\tchildVNode._nextDom = undefined;\n\t\t\t\t\t} else if (\n\t\t\t\t\t\texcessDomChildren == oldVNode ||\n\t\t\t\t\t\tnewDom != oldDom ||\n\t\t\t\t\t\tnewDom.parentNode == null\n\t\t\t\t\t) {\n\t\t\t\t\t\t// NOTE: excessDomChildren==oldVNode above:\n\t\t\t\t\t\t// This is a compression of excessDomChildren==null && oldVNode==null!\n\t\t\t\t\t\t// The values only have the same type when `null`.\n\n\t\t\t\t\t\touter: if (oldDom == null || oldDom.parentNode !== parentDom) {\n\t\t\t\t\t\t\tparentDom.appendChild(newDom);\n\t\t\t\t\t\t\tnextDom = null;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// `j import('../internal').VNode} [callback]\n * A function to invoke for each child before it is added to the flattened list.\n * @param {Array} [flattened] An flat array of children to modify\n * @returns {import('../internal').VNode[]}\n */\nexport function toChildArray(children, callback, flattened) {\n\tif (flattened == null) flattened = [];\n\n\tif (children == null || typeof children == 'boolean') {\n\t\tif (callback) flattened.push(callback(null));\n\t} else if (Array.isArray(children)) {\n\t\tfor (let i = 0; i < children.length; i++) {\n\t\t\ttoChildArray(children[i], callback, flattened);\n\t\t}\n\t} else if (!callback) {\n\t\tflattened.push(children);\n\t} else if (typeof children == 'string' || typeof children == 'number') {\n\t\tflattened.push(callback(createVNode(null, children, null, null, children)));\n\t} else if (children._dom != null || children._component != null) {\n\t\tflattened.push(\n\t\t\tcallback(\n\t\t\t\tcreateVNode(\n\t\t\t\t\tchildren.type,\n\t\t\t\t\tchildren.props,\n\t\t\t\t\tchildren.key,\n\t\t\t\t\tnull,\n\t\t\t\t\tchildren._original\n\t\t\t\t)\n\t\t\t)\n\t\t);\n\t} else {\n\t\tflattened.push(callback(children));\n\t}\n\n\treturn flattened;\n}\n","import { IS_NON_DIMENSIONAL } from '../constants';\nimport options from '../options';\n\n/**\n * Diff the old and new properties of a VNode and apply changes to the DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to apply\n * changes to\n * @param {object} newProps The new props\n * @param {object} oldProps The old props\n * @param {boolean} isSvg Whether or not this node is an SVG node\n * @param {boolean} hydrate Whether or not we are in hydration mode\n */\nexport function diffProps(dom, newProps, oldProps, isSvg, hydrate) {\n\tlet i;\n\n\tfor (i in oldProps) {\n\t\tif (i !== 'children' && i !== 'key' && !(i in newProps)) {\n\t\t\tsetProperty(dom, i, null, oldProps[i], isSvg);\n\t\t}\n\t}\n\n\tfor (i in newProps) {\n\t\tif (\n\t\t\t(!hydrate || typeof newProps[i] == 'function') &&\n\t\t\ti !== 'children' &&\n\t\t\ti !== 'key' &&\n\t\t\ti !== 'value' &&\n\t\t\ti !== 'checked' &&\n\t\t\toldProps[i] !== newProps[i]\n\t\t) {\n\t\t\tsetProperty(dom, i, newProps[i], oldProps[i], isSvg);\n\t\t}\n\t}\n}\n\nfunction setStyle(style, key, value) {\n\tif (key[0] === '-') {\n\t\tstyle.setProperty(key, value);\n\t} else if (\n\t\ttypeof value == 'number' &&\n\t\tIS_NON_DIMENSIONAL.test(key) === false\n\t) {\n\t\tstyle[key] = value + 'px';\n\t} else if (value == null) {\n\t\tstyle[key] = '';\n\t} else {\n\t\tstyle[key] = value;\n\t}\n}\n\n/**\n * Set a property value on a DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to modify\n * @param {string} name The name of the property to set\n * @param {*} value The value to set the property to\n * @param {*} oldValue The old value the property had\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node or not\n */\nfunction setProperty(dom, name, value, oldValue, isSvg) {\n\tlet s, useCapture, nameLower;\n\n\tif (isSvg) {\n\t\tif (name === 'className') {\n\t\t\tname = 'class';\n\t\t}\n\t} else if (name === 'class') {\n\t\tname = 'className';\n\t}\n\n\tif (name === 'style') {\n\t\ts = dom.style;\n\n\t\tif (typeof value == 'string') {\n\t\t\ts.cssText = value;\n\t\t} else {\n\t\t\tif (typeof oldValue == 'string') {\n\t\t\t\ts.cssText = '';\n\t\t\t\toldValue = null;\n\t\t\t}\n\n\t\t\tif (oldValue) {\n\t\t\t\tfor (let i in oldValue) {\n\t\t\t\t\tif (!(value && i in value)) {\n\t\t\t\t\t\tsetStyle(s, i, '');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (value) {\n\t\t\t\tfor (let i in value) {\n\t\t\t\t\tif (!oldValue || value[i] !== oldValue[i]) {\n\t\t\t\t\t\tsetStyle(s, i, value[i]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Benchmark for comparison: https://esbench.com/bench/574c954bdb965b9a00965ac6\n\telse if (name[0] === 'o' && name[1] === 'n') {\n\t\tuseCapture = name !== (name = name.replace(/Capture$/, ''));\n\t\tnameLower = name.toLowerCase();\n\t\tname = (nameLower in dom ? nameLower : name).slice(2);\n\n\t\tif (value) {\n\t\t\tif (!oldValue) dom.addEventListener(name, eventProxy, useCapture);\n\t\t\t(dom._listeners || (dom._listeners = {}))[name] = value;\n\t\t} else {\n\t\t\tdom.removeEventListener(name, eventProxy, useCapture);\n\t\t}\n\t} else if (\n\t\tname !== 'list' &&\n\t\tname !== 'tagName' &&\n\t\t// HTMLButtonElement.form and HTMLInputElement.form are read-only but can be set using\n\t\t// setAttribute\n\t\tname !== 'form' &&\n\t\tname !== 'type' &&\n\t\tname !== 'size' &&\n\t\t!isSvg &&\n\t\tname in dom\n\t) {\n\t\tdom[name] = value == null ? '' : value;\n\t} else if (typeof value != 'function' && name !== 'dangerouslySetInnerHTML') {\n\t\tif (name !== (name = name.replace(/^xlink:?/, ''))) {\n\t\t\tif (value == null || value === false) {\n\t\t\t\tdom.removeAttributeNS(\n\t\t\t\t\t'http://www.w3.org/1999/xlink',\n\t\t\t\t\tname.toLowerCase()\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tdom.setAttributeNS(\n\t\t\t\t\t'http://www.w3.org/1999/xlink',\n\t\t\t\t\tname.toLowerCase(),\n\t\t\t\t\tvalue\n\t\t\t\t);\n\t\t\t}\n\t\t} else if (\n\t\t\tvalue == null ||\n\t\t\t(value === false &&\n\t\t\t\t// ARIA-attributes have a different notion of boolean values.\n\t\t\t\t// The value `false` is different from the attribute not\n\t\t\t\t// existing on the DOM, so we can't remove it. For non-boolean\n\t\t\t\t// ARIA-attributes we could treat false as a removal, but the\n\t\t\t\t// amount of exceptions would cost us too many bytes. On top of\n\t\t\t\t// that other VDOM frameworks also always stringify `false`.\n\t\t\t\t!/^ar/.test(name))\n\t\t) {\n\t\t\tdom.removeAttribute(name);\n\t\t} else {\n\t\t\tdom.setAttribute(name, value);\n\t\t}\n\t}\n}\n\n/**\n * Proxy an event to hooked event handlers\n * @param {Event} e The event object from the browser\n * @private\n */\nfunction eventProxy(e) {\n\tthis._listeners[e.type](options.event ? options.event(e) : e);\n}\n","import { EMPTY_OBJ, EMPTY_ARR } from '../constants';\nimport { Component } from '../component';\nimport { Fragment } from '../create-element';\nimport { diffChildren } from './children';\nimport { diffProps } from './props';\nimport { assign, removeNode } from '../util';\nimport options from '../options';\n\n/**\n * Diff two virtual nodes and apply proper changes to the DOM\n * @param {import('../internal').PreactElement} parentDom The parent of the DOM element\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object. Modified by getChildContext\n * @param {boolean} isSvg Whether or not this element is an SVG node\n * @param {Array} excessDomChildren\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {Element | Text} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} [isHydrating] Whether or not we are in hydration\n */\nexport function diff(\n\tparentDom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating\n) {\n\tlet tmp,\n\t\tnewType = newVNode.type;\n\n\t// When passing through createElement it assigns the object\n\t// constructor as undefined. This to prevent JSON-injection.\n\tif (newVNode.constructor !== undefined) return null;\n\n\tif ((tmp = options._diff)) tmp(newVNode);\n\n\ttry {\n\t\touter: if (typeof newType == 'function') {\n\t\t\tlet c, isNew, oldProps, oldState, snapshot, clearProcessingException;\n\t\t\tlet newProps = newVNode.props;\n\n\t\t\t// Necessary for createContext api. Setting this property will pass\n\t\t\t// the context value as `this.context` just for this component.\n\t\t\ttmp = newType.contextType;\n\t\t\tlet provider = tmp && globalContext[tmp._id];\n\t\t\tlet componentContext = tmp\n\t\t\t\t? provider\n\t\t\t\t\t? provider.props.value\n\t\t\t\t\t: tmp._defaultValue\n\t\t\t\t: globalContext;\n\n\t\t\t// Get component and set it to `c`\n\t\t\tif (oldVNode._component) {\n\t\t\t\tc = newVNode._component = oldVNode._component;\n\t\t\t\tclearProcessingException = c._processingException = c._pendingError;\n\t\t\t} else {\n\t\t\t\t// Instantiate the new component\n\t\t\t\tif ('prototype' in newType && newType.prototype.render) {\n\t\t\t\t\tnewVNode._component = c = new newType(newProps, componentContext); // eslint-disable-line new-cap\n\t\t\t\t} else {\n\t\t\t\t\tnewVNode._component = c = new Component(newProps, componentContext);\n\t\t\t\t\tc.constructor = newType;\n\t\t\t\t\tc.render = doRender;\n\t\t\t\t}\n\t\t\t\tif (provider) provider.sub(c);\n\n\t\t\t\tc.props = newProps;\n\t\t\t\tif (!c.state) c.state = {};\n\t\t\t\tc.context = componentContext;\n\t\t\t\tc._globalContext = globalContext;\n\t\t\t\tisNew = c._dirty = true;\n\t\t\t\tc._renderCallbacks = [];\n\t\t\t}\n\n\t\t\t// Invoke getDerivedStateFromProps\n\t\t\tif (c._nextState == null) {\n\t\t\t\tc._nextState = c.state;\n\t\t\t}\n\t\t\tif (newType.getDerivedStateFromProps != null) {\n\t\t\t\tif (c._nextState == c.state) {\n\t\t\t\t\tc._nextState = assign({}, c._nextState);\n\t\t\t\t}\n\n\t\t\t\tassign(\n\t\t\t\t\tc._nextState,\n\t\t\t\t\tnewType.getDerivedStateFromProps(newProps, c._nextState)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\toldProps = c.props;\n\t\t\toldState = c.state;\n\n\t\t\t// Invoke pre-render lifecycle methods\n\t\t\tif (isNew) {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tc.componentWillMount != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillMount();\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidMount != null) {\n\t\t\t\t\tc._renderCallbacks.push(c.componentDidMount);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tnewProps !== oldProps &&\n\t\t\t\t\tc.componentWillReceiveProps != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillReceiveProps(newProps, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t(!c._force &&\n\t\t\t\t\t\tc.shouldComponentUpdate != null &&\n\t\t\t\t\t\tc.shouldComponentUpdate(\n\t\t\t\t\t\t\tnewProps,\n\t\t\t\t\t\t\tc._nextState,\n\t\t\t\t\t\t\tcomponentContext\n\t\t\t\t\t\t) === false) ||\n\t\t\t\t\t(newVNode._original === oldVNode._original && !c._processingException)\n\t\t\t\t) {\n\t\t\t\t\tc.props = newProps;\n\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t\t// More info about this here: https://gist.github.com/JoviDeCroock/bec5f2ce93544d2e6070ef8e0036e4e8\n\t\t\t\t\tif (newVNode._original !== oldVNode._original) c._dirty = false;\n\t\t\t\t\tc._vnode = newVNode;\n\t\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\t\t\tcommitQueue.push(c);\n\t\t\t\t\t}\n\n\t\t\t\t\tfor (tmp = 0; tmp < newVNode._children.length; tmp++) {\n\t\t\t\t\t\tif (newVNode._children[tmp]) {\n\t\t\t\t\t\t\tnewVNode._children[tmp]._parent = newVNode;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\n\t\t\t\tif (c.componentWillUpdate != null) {\n\t\t\t\t\tc.componentWillUpdate(newProps, c._nextState, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidUpdate != null) {\n\t\t\t\t\tc._renderCallbacks.push(() => {\n\t\t\t\t\t\tc.componentDidUpdate(oldProps, oldState, snapshot);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tc.context = componentContext;\n\t\t\tc.props = newProps;\n\t\t\tc.state = c._nextState;\n\n\t\t\tif ((tmp = options._render)) tmp(newVNode);\n\n\t\t\tc._dirty = false;\n\t\t\tc._vnode = newVNode;\n\t\t\tc._parentDom = parentDom;\n\n\t\t\ttmp = c.render(c.props, c.state, c.context);\n\t\t\tlet isTopLevelFragment =\n\t\t\t\ttmp != null && tmp.type == Fragment && tmp.key == null;\n\t\t\tnewVNode._children = isTopLevelFragment\n\t\t\t\t? tmp.props.children\n\t\t\t\t: Array.isArray(tmp)\n\t\t\t\t? tmp\n\t\t\t\t: [tmp];\n\n\t\t\tif (c.getChildContext != null) {\n\t\t\t\tglobalContext = assign(assign({}, globalContext), c.getChildContext());\n\t\t\t}\n\n\t\t\tif (!isNew && c.getSnapshotBeforeUpdate != null) {\n\t\t\t\tsnapshot = c.getSnapshotBeforeUpdate(oldProps, oldState);\n\t\t\t}\n\n\t\t\tdiffChildren(\n\t\t\t\tparentDom,\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\toldDom,\n\t\t\t\tisHydrating\n\t\t\t);\n\n\t\t\tc.base = newVNode._dom;\n\n\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\tcommitQueue.push(c);\n\t\t\t}\n\n\t\t\tif (clearProcessingException) {\n\t\t\t\tc._pendingError = c._processingException = null;\n\t\t\t}\n\n\t\t\tc._force = false;\n\t\t} else if (\n\t\t\texcessDomChildren == null &&\n\t\t\tnewVNode._original === oldVNode._original\n\t\t) {\n\t\t\tnewVNode._children = oldVNode._children;\n\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t} else {\n\t\t\tnewVNode._dom = diffElementNodes(\n\t\t\t\toldVNode._dom,\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\tisHydrating\n\t\t\t);\n\t\t}\n\n\t\tif ((tmp = options.diffed)) tmp(newVNode);\n\t} catch (e) {\n\t\tnewVNode._original = null;\n\t\toptions._catchError(e, newVNode, oldVNode);\n\t}\n\n\treturn newVNode._dom;\n}\n\n/**\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').VNode} root\n */\nexport function commitRoot(commitQueue, root) {\n\tif (options._commit) options._commit(root, commitQueue);\n\n\tcommitQueue.some(c => {\n\t\ttry {\n\t\t\tcommitQueue = c._renderCallbacks;\n\t\t\tc._renderCallbacks = [];\n\t\t\tcommitQueue.some(cb => {\n\t\t\t\tcb.call(c);\n\t\t\t});\n\t\t} catch (e) {\n\t\t\toptions._catchError(e, c._vnode);\n\t\t}\n\t});\n}\n\n/**\n * Diff two virtual nodes representing DOM element\n * @param {import('../internal').PreactElement} dom The DOM element representing\n * the virtual nodes being diffed\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {*} excessDomChildren\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @returns {import('../internal').PreactElement}\n */\nfunction diffElementNodes(\n\tdom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\tisHydrating\n) {\n\tlet i;\n\tlet oldProps = oldVNode.props;\n\tlet newProps = newVNode.props;\n\n\t// Tracks entering and exiting SVG namespace when descending through the tree.\n\tisSvg = newVNode.type === 'svg' || isSvg;\n\n\tif (excessDomChildren != null) {\n\t\tfor (i = 0; i < excessDomChildren.length; i++) {\n\t\t\tconst child = excessDomChildren[i];\n\n\t\t\t// if newVNode matches an element in excessDomChildren or the `dom`\n\t\t\t// argument matches an element in excessDomChildren, remove it from\n\t\t\t// excessDomChildren so it isn't later removed in diffChildren\n\t\t\tif (\n\t\t\t\tchild != null &&\n\t\t\t\t((newVNode.type === null\n\t\t\t\t\t? child.nodeType === 3\n\t\t\t\t\t: child.localName === newVNode.type) ||\n\t\t\t\t\tdom == child)\n\t\t\t) {\n\t\t\t\tdom = child;\n\t\t\t\texcessDomChildren[i] = null;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (dom == null) {\n\t\tif (newVNode.type === null) {\n\t\t\treturn document.createTextNode(newProps);\n\t\t}\n\n\t\tdom = isSvg\n\t\t\t? document.createElementNS('http://www.w3.org/2000/svg', newVNode.type)\n\t\t\t: document.createElement(\n\t\t\t\t\tnewVNode.type,\n\t\t\t\t\tnewProps.is && { is: newProps.is }\n\t\t\t );\n\t\t// we created a new parent, so none of the previously attached children can be reused:\n\t\texcessDomChildren = null;\n\t\t// we are creating a new node, so we can assume this is a new subtree (in case we are hydrating), this deopts the hydrate\n\t\tisHydrating = false;\n\t}\n\n\tif (newVNode.type === null) {\n\t\tif (oldProps !== newProps && dom.data != newProps) {\n\t\t\tdom.data = newProps;\n\t\t}\n\t} else {\n\t\tif (excessDomChildren != null) {\n\t\t\texcessDomChildren = EMPTY_ARR.slice.call(dom.childNodes);\n\t\t}\n\n\t\toldProps = oldVNode.props || EMPTY_OBJ;\n\n\t\tlet oldHtml = oldProps.dangerouslySetInnerHTML;\n\t\tlet newHtml = newProps.dangerouslySetInnerHTML;\n\n\t\t// During hydration, props are not diffed at all (including dangerouslySetInnerHTML)\n\t\t// @TODO we should warn in debug mode when props don't match here.\n\t\tif (!isHydrating) {\n\t\t\tif (oldProps === EMPTY_OBJ) {\n\t\t\t\toldProps = {};\n\t\t\t\tfor (let i = 0; i < dom.attributes.length; i++) {\n\t\t\t\t\toldProps[dom.attributes[i].name] = dom.attributes[i].value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (newHtml || oldHtml) {\n\t\t\t\t// Avoid re-applying the same '__html' if it did not changed between re-render\n\t\t\t\tif (!newHtml || !oldHtml || newHtml.__html != oldHtml.__html) {\n\t\t\t\t\tdom.innerHTML = (newHtml && newHtml.__html) || '';\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tdiffProps(dom, newProps, oldProps, isSvg, isHydrating);\n\n\t\tnewVNode._children = newVNode.props.children;\n\n\t\t// If the new vnode didn't have dangerouslySetInnerHTML, diff its children\n\t\tif (!newHtml) {\n\t\t\tdiffChildren(\n\t\t\t\tdom,\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tnewVNode.type === 'foreignObject' ? false : isSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\tEMPTY_OBJ,\n\t\t\t\tisHydrating\n\t\t\t);\n\t\t}\n\n\t\t// (as above, don't diff props during hydration)\n\t\tif (!isHydrating) {\n\t\t\tif (\n\t\t\t\t'value' in newProps &&\n\t\t\t\tnewProps.value !== undefined &&\n\t\t\t\tnewProps.value !== dom.value\n\t\t\t) {\n\t\t\t\tdom.value = newProps.value == null ? '' : newProps.value;\n\t\t\t}\n\t\t\tif (\n\t\t\t\t'checked' in newProps &&\n\t\t\t\tnewProps.checked !== undefined &&\n\t\t\t\tnewProps.checked !== dom.checked\n\t\t\t) {\n\t\t\t\tdom.checked = newProps.checked;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn dom;\n}\n\n/**\n * Invoke or update a ref, depending on whether it is a function or object ref.\n * @param {object|function} ref\n * @param {any} value\n * @param {import('../internal').VNode} vnode\n */\nexport function applyRef(ref, value, vnode) {\n\ttry {\n\t\tif (typeof ref == 'function') ref(value);\n\t\telse ref.current = value;\n\t} catch (e) {\n\t\toptions._catchError(e, vnode);\n\t}\n}\n\n/**\n * Unmount a virtual node from the tree and apply DOM changes\n * @param {import('../internal').VNode} vnode The virtual node to unmount\n * @param {import('../internal').VNode} parentVNode The parent of the VNode that\n * initiated the unmount\n * @param {boolean} [skipRemove] Flag that indicates that a parent node of the\n * current element is already detached from the DOM.\n */\nexport function unmount(vnode, parentVNode, skipRemove) {\n\tlet r;\n\tif (options.unmount) options.unmount(vnode);\n\n\tif ((r = vnode.ref)) {\n\t\tif (!r.current || r.current === vnode._dom) applyRef(r, null, parentVNode);\n\t}\n\n\tlet dom;\n\tif (!skipRemove && typeof vnode.type != 'function') {\n\t\tskipRemove = (dom = vnode._dom) != null;\n\t}\n\n\t// Must be set to `undefined` to properly clean up `_nextDom`\n\t// for which `null` is a valid value. See comment in `create-element.js`\n\tvnode._dom = vnode._nextDom = undefined;\n\n\tif ((r = vnode._component) != null) {\n\t\tif (r.componentWillUnmount) {\n\t\t\ttry {\n\t\t\t\tr.componentWillUnmount();\n\t\t\t} catch (e) {\n\t\t\t\toptions._catchError(e, parentVNode);\n\t\t\t}\n\t\t}\n\n\t\tr.base = r._parentDom = null;\n\t}\n\n\tif ((r = vnode._children)) {\n\t\tfor (let i = 0; i < r.length; i++) {\n\t\t\tif (r[i]) unmount(r[i], parentVNode, skipRemove);\n\t\t}\n\t}\n\n\tif (dom != null) removeNode(dom);\n}\n\n/** The `.render()` method for a PFC backing instance. */\nfunction doRender(props, state, context) {\n\treturn this.constructor(props, context);\n}\n","import { EMPTY_OBJ, EMPTY_ARR } from './constants';\nimport { commitRoot, diff } from './diff/index';\nimport { createElement, Fragment } from './create-element';\nimport options from './options';\n\nconst IS_HYDRATE = EMPTY_OBJ;\n\n/**\n * Render a Preact virtual node into a DOM element\n * @param {import('./index').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to\n * render into\n * @param {Element | Text} [replaceNode] Optional: Attempt to re-use an\n * existing DOM tree rooted at `replaceNode`\n */\nexport function render(vnode, parentDom, replaceNode) {\n\tif (options._root) options._root(vnode, parentDom);\n\n\t// We abuse the `replaceNode` parameter in `hydrate()` to signal if we\n\t// are in hydration mode or not by passing `IS_HYDRATE` instead of a\n\t// DOM element.\n\tlet isHydrating = replaceNode === IS_HYDRATE;\n\n\t// To be able to support calling `render()` multiple times on the same\n\t// DOM node, we need to obtain a reference to the previous tree. We do\n\t// this by assigning a new `_children` property to DOM nodes which points\n\t// to the last rendered tree. By default this property is not present, which\n\t// means that we are mounting a new tree for the first time.\n\tlet oldVNode = isHydrating\n\t\t? null\n\t\t: (replaceNode && replaceNode._children) || parentDom._children;\n\tvnode = createElement(Fragment, null, [vnode]);\n\n\t// List of effects that need to be called after diffing.\n\tlet commitQueue = [];\n\tdiff(\n\t\tparentDom,\n\t\t// Determine the new vnode tree and store it on the DOM element on\n\t\t// our custom `_children` property.\n\t\t((isHydrating ? parentDom : replaceNode || parentDom)._children = vnode),\n\t\toldVNode || EMPTY_OBJ,\n\t\tEMPTY_OBJ,\n\t\tparentDom.ownerSVGElement !== undefined,\n\t\treplaceNode && !isHydrating\n\t\t\t? [replaceNode]\n\t\t\t: oldVNode\n\t\t\t? null\n\t\t\t: EMPTY_ARR.slice.call(parentDom.childNodes),\n\t\tcommitQueue,\n\t\treplaceNode || EMPTY_OBJ,\n\t\tisHydrating\n\t);\n\n\t// Flush all queued effects\n\tcommitRoot(commitQueue, vnode);\n}\n\n/**\n * Update an existing DOM element with data from a Preact virtual node\n * @param {import('./index').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to\n * update\n */\nexport function hydrate(vnode, parentDom) {\n\trender(vnode, parentDom, IS_HYDRATE);\n}\n","import { assign } from './util';\nimport { EMPTY_ARR } from './constants';\nimport { createVNode } from './create-element';\n\n/**\n * Clones the given VNode, optionally adding attributes/props and replacing its children.\n * @param {import('./internal').VNode} vnode The virtual DOM element to clone\n * @param {object} props Attributes/props to add when cloning\n * @param {Array} rest Any additional arguments will be used as replacement children.\n * @returns {import('./internal').VNode}\n */\nexport function cloneElement(vnode, props) {\n\tprops = assign(assign({}, vnode.props), props);\n\tif (arguments.length > 2) props.children = EMPTY_ARR.slice.call(arguments, 2);\n\treturn createVNode(\n\t\tvnode.type,\n\t\tprops,\n\t\tprops.key || vnode.key,\n\t\tprops.ref || vnode.ref,\n\t\tnull\n\t);\n}\n","import { enqueueRender } from './component';\n\nexport let i = 0;\n\nexport function createContext(defaultValue) {\n\tconst ctx = {};\n\n\tconst context = {\n\t\t_id: '__cC' + i++,\n\t\t_defaultValue: defaultValue,\n\t\tConsumer(props, context) {\n\t\t\treturn props.children(context);\n\t\t},\n\t\tProvider(props) {\n\t\t\tif (!this.getChildContext) {\n\t\t\t\tconst subs = [];\n\t\t\t\tthis.getChildContext = () => {\n\t\t\t\t\tctx[context._id] = this;\n\t\t\t\t\treturn ctx;\n\t\t\t\t};\n\n\t\t\t\tthis.shouldComponentUpdate = _props => {\n\t\t\t\t\tif (this.props.value !== _props.value) {\n\t\t\t\t\t\tsubs.some(c => {\n\t\t\t\t\t\t\tc.context = _props.value;\n\t\t\t\t\t\t\tenqueueRender(c);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tthis.sub = c => {\n\t\t\t\t\tsubs.push(c);\n\t\t\t\t\tlet old = c.componentWillUnmount;\n\t\t\t\t\tc.componentWillUnmount = () => {\n\t\t\t\t\t\tsubs.splice(subs.indexOf(c), 1);\n\t\t\t\t\t\told && old.call(c);\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn props.children;\n\t\t}\n\t};\n\n\tcontext.Consumer.contextType = context;\n\n\treturn context;\n}\n","export const ELEMENT_NODE = 1;\nexport const DOCUMENT_NODE = 9;\nexport const DOCUMENT_FRAGMENT_NODE = 11;\n","import { _catchError } from './diff/catch-error';\n\n/**\n * The `option` object can potentially contain callback functions\n * that are called during various stages of our renderer. This is the\n * foundation on which all our addons like `preact/debug`, `preact/compat`,\n * and `preact/hooks` are based on. See the `Options` type in `internal.d.ts`\n * for a full list of available option hooks (most editors/IDEs allow you to\n * ctrl+click or cmd+click on mac the type definition below).\n * @type {import('./internal').Options}\n */\nconst options = {\n\t_catchError\n};\n\nexport default options;\n","import { enqueueRender } from '../component';\n\n/**\n * Find the closest error boundary to a thrown error and call it\n * @param {object} error The thrown value\n * @param {import('../internal').VNode} vnode The vnode that threw\n * the error that was caught (except for unmounting when this parameter\n * is the highest parent that was being unmounted)\n */\nexport function _catchError(error, vnode) {\n\t/** @type {import('../internal').Component} */\n\tlet component, hasCaught;\n\n\tfor (; (vnode = vnode._parent); ) {\n\t\tif ((component = vnode._component) && !component._processingException) {\n\t\t\ttry {\n\t\t\t\tif (\n\t\t\t\t\tcomponent.constructor &&\n\t\t\t\t\tcomponent.constructor.getDerivedStateFromError != null\n\t\t\t\t) {\n\t\t\t\t\thasCaught = true;\n\t\t\t\t\tcomponent.setState(\n\t\t\t\t\t\tcomponent.constructor.getDerivedStateFromError(error)\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (component.componentDidCatch != null) {\n\t\t\t\t\thasCaught = true;\n\t\t\t\t\tcomponent.componentDidCatch(error);\n\t\t\t\t}\n\n\t\t\t\tif (hasCaught)\n\t\t\t\t\treturn enqueueRender((component._pendingError = component));\n\t\t\t} catch (e) {\n\t\t\t\terror = e;\n\t\t\t}\n\t\t}\n\t}\n\n\tthrow error;\n}\n","import style from './copyright.css';\nimport { Component } from 'preact';\n\nexport default class Copyright extends Component {\n\trender() {\n\t\treturn
© 2020 - Stefano Pigozzi - CC BY-SA 4.0 - Codice sorgente - Supportami
;\n\t}\n}\n","\n\t\timport Async from \"../../node_modules/@preact/async-loader/async-legacy.js\";\n\n\t\tfunction load(cb) {\n\t\t\trequire.ensure([], function (require) {\n\t\t\t\tcb( require(\"!!../../node_modules/babel-loader/lib/index.js??ref--4!./ottimizzazioneLineare.js\") );\n\t\t\t}, \"route-ottimizzazioneLineare\");\n\t\t}\n\n\t\texport default Async(load);\n\t","/* global __webpack_public_path__ */\n\nimport * as Preact from 'preact';\nconst { h, render, hydrate } = Preact;\n\nconst interopDefault = m => (m && m.default ? m.default : m);\n\nconst normalizeURL = url => (url[url.length - 1] === '/' ? url : url + '/');\n\nif (process.env.NODE_ENV === 'development') {\n\t// enable preact devtools\n\trequire('preact/debug');\n\tif (process.env.RHL) {\n\t\t// enable hot loader\n\t\tconst hotLoader = interopDefault(require('react-hot-loader'));\n\t\thotLoader.preact(interopDefault(require('preact')));\n\t}\n\t// only add a debug sw if webpack service worker is not requested.\n\tif (process.env.ADD_SW === undefined && 'serviceWorker' in navigator) {\n\t\t// eslint-disable-next-line no-undef\n\t\tnavigator.serviceWorker.register(__webpack_public_path__ + 'sw-debug.js');\n\t} else if (process.env.ADD_SW && 'serviceWorker' in navigator) {\n\t\t// eslint-disable-next-line no-undef\n\t\tnavigator.serviceWorker.register(\n\t\t\t__webpack_public_path__ + (process.env.ES_BUILD ? 'sw-esm.js' : 'sw.js')\n\t\t);\n\t}\n} else if (process.env.ADD_SW && 'serviceWorker' in navigator) {\n\t// eslint-disable-next-line no-undef\n\tnavigator.serviceWorker.register(\n\t\t__webpack_public_path__ + (process.env.ES_BUILD ? 'sw-esm.js' : 'sw.js')\n\t);\n}\n\nlet app = interopDefault(require('preact-cli-entrypoint'));\n\nif (typeof app === 'function') {\n\tlet root =\n\t\tdocument.getElementById('preact_root') || document.body.firstElementChild;\n\n\tlet init = () => {\n\t\tlet app = interopDefault(require('preact-cli-entrypoint'));\n\t\tlet preRenderData = {};\n\t\tconst inlineDataElement = document.querySelector(\n\t\t\t'[type=\"__PREACT_CLI_DATA__\"]'\n\t\t);\n\t\tif (inlineDataElement) {\n\t\t\tpreRenderData =\n\t\t\t\tJSON.parse(inlineDataElement.innerHTML).preRenderData || preRenderData;\n\t\t}\n\t\t/* An object named CLI_DATA is passed as a prop,\n\t\t * this keeps us future proof if in case we decide,\n\t\t * to send other data like at some point in time.\n\t\t */\n\t\tconst CLI_DATA = { preRenderData };\n\t\tconst currentURL = preRenderData.url ? normalizeURL(preRenderData.url) : '';\n\t\tconst canHydrate =\n\t\t\tprocess.env.PRERENDER &&\n\t\t\tprocess.env.NODE_ENV === 'production' &&\n\t\t\thydrate &&\n\t\t\tcurrentURL === location.pathname;\n\t\tconst doRender = canHydrate ? hydrate : render;\n\t\troot = doRender(h(app, { CLI_DATA }), document.body, root);\n\t};\n\n\tif (module.hot) module.hot.accept('preact-cli-entrypoint', init);\n\n\tinit();\n}\n","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","function isAbsolute(pathname) {\n return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n list[i] = list[k];\n }\n\n list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to, from) {\n if (from === undefined) from = '';\n\n var toParts = (to && to.split('/')) || [];\n var fromParts = (from && from.split('/')) || [];\n\n var isToAbs = to && isAbsolute(to);\n var isFromAbs = from && isAbsolute(from);\n var mustEndAbs = isToAbs || isFromAbs;\n\n if (to && isAbsolute(to)) {\n // to is absolute\n fromParts = toParts;\n } else if (toParts.length) {\n // to is relative, drop the filename\n fromParts.pop();\n fromParts = fromParts.concat(toParts);\n }\n\n if (!fromParts.length) return '/';\n\n var hasTrailingSlash;\n if (fromParts.length) {\n var last = fromParts[fromParts.length - 1];\n hasTrailingSlash = last === '.' || last === '..' || last === '';\n } else {\n hasTrailingSlash = false;\n }\n\n var up = 0;\n for (var i = fromParts.length; i >= 0; i--) {\n var part = fromParts[i];\n\n if (part === '.') {\n spliceOne(fromParts, i);\n } else if (part === '..') {\n spliceOne(fromParts, i);\n up++;\n } else if (up) {\n spliceOne(fromParts, i);\n up--;\n }\n }\n\n if (!mustEndAbs) for (; up--; up) fromParts.unshift('..');\n\n if (\n mustEndAbs &&\n fromParts[0] !== '' &&\n (!fromParts[0] || !isAbsolute(fromParts[0]))\n )\n fromParts.unshift('');\n\n var result = fromParts.join('/');\n\n if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n return result;\n}\n\nexport default resolvePathname;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport warning from 'tiny-warning';\nimport invariant from 'tiny-invariant';\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n}\nfunction stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n}\nfunction hasBasename(path, prefix) {\n return path.toLowerCase().indexOf(prefix.toLowerCase()) === 0 && '/?#'.indexOf(path.charAt(prefix.length)) !== -1;\n}\nfunction stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\nfunction stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n}\nfunction parsePath(path) {\n var pathname = path || '/';\n var search = '';\n var hash = '';\n var hashIndex = pathname.indexOf('#');\n\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === '?' ? '' : search,\n hash: hash === '#' ? '' : hash\n };\n}\nfunction createPath(location) {\n var pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n var path = pathname || '/';\n if (search && search !== '?') path += search.charAt(0) === '?' ? search : \"?\" + search;\n if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : \"#\" + hash;\n return path;\n}\n\nfunction createLocation(path, state, key, currentLocation) {\n var location;\n\n if (typeof path === 'string') {\n // Two-arg form: push(path, state)\n location = parsePath(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = _extends({}, path);\n if (location.pathname === undefined) location.pathname = '';\n\n if (location.search) {\n if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n } else {\n location.search = '';\n }\n\n if (location.hash) {\n if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n } else {\n location.hash = '';\n }\n\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) {\n throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n } else {\n throw e;\n }\n }\n\n if (key) location.key = key;\n\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) {\n location.pathname = currentLocation.pathname;\n } else if (location.pathname.charAt(0) !== '/') {\n location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n }\n } else {\n // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) {\n location.pathname = '/';\n }\n }\n\n return location;\n}\nfunction locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n}\n\nfunction createTransitionManager() {\n var prompt = null;\n\n function setPrompt(nextPrompt) {\n process.env.NODE_ENV !== \"production\" ? warning(prompt == null, 'A history supports only one prompt at a time') : void 0;\n prompt = nextPrompt;\n return function () {\n if (prompt === nextPrompt) prompt = null;\n };\n }\n\n function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n // TODO: If another transition starts while we're still confirming\n // the previous one, we may end up in a weird state. Figure out the\n // best way to handle this.\n if (prompt != null) {\n var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n if (typeof result === 'string') {\n if (typeof getUserConfirmation === 'function') {\n getUserConfirmation(result, callback);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message') : void 0;\n callback(true);\n }\n } else {\n // Return false from a transition hook to cancel the transition.\n callback(result !== false);\n }\n } else {\n callback(true);\n }\n }\n\n var listeners = [];\n\n function appendListener(fn) {\n var isActive = true;\n\n function listener() {\n if (isActive) fn.apply(void 0, arguments);\n }\n\n listeners.push(listener);\n return function () {\n isActive = false;\n listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n }\n\n function notifyListeners() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n listeners.forEach(function (listener) {\n return listener.apply(void 0, args);\n });\n }\n\n return {\n setPrompt: setPrompt,\n confirmTransitionTo: confirmTransitionTo,\n appendListener: appendListener,\n notifyListeners: notifyListeners\n };\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction getConfirmation(message, callback) {\n callback(window.confirm(message)); // eslint-disable-line no-alert\n}\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\n\nfunction supportsHistory() {\n var ua = window.navigator.userAgent;\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n return window.history && 'pushState' in window.history;\n}\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\n\nfunction supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n}\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\n}\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\n\nfunction isExtraneousPopstateEvent(event) {\n return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n}\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nfunction getHistoryState() {\n try {\n return window.history.state || {};\n } catch (e) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n return {};\n }\n}\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\n\n\nfunction createBrowserHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Browser history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canUseHistory = supportsHistory();\n var needsHashChangeListener = !supportsPopStateOnHashChange();\n var _props = props,\n _props$forceRefresh = _props.forceRefresh,\n forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n function getDOMLocation(historyState) {\n var _ref = historyState || {},\n key = _ref.key,\n state = _ref.state;\n\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n var path = pathname + search + hash;\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path, state, key);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function handlePopState(event) {\n // Ignore extraneous popstate events in WebKit.\n if (isExtraneousPopstateEvent(event)) return;\n handlePop(getDOMLocation(event.state));\n }\n\n function handleHashChange() {\n handlePop(getDOMLocation(getHistoryState()));\n }\n\n var forceNextPop = false;\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of keys we've seen in sessionStorage.\n // Instead, we just default to 0 for keys we don't know.\n\n var toIndex = allKeys.indexOf(toLocation.key);\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allKeys.indexOf(fromLocation.key);\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n }\n\n var initialLocation = getDOMLocation(getHistoryState());\n var allKeys = [initialLocation.key]; // Public interface\n\n function createHref(location) {\n return basename + createPath(location);\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.pushState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.href = href;\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n var nextKeys = allKeys.slice(0, prevIndex + 1);\n nextKeys.push(location.key);\n allKeys = nextKeys;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history') : void 0;\n window.location.href = href;\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.replaceState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.replace(href);\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history') : void 0;\n window.location.replace(href);\n }\n });\n }\n\n function go(n) {\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nvar HashChangeEvent$1 = 'hashchange';\nvar HashPathCoders = {\n hashbang: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n },\n decodePath: function decodePath(path) {\n return path.charAt(0) === '!' ? path.substr(1) : path;\n }\n },\n noslash: {\n encodePath: stripLeadingSlash,\n decodePath: addLeadingSlash\n },\n slash: {\n encodePath: addLeadingSlash,\n decodePath: addLeadingSlash\n }\n};\n\nfunction stripHash(url) {\n var hashIndex = url.indexOf('#');\n return hashIndex === -1 ? url : url.slice(0, hashIndex);\n}\n\nfunction getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var hashIndex = href.indexOf('#');\n return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n}\n\nfunction pushHashPath(path) {\n window.location.hash = path;\n}\n\nfunction replaceHashPath(path) {\n window.location.replace(stripHash(window.location.href) + '#' + path);\n}\n\nfunction createHashHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Hash history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n var _props = props,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$hashType = _props.hashType,\n hashType = _props$hashType === void 0 ? 'slash' : _props$hashType;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n var _HashPathCoders$hashT = HashPathCoders[hashType],\n encodePath = _HashPathCoders$hashT.encodePath,\n decodePath = _HashPathCoders$hashT.decodePath;\n\n function getDOMLocation() {\n var path = decodePath(getHashPath());\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n var forceNextPop = false;\n var ignorePath = null;\n\n function locationsAreEqual$$1(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash;\n }\n\n function handleHashChange() {\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) {\n // Ensure we always have a properly-encoded hash.\n replaceHashPath(encodedPath);\n } else {\n var location = getDOMLocation();\n var prevLocation = history.location;\n if (!forceNextPop && locationsAreEqual$$1(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n ignorePath = null;\n handlePop(location);\n }\n }\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of paths we've seen in sessionStorage.\n // Instead, we just default to 0 for paths we don't know.\n\n var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n } // Ensure the hash is encoded properly before doing anything else.\n\n\n var path = getHashPath();\n var encodedPath = encodePath(path);\n if (path !== encodedPath) replaceHashPath(encodedPath);\n var initialLocation = getDOMLocation();\n var allPaths = [createPath(initialLocation)]; // Public interface\n\n function createHref(location) {\n var baseTag = document.querySelector('base');\n var href = '';\n\n if (baseTag && baseTag.getAttribute('href')) {\n href = stripHash(window.location.href);\n }\n\n return href + '#' + encodePath(basename + createPath(location));\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot push state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a PUSH, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n pushHashPath(encodedPath);\n var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n var nextPaths = allPaths.slice(0, prevIndex + 1);\n nextPaths.push(path);\n allPaths = nextPaths;\n setState({\n action: action,\n location: location\n });\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack') : void 0;\n setState();\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot replace state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n replaceHashPath(encodedPath);\n }\n\n var prevIndex = allPaths.indexOf(createPath(history.location));\n if (prevIndex !== -1) allPaths[prevIndex] = path;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n process.env.NODE_ENV !== \"production\" ? warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(HashChangeEvent$1, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(HashChangeEvent$1, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nfunction clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n}\n/**\n * Creates a history object that stores locations in memory.\n */\n\n\nfunction createMemoryHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n var _props = props,\n getUserConfirmation = _props.getUserConfirmation,\n _props$initialEntries = _props.initialEntries,\n initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries,\n _props$initialIndex = _props.initialIndex,\n initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = history.entries.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var index = clamp(initialIndex, 0, initialEntries.length - 1);\n var entries = initialEntries.map(function (entry) {\n return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n }); // Public interface\n\n var createHref = createPath;\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var prevIndex = history.index;\n var nextIndex = prevIndex + 1;\n var nextEntries = history.entries.slice(0);\n\n if (nextEntries.length > nextIndex) {\n nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n } else {\n nextEntries.push(location);\n }\n\n setState({\n action: action,\n location: location,\n index: nextIndex,\n entries: nextEntries\n });\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n history.entries[history.index] = location;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n var action = 'POP';\n var location = history.entries[nextIndex];\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location,\n index: nextIndex\n });\n } else {\n // Mimic the behavior of DOM histories by\n // causing a render after a cancelled POP.\n setState();\n }\n });\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n function canGo(n) {\n var nextIndex = history.index + n;\n return nextIndex >= 0 && nextIndex < history.entries.length;\n }\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n return transitionManager.setPrompt(prompt);\n }\n\n function listen(listener) {\n return transitionManager.appendListener(listener);\n }\n\n var history = {\n length: entries.length,\n action: 'POP',\n location: entries[index],\n index: index,\n entries: entries,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n canGo: canGo,\n block: block,\n listen: listen\n };\n return history;\n}\n\nexport { createBrowserHistory, createHashHistory, createMemoryHistory, createLocation, locationsAreEqual, parsePath, createPath };\n","var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n if (condition) {\n return;\n }\n if (isProduction) {\n throw new Error(prefix);\n }\n throw new Error(prefix + \": \" + (message || ''));\n}\n\nexport default invariant;\n","import { options, Fragment } from 'preact';\n\n/**\n * Get human readable name of the component/dom node\n * @param {import('./internal').VNode} vnode\n * @param {import('./internal').VNode} vnode\n * @returns {string}\n */\nexport function getDisplayName(vnode) {\n\tif (vnode.type === Fragment) {\n\t\treturn 'Fragment';\n\t} else if (typeof vnode.type == 'function') {\n\t\treturn vnode.type.displayName || vnode.type.name;\n\t} else if (typeof vnode.type == 'string') {\n\t\treturn vnode.type;\n\t}\n\n\treturn '#text';\n}\n\n/**\n * Used to keep track of the currently rendered `vnode` and print it\n * in debug messages.\n */\nlet renderStack = [];\n\n/**\n * Keep track of the current owners. An owner describes a component\n * which was responsible to render a specific `vnode`. This exclude\n * children that are passed via `props.children`, because they belong\n * to the parent owner.\n *\n * ```jsx\n * const Foo = props =>
{props.children}
// div's owner is Foo\n * const Bar = props => {\n * return (\n * // Foo's owner is Bar, span's owner is Bar\n * )\n * }\n * ```\n *\n * Note: A `vnode` may be hoisted to the root scope due to compiler\n * optimiztions. In these cases the `_owner` will be different.\n */\nlet ownerStack = [];\n\n/**\n * Get the currently rendered `vnode`\n * @returns {import('./internal').VNode | null}\n */\nexport function getCurrentVNode() {\n\treturn renderStack.length > 0 ? renderStack[renderStack.length - 1] : null;\n}\n\n/**\n * If the user doesn't have `@babel/plugin-transform-react-jsx-source`\n * somewhere in his tool chain we can't print the filename and source\n * location of a component. In that case we just omit that, but we'll\n * print a helpful message to the console, notifying the user of it.\n */\nlet hasBabelPlugin = false;\n\n/**\n * Check if a `vnode` is a possible owner.\n * @param {import('./internal').VNode} vnode\n */\nfunction isPossibleOwner(vnode) {\n\treturn typeof vnode.type == 'function' && vnode.type != Fragment;\n}\n\n/**\n * Return the component stack that was captured up to this point.\n * @param {import('./internal').VNode} vnode\n * @returns {string}\n */\nexport function getOwnerStack(vnode) {\n\tconst stack = [vnode];\n\tlet next = vnode;\n\twhile (next._owner != null) {\n\t\tstack.push(next._owner);\n\t\tnext = next._owner;\n\t}\n\n\treturn stack.reduce((acc, owner) => {\n\t\tacc += ` in ${getDisplayName(owner)}`;\n\n\t\tconst source = owner.__source;\n\t\tif (source) {\n\t\t\tacc += ` (at ${source.fileName}:${source.lineNumber})`;\n\t\t} else if (!hasBabelPlugin) {\n\t\t\thasBabelPlugin = true;\n\t\t\tconsole.warn(\n\t\t\t\t'Add @babel/plugin-transform-react-jsx-source to get a more detailed component stack. Note that you should not add it to production builds of your App for bundle size reasons.'\n\t\t\t);\n\t\t}\n\n\t\treturn (acc += '\\n');\n\t}, '');\n}\n\n/**\n * Setup code to capture the component trace while rendering. Note that\n * we cannot simply traverse `vnode._parent` upwards, because we have some\n * debug messages for `this.setState` where the `vnode` is `undefined`.\n */\nexport function setupComponentStack() {\n\tlet oldDiff = options._diff;\n\tlet oldDiffed = options.diffed;\n\tlet oldRoot = options._root;\n\tlet oldVNode = options.vnode;\n\tlet oldRender = options._render;\n\n\toptions.diffed = vnode => {\n\t\tif (isPossibleOwner(vnode)) {\n\t\t\townerStack.pop();\n\t\t}\n\t\trenderStack.pop();\n\t\tif (oldDiffed) oldDiffed(vnode);\n\t};\n\n\toptions._diff = vnode => {\n\t\tif (isPossibleOwner(vnode)) {\n\t\t\trenderStack.push(vnode);\n\t\t}\n\t\tif (oldDiff) oldDiff(vnode);\n\t};\n\n\toptions._root = (vnode, parent) => {\n\t\townerStack = [];\n\t\tif (oldRoot) oldRoot(vnode, parent);\n\t};\n\n\toptions.vnode = vnode => {\n\t\tvnode._owner =\n\t\t\townerStack.length > 0 ? ownerStack[ownerStack.length - 1] : null;\n\t\tif (oldVNode) oldVNode(vnode);\n\t};\n\n\toptions._render = vnode => {\n\t\tif (isPossibleOwner(vnode)) {\n\t\t\townerStack.push(vnode);\n\t\t}\n\n\t\tif (oldRender) oldRender(vnode);\n\t};\n}\n","import { checkPropTypes } from './check-props';\nimport { options, Component } from 'preact';\nimport {\n\tELEMENT_NODE,\n\tDOCUMENT_NODE,\n\tDOCUMENT_FRAGMENT_NODE\n} from './constants';\nimport {\n\tgetOwnerStack,\n\tsetupComponentStack,\n\tgetCurrentVNode,\n\tgetDisplayName\n} from './component-stack';\n\nconst isWeakMapSupported = typeof WeakMap == 'function';\n\nfunction getClosestDomNodeParent(parent) {\n\tif (!parent) return {};\n\tif (typeof parent.type == 'function') {\n\t\treturn getClosestDomNodeParent(parent._parent);\n\t}\n\treturn parent;\n}\n\nexport function initDebug() {\n\tsetupComponentStack();\n\n\t/* eslint-disable no-console */\n\tlet oldBeforeDiff = options._diff;\n\tlet oldDiffed = options.diffed;\n\tlet oldVnode = options.vnode;\n\tlet oldCatchError = options._catchError;\n\tlet oldRoot = options._root;\n\tlet oldHook = options._hook;\n\tconst warnedComponents = !isWeakMapSupported\n\t\t? null\n\t\t: {\n\t\t\t\tuseEffect: new WeakMap(),\n\t\t\t\tuseLayoutEffect: new WeakMap(),\n\t\t\t\tlazyPropTypes: new WeakMap()\n\t\t };\n\n\toptions._catchError = (error, vnode, oldVNode) => {\n\t\tlet component = vnode && vnode._component;\n\t\tif (component && typeof error.then == 'function') {\n\t\t\tconst promise = error;\n\t\t\terror = new Error(\n\t\t\t\t`Missing Suspense. The throwing component was: ${getDisplayName(vnode)}`\n\t\t\t);\n\n\t\t\tlet parent = vnode;\n\t\t\tfor (; parent; parent = parent._parent) {\n\t\t\t\tif (parent._component && parent._component._childDidSuspend) {\n\t\t\t\t\terror = promise;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// We haven't recovered and we know at this point that there is no\n\t\t\t// Suspense component higher up in the tree\n\t\t\tif (error instanceof Error) {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t}\n\n\t\toldCatchError(error, vnode, oldVNode);\n\t};\n\n\toptions._root = (vnode, parentNode) => {\n\t\tif (!parentNode) {\n\t\t\tthrow new Error(\n\t\t\t\t'Undefined parent passed to render(), this is the second argument.\\n' +\n\t\t\t\t\t'Check if the element is available in the DOM/has the correct id.'\n\t\t\t);\n\t\t}\n\t\tlet isValid;\n\t\tswitch (parentNode.nodeType) {\n\t\t\tcase ELEMENT_NODE:\n\t\t\tcase DOCUMENT_FRAGMENT_NODE:\n\t\t\tcase DOCUMENT_NODE:\n\t\t\t\tisValid = true;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tisValid = false;\n\t\t}\n\n\t\tif (!isValid) {\n\t\t\tlet componentName = getDisplayName(vnode);\n\t\t\tthrow new Error(\n\t\t\t\t`Expected a valid HTML node as a second argument to render.\tReceived ${parentNode} instead: render(<${componentName} />, ${parentNode});`\n\t\t\t);\n\t\t}\n\n\t\tif (oldRoot) oldRoot(vnode, parentNode);\n\t};\n\n\toptions._diff = vnode => {\n\t\tlet { type, _parent: parent } = vnode;\n\t\tlet parentVNode = getClosestDomNodeParent(parent);\n\n\t\tif (type === undefined) {\n\t\t\tthrow new Error(\n\t\t\t\t'Undefined component passed to createElement()\\n\\n' +\n\t\t\t\t\t'You likely forgot to export your component or might have mixed up default and named imports' +\n\t\t\t\t\tserializeVNode(vnode) +\n\t\t\t\t\t`\\n\\n${getOwnerStack(vnode)}`\n\t\t\t);\n\t\t} else if (type != null && typeof type == 'object') {\n\t\t\tif (type._children !== undefined && type._dom !== undefined) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Invalid type passed to createElement(): ${type}\\n\\n` +\n\t\t\t\t\t\t'Did you accidentally pass a JSX literal as JSX twice?\\n\\n' +\n\t\t\t\t\t\t` let My${getDisplayName(vnode)} = ${serializeVNode(type)};\\n` +\n\t\t\t\t\t\t` let vnode = ;\\n\\n` +\n\t\t\t\t\t\t'This usually happens when you export a JSX literal and not the component.' +\n\t\t\t\t\t\t`\\n\\n${getOwnerStack(vnode)}`\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthrow new Error(\n\t\t\t\t'Invalid type passed to createElement(): ' +\n\t\t\t\t\t(Array.isArray(type) ? 'array' : type)\n\t\t\t);\n\t\t}\n\n\t\tif (\n\t\t\t(type === 'thead' || type === 'tfoot' || type === 'tbody') &&\n\t\t\tparentVNode.type !== 'table'\n\t\t) {\n\t\t\tconsole.error(\n\t\t\t\t'Improper nesting of table. Your
should have a
should have a
should have a
parent.' +\n\t\t\t\t\tserializeVNode(vnode) +\n\t\t\t\t\t`\\n\\n${getOwnerStack(vnode)}`\n\t\t\t);\n\t\t} else if (\n\t\t\ttype === 'tr' &&\n\t\t\tparentVNode.type !== 'thead' &&\n\t\t\tparentVNode.type !== 'tfoot' &&\n\t\t\tparentVNode.type !== 'tbody' &&\n\t\t\tparentVNode.type !== 'table'\n\t\t) {\n\t\t\tconsole.error(\n\t\t\t\t'Improper nesting of table. Your should have a parent.' +\n\t\t\t\t\tserializeVNode(vnode) +\n\t\t\t\t\t`\\n\\n${getOwnerStack(vnode)}`\n\t\t\t);\n\t\t} else if (type === 'td' && parentVNode.type !== 'tr') {\n\t\t\tconsole.error(\n\t\t\t\t'Improper nesting of table. Your parent.' +\n\t\t\t\t\tserializeVNode(vnode) +\n\t\t\t\t\t`\\n\\n${getOwnerStack(vnode)}`\n\t\t\t);\n\t\t} else if (type === 'th' && parentVNode.type !== 'tr') {\n\t\t\tconsole.error(\n\t\t\t\t'Improper nesting of table. Your .' +\n\t\t\t\t\tserializeVNode(vnode) +\n\t\t\t\t\t`\\n\\n${getOwnerStack(vnode)}`\n\t\t\t);\n\t\t}\n\n\t\tif (\n\t\t\tvnode.ref !== undefined &&\n\t\t\ttypeof vnode.ref != 'function' &&\n\t\t\ttypeof vnode.ref != 'object' &&\n\t\t\t!('$$typeof' in vnode) // allow string refs when preact-compat is installed\n\t\t) {\n\t\t\tthrow new Error(\n\t\t\t\t`Component's \"ref\" property should be a function, or an object created ` +\n\t\t\t\t\t`by createRef(), but got [${typeof vnode.ref}] instead\\n` +\n\t\t\t\t\tserializeVNode(vnode) +\n\t\t\t\t\t`\\n\\n${getOwnerStack(vnode)}`\n\t\t\t);\n\t\t}\n\n\t\tif (typeof vnode.type == 'string') {\n\t\t\tfor (const key in vnode.props) {\n\t\t\t\tif (\n\t\t\t\t\tkey[0] === 'o' &&\n\t\t\t\t\tkey[1] === 'n' &&\n\t\t\t\t\ttypeof vnode.props[key] != 'function' &&\n\t\t\t\t\tvnode.props[key] != null\n\t\t\t\t) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t`Component's \"${key}\" property should be a function, ` +\n\t\t\t\t\t\t\t`but got [${typeof vnode.props[key]}] instead\\n` +\n\t\t\t\t\t\t\tserializeVNode(vnode) +\n\t\t\t\t\t\t\t`\\n\\n${getOwnerStack(vnode)}`\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Check prop-types if available\n\t\tif (typeof vnode.type == 'function' && vnode.type.propTypes) {\n\t\t\tif (\n\t\t\t\tvnode.type.displayName === 'Lazy' &&\n\t\t\t\twarnedComponents &&\n\t\t\t\t!warnedComponents.lazyPropTypes.has(vnode.type)\n\t\t\t) {\n\t\t\t\tconst m =\n\t\t\t\t\t'PropTypes are not supported on lazy(). Use propTypes on the wrapped component itself. ';\n\t\t\t\ttry {\n\t\t\t\t\tconst lazyVNode = vnode.type();\n\t\t\t\t\twarnedComponents.lazyPropTypes.set(vnode.type, true);\n\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\tm + `Component wrapped in lazy() is ${getDisplayName(lazyVNode)}`\n\t\t\t\t\t);\n\t\t\t\t} catch (promise) {\n\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\tm + \"We will log the wrapped component's name once it is loaded.\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t\tcheckPropTypes(\n\t\t\t\tvnode.type.propTypes,\n\t\t\t\tvnode.props,\n\t\t\t\t'prop',\n\t\t\t\tgetDisplayName(vnode)\n\t\t\t);\n\t\t}\n\n\t\tif (oldBeforeDiff) oldBeforeDiff(vnode);\n\t};\n\n\toptions._hook = comp => {\n\t\tif (!comp) {\n\t\t\tthrow new Error('Hook can only be invoked from render methods.');\n\t\t}\n\n\t\tif (oldHook) oldHook(comp);\n\t};\n\n\tconst warn = (property, err) => ({\n\t\tget() {\n\t\t\tthrow new Error(`getting vnode.${property} is deprecated, ${err}`);\n\t\t},\n\t\tset() {\n\t\t\tthrow new Error(`setting vnode.${property} is not allowed, ${err}`);\n\t\t}\n\t});\n\n\tconst deprecatedAttributes = {\n\t\tnodeName: warn('nodeName', 'use vnode.type'),\n\t\tattributes: warn('attributes', 'use vnode.props'),\n\t\tchildren: warn('children', 'use vnode.props.children')\n\t};\n\n\tconst deprecatedProto = Object.create({}, deprecatedAttributes);\n\n\toptions.vnode = vnode => {\n\t\tconst props = vnode.props;\n\t\tif (\n\t\t\tvnode.type !== null &&\n\t\t\tprops != null &&\n\t\t\t('__source' in props || '__self' in props)\n\t\t) {\n\t\t\tconst newProps = (vnode.props = {});\n\t\t\tfor (let i in props) {\n\t\t\t\tconst v = props[i];\n\t\t\t\tif (i === '__source') vnode.__source = v;\n\t\t\t\telse if (i === '__self') vnode.__self = v;\n\t\t\t\telse newProps[i] = v;\n\t\t\t}\n\t\t}\n\t\tObject.setPrototypeOf(vnode, deprecatedProto);\n\t\tif (oldVnode) oldVnode(vnode);\n\t};\n\n\toptions.diffed = vnode => {\n\t\t// Check if the user passed plain objects as children. Note that we cannot\n\t\t// move this check into `options.vnode` because components can receive\n\t\t// children in any shape they want (e.g.\n\t\t// `{{ foo: 123, bar: \"abc\" }}`).\n\t\t// Putting this check in `options.diffed` ensures that\n\t\t// `vnode._children` is set and that we only validate the children\n\t\t// that were actually rendered.\n\t\tif (vnode._children) {\n\t\t\tvnode._children.forEach(child => {\n\t\t\t\tif (child && child.type === undefined) {\n\t\t\t\t\t// Remove internal vnode keys that will always be patched\n\t\t\t\t\tdelete child._parent;\n\t\t\t\t\tdelete child._depth;\n\t\t\t\t\tconst keys = Object.keys(child).join(',');\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t`Objects are not valid as a child. Encountered an object with the keys {${keys}}.` +\n\t\t\t\t\t\t\t`\\n\\n${getOwnerStack(vnode)}`\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t/** @type {import('./internal').Component} */\n\t\tconst component = vnode._component;\n\t\tif (component && component.__hooks) {\n\t\t\tlet hooks = component.__hooks;\n\t\t\tif (Array.isArray(hooks._list)) {\n\t\t\t\thooks._list.forEach(hook => {\n\t\t\t\t\tif (hook._factory && (!hook._args || !Array.isArray(hook._args))) {\n\t\t\t\t\t\tlet componentName = getDisplayName(vnode);\n\t\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t\t`In ${componentName} you are calling useMemo/useCallback without passing arguments.\\n` +\n\t\t\t\t\t\t\t\t`This is a noop since it will not be able to memoize, it will execute it every render.` +\n\t\t\t\t\t\t\t\t`\\n\\n${getOwnerStack(vnode)}`\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tif (oldDiffed) oldDiffed(vnode);\n\n\t\tif (vnode._children != null) {\n\t\t\tconst keys = [];\n\t\t\tfor (let i = 0; i < vnode._children.length; i++) {\n\t\t\t\tconst child = vnode._children[i];\n\t\t\t\tif (!child || child.key == null) continue;\n\n\t\t\t\tconst key = child.key;\n\t\t\t\tif (keys.indexOf(key) !== -1) {\n\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t'Following component has two or more children with the ' +\n\t\t\t\t\t\t\t`same key attribute: \"${key}\". This may cause glitches and misbehavior ` +\n\t\t\t\t\t\t\t'in rendering process. Component: \\n\\n' +\n\t\t\t\t\t\t\tserializeVNode(vnode) +\n\t\t\t\t\t\t\t`\\n\\n${getOwnerStack(vnode)}`\n\t\t\t\t\t);\n\n\t\t\t\t\t// Break early to not spam the console\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tkeys.push(key);\n\t\t\t}\n\t\t}\n\t};\n}\n\nconst setState = Component.prototype.setState;\nComponent.prototype.setState = function(update, callback) {\n\tif (this._vnode == null) {\n\t\t// `this._vnode` will be `null` during componentWillMount. But it\n\t\t// is perfectly valid to call `setState` during cWM. So we\n\t\t// need an additional check to verify that we are dealing with a\n\t\t// call inside constructor.\n\t\tif (this.state == null) {\n\t\t\tconsole.warn(\n\t\t\t\t`Calling \"this.setState\" inside the constructor of a component is a ` +\n\t\t\t\t\t`no-op and might be a bug in your application. Instead, set ` +\n\t\t\t\t\t`\"this.state = {}\" directly.\\n\\n${getOwnerStack(getCurrentVNode())}`\n\t\t\t);\n\t\t}\n\t} else if (this._parentDom == null) {\n\t\tconsole.warn(\n\t\t\t`Can't call \"this.setState\" on an unmounted component. This is a no-op, ` +\n\t\t\t\t`but it indicates a memory leak in your application. To fix, cancel all ` +\n\t\t\t\t`subscriptions and asynchronous tasks in the componentWillUnmount method.` +\n\t\t\t\t`\\n\\n${getOwnerStack(this._vnode)}`\n\t\t);\n\t}\n\n\treturn setState.call(this, update, callback);\n};\n\nconst forceUpdate = Component.prototype.forceUpdate;\nComponent.prototype.forceUpdate = function(callback) {\n\tif (this._vnode == null) {\n\t\tconsole.warn(\n\t\t\t`Calling \"this.forceUpdate\" inside the constructor of a component is a ` +\n\t\t\t\t`no-op and might be a bug in your application.\\n\\n${getOwnerStack(\n\t\t\t\t\tgetCurrentVNode()\n\t\t\t\t)}`\n\t\t);\n\t} else if (this._parentDom == null) {\n\t\tconsole.warn(\n\t\t\t`Can't call \"this.forceUpdate\" on an unmounted component. This is a no-op, ` +\n\t\t\t\t`but it indicates a memory leak in your application. To fix, cancel all ` +\n\t\t\t\t`subscriptions and asynchronous tasks in the componentWillUnmount method.` +\n\t\t\t\t`\\n\\n${getOwnerStack(this._vnode)}`\n\t\t);\n\t}\n\treturn forceUpdate.call(this, callback);\n};\n\n/**\n * Serialize a vnode tree to a string\n * @param {import('./internal').VNode} vnode\n * @returns {string}\n */\nexport function serializeVNode(vnode) {\n\tlet { props } = vnode;\n\tlet name = getDisplayName(vnode);\n\n\tlet attrs = '';\n\tfor (let prop in props) {\n\t\tif (props.hasOwnProperty(prop) && prop !== 'children') {\n\t\t\tlet value = props[prop];\n\n\t\t\t// If it is an object but doesn't have toString(), use Object.toString\n\t\t\tif (typeof value == 'function') {\n\t\t\t\tvalue = `function ${value.displayName || value.name}() {}`;\n\t\t\t}\n\n\t\t\tvalue =\n\t\t\t\tObject(value) === value && !value.toString\n\t\t\t\t\t? Object.prototype.toString.call(value)\n\t\t\t\t\t: value + '';\n\n\t\t\tattrs += ` ${prop}=${JSON.stringify(value)}`;\n\t\t}\n\t}\n\n\tlet children = props.children;\n\treturn `<${name}${attrs}${\n\t\tchildren && children.length ? '>..' : ' />'\n\t}`;\n}\n","import { options, Fragment } from 'preact';\n\nexport function initDevTools() {\n\tif (typeof window != 'undefined' && window.__PREACT_DEVTOOLS__) {\n\t\twindow.__PREACT_DEVTOOLS__.attachPreact('10.0.5', options, {\n\t\t\tFragment\n\t\t});\n\t}\n}\n","const ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nlet loggedTypeFailures = {};\n\n/**\n * Reset the history of which prop type warnings have been logged.\n */\nexport function resetPropWarnings() {\n\tloggedTypeFailures = {};\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * Adapted from https://github.com/facebook/prop-types/blob/master/checkPropTypes.js\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n */\nexport function checkPropTypes(\n\ttypeSpecs,\n\tvalues,\n\tlocation,\n\tcomponentName,\n\tgetStack\n) {\n\tObject.keys(typeSpecs).forEach(typeSpecName => {\n\t\tlet error;\n\t\ttry {\n\t\t\terror = typeSpecs[typeSpecName](\n\t\t\t\tvalues,\n\t\t\t\ttypeSpecName,\n\t\t\t\tcomponentName,\n\t\t\t\tlocation,\n\t\t\t\tnull,\n\t\t\t\tReactPropTypesSecret\n\t\t\t);\n\t\t} catch (e) {\n\t\t\terror = e;\n\t\t}\n\t\tif (error && !(error.message in loggedTypeFailures)) {\n\t\t\tloggedTypeFailures[error.message] = true;\n\t\t\tconsole.error(\n\t\t\t\t`Failed ${location} type: ${error.message}${(getStack && getStack()) ||\n\t\t\t\t\t''}`\n\t\t\t);\n\t\t}\n\t});\n}\n","\n\t\timport Async from \"../../node_modules/@preact/async-loader/async-legacy.js\";\n\n\t\tfunction load(cb) {\n\t\t\trequire.ensure([], function (require) {\n\t\t\t\tcb( require(\"!!../../node_modules/babel-loader/lib/index.js??ref--4!./fisica.js\") );\n\t\t\t}, \"route-fisica\");\n\t\t}\n\n\t\texport default Async(load);\n\t"],"sourceRoot":""} \ No newline at end of file diff --git a/docs/index.html b/docs/index.html index cf62451..9c3a0ba 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1 +1 @@ -Appunti Web \ No newline at end of file +Appunti Web \ No newline at end of file diff --git a/docs/precache-manifest.40c748ad559066accc883673cce8ce47.esm.js b/docs/precache-manifest.097656f7b3d3f849be5cd65abd2c2890.esm.js similarity index 79% rename from docs/precache-manifest.40c748ad559066accc883673cce8ce47.esm.js rename to docs/precache-manifest.097656f7b3d3f849be5cd65abd2c2890.esm.js index 3baafba..451ff83 100644 --- a/docs/precache-manifest.40c748ad559066accc883673cce8ce47.esm.js +++ b/docs/precache-manifest.097656f7b3d3f849be5cd65abd2c2890.esm.js @@ -4,15 +4,15 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([ "url": "/assets/icon.png" }, { - "revision": "fb7165efb31d4ed080a7", - "url": "/bundle.74134.esm.js" - }, - { - "revision": "fb7165efb31d4ed080a7", + "revision": "f6a318cdb017950fbd70", "url": "/bundle.b01bd.css" }, { - "revision": "01cbae314274c5f1fe7aeb6f7f7dba89", + "revision": "f6a318cdb017950fbd70", + "url": "/bundle.ca0cc.esm.js" + }, + { + "revision": "069b562e730807a92486cb63b3fd886f", "url": "/index.html" }, { @@ -40,12 +40,12 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([ "url": "/route-basiDiDati.chunk.e409b.css" }, { - "revision": "b64db060b9300c6946c2", + "revision": "67eea30b78c90f166e5f", "url": "/route-calcoloNumerico.chunk.4d04d.css" }, { - "revision": "b64db060b9300c6946c2", - "url": "/route-calcoloNumerico.chunk.abaa3.esm.js" + "revision": "67eea30b78c90f166e5f", + "url": "/route-calcoloNumerico.chunk.d6955.esm.js" }, { "revision": "9892b86fc399d72f83cd", @@ -72,12 +72,12 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([ "url": "/route-mingwinstall.chunk.5a95a.css" }, { - "revision": "762b1b1f93c88d329280", - "url": "/route-ottimizzazioneLineare.chunk.353b8.esm.js" + "revision": "0d0835c574dff04dedbe", + "url": "/route-ottimizzazioneLineare.chunk.ce59d.css" }, { - "revision": "762b1b1f93c88d329280", - "url": "/route-ottimizzazioneLineare.chunk.9a20b.css" + "revision": "0d0835c574dff04dedbe", + "url": "/route-ottimizzazioneLineare.chunk.f48cc.esm.js" }, { "revision": "675260c6a85b3fa1af79", diff --git a/docs/precache-manifest.c174bc8e42d4199c747cda8554c67ae3.js b/docs/precache-manifest.4c3e7a8015e5e75e77ad3c23bfc02e4c.js similarity index 79% rename from docs/precache-manifest.c174bc8e42d4199c747cda8554c67ae3.js rename to docs/precache-manifest.4c3e7a8015e5e75e77ad3c23bfc02e4c.js index 2281b68..a4f3d8c 100644 --- a/docs/precache-manifest.c174bc8e42d4199c747cda8554c67ae3.js +++ b/docs/precache-manifest.4c3e7a8015e5e75e77ad3c23bfc02e4c.js @@ -4,15 +4,15 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([ "url": "/assets/icon.png" }, { - "revision": "fb7165efb31d4ed080a7", + "revision": "f6a318cdb017950fbd70", "url": "/bundle.b01bd.css" }, { - "revision": "fb7165efb31d4ed080a7", - "url": "/bundle.fb716.js" + "revision": "f6a318cdb017950fbd70", + "url": "/bundle.f6a31.js" }, { - "revision": "01cbae314274c5f1fe7aeb6f7f7dba89", + "revision": "069b562e730807a92486cb63b3fd886f", "url": "/index.html" }, { @@ -40,12 +40,12 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([ "url": "/route-basiDiDati.chunk.e409b.css" }, { - "revision": "b64db060b9300c6946c2", + "revision": "67eea30b78c90f166e5f", "url": "/route-calcoloNumerico.chunk.4d04d.css" }, { - "revision": "b64db060b9300c6946c2", - "url": "/route-calcoloNumerico.chunk.b64db.js" + "revision": "67eea30b78c90f166e5f", + "url": "/route-calcoloNumerico.chunk.67eea.js" }, { "revision": "9892b86fc399d72f83cd", @@ -72,12 +72,12 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([ "url": "/route-mingwinstall.chunk.5a95a.css" }, { - "revision": "762b1b1f93c88d329280", - "url": "/route-ottimizzazioneLineare.chunk.762b1.js" + "revision": "0d0835c574dff04dedbe", + "url": "/route-ottimizzazioneLineare.chunk.0d083.js" }, { - "revision": "762b1b1f93c88d329280", - "url": "/route-ottimizzazioneLineare.chunk.9a20b.css" + "revision": "0d0835c574dff04dedbe", + "url": "/route-ottimizzazioneLineare.chunk.ce59d.css" }, { "revision": "675260c6a85b3fa1af79", @@ -100,7 +100,7 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([ "url": "/sw-debug.js" }, { - "revision": "1d851c65b9afa5a7ebfe0d8c037816cf", + "revision": "282974af009cd3a95c1d5fe7f3bcb17e", "url": "/sw-esm.js" }, { diff --git a/docs/push-manifest.json b/docs/push-manifest.json index 081c856..9ace92e 100644 --- a/docs/push-manifest.json +++ b/docs/push-manifest.json @@ -1 +1 @@ -{"/":{"bundle.b01bd.css":{"type":"style","weight":1},"bundle.74134.esm.js":{"type":"script","weight":1},"route-home.chunk.008cd.esm.js":{"type":"script","weight":0.9},"route-home.chunk.81f93.css":{"type":"style","weight":0.9}},"/apprendimentoSistemiArtificiali~route-ottimizzazioneLineare":{"bundle.b01bd.css":{"type":"style","weight":1},"bundle.74134.esm.js":{"type":"script","weight":1},"route-apprendimentoSistemiArtificiali~route-ottimizzazioneLineare.chunk.bea71.esm.js":{"type":"script","weight":0.9}},"/apprendimentoSistemiArtificiali":{"bundle.b01bd.css":{"type":"style","weight":1},"bundle.74134.esm.js":{"type":"script","weight":1},"route-apprendimentoSistemiArtificiali.chunk.8dc12.esm.js":{"type":"script","weight":0.9},"route-apprendimentoSistemiArtificiali~route-ottimizzazioneLineare.chunk.2ca12.css":{"type":"style","weight":0.9},"route-apprendimentoSistemiArtificiali~route-ottimizzazioneLineare.chunk.bea71.esm.js":{"type":"script","weight":0.9}},"/basiDiDati":{"bundle.b01bd.css":{"type":"style","weight":1},"bundle.74134.esm.js":{"type":"script","weight":1},"route-basiDiDati.chunk.1c7f7.esm.js":{"type":"script","weight":0.9},"route-basiDiDati.chunk.e409b.css":{"type":"style","weight":0.9}},"/calcoloNumerico":{"bundle.b01bd.css":{"type":"style","weight":1},"bundle.74134.esm.js":{"type":"script","weight":1},"route-calcoloNumerico.chunk.abaa3.esm.js":{"type":"script","weight":0.9},"route-calcoloNumerico.chunk.4d04d.css":{"type":"style","weight":0.9}},"/fisica":{"bundle.b01bd.css":{"type":"style","weight":1},"bundle.74134.esm.js":{"type":"script","weight":1},"route-fisica.chunk.953ff.esm.js":{"type":"script","weight":0.9},"route-fisica.chunk.598fe.css":{"type":"style","weight":0.9}},"/mingwinstall":{"bundle.b01bd.css":{"type":"style","weight":1},"bundle.74134.esm.js":{"type":"script","weight":1},"route-mingwinstall.chunk.24a27.esm.js":{"type":"script","weight":0.9},"route-mingwinstall.chunk.5a95a.css":{"type":"style","weight":0.9}},"/ottimizzazioneLineare":{"bundle.b01bd.css":{"type":"style","weight":1},"bundle.74134.esm.js":{"type":"script","weight":1},"route-ottimizzazioneLineare.chunk.353b8.esm.js":{"type":"script","weight":0.9},"route-apprendimentoSistemiArtificiali~route-ottimizzazioneLineare.chunk.2ca12.css":{"type":"style","weight":0.9},"route-apprendimentoSistemiArtificiali~route-ottimizzazioneLineare.chunk.bea71.esm.js":{"type":"script","weight":0.9},"route-ottimizzazioneLineare.chunk.9a20b.css":{"type":"style","weight":0.9}},"/statistica":{"bundle.b01bd.css":{"type":"style","weight":1},"bundle.74134.esm.js":{"type":"script","weight":1},"route-statistica.chunk.8a057.esm.js":{"type":"script","weight":0.9},"route-statistica.chunk.4bfa5.css":{"type":"style","weight":0.9}},"/vldigeometria":{"bundle.b01bd.css":{"type":"style","weight":1},"bundle.74134.esm.js":{"type":"script","weight":1},"route-vldigeometria.chunk.76957.esm.js":{"type":"script","weight":0.9},"route-vldigeometria.chunk.96070.css":{"type":"style","weight":0.9}}} \ No newline at end of file +{"/":{"bundle.b01bd.css":{"type":"style","weight":1},"bundle.ca0cc.esm.js":{"type":"script","weight":1},"route-home.chunk.008cd.esm.js":{"type":"script","weight":0.9},"route-home.chunk.81f93.css":{"type":"style","weight":0.9}},"/apprendimentoSistemiArtificiali~route-ottimizzazioneLineare":{"bundle.b01bd.css":{"type":"style","weight":1},"bundle.ca0cc.esm.js":{"type":"script","weight":1},"route-apprendimentoSistemiArtificiali~route-ottimizzazioneLineare.chunk.bea71.esm.js":{"type":"script","weight":0.9}},"/apprendimentoSistemiArtificiali":{"bundle.b01bd.css":{"type":"style","weight":1},"bundle.ca0cc.esm.js":{"type":"script","weight":1},"route-apprendimentoSistemiArtificiali.chunk.8dc12.esm.js":{"type":"script","weight":0.9},"route-apprendimentoSistemiArtificiali~route-ottimizzazioneLineare.chunk.2ca12.css":{"type":"style","weight":0.9},"route-apprendimentoSistemiArtificiali~route-ottimizzazioneLineare.chunk.bea71.esm.js":{"type":"script","weight":0.9}},"/basiDiDati":{"bundle.b01bd.css":{"type":"style","weight":1},"bundle.ca0cc.esm.js":{"type":"script","weight":1},"route-basiDiDati.chunk.1c7f7.esm.js":{"type":"script","weight":0.9},"route-basiDiDati.chunk.e409b.css":{"type":"style","weight":0.9}},"/calcoloNumerico":{"bundle.b01bd.css":{"type":"style","weight":1},"bundle.ca0cc.esm.js":{"type":"script","weight":1},"route-calcoloNumerico.chunk.d6955.esm.js":{"type":"script","weight":0.9},"route-calcoloNumerico.chunk.4d04d.css":{"type":"style","weight":0.9}},"/fisica":{"bundle.b01bd.css":{"type":"style","weight":1},"bundle.ca0cc.esm.js":{"type":"script","weight":1},"route-fisica.chunk.953ff.esm.js":{"type":"script","weight":0.9},"route-fisica.chunk.598fe.css":{"type":"style","weight":0.9}},"/mingwinstall":{"bundle.b01bd.css":{"type":"style","weight":1},"bundle.ca0cc.esm.js":{"type":"script","weight":1},"route-mingwinstall.chunk.24a27.esm.js":{"type":"script","weight":0.9},"route-mingwinstall.chunk.5a95a.css":{"type":"style","weight":0.9}},"/ottimizzazioneLineare":{"bundle.b01bd.css":{"type":"style","weight":1},"bundle.ca0cc.esm.js":{"type":"script","weight":1},"route-ottimizzazioneLineare.chunk.f48cc.esm.js":{"type":"script","weight":0.9},"route-apprendimentoSistemiArtificiali~route-ottimizzazioneLineare.chunk.2ca12.css":{"type":"style","weight":0.9},"route-apprendimentoSistemiArtificiali~route-ottimizzazioneLineare.chunk.bea71.esm.js":{"type":"script","weight":0.9},"route-ottimizzazioneLineare.chunk.ce59d.css":{"type":"style","weight":0.9}},"/statistica":{"bundle.b01bd.css":{"type":"style","weight":1},"bundle.ca0cc.esm.js":{"type":"script","weight":1},"route-statistica.chunk.8a057.esm.js":{"type":"script","weight":0.9},"route-statistica.chunk.4bfa5.css":{"type":"style","weight":0.9}},"/vldigeometria":{"bundle.b01bd.css":{"type":"style","weight":1},"bundle.ca0cc.esm.js":{"type":"script","weight":1},"route-vldigeometria.chunk.76957.esm.js":{"type":"script","weight":0.9},"route-vldigeometria.chunk.96070.css":{"type":"style","weight":0.9}}} \ No newline at end of file diff --git a/docs/route-calcoloNumerico.chunk.67eea.js b/docs/route-calcoloNumerico.chunk.67eea.js new file mode 100644 index 0000000..ad3ef9a --- /dev/null +++ b/docs/route-calcoloNumerico.chunk.67eea.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[5],{"2w3n":function(n){n.exports={example:"example__2PzAa"}},"3k98":function(n){n.exports={todo:"todo__1UVRh"}},"6GOG":function(n,t,e){"use strict";e.r(t),function(n){function i(){var n=A(["\frac{Vert x - y Vert}{Vert x Vert}"],["\\frac{\\Vert x - y \\Vert}{\\Vert x \\Vert}"]);return i=function(){return n},n}function r(){var n=A(["Vert A Vert_2 = sqrt{\rho ( A^T \times A ) }"],["\\Vert A \\Vert_2 = \\sqrt{\\rho ( A^T \\times A ) }"]);return r=function(){return n},n}function o(){var n=A(["Vert A Vert_1 = max_{j = 1..n} sum_{i = 1}^n | a_{ij} |"],["\\Vert A \\Vert_1 = max_{j = 1..n} \\sum_{i = 1}^n | a_{ij} |"]);return o=function(){return n},n}function l(){var n=A(["Vert A Vert_infty = max_{i = 1..n} sum_{j = 1}^n | a_{ij} |"],["\\Vert A \\Vert_\\infty = max_{i = 1..n} \\sum_{j = 1}^n | a_{ij} |"]);return l=function(){return n},n}function a(){var n=A(["Vert A Vert = sup_{x in mathbb{R}, x \neq 0} \frac{Vert A cdot x Vert}{Vert x Vert}"],["\\Vert A \\Vert = sup_{x \\in \\mathbb{R}, x \\neq 0} \\frac{\\Vert A \\cdot x \\Vert}{\\Vert x \\Vert}"]);return a=function(){return n},n}function u(){var n=A(["Vert x Vert_2 = sqrt{sum_{i = 1}^n x_i^2}"],["\\Vert x \\Vert_2 = \\sqrt{\\sum_{i = 1}^n x_i^2}"]);return u=function(){return n},n}function c(){var n=A(["Vert x Vert_1 = sum_{i = 1}^n | x_i |"],["\\Vert x \\Vert_1 = \\sum_{i = 1}^n | x_i |"]);return c=function(){return n},n}function s(){var n=A(["Vert x Vert_infty = max_{i = 1..n} | x_i |"],["\\Vert x \\Vert_\\infty = max_{i = 1..n} | x_i |"]);return s=function(){return n},n}function p(){var n=A(["x^* = fl left( \frac{2}{4} \right)"],["x^* = fl \\left( \\frac{2}{4} \\right)"]);return p=function(){return n},n}function _(){var n=A(["x^* = fl ( 2 cdot t )"],["x^* = fl ( 2 \\cdot t )"]);return _=function(){return n},n}function d(){var n=A(["t = fl left( \frac{1}{4} \right)"],["t = fl \\left( \\frac{1}{4} \\right)"]);return d=function(){return n},n}function f(){var n=A(["2x = 4"]);return f=function(){return n},n}function m(){var n=A(["y = \frac{1}{x}"],["y = \\frac{1}{x}"]);return m=function(){return n},n}function h(){var n=A(["epsilon_x = epsilon_y = dots = 0"],["\\epsilon_x = \\epsilon_y = \\dots = 0"]);return h=function(){return n},n}function v(){var n=A(["epsilon_1 = epsilon_2 = dots = 0"],["\\epsilon_1 = \\epsilon_2 = \\dots = 0"]);return v=function(){return n},n}function g(){var n=A(["fl(x) = (x)(1 + epsilon_x)"],["fl(x) = (x)(1 + \\epsilon_x)"]);return g=function(){return n},n}function x(){var n=A(["mathbb{R}"],["\\mathbb{R}"]);return x=function(){return n},n}function b(){var n=A(["\frac{1}{2}"],["\\frac{1}{2}"]);return b=function(){return n},n}function y(){var n=A(["E_r leq k cdot \beta^{1-t}"],["E_r \\leq k \\cdot \\beta^{1-t}"]);return y=function(){return n},n}function V(){var n=A(["\forall alpha \neq 0, E_r = \frac{E_a}{left | alpha \right |}"],["\\forall \\alpha \\neq 0, E_r = \\frac{E_a}{\\left | \\alpha \\right |}"]);return V=function(){return n},n}function z(){var n=A(["E_a = left | alpha - alpha^* \right |"],["E_a = \\left | \\alpha - \\alpha^* \\right |"]);return z=function(){return n},n}function E(){var n=A(["alpha^*"],["\\alpha^*"]);return E=function(){return n},n}function w(){var n=A(["alpha"],["\\alpha"]);return w=function(){return n},n}function A(n,t){return t||(t=n.slice(0)),n.raw=t,n}e.d(t,"default",(function(){return M}));var L=e("hosL"),H=e("lL4N"),j=e("OMhl"),q=e("HKwK"),C=e("PEwj"),N=e("jXlC"),k=e("BSmf"),O=String.raw,M=function(t){function e(){return t.apply(this,arguments)||this}var A,L;return L=t,(A=e).prototype=Object.create(L.prototype),A.prototype.constructor=A,A.__proto__=L,e.prototype.render=function(){return n("div",null,n("h1",null,"Calcolo Numerico"),n(H.a,{title:"Unimore"},n(q.a,{title:"Email della prof.ssa"},n("p",null,n("a",{href:"mailto:silvia.bonettini@unimore.it"},"silvia.bonettini@unimore.it"))),n(q.a,{title:"Orale"},n("p",null,"E' composto da:"),n("ul",null,n("li",null,"2 domande sugli argomenti teorici"),n("li",null,"1 domanda di implementazione algoritmo in MATLAB ",n("small",null,"(facoltativa per i punteggi migliori del TBL)")))),n(q.a,{title:"Prossimi appelli"},n("ol",null,n("li",null,n(k.a,{to:"2020-06-15"})),n("li",null,n(k.a,{to:"2020-06-22"})),n("li",null,n(k.a,{to:"2020-07-06"})),n("li",null,n(k.a,{to:"2020-07-13"})),n("li",null,n(k.a,{to:"2020-07-20"})),n("li",null,n(k.a,{to:"2020-07-27"}))))),n(H.a,{title:"Algoritmi"},n(q.a,{title:"Algoritmi numerici"},n("p",null,"Algoritmi che hanno:"),n("ul",null,n("li",null,"numeri reali in input e output"),n("li",null,"successioni delle quattro operazioni aritmetiche fondamentali come passi")))),n(H.a,{title:"Errore di rappresentazione"},n(q.a,{title:"Errore di rappresentazione"},n("p",null,"Con i numeri floating point può capitare che un certo numero ",n(j.a,null,O(w()))," non sia rappresentato correttamente."),n("p",null,"In tal caso, il numero si indica con ",n(j.a,null,O(E())),".")),n(q.a,{title:"Errore assoluto"},n("p",null,"È la differenza tra il numero desiderato e il numero rappresentato:"),n("p",null,n(j.a,null,O(z()))),n(C.a,null,"Vale sempre 0, tranne in caso di underflow o overflow.")),n(q.a,{title:"Errore relativo"},n("p",null,"Indica quanto il numero rappresentato differisce dal numero desiderato:"),n("p",null,n(j.a,null,O(V()))))),n(H.a,{title:"Floating point"},n(q.a,{title:"Precisione di macchina"},n("p",null,"L'errore relativo di un numero reale rappresentato in virgola mobile è minore o uguale alla ",n("i",null,"precisione di macchina"),":"),n("p",null,n(j.a,null,O(y()))),n("ul",null,n("li",null,n(j.a,null,"\\beta")," è uguale alla base utilizzata (solitamente 2)."),n("li",null,n(j.a,null,"t")," è uguale al numero di cifre della mantissa."),n("li",null,n(j.a,null,"k")," è uguale a ",n(j.a,null,"1")," se il numero viene rappresentato per troncamento oppure a ",n(j.a,null,O(b()))," se viene rappresentato per arrotondamento.")))),n(H.a,{title:"Operazioni di macchina"},n(q.a,{title:"Un nuovo insieme"},n("p",null,"L'insieme ",n(j.a,null,"F")," è il sottoinsieme dei numeri reali rappresentabili in floating point dalla macchina che stiamo usando."),n("p",null,"Operazioni tra elementi di ",n(j.a,null,"F")," producono risultati in ",n(j.a,null,O(x())),", che però decaderanno nuovamente a elementi di ",n(j.a,null,"F"),", perdendo informazioni."),n("p",null,"Il teorema della precisione di macchina si applica quindi anche ai risultati delle operazioni.")),n(q.a,{title:"Caratteristiche delle operazioni di macchina"},n("ul",null,n("li",null,"Hanno più di un elemento neutro."),n("li",null,"Un numero ha più opposti."),n("li",null,"Non sono associative."),n("li",null,"Non sono distributive."),n("li",null,"Non vale la legge di annullamento del prodotto."))),n(q.a,{title:"La funzione fl"},n("p",null,"Indica che un valore è soggetto alla precisione di macchina:"),n("p",null,n(j.a,null,O(g()))))),n(H.a,{title:"Errori nelle operazioni di macchina"},n(q.a,{title:"Errore inerente"},n("p",null,"Errore dipendente ",n("b",null,"solo dai dati"),"."),n("p",null,n(N.a,null,"TODO: qual è la formula?")),n("p",null,"È l'errore che si presenterebbe se ",n(j.a,null,O(v())),".")),n(q.a,{title:"Errore algoritmico"},n("p",null,"Errore dipendente ",n("b",null,"solo dalle operazioni effettuate"),"."),n("p",null,n(N.a,null,"TODO: qual è la formula?")),n("p",null,"È l'errore che si presenterebbe se ",n(j.a,null,O(h())),"."))),n(H.a,null,n(q.a,{title:"Problema ben condizionato"},n("p",null,"Un problema poco sensibile all'",n("b",null,"errore inerente"),"."),n(C.a,null,n(j.a,null,O(m()))," è mal condizionato intorno allo 0 e ben condizionato lontano dallo 0.")),n(q.a,{title:"Algoritmo stabile"},n("p",null,"Un algoritmo poco sensibile all'",n("b",null,"errore algoritmico"),"."),n(C.a,null,n("p",null,"Cerchiamo un algoritmo che risolva ",n(j.a,null,O(f())),"."),n("p",null,"Calcolare prima ",n(j.a,null,O(d()))," e poi ",n(j.a,null,O(_()))," porta a una perdita di precisione."),n("p",null,"Calcolare direttamente ",n(j.a,null,O(p()))," non ha alcuna perdita di precisione e rende l'algoritmo ",n("b",null,"più stabile")," del precedente.")))),n(H.a,null,n(q.a,{title:"Indice di condizionamento"},n("p",null,"È il coefficiente di proporzionalità tra i dati e l'",n("b",null,"errore inerente"),"."),n("p",null,"Essendo sempre maggiore di uno, si può dire che sia un coefficiente di amplificazione."),n("p",null,"Minore è l'indice di condizionamento, meglio condizionato è un problema.")),n(q.a,{title:"Indice algoritmico"},n("p",null,"È il coefficiente di proporzionalità tra i dati e l'",n("b",null,"errore algoritmico"),"."),n("p",null,"Essendo sempre maggiore di uno, si può dire che sia un coefficiente di amplificazione."))),n(H.a,{title:"Le cose più difficili di Algebra Lineare"},n(q.a,{title:"Matrice singolare"},n("p",null,"Matrice con determinante 0."),n("p",null,"Le matrici singolari ",n("b",null,"non sono invertibili"),"."))),n(H.a,{title:"Norme"},n(q.a,{title:"Norma vettoriale"},n("p",null,"Funzione che associa un valore positivo a ogni vettore diverso da 0, e 0 al vettore zero."),n(C.a,null,n("a",{href:"https://it.wikipedia.org/wiki/Norma_(matematica)#/media/File:Vector_norms.svg"},"Esempi su Wikipedia"))),n(q.a,{title:"Norma a infinito"},n("p",null,"Massimo dei valori assoluti di tutti gli elementi del vettore."),n("p",null,n(j.a,null,O(s())))),n(q.a,{title:"Norma a 1"},n("p",null,"Somma dei valori assoluti di tutti gli elementi del vettore."),n("p",null,n(j.a,null,O(c())))),n(q.a,{title:"Norma a 2"},n("p",null,"Radice quadrata della somma dei quadrati di tutti gli elementi del vettore."),n("p",null,n(j.a,null,O(u()))))),n(H.a,null,n(q.a,{title:"Norma matriciale indotta"},n("p",null,"Funzione che associa un valore positivo a ogni matrice diversa da 0, e 0 alla matrice zero."),n("p",null,"Si ricavano dalle norme vettoriali:"),n("p",null,n(j.a,null,O(a()))),n(C.a,null,n(j.a,null,"sup")," è l'estremo superiore di un insieme. E' molto simile al massimo: ricordi le prime lezioni di Analisi?")),n(q.a,{title:"Norma a infinito"},n("p",null,"Massimo delle somme dei valori assoluti di tutti gli elementi di ogni riga di una matrice."),n("p",null,n(j.a,null,O(l())))),n(q.a,{title:"Norma a 1"},n("p",null,"Massimo delle somme dei valori assoluti di tutti gli elementi di ogni colonna di una matrice."),n("p",null,n(j.a,null,O(o())))),n(q.a,{title:"Norma a 2"},n("p",null,"Radice quadrata del rango del prodotto tra una matrice e la sua trasposta."),n("p",null,n(j.a,null,O(r()))))),n(H.a,null,n(q.a,{title:"Errore relativo tra vettori e matrici"},n("p",null,"Le norme sono usate per calcolare l'errore relativo tra due vettori o matrici:"),n("p",null,n(j.a,null,O(i()))))),n(H.a,{title:"Fattorizzazione"},n(q.a,{title:"Cos'è?"},n("p",null,"La fattorizzazione è il processo che permette di risolvere sistemi di equazioni lineari rappresentati in forma di matrice."),n("p",null,"Esistono molteplici algoritmi in grado di realizzarla: mentre tutti portano alla stessa soluzione, possono avere ",n("b",null,"velocità")," e ",n("b",null,"indici algoritmici")," diversi."),n("p",null,"Il sistema lineare da risolvere viene diviso in due parti: la ",n("i",null,"matrice dei coefficienti")," e il ",n("i",null,"vettore termine noto"),".")),n(q.a,{title:"Teorema di Rouché-Capélli"},n("p",null))))},e}(L.Component)}.call(this,e("hosL").h)},BSmf:function(n,t,e){"use strict";(function(n){e.d(t,"a",(function(){return l}));var i=e("hosL"),r=e("EfTa"),o=e.n(r),l=function(t){function e(){var n;return(n=t.call(this)||this).state={now:Date.now()},n.timer=null,n}var i,r;r=t,(i=e).prototype=Object.create(r.prototype),i.prototype.constructor=i,i.__proto__=r;var l=e.prototype;return l.componentDidMount=function(){var n=this;this.timer=setInterval((function(){n.setState({now:Date.now()})}),1e3)},l.componentWillUnmount=function(){null!==this.timer&&clearInterval(this.timer)},l.render=function(){var t="Unknown date",e=o.a.timer,i={milliseconds:"?",seconds:"?",minutes:"?",hours:"?",days:"?"};if(this.props.to){var r=(t=new Date(this.props.to))-this.state.now;r>0?i={milliseconds:r%1e3,seconds:Math.floor(r/1e3)%60,minutes:Math.floor(r/6e4)%60,hours:Math.floor(r/36e5)%24,days:Math.floor(r/864e5)}:(i={milliseconds:0,seconds:0,minutes:0,hours:0,days:0},e+=" "+o.a.expired)}else e+=" "+o.a.unknown;return n("div",{class:e,title:t},n("div",{class:o.a.days+" "+o.a.count},i.days),n("div",{className:o.a.days+" "+o.a.text},"giorni"),n("div",{class:o.a.hours+" "+o.a.count},i.hours),n("div",{className:o.a.hours+" "+o.a.text},"ore"),n("div",{class:o.a.minutes+" "+o.a.count},i.minutes),n("div",{className:o.a.minutes+" "+o.a.text},"minuti"),n("div",{class:o.a.seconds+" "+o.a.count},i.seconds),n("div",{class:o.a.seconds+" "+o.a.text},"secondi"),n("div",{class:o.a.remaining},"rimasti"))},e}(i.Component)}).call(this,e("hosL").h)},EfTa:function(n){n.exports={timer:"timer__K0K_h",days:"days__vN3tf",hours:"hours__3v0KX",minutes:"minutes__vkYk7",seconds:"seconds__3gJ99",count:"count__1VV4k",text:"text__khS4i",remaining:"remaining__zUECg",unknown:"unknown__af307",expired:"expired__1rtHB"}},HKwK:function(n,t,e){"use strict";(function(n){e.d(t,"a",(function(){return o}));var i=e("r4EX"),r=e.n(i),o=function(t){function e(){return t.apply(this,arguments)||this}var i,o;o=t,(i=e).prototype=Object.create(o.prototype),i.prototype.constructor=i,i.__proto__=o;var l=e.prototype;return l.getStyle=function(){return r.a.panel},l.render=function(){var t=null;return void 0!==this.props.title&&(t=n("h3",null,this.props.title)),n("div",{class:this.getStyle(),id:this.props.id},t,this.props.children)},e}(e("hosL").Component)}).call(this,e("hosL").h)},OMhl:function(n,t,e){"use strict";(function(n){var i=e("p7QU"),r=e.n(i),o=e("QRet"),l=e("8CDw"),a=e("wQ73");t.a=function(t){var e=Object(o.b)(l.a),i=Object(o.b)(a.a);return n("img",{src:"https://latex.codecogs.com/svg.latex?"+(((void 0===t.inline?i:t.inline)?"\\inline":"")+" {\\color{"+e+"} "+t.children+" }"),alt:t.children,title:t.children,class:r.a.latex})}}).call(this,e("hosL").h)},PEwj:function(n,t,e){"use strict";(function(n){var i=e("2w3n"),r=e.n(i);e("hosL");t.a=function(t){return n("div",{class:r.a.example},t.children)}}).call(this,e("hosL").h)},QRet:function(n,t,e){"use strict";function i(n){V.options.__h&&V.options.__h(b);var t=b.__H||(b.__H={__:[],__h:[]});return n>=t.__.length&&t.__.push({}),t.__[n]}function r(n){return o(g,n)}function o(n,t,e){var r=i(x++);return r.__c||(r.__c=b,r.__=[e?e(t):g(void 0,t),function(t){var e=n(r.__[0],t);r.__[0]!==e&&(r.__[0]=e,r.__c.setState({}))}]),r.__}function l(n,t){var e=i(x++);v(e.__H,t)&&(e.__=n,e.__H=t,b.__H.__h.push(e))}function a(n,t){var e=i(x++);v(e.__H,t)&&(e.__=n,e.__H=t,b.__h.push(e))}function u(n){return s((function(){return{current:n}}),[])}function c(n,t,e){a((function(){"function"==typeof n?n(t()):n&&(n.current=t())}),null==e?e:e.concat(n))}function s(n,t){var e=i(x++);return v(e.__H,t)?(e.__H=t,e.__h=n,e.__=n()):e.__}function p(n,t){return s((function(){return n}),t)}function _(n){var t=b.context[n.__c];if(!t)return n.__;var e=i(x++);return null==e.__&&(e.__=!0,t.sub(b)),t.props.value}function d(n,t){V.options.useDebugValue&&V.options.useDebugValue(t?t(n):n)}function f(){z.some((function(n){if(n.__P)try{n.__H.__h.forEach(m),n.__H.__h.forEach(h),n.__H.__h=[]}catch(t){return n.__H.__h=[],V.options.__e(t,n.__v),!0}})),z=[]}function m(n){n.t&&n.t()}function h(n){var t=n.__();"function"==typeof t&&(n.t=t)}function v(n,t){return!n||t.some((function(t,e){return t!==n[e]}))}function g(n,t){return"function"==typeof t?t(n):t}e.d(t,"j",(function(){return r})),e.d(t,"h",(function(){return o})),e.d(t,"d",(function(){return l})),e.d(t,"f",(function(){return a})),e.d(t,"i",(function(){return u})),e.d(t,"e",(function(){return c})),e.d(t,"g",(function(){return s})),e.d(t,"a",(function(){return p})),e.d(t,"b",(function(){return _})),e.d(t,"c",(function(){return d}));var x,b,y,V=e("hosL"),z=[],E=V.options.__r,w=V.options.diffed,A=V.options.__c,L=V.options.unmount;V.options.__r=function(n){E&&E(n),x=0,(b=n.__c).__H&&(b.__H.__h.forEach(m),b.__H.__h.forEach(h),b.__H.__h=[])},V.options.diffed=function(n){w&&w(n);var t=n.__c;if(t){var e=t.__H;e&&e.__h.length&&(1!==z.push(t)&&y===V.options.requestAnimationFrame||((y=V.options.requestAnimationFrame)||function(n){var t,e=function(){clearTimeout(i),cancelAnimationFrame(t),setTimeout(n)},i=setTimeout(e,100);"undefined"!=typeof window&&(t=requestAnimationFrame(e))})(f))}},V.options.__c=function(n,t){t.some((function(n){try{n.__h.forEach(m),n.__h=n.__h.filter((function(n){return!n.__||h(n)}))}catch(e){t.some((function(n){n.__h&&(n.__h=[])})),t=[],V.options.__e(e,n.__v)}})),A&&A(n,t)},V.options.unmount=function(n){L&&L(n);var t=n.__c;if(t){var e=t.__H;if(e)try{e.__.forEach((function(n){return n.t&&n.t()}))}catch(n){V.options.__e(n,t.__v)}}}},eCjK:function(n){n.exports={split:"split__3dL9r",splitparent:"splitparent__2H-vS",splitchild:"splitchild__1B-Jt"}},jXlC:function(n,t,e){"use strict";(function(n){e.d(t,"a",(function(){return o}));var i=e("3k98"),r=e.n(i),o=function(t){function e(){return t.apply(this,arguments)||this}var i,o;return o=t,(i=e).prototype=Object.create(o.prototype),i.prototype.constructor=i,i.__proto__=o,e.prototype.render=function(){return n("span",{class:r.a.todo},this.props.children)},e}(e("hosL").Component)}).call(this,e("hosL").h)},lL4N:function(n,t,e){"use strict";(function(n){e.d(t,"a",(function(){return o}));var i=e("eCjK"),r=e.n(i),o=function(t){function e(){return t.apply(this,arguments)||this}var i,o;return o=t,(i=e).prototype=Object.create(o.prototype),i.prototype.constructor=i,i.__proto__=o,e.prototype.render=function(){var t,e=null;return void 0!==this.props.title&&(e=n("h2",null,this.props.title)),t=Array.isArray(this.props.children)?this.props.children.map((function(t){return n("div",{class:r.a.splitchild},t)})):n("div",{class:r.a.splitchild},this.props.children),n("div",{class:r.a.split},e,n("div",{class:r.a.splitparent},t))},e}(e("hosL").Component)}).call(this,e("hosL").h)},p7QU:function(n){n.exports={latex:"latex__3zlIu"}},r4EX:function(n){n.exports={panel:"panel__7bYPC"}},wQ73:function(n,t,e){"use strict";var i=e("hosL");t.a=Object(i.createContext)(!0)}}]); +//# sourceMappingURL=route-calcoloNumerico.chunk.67eea.js.map \ No newline at end of file diff --git a/docs/route-calcoloNumerico.chunk.67eea.js.map b/docs/route-calcoloNumerico.chunk.67eea.js.map new file mode 100644 index 0000000..5b8fbd0 --- /dev/null +++ b/docs/route-calcoloNumerico.chunk.67eea.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./components/Example.less","webpack:///./components/old/todo.css","webpack:///./routes/calcoloNumerico.js","webpack:///./components/old/timer.js","webpack:///./components/old/timer.less","webpack:///./components/old/panel.js","webpack:///./components/Latex.js","webpack:///./components/example.js","webpack:///../src/index.js","webpack:///./components/old/split.css","webpack:///./components/old/todo.js","webpack:///./components/old/split.js","webpack:///./components/Latex.css","webpack:///./components/old/panel.less","webpack:///./contexts/LatexDefaultInline.js"],"names":["module","exports","r","String","raw","CalcoloNumerico","render","title","href","to","Component","Timer","state","Date","now","timer","componentDidMount","this","setInterval","setState","componentWillUnmount","clearInterval","dateTo","className","style","parts","milliseconds","seconds","minutes","hours","days","props","timeLeft","Math","floor","expired","unknown","class","count","text","remaining","Panel","getStyle","panel","undefined","id","children","renderColor","useContext","LatexRenderColor","defaultInline","LatexDefaultInline","src","inline","alt","latex","example","getHookState","index","options","_hook","currentComponent","hooks","__hooks","_list","_pendingEffects","length","push","useState","initialState","useReducer","invokeOrReturn","reducer","init","hookState","currentIndex","_component","_value","nextValue","action","useEffect","callback","args","argsChanged","_args","useLayoutEffect","_renderCallbacks","useRef","initialValue","useMemo","current","useImperativeHandle","ref","createHandle","concat","factory","_factory","useCallback","context","provider","_id","_defaultValue","sub","value","useDebugValue","formatter","flushAfterPaintEffects","afterPaintEffects","some","component","_parentDom","forEach","invokeCleanup","invokeEffect","e","_catchError","_vnode","hook","_cleanup","result","oldArgs","newArgs","arg","f","prevRaf","oldBeforeRender","_render","oldAfterDiff","diffed","oldCommit","_commit","oldBeforeUnmount","unmount","vnode","c","requestAnimationFrame","raf","done","clearTimeout","timeout","cancelAnimationFrame","setTimeout","window","commitQueue","filter","cb","Todo","todo","Split","Array","isArray","map","element","splitchild","split","splitparent","createContext"],"mappings":"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","file":"route-calcoloNumerico.chunk.67eea.js","sourcesContent":["// extracted by mini-css-extract-plugin\nmodule.exports = {\"example\":\"example__2PzAa\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"todo\":\"todo__1UVRh\"};","import {Component} from 'preact'\nimport Split from \"../components/old/split\";\nimport Latex from \"../components/Latex\";\nimport Panel from \"../components/old/panel\";\nimport Example from \"../components/example\";\nimport Todo from \"../components/old/todo\";\nimport Timer from \"../components/old/timer\";\n\nconst r = String.raw;\n\nexport default class CalcoloNumerico extends Component {\n render() {\n return (\n
\n

Calcolo Numerico

\n \n \n

\n silvia.bonettini@unimore.it\n

\n
\n \n

\n E' composto da:\n

\n
    \n
  • 2 domande sugli argomenti teorici
  • \n
  • 1 domanda di implementazione algoritmo in MATLAB (facoltativa per i punteggi migliori del TBL)
  • \n
\n
\n \n
    \n
  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
\n
\n
\n \n \n

\n Algoritmi che hanno:\n

\n
    \n
  • numeri reali in input e output
  • \n
  • successioni delle quattro operazioni aritmetiche fondamentali come passi
  • \n
\n
\n
\n \n \n

\n Con i numeri floating point può capitare che un certo numero {r`\\alpha`} non sia rappresentato correttamente.\n

\n

\n In tal caso, il numero si indica con {r`\\alpha^*`}.\n

\n
\n \n

\n È la differenza tra il numero desiderato e il numero rappresentato:\n

\n

\n {r`E_a = \\left | \\alpha - \\alpha^* \\right |`}\n

\n \n Vale sempre 0, tranne in caso di underflow o overflow.\n \n
\n \n

\n Indica quanto il numero rappresentato differisce dal numero desiderato:\n

\n

\n {r`\\forall \\alpha \\neq 0, E_r = \\frac{E_a}{\\left | \\alpha \\right |}`}\n

\n
\n
\n \n \n

\n L'errore relativo di un numero reale rappresentato in virgola mobile è minore o uguale alla precisione di macchina:\n

\n

\n {r`E_r \\leq k \\cdot \\beta^{1-t}`}\n

\n
    \n
  • \n \\beta è uguale alla base utilizzata (solitamente 2).\n
  • \n
  • \n t è uguale al numero di cifre della mantissa.\n
  • \n
  • \n k è uguale a 1 se il numero viene rappresentato per troncamento oppure a {r`\\frac{1}{2}`} se viene rappresentato per arrotondamento.\n
  • \n
\n
\n
\n \n \n

\n L'insieme F è il sottoinsieme dei numeri reali rappresentabili in floating point dalla macchina che stiamo usando.\n

\n

\n Operazioni tra elementi di F producono risultati in {r`\\mathbb{R}`}, che però decaderanno nuovamente a elementi di F, perdendo informazioni.\n

\n

\n Il teorema della precisione di macchina si applica quindi anche ai risultati delle operazioni.\n

\n
\n \n
    \n
  • Hanno più di un elemento neutro.
  • \n
  • Un numero ha più opposti.
  • \n
  • Non sono associative.
  • \n
  • Non sono distributive.
  • \n
  • Non vale la legge di annullamento del prodotto.
  • \n
\n
\n \n

\n Indica che un valore è soggetto alla precisione di macchina:\n

\n

\n {r`fl(x) = (x)(1 + \\epsilon_x)`}\n

\n
\n
\n \n \n

\n Errore dipendente solo dai dati.\n

\n

\n TODO: qual è la formula?\n

\n

\n È l'errore che si presenterebbe se {r`\\epsilon_1 = \\epsilon_2 = \\dots = 0`}.\n

\n
\n \n

\n Errore dipendente solo dalle operazioni effettuate.\n

\n

\n TODO: qual è la formula?\n

\n

\n È l'errore che si presenterebbe se {r`\\epsilon_x = \\epsilon_y = \\dots = 0`}.\n

\n
\n
\n \n \n

\n Un problema poco sensibile all'errore inerente.\n

\n \n {r`y = \\frac{1}{x}`} è mal condizionato intorno allo 0 e ben condizionato lontano dallo 0.\n \n
\n \n

\n Un algoritmo poco sensibile all'errore algoritmico.\n

\n \n

\n Cerchiamo un algoritmo che risolva {r`2x = 4`}.\n

\n

\n Calcolare prima {r`t = fl \\left( \\frac{1}{4} \\right)`} e poi {r`x^* = fl ( 2 \\cdot t )`} porta a una perdita di precisione.\n

\n

\n Calcolare direttamente {r`x^* = fl \\left( \\frac{2}{4} \\right)`} non ha alcuna perdita di precisione e rende l'algoritmo più stabile del precedente.\n

\n
\n
\n
\n \n \n

\n È il coefficiente di proporzionalità tra i dati e l'errore inerente.\n

\n

\n Essendo sempre maggiore di uno, si può dire che sia un coefficiente di amplificazione.\n

\n

\n Minore è l'indice di condizionamento, meglio condizionato è un problema.\n

\n
\n \n

\n È il coefficiente di proporzionalità tra i dati e l'errore algoritmico.\n

\n

\n Essendo sempre maggiore di uno, si può dire che sia un coefficiente di amplificazione.\n

\n
\n
\n \n \n

\n Matrice con determinante 0.\n

\n

\n Le matrici singolari non sono invertibili.\n

\n
\n
\n \n \n

\n Funzione che associa un valore positivo a ogni vettore diverso da 0, e 0 al vettore zero.\n

\n \n Esempi su Wikipedia\n \n
\n \n

\n Massimo dei valori assoluti di tutti gli elementi del vettore.\n

\n

\n {r`\\Vert x \\Vert_\\infty = max_{i = 1..n} | x_i |`}\n

\n
\n \n

\n Somma dei valori assoluti di tutti gli elementi del vettore.\n

\n

\n {r`\\Vert x \\Vert_1 = \\sum_{i = 1}^n | x_i |`}\n

\n
\n \n

\n Radice quadrata della somma dei quadrati di tutti gli elementi del vettore.\n

\n

\n {r`\\Vert x \\Vert_2 = \\sqrt{\\sum_{i = 1}^n x_i^2}`}\n

\n
\n
\n \n \n

\n Funzione che associa un valore positivo a ogni matrice diversa da 0, e 0 alla matrice zero.\n

\n

\n Si ricavano dalle norme vettoriali:\n

\n

\n {r`\\Vert A \\Vert = sup_{x \\in \\mathbb{R}, x \\neq 0} \\frac{\\Vert A \\cdot x \\Vert}{\\Vert x \\Vert}`}\n

\n \n sup è l'estremo superiore di un insieme. E' molto simile al massimo: ricordi le prime lezioni di Analisi?\n \n
\n \n

\n Massimo delle somme dei valori assoluti di tutti gli elementi di ogni riga di una matrice.\n

\n

\n {r`\\Vert A \\Vert_\\infty = max_{i = 1..n} \\sum_{j = 1}^n | a_{ij} |`}\n

\n
\n \n

\n Massimo delle somme dei valori assoluti di tutti gli elementi di ogni colonna di una matrice.\n

\n

\n {r`\\Vert A \\Vert_1 = max_{j = 1..n} \\sum_{i = 1}^n | a_{ij} |`}\n

\n
\n \n

\n Radice quadrata del rango del prodotto tra una matrice e la sua trasposta.\n

\n

\n {r`\\Vert A \\Vert_2 = \\sqrt{\\rho ( A^T \\times A ) }`}\n

\n
\n
\n \n \n

\n Le norme sono usate per calcolare l'errore relativo tra due vettori o matrici:\n

\n

\n {r`\\frac{\\Vert x - y \\Vert}{\\Vert x \\Vert}`}\n

\n
\n
\n \n \n

\n La fattorizzazione è il processo che permette di risolvere sistemi di equazioni lineari rappresentati in forma di matrice.\n

\n

\n Esistono molteplici algoritmi in grado di realizzarla: mentre tutti portano alla stessa soluzione, possono avere velocità e indici algoritmici diversi.\n

\n

\n Il sistema lineare da risolvere viene diviso in due parti: la matrice dei coefficienti e il vettore termine noto.\n

\n
\n \n

\n\n

\n
\n
\n
\n )\n }\n}\n","import {Component} from 'preact'\nimport style from \"./timer.less\"\n\n\nexport default class Timer extends Component {\n constructor() {\n super();\n this.state = {\n \"now\": Date.now()\n };\n this.timer = null;\n }\n\n componentDidMount() {\n this.timer = setInterval(() => {\n this.setState({\"now\": Date.now()})\n }, 1000)\n }\n\n componentWillUnmount() {\n if(this.timer !== null) {\n clearInterval(this.timer)\n }\n }\n\n render() {\n let dateTo = \"Unknown date\";\n let className = style.timer;\n\n let parts = {\n milliseconds: \"?\",\n seconds: \"?\",\n minutes: \"?\",\n hours: \"?\",\n days: \"?\",\n };\n\n if(this.props.to) {\n dateTo = new Date(this.props.to);\n let timeLeft = dateTo - this.state.now;\n\n if(timeLeft > 0) {\n parts = {\n milliseconds: timeLeft % 1000,\n seconds: Math.floor(timeLeft / 1000) % 60,\n minutes: Math.floor(timeLeft / 60000) % 60,\n hours: Math.floor(timeLeft / 3600000) % 24,\n days: Math.floor(timeLeft / 86400000),\n };\n }\n\n else {\n parts = {\n milliseconds: 0,\n seconds: 0,\n minutes: 0,\n hours: 0,\n days: 0,\n };\n\n className += \" \" + style.expired;\n }\n }\n else {\n className += \" \" + style.unknown;\n }\n\n return (\n
\n
\n {parts.days}\n
\n
\n giorni\n
\n
\n {parts.hours}\n
\n
\n ore\n
\n
\n {parts.minutes}\n
\n
\n minuti\n
\n
\n {parts.seconds}\n
\n
\n secondi\n
\n
\n rimasti\n
\n
\n )\n }\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"timer\":\"timer__K0K_h\",\"days\":\"days__vN3tf\",\"hours\":\"hours__3v0KX\",\"minutes\":\"minutes__vkYk7\",\"seconds\":\"seconds__3gJ99\",\"count\":\"count__1VV4k\",\"text\":\"text__khS4i\",\"remaining\":\"remaining__zUECg\",\"unknown\":\"unknown__af307\",\"expired\":\"expired__1rtHB\"};","import style from \"./panel.less\";\nimport { Component } from 'preact';\n\nexport default class Panel extends Component {\n\tgetStyle() {\n\t\treturn style.panel;\n\t};\n\n\trender() {\n\t\tlet title = null;\n\t\tif(this.props.title !== undefined) {\n\t\t\ttitle = (

{this.props.title}

);\n\t\t}\n\n\t\treturn (\n\t\t\t
\n\t\t\t\t{title}\n\t\t\t\t{this.props.children}\n\t\t\t
\n\t\t);\n\t}\n}\n","import style from './Latex.css';\nimport {useContext} from \"preact/hooks\";\nimport LatexRenderColor from \"../contexts/LatexRenderColor\";\nimport LatexDefaultInline from \"../contexts/LatexDefaultInline\";\n\nexport default function(props) {\n\t// black, blue, brown, cyan, darkgray, gray, green, lightgray, lime, magenta, olive, orange, pink, purple, red, teal, violet, white, yellow\n\tlet renderColor = useContext(LatexRenderColor);\n\tlet defaultInline = useContext(LatexDefaultInline);\n\n\tlet is_inline;\n\tif(props.inline === undefined) {\n\t\tis_inline = defaultInline;\n\t}\n\telse {\n\t\tis_inline = props.inline;\n\t}\n\n\tlet inline = is_inline ? `\\\\inline` : \"\";\n\tlet equation = `${inline} {\\\\color{${renderColor}} ${props.children} }`;\n\n\treturn (\n\t\t{props.children}\n\t\t\t\n\t);\n}\n","import style from \"./Example.less\";\r\nimport {Component} from \"preact\";\r\n\r\nexport default function(props) {\r\n return (\r\n
\r\n {props.children}\r\n
\r\n );\r\n}\r\n","import { options } from 'preact';\n\n/** @type {number} */\nlet currentIndex;\n\n/** @type {import('./internal').Component} */\nlet currentComponent;\n\n/** @type {Array} */\nlet afterPaintEffects = [];\n\nlet oldBeforeRender = options._render;\nlet oldAfterDiff = options.diffed;\nlet oldCommit = options._commit;\nlet oldBeforeUnmount = options.unmount;\n\nconst RAF_TIMEOUT = 100;\nlet prevRaf;\n\noptions._render = vnode => {\n\tif (oldBeforeRender) oldBeforeRender(vnode);\n\n\tcurrentComponent = vnode._component;\n\tcurrentIndex = 0;\n\n\tif (currentComponent.__hooks) {\n\t\tcurrentComponent.__hooks._pendingEffects.forEach(invokeCleanup);\n\t\tcurrentComponent.__hooks._pendingEffects.forEach(invokeEffect);\n\t\tcurrentComponent.__hooks._pendingEffects = [];\n\t}\n};\n\noptions.diffed = vnode => {\n\tif (oldAfterDiff) oldAfterDiff(vnode);\n\n\tconst c = vnode._component;\n\tif (!c) return;\n\n\tconst hooks = c.__hooks;\n\tif (hooks) {\n\t\tif (hooks._pendingEffects.length) {\n\t\t\tafterPaint(afterPaintEffects.push(c));\n\t\t}\n\t}\n};\n\noptions._commit = (vnode, commitQueue) => {\n\tcommitQueue.some(component => {\n\t\ttry {\n\t\t\tcomponent._renderCallbacks.forEach(invokeCleanup);\n\t\t\tcomponent._renderCallbacks = component._renderCallbacks.filter(cb =>\n\t\t\t\tcb._value ? invokeEffect(cb) : true\n\t\t\t);\n\t\t} catch (e) {\n\t\t\tcommitQueue.some(c => {\n\t\t\t\tif (c._renderCallbacks) c._renderCallbacks = [];\n\t\t\t});\n\t\t\tcommitQueue = [];\n\t\t\toptions._catchError(e, component._vnode);\n\t\t}\n\t});\n\n\tif (oldCommit) oldCommit(vnode, commitQueue);\n};\n\noptions.unmount = vnode => {\n\tif (oldBeforeUnmount) oldBeforeUnmount(vnode);\n\n\tconst c = vnode._component;\n\tif (!c) return;\n\n\tconst hooks = c.__hooks;\n\tif (hooks) {\n\t\ttry {\n\t\t\thooks._list.forEach(hook => hook._cleanup && hook._cleanup());\n\t\t} catch (e) {\n\t\t\toptions._catchError(e, c._vnode);\n\t\t}\n\t}\n};\n\n/**\n * Get a hook's state from the currentComponent\n * @param {number} index The index of the hook to get\n * @returns {import('./internal').HookState}\n */\nfunction getHookState(index) {\n\tif (options._hook) options._hook(currentComponent);\n\t// Largely inspired by:\n\t// * https://github.com/michael-klein/funcy.js/blob/f6be73468e6ec46b0ff5aa3cc4c9baf72a29025a/src/hooks/core_hooks.mjs\n\t// * https://github.com/michael-klein/funcy.js/blob/650beaa58c43c33a74820a3c98b3c7079cf2e333/src/renderer.mjs\n\t// Other implementations to look at:\n\t// * https://codesandbox.io/s/mnox05qp8\n\tconst hooks =\n\t\tcurrentComponent.__hooks ||\n\t\t(currentComponent.__hooks = { _list: [], _pendingEffects: [] });\n\n\tif (index >= hooks._list.length) {\n\t\thooks._list.push({});\n\t}\n\treturn hooks._list[index];\n}\n\n/**\n * @param {import('./index').StateUpdater} initialState\n */\nexport function useState(initialState) {\n\treturn useReducer(invokeOrReturn, initialState);\n}\n\n/**\n * @param {import('./index').Reducer} reducer\n * @param {import('./index').StateUpdater} initialState\n * @param {(initialState: any) => void} [init]\n * @returns {[ any, (state: any) => void ]}\n */\nexport function useReducer(reducer, initialState, init) {\n\t/** @type {import('./internal').ReducerHookState} */\n\tconst hookState = getHookState(currentIndex++);\n\tif (!hookState._component) {\n\t\thookState._component = currentComponent;\n\n\t\thookState._value = [\n\t\t\t!init ? invokeOrReturn(undefined, initialState) : init(initialState),\n\n\t\t\taction => {\n\t\t\t\tconst nextValue = reducer(hookState._value[0], action);\n\t\t\t\tif (hookState._value[0] !== nextValue) {\n\t\t\t\t\thookState._value[0] = nextValue;\n\t\t\t\t\thookState._component.setState({});\n\t\t\t\t}\n\t\t\t}\n\t\t];\n\t}\n\n\treturn hookState._value;\n}\n\n/**\n * @param {import('./internal').Effect} callback\n * @param {any[]} args\n */\nexport function useEffect(callback, args) {\n\t/** @type {import('./internal').EffectHookState} */\n\tconst state = getHookState(currentIndex++);\n\tif (argsChanged(state._args, args)) {\n\t\tstate._value = callback;\n\t\tstate._args = args;\n\n\t\tcurrentComponent.__hooks._pendingEffects.push(state);\n\t}\n}\n\n/**\n * @param {import('./internal').Effect} callback\n * @param {any[]} args\n */\nexport function useLayoutEffect(callback, args) {\n\t/** @type {import('./internal').EffectHookState} */\n\tconst state = getHookState(currentIndex++);\n\tif (argsChanged(state._args, args)) {\n\t\tstate._value = callback;\n\t\tstate._args = args;\n\n\t\tcurrentComponent._renderCallbacks.push(state);\n\t}\n}\n\nexport function useRef(initialValue) {\n\treturn useMemo(() => ({ current: initialValue }), []);\n}\n\n/**\n * @param {object} ref\n * @param {() => object} createHandle\n * @param {any[]} args\n */\nexport function useImperativeHandle(ref, createHandle, args) {\n\tuseLayoutEffect(\n\t\t() => {\n\t\t\tif (typeof ref == 'function') ref(createHandle());\n\t\t\telse if (ref) ref.current = createHandle();\n\t\t},\n\t\targs == null ? args : args.concat(ref)\n\t);\n}\n\n/**\n * @param {() => any} factory\n * @param {any[]} args\n */\nexport function useMemo(factory, args) {\n\t/** @type {import('./internal').MemoHookState} */\n\tconst state = getHookState(currentIndex++);\n\tif (argsChanged(state._args, args)) {\n\t\tstate._args = args;\n\t\tstate._factory = factory;\n\t\treturn (state._value = factory());\n\t}\n\n\treturn state._value;\n}\n\n/**\n * @param {() => void} callback\n * @param {any[]} args\n */\nexport function useCallback(callback, args) {\n\treturn useMemo(() => callback, args);\n}\n\n/**\n * @param {import('./internal').PreactContext} context\n */\nexport function useContext(context) {\n\tconst provider = currentComponent.context[context._id];\n\tif (!provider) return context._defaultValue;\n\tconst state = getHookState(currentIndex++);\n\t// This is probably not safe to convert to \"!\"\n\tif (state._value == null) {\n\t\tstate._value = true;\n\t\tprovider.sub(currentComponent);\n\t}\n\treturn provider.props.value;\n}\n\n/**\n * Display a custom label for a custom hook for the devtools panel\n * @type {(value: T, cb?: (value: T) => string | number) => void}\n */\nexport function useDebugValue(value, formatter) {\n\tif (options.useDebugValue) {\n\t\toptions.useDebugValue(formatter ? formatter(value) : value);\n\t}\n}\n\nexport function useErrorBoundary(cb) {\n\tconst state = getHookState(currentIndex++);\n\tconst errState = useState();\n\tstate._value = cb;\n\tif (!currentComponent.componentDidCatch) {\n\t\tcurrentComponent.componentDidCatch = err => {\n\t\t\tif (state._value) state._value(err);\n\t\t\terrState[1](err);\n\t\t};\n\t}\n\treturn [\n\t\terrState[0],\n\t\t() => {\n\t\t\terrState[1](undefined);\n\t\t}\n\t];\n}\n\n/**\n * After paint effects consumer.\n */\nfunction flushAfterPaintEffects() {\n\tafterPaintEffects.some(component => {\n\t\tif (component._parentDom) {\n\t\t\ttry {\n\t\t\t\tcomponent.__hooks._pendingEffects.forEach(invokeCleanup);\n\t\t\t\tcomponent.__hooks._pendingEffects.forEach(invokeEffect);\n\t\t\t\tcomponent.__hooks._pendingEffects = [];\n\t\t\t} catch (e) {\n\t\t\t\tcomponent.__hooks._pendingEffects = [];\n\t\t\t\toptions._catchError(e, component._vnode);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t});\n\tafterPaintEffects = [];\n}\n\n/**\n * Schedule a callback to be invoked after the browser has a chance to paint a new frame.\n * Do this by combining requestAnimationFrame (rAF) + setTimeout to invoke a callback after\n * the next browser frame.\n *\n * Also, schedule a timeout in parallel to the the rAF to ensure the callback is invoked\n * even if RAF doesn't fire (for example if the browser tab is not visible)\n *\n * @param {() => void} callback\n */\nfunction afterNextFrame(callback) {\n\tconst done = () => {\n\t\tclearTimeout(timeout);\n\t\tcancelAnimationFrame(raf);\n\t\tsetTimeout(callback);\n\t};\n\tconst timeout = setTimeout(done, RAF_TIMEOUT);\n\n\tlet raf;\n\tif (typeof window != 'undefined') {\n\t\traf = requestAnimationFrame(done);\n\t}\n}\n\n// Note: if someone used options.debounceRendering = requestAnimationFrame,\n// then effects will ALWAYS run on the NEXT frame instead of the current one, incurring a ~16ms delay.\n// Perhaps this is not such a big deal.\n/**\n * Schedule afterPaintEffects flush after the browser paints\n * @param {number} newQueueLength\n */\nfunction afterPaint(newQueueLength) {\n\tif (newQueueLength === 1 || prevRaf !== options.requestAnimationFrame) {\n\t\tprevRaf = options.requestAnimationFrame;\n\t\t(prevRaf || afterNextFrame)(flushAfterPaintEffects);\n\t}\n}\n\n/**\n * @param {import('./internal').EffectHookState} hook\n */\nfunction invokeCleanup(hook) {\n\tif (hook._cleanup) hook._cleanup();\n}\n\n/**\n * Invoke a Hook's effect\n * @param {import('./internal').EffectHookState} hook\n */\nfunction invokeEffect(hook) {\n\tconst result = hook._value();\n\tif (typeof result == 'function') hook._cleanup = result;\n}\n\n/**\n * @param {any[]} oldArgs\n * @param {any[]} newArgs\n */\nfunction argsChanged(oldArgs, newArgs) {\n\treturn !oldArgs || newArgs.some((arg, index) => arg !== oldArgs[index]);\n}\n\nfunction invokeOrReturn(arg, f) {\n\treturn typeof f == 'function' ? f(arg) : f;\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"split\":\"split__3dL9r\",\"splitparent\":\"splitparent__2H-vS\",\"splitchild\":\"splitchild__1B-Jt\"};","import style from \"./todo.css\";\nimport { Component } from 'preact';\n\nexport default class Todo extends Component {\n\trender() {\n\t\treturn {this.props.children};\n\t}\n}\n","import style from \"./split.css\";\nimport { Component } from 'preact';\n\nexport default class Split extends Component {\n\trender() {\n\t let title = null;\n\t if(this.props.title !== undefined) {\n title = (

{this.props.title}

)\n }\n\n let children;\n if(Array.isArray(this.props.children)) {\n children = this.props.children.map(element => {\n return (
{element}
);\n });\n }\n else {\n children =
{this.props.children}
;\n }\n\t\treturn (\n\t
\n {title}\n
{children}
\n
\n );\n\t}\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"latex\":\"latex__3zlIu\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"panel\":\"panel__7bYPC\"};","import {createContext} from \"preact\";\r\n\r\nexport default createContext(true);\r\n"],"sourceRoot":""} \ No newline at end of file diff --git a/docs/route-calcoloNumerico.chunk.abaa3.esm.js b/docs/route-calcoloNumerico.chunk.abaa3.esm.js deleted file mode 100644 index 71dff87..0000000 --- a/docs/route-calcoloNumerico.chunk.abaa3.esm.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[5],{"2w3n":function(i){i.exports={example:"example__2PzAa"}},"3k98":function(i){i.exports={todo:"todo__1UVRh"}},"6GOG":function(i,e,n){"use strict";n.r(e),function(i){n.d(e,"default",(function(){return O}));var t=n("hosL"),l=n("lL4N"),a=n("OMhl"),o=n("HKwK"),r=n("PEwj"),u=n("jXlC"),s=n("BSmf");let c,p,d,m,_,f,h,v,g,x,b,z,E,w,V,L,y,H,A,C,N,k,q,j=i=>i;const M=String.raw;class O extends t.Component{render(){return i("div",null,i("h1",null,"Calcolo Numerico"),i(l.a,{title:"Contatti"},i(o.a,{title:"Email della prof.ssa"},i("p",null,i("a",{href:"mailto:silvia.bonettini@unimore.it"},"silvia.bonettini@unimore.it"))),i(o.a,{title:"Ricevimento"},i("p",null,"Su appuntamento."))),i(l.a,{title:"Esame"},i(o.a,{title:"Orale"},i("p",null,"E' composto da:"),i("ul",null,i("li",null,"2 domande sugli argomenti teorici"),i("li",null,"1 domanda di implementazione algoritmo in MATLAB ",i("small",null,"(facoltativa per i punteggi migliori del TBL)"))),i("p",null,"Prossimo appello:",i(s.a,null)))),i(l.a,{title:"Algoritmi"},i(o.a,{title:"Algoritmi numerici"},i("p",null,"Algoritmi che hanno:"),i("ul",null,i("li",null,"numeri reali in input e output"),i("li",null,"successioni delle quattro operazioni aritmetiche fondamentali come passi")))),i(l.a,{title:"Errore di rappresentazione"},i(o.a,{title:"Errore di rappresentazione"},i("p",null,"Con i numeri floating point può capitare che un certo numero ",i(a.a,null,M(c||(c=j`\alpha`)))," non sia rappresentato correttamente."),i("p",null,"In tal caso, il numero si indica con ",i(a.a,null,M(p||(p=j`\alpha^*`))),".")),i(o.a,{title:"Errore assoluto"},i("p",null,"È la differenza tra il numero desiderato e il numero rappresentato:"),i("p",null,i(a.a,null,M(d||(d=j`E_a = \left | \alpha - \alpha^* \right |`)))),i(r.a,null,"Vale sempre 0, tranne in caso di underflow o overflow.")),i(o.a,{title:"Errore relativo"},i("p",null,"Indica quanto il numero rappresentato differisce dal numero desiderato:"),i("p",null,i(a.a,null,M(m||(m=j`\forall \alpha \neq 0, E_r = \frac{E_a}{\left | \alpha \right |}`)))))),i(l.a,{title:"Floating point"},i(o.a,{title:"Precisione di macchina"},i("p",null,"L'errore relativo di un numero reale rappresentato in virgola mobile è minore o uguale alla ",i("i",null,"precisione di macchina"),":"),i("p",null,i(a.a,null,M(_||(_=j`E_r \leq k \cdot \beta^{1-t}`)))),i("ul",null,i("li",null,i(a.a,null,"\\beta")," è uguale alla base utilizzata (solitamente 2)."),i("li",null,i(a.a,null,"t")," è uguale al numero di cifre della mantissa."),i("li",null,i(a.a,null,"k")," è uguale a ",i(a.a,null,"1")," se il numero viene rappresentato per troncamento oppure a ",i(a.a,null,M(f||(f=j`\frac{1}{2}`)))," se viene rappresentato per arrotondamento.")))),i(l.a,{title:"Operazioni di macchina"},i(o.a,{title:"Un nuovo insieme"},i("p",null,"L'insieme ",i(a.a,null,"F")," è il sottoinsieme dei numeri reali rappresentabili in floating point dalla macchina che stiamo usando."),i("p",null,"Operazioni tra elementi di ",i(a.a,null,"F")," producono risultati in ",i(a.a,null,M(h||(h=j`\mathbb{R}`))),", che però decaderanno nuovamente a elementi di ",i(a.a,null,"F"),", perdendo informazioni."),i("p",null,"Il teorema della precisione di macchina si applica quindi anche ai risultati delle operazioni.")),i(o.a,{title:"Caratteristiche delle operazioni di macchina"},i("ul",null,i("li",null,"Hanno più di un elemento neutro."),i("li",null,"Un numero ha più opposti."),i("li",null,"Non sono associative."),i("li",null,"Non sono distributive."),i("li",null,"Non vale la legge di annullamento del prodotto."))),i(o.a,{title:"La funzione fl"},i("p",null,"Indica che un valore è soggetto alla precisione di macchina:"),i("p",null,i(a.a,null,M(v||(v=j`fl(x) = (x)(1 + \epsilon_x)`)))))),i(l.a,{title:"Errori nelle operazioni di macchina"},i(o.a,{title:"Errore inerente"},i("p",null,"Errore dipendente ",i("b",null,"solo dai dati"),"."),i("p",null,i(u.a,null,"TODO: qual è la formula?")),i("p",null,"È l'errore che si presenterebbe se ",i(a.a,null,M(g||(g=j`\epsilon_1 = \epsilon_2 = \dots = 0`))),".")),i(o.a,{title:"Errore algoritmico"},i("p",null,"Errore dipendente ",i("b",null,"solo dalle operazioni effettuate"),"."),i("p",null,i(u.a,null,"TODO: qual è la formula?")),i("p",null,"È l'errore che si presenterebbe se ",i(a.a,null,M(x||(x=j`\epsilon_x = \epsilon_y = \dots = 0`))),"."))),i(l.a,null,i(o.a,{title:"Problema ben condizionato"},i("p",null,"Un problema poco sensibile all'",i("b",null,"errore inerente"),"."),i(r.a,null,i(a.a,null,M(b||(b=j`y = \frac{1}{x}`)))," è mal condizionato intorno allo 0 e ben condizionato lontano dallo 0.")),i(o.a,{title:"Algoritmo stabile"},i("p",null,"Un algoritmo poco sensibile all'",i("b",null,"errore algoritmico"),"."),i(r.a,null,i("p",null,"Cerchiamo un algoritmo che risolva ",i(a.a,null,M(z||(z=j`2x = 4`))),"."),i("p",null,"Calcolare prima ",i(a.a,null,M(E||(E=j`t = fl \left( \frac{1}{4} \right)`)))," e poi ",i(a.a,null,M(w||(w=j`x^* = fl ( 2 \cdot t )`)))," porta a una perdita di precisione."),i("p",null,"Calcolare direttamente ",i(a.a,null,M(V||(V=j`x^* = fl \left( \frac{2}{4} \right)`)))," non ha alcuna perdita di precisione e rende l'algoritmo ",i("b",null,"più stabile")," del precedente.")))),i(l.a,null,i(o.a,{title:"Indice di condizionamento"},i("p",null,"È il coefficiente di proporzionalità tra i dati e l'",i("b",null,"errore inerente"),"."),i("p",null,"Essendo sempre maggiore di uno, si può dire che sia un coefficiente di amplificazione."),i("p",null,"Minore è l'indice di condizionamento, meglio condizionato è un problema.")),i(o.a,{title:"Indice algoritmico"},i("p",null,"È il coefficiente di proporzionalità tra i dati e l'",i("b",null,"errore algoritmico"),"."),i("p",null,"Essendo sempre maggiore di uno, si può dire che sia un coefficiente di amplificazione."))),i(l.a,{title:"Le cose più difficili di Algebra Lineare"},i(o.a,{title:"Matrice singolare"},i("p",null,"Matrice con determinante 0."),i("p",null,"Le matrici singolari ",i("b",null,"non sono invertibili"),"."))),i(l.a,{title:"Norme"},i(o.a,{title:"Norma vettoriale"},i("p",null,"Funzione che associa un valore positivo a ogni vettore diverso da 0, e 0 al vettore zero."),i(r.a,null,i("a",{href:"https://it.wikipedia.org/wiki/Norma_(matematica)#/media/File:Vector_norms.svg"},"Esempi su Wikipedia"))),i(o.a,{title:"Norma a infinito"},i("p",null,"Massimo dei valori assoluti di tutti gli elementi del vettore."),i("p",null,i(a.a,null,M(L||(L=j`\Vert x \Vert_\infty = max_{i = 1..n} | x_i |`))))),i(o.a,{title:"Norma a 1"},i("p",null,"Somma dei valori assoluti di tutti gli elementi del vettore."),i("p",null,i(a.a,null,M(y||(y=j`\Vert x \Vert_1 = \sum_{i = 1}^n | x_i |`))))),i(o.a,{title:"Norma a 2"},i("p",null,"Radice quadrata della somma dei quadrati di tutti gli elementi del vettore."),i("p",null,i(a.a,null,M(H||(H=j`\Vert x \Vert_2 = \sqrt{\sum_{i = 1}^n x_i^2}`)))))),i(l.a,null,i(o.a,{title:"Norma matriciale indotta"},i("p",null,"Funzione che associa un valore positivo a ogni matrice diversa da 0, e 0 alla matrice zero."),i("p",null,"Si ricavano dalle norme vettoriali:"),i("p",null,i(a.a,null,M(A||(A=j`\Vert A \Vert = sup_{x \in \mathbb{R}, x \neq 0} \frac{\Vert A \cdot x \Vert}{\Vert x \Vert}`)))),i(r.a,null,i(a.a,null,"sup")," è l'estremo superiore di un insieme. E' molto simile al massimo: ricordi le prime lezioni di Analisi?")),i(o.a,{title:"Norma a infinito"},i("p",null,"Massimo delle somme dei valori assoluti di tutti gli elementi di ogni riga di una matrice."),i("p",null,i(a.a,null,M(C||(C=j`\Vert A \Vert_\infty = max_{i = 1..n} \sum_{j = 1}^n | a_{ij} |`))))),i(o.a,{title:"Norma a 1"},i("p",null,"Massimo delle somme dei valori assoluti di tutti gli elementi di ogni colonna di una matrice."),i("p",null,i(a.a,null,M(N||(N=j`\Vert A \Vert_1 = max_{j = 1..n} \sum_{i = 1}^n | a_{ij} |`))))),i(o.a,{title:"Norma a 2"},i("p",null,"Radice quadrata del rango del prodotto tra una matrice e la sua trasposta."),i("p",null,i(a.a,null,M(k||(k=j`\Vert A \Vert_2 = \sqrt{\rho ( A^T \times A ) }`)))))),i(l.a,null,i(o.a,{title:"Errore relativo tra vettori e matrici"},i("p",null,"Le norme sono usate per calcolare l'errore relativo tra due vettori o matrici:"),i("p",null,i(a.a,null,M(q||(q=j`\frac{\Vert x - y \Vert}{\Vert x \Vert}`)))))),i(l.a,{title:"Fattorizzazione"},i(o.a,{title:"Cos'è?"},i("p",null,"La fattorizzazione è il processo che permette di risolvere sistemi di equazioni lineari rappresentati in forma di matrice."),i("p",null,"Esistono molteplici algoritmi in grado di realizzarla: mentre tutti portano alla stessa soluzione, possono avere ",i("b",null,"velocità")," e ",i("b",null,"indici algoritmici")," diversi."),i("p",null,"Il sistema lineare da risolvere viene diviso in due parti: la ",i("i",null,"matrice dei coefficienti")," e il ",i("i",null,"vettore termine noto"),".")),i(o.a,{title:"Teorema di Rouché-Capélli"},i("p",null))))}}}.call(this,n("hosL").h)},BSmf:function(i,e,n){"use strict";(function(i){n.d(e,"a",(function(){return o}));var t=n("hosL"),l=n("EfTa"),a=n.n(l);class o extends t.Component{constructor(){super(),this.state={now:Date.now()},this.timer=null}componentDidMount(){this.timer=setInterval(()=>{this.setState({now:Date.now()})},1e3)}componentWillUnmount(){null!==this.timer&&clearInterval(this.timer)}render(){let e="Unknown date",n=a.a.timer,t={milliseconds:"?",seconds:"?",minutes:"?",hours:"?",days:"?"};if(this.props.to){e=new Date(this.props.to);let i=e-this.state.now;i>0?t={milliseconds:i%1e3,seconds:Math.floor(i/1e3)%60,minutes:Math.floor(i/6e4)%60,hours:Math.floor(i/36e5)%24,days:Math.floor(i/864e5)}:(t={milliseconds:0,seconds:0,minutes:0,hours:0,days:0},n+=" "+a.a.expired)}else n+=" "+a.a.unknown;return i("div",{class:n,title:e},i("div",{class:a.a.days+" "+a.a.count},t.days),i("div",{className:a.a.days+" "+a.a.text},"giorni"),i("div",{class:a.a.hours+" "+a.a.count},t.hours),i("div",{className:a.a.hours+" "+a.a.text},"ore"),i("div",{class:a.a.minutes+" "+a.a.count},t.minutes),i("div",{className:a.a.minutes+" "+a.a.text},"minuti"),i("div",{class:a.a.seconds+" "+a.a.count},t.seconds),i("div",{class:a.a.seconds+" "+a.a.text},"secondi"),i("div",{class:a.a.remaining},"rimasti"))}}}).call(this,n("hosL").h)},EfTa:function(i){i.exports={timer:"timer__K0K_h",days:"days__vN3tf",hours:"hours__3v0KX",minutes:"minutes__vkYk7",seconds:"seconds__3gJ99",count:"count__1VV4k",text:"text__khS4i",remaining:"remaining__zUECg",unknown:"unknown__af307",expired:"expired__1rtHB"}},HKwK:function(i,e,n){"use strict";(function(i){n.d(e,"a",(function(){return o}));var t=n("r4EX"),l=n.n(t),a=n("hosL");class o extends a.Component{getStyle(){return l.a.panel}render(){let e=null;return void 0!==this.props.title&&(e=i("h3",null,this.props.title)),i("div",{class:this.getStyle(),id:this.props.id},e,this.props.children)}}}).call(this,n("hosL").h)},OMhl:function(i,e,n){"use strict";(function(i){var t=n("p7QU"),l=n.n(t),a=n("QRet"),o=n("8CDw"),r=n("wQ73");e.a=function(e){let n,t=Object(a.b)(o.a),u=Object(a.b)(r.a);return n=void 0===e.inline?u:e.inline,i("img",{src:`https://latex.codecogs.com/svg.latex?${`${n?"\\inline":""} {\\color{${t}} ${e.children} }`}`,alt:e.children,title:e.children,class:l.a.latex})}}).call(this,n("hosL").h)},PEwj:function(i,e,n){"use strict";(function(i){var t=n("2w3n"),l=n.n(t);n("hosL"),e.a=function(e){return i("div",{class:l.a.example},e.children)}}).call(this,n("hosL").h)},QRet:function(i,e,n){"use strict";function t(i){E.options.__h&&E.options.__h(b);var e=b.__H||(b.__H={__:[],__h:[]});return i>=e.__.length&&e.__.push({}),e.__[i]}function l(i){return a(g,i)}function a(i,e,n){var l=t(x++);return l.__c||(l.__c=b,l.__=[n?n(e):g(void 0,e),function(e){var n=i(l.__[0],e);l.__[0]!==n&&(l.__[0]=n,l.__c.setState({}))}]),l.__}function o(i,e){var n=t(x++);v(n.__H,e)&&(n.__=i,n.__H=e,b.__H.__h.push(n))}function r(i,e){var n=t(x++);v(n.__H,e)&&(n.__=i,n.__H=e,b.__h.push(n))}function u(i){return c((function(){return{current:i}}),[])}function s(i,e,n){r((function(){"function"==typeof i?i(e()):i&&(i.current=e())}),null==n?n:n.concat(i))}function c(i,e){var n=t(x++);return v(n.__H,e)?(n.__H=e,n.__h=i,n.__=i()):n.__}function p(i,e){return c((function(){return i}),e)}function d(i){var e=b.context[i.__c];if(!e)return i.__;var n=t(x++);return null==n.__&&(n.__=!0,e.sub(b)),e.props.value}function m(i,e){E.options.useDebugValue&&E.options.useDebugValue(e?e(i):i)}function _(){w.some((function(i){if(i.__P)try{i.__H.__h.forEach(f),i.__H.__h.forEach(h),i.__H.__h=[]}catch(e){return i.__H.__h=[],E.options.__e(e,i.__v),!0}})),w=[]}function f(i){i.t&&i.t()}function h(i){var e=i.__();"function"==typeof e&&(i.t=e)}function v(i,e){return!i||e.some((function(e,n){return e!==i[n]}))}function g(i,e){return"function"==typeof e?e(i):e}n.d(e,"j",(function(){return l})),n.d(e,"h",(function(){return a})),n.d(e,"d",(function(){return o})),n.d(e,"f",(function(){return r})),n.d(e,"i",(function(){return u})),n.d(e,"e",(function(){return s})),n.d(e,"g",(function(){return c})),n.d(e,"a",(function(){return p})),n.d(e,"b",(function(){return d})),n.d(e,"c",(function(){return m}));var x,b,z,E=n("hosL"),w=[],V=E.options.__r,L=E.options.diffed,y=E.options.__c,H=E.options.unmount;E.options.__r=function(i){V&&V(i),x=0,(b=i.__c).__H&&(b.__H.__h.forEach(f),b.__H.__h.forEach(h),b.__H.__h=[])},E.options.diffed=function(i){L&&L(i);var e=i.__c;if(e){var n=e.__H;n&&n.__h.length&&(1!==w.push(e)&&z===E.options.requestAnimationFrame||((z=E.options.requestAnimationFrame)||function(i){var e,n=function(){clearTimeout(t),cancelAnimationFrame(e),setTimeout(i)},t=setTimeout(n,100);"undefined"!=typeof window&&(e=requestAnimationFrame(n))})(_))}},E.options.__c=function(i,e){e.some((function(i){try{i.__h.forEach(f),i.__h=i.__h.filter((function(i){return!i.__||h(i)}))}catch(n){e.some((function(i){i.__h&&(i.__h=[])})),e=[],E.options.__e(n,i.__v)}})),y&&y(i,e)},E.options.unmount=function(i){H&&H(i);var e=i.__c;if(e){var n=e.__H;if(n)try{n.__.forEach((function(i){return i.t&&i.t()}))}catch(i){E.options.__e(i,e.__v)}}}},eCjK:function(i){i.exports={split:"split__3dL9r",splitparent:"splitparent__2H-vS",splitchild:"splitchild__1B-Jt"}},jXlC:function(i,e,n){"use strict";(function(i){n.d(e,"a",(function(){return o}));var t=n("3k98"),l=n.n(t),a=n("hosL");class o extends a.Component{render(){return i("span",{class:l.a.todo},this.props.children)}}}).call(this,n("hosL").h)},lL4N:function(i,e,n){"use strict";(function(i){n.d(e,"a",(function(){return o}));var t=n("eCjK"),l=n.n(t),a=n("hosL");class o extends a.Component{render(){let e,n=null;return void 0!==this.props.title&&(n=i("h2",null,this.props.title)),e=Array.isArray(this.props.children)?this.props.children.map(e=>i("div",{class:l.a.splitchild},e)):i("div",{class:l.a.splitchild},this.props.children),i("div",{class:l.a.split},n,i("div",{class:l.a.splitparent},e))}}}).call(this,n("hosL").h)},p7QU:function(i){i.exports={latex:"latex__3zlIu"}},r4EX:function(i){i.exports={panel:"panel__7bYPC"}},wQ73:function(i,e,n){"use strict";var t=n("hosL");e.a=Object(t.createContext)(!0)}}]); -//# sourceMappingURL=route-calcoloNumerico.chunk.abaa3.esm.js.map \ No newline at end of file diff --git a/docs/route-calcoloNumerico.chunk.b64db.js b/docs/route-calcoloNumerico.chunk.b64db.js deleted file mode 100644 index fb813ab..0000000 --- a/docs/route-calcoloNumerico.chunk.b64db.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[5],{"2w3n":function(n){n.exports={example:"example__2PzAa"}},"3k98":function(n){n.exports={todo:"todo__1UVRh"}},"6GOG":function(n,t,e){"use strict";e.r(t),function(n){function i(){var n=A(["\frac{Vert x - y Vert}{Vert x Vert}"],["\\frac{\\Vert x - y \\Vert}{\\Vert x \\Vert}"]);return i=function(){return n},n}function r(){var n=A(["Vert A Vert_2 = sqrt{\rho ( A^T \times A ) }"],["\\Vert A \\Vert_2 = \\sqrt{\\rho ( A^T \\times A ) }"]);return r=function(){return n},n}function o(){var n=A(["Vert A Vert_1 = max_{j = 1..n} sum_{i = 1}^n | a_{ij} |"],["\\Vert A \\Vert_1 = max_{j = 1..n} \\sum_{i = 1}^n | a_{ij} |"]);return o=function(){return n},n}function l(){var n=A(["Vert A Vert_infty = max_{i = 1..n} sum_{j = 1}^n | a_{ij} |"],["\\Vert A \\Vert_\\infty = max_{i = 1..n} \\sum_{j = 1}^n | a_{ij} |"]);return l=function(){return n},n}function a(){var n=A(["Vert A Vert = sup_{x in mathbb{R}, x \neq 0} \frac{Vert A cdot x Vert}{Vert x Vert}"],["\\Vert A \\Vert = sup_{x \\in \\mathbb{R}, x \\neq 0} \\frac{\\Vert A \\cdot x \\Vert}{\\Vert x \\Vert}"]);return a=function(){return n},n}function u(){var n=A(["Vert x Vert_2 = sqrt{sum_{i = 1}^n x_i^2}"],["\\Vert x \\Vert_2 = \\sqrt{\\sum_{i = 1}^n x_i^2}"]);return u=function(){return n},n}function c(){var n=A(["Vert x Vert_1 = sum_{i = 1}^n | x_i |"],["\\Vert x \\Vert_1 = \\sum_{i = 1}^n | x_i |"]);return c=function(){return n},n}function s(){var n=A(["Vert x Vert_infty = max_{i = 1..n} | x_i |"],["\\Vert x \\Vert_\\infty = max_{i = 1..n} | x_i |"]);return s=function(){return n},n}function p(){var n=A(["x^* = fl left( \frac{2}{4} \right)"],["x^* = fl \\left( \\frac{2}{4} \\right)"]);return p=function(){return n},n}function _(){var n=A(["x^* = fl ( 2 cdot t )"],["x^* = fl ( 2 \\cdot t )"]);return _=function(){return n},n}function d(){var n=A(["t = fl left( \frac{1}{4} \right)"],["t = fl \\left( \\frac{1}{4} \\right)"]);return d=function(){return n},n}function f(){var n=A(["2x = 4"]);return f=function(){return n},n}function m(){var n=A(["y = \frac{1}{x}"],["y = \\frac{1}{x}"]);return m=function(){return n},n}function h(){var n=A(["epsilon_x = epsilon_y = dots = 0"],["\\epsilon_x = \\epsilon_y = \\dots = 0"]);return h=function(){return n},n}function v(){var n=A(["epsilon_1 = epsilon_2 = dots = 0"],["\\epsilon_1 = \\epsilon_2 = \\dots = 0"]);return v=function(){return n},n}function g(){var n=A(["fl(x) = (x)(1 + epsilon_x)"],["fl(x) = (x)(1 + \\epsilon_x)"]);return g=function(){return n},n}function x(){var n=A(["mathbb{R}"],["\\mathbb{R}"]);return x=function(){return n},n}function b(){var n=A(["\frac{1}{2}"],["\\frac{1}{2}"]);return b=function(){return n},n}function y(){var n=A(["E_r leq k cdot \beta^{1-t}"],["E_r \\leq k \\cdot \\beta^{1-t}"]);return y=function(){return n},n}function V(){var n=A(["\forall alpha \neq 0, E_r = \frac{E_a}{left | alpha \right |}"],["\\forall \\alpha \\neq 0, E_r = \\frac{E_a}{\\left | \\alpha \\right |}"]);return V=function(){return n},n}function z(){var n=A(["E_a = left | alpha - alpha^* \right |"],["E_a = \\left | \\alpha - \\alpha^* \\right |"]);return z=function(){return n},n}function E(){var n=A(["alpha^*"],["\\alpha^*"]);return E=function(){return n},n}function w(){var n=A(["alpha"],["\\alpha"]);return w=function(){return n},n}function A(n,t){return t||(t=n.slice(0)),n.raw=t,n}e.d(t,"default",(function(){return M}));var L=e("hosL"),H=e("lL4N"),j=e("OMhl"),q=e("HKwK"),C=e("PEwj"),N=e("jXlC"),k=e("BSmf"),O=String.raw,M=function(t){function e(){return t.apply(this,arguments)||this}var A,L;return L=t,(A=e).prototype=Object.create(L.prototype),A.prototype.constructor=A,A.__proto__=L,e.prototype.render=function(){return n("div",null,n("h1",null,"Calcolo Numerico"),n(H.a,{title:"Contatti"},n(q.a,{title:"Email della prof.ssa"},n("p",null,n("a",{href:"mailto:silvia.bonettini@unimore.it"},"silvia.bonettini@unimore.it"))),n(q.a,{title:"Ricevimento"},n("p",null,"Su appuntamento."))),n(H.a,{title:"Esame"},n(q.a,{title:"Orale"},n("p",null,"E' composto da:"),n("ul",null,n("li",null,"2 domande sugli argomenti teorici"),n("li",null,"1 domanda di implementazione algoritmo in MATLAB ",n("small",null,"(facoltativa per i punteggi migliori del TBL)"))),n("p",null,"Prossimo appello:",n(k.a,null)))),n(H.a,{title:"Algoritmi"},n(q.a,{title:"Algoritmi numerici"},n("p",null,"Algoritmi che hanno:"),n("ul",null,n("li",null,"numeri reali in input e output"),n("li",null,"successioni delle quattro operazioni aritmetiche fondamentali come passi")))),n(H.a,{title:"Errore di rappresentazione"},n(q.a,{title:"Errore di rappresentazione"},n("p",null,"Con i numeri floating point può capitare che un certo numero ",n(j.a,null,O(w()))," non sia rappresentato correttamente."),n("p",null,"In tal caso, il numero si indica con ",n(j.a,null,O(E())),".")),n(q.a,{title:"Errore assoluto"},n("p",null,"È la differenza tra il numero desiderato e il numero rappresentato:"),n("p",null,n(j.a,null,O(z()))),n(C.a,null,"Vale sempre 0, tranne in caso di underflow o overflow.")),n(q.a,{title:"Errore relativo"},n("p",null,"Indica quanto il numero rappresentato differisce dal numero desiderato:"),n("p",null,n(j.a,null,O(V()))))),n(H.a,{title:"Floating point"},n(q.a,{title:"Precisione di macchina"},n("p",null,"L'errore relativo di un numero reale rappresentato in virgola mobile è minore o uguale alla ",n("i",null,"precisione di macchina"),":"),n("p",null,n(j.a,null,O(y()))),n("ul",null,n("li",null,n(j.a,null,"\\beta")," è uguale alla base utilizzata (solitamente 2)."),n("li",null,n(j.a,null,"t")," è uguale al numero di cifre della mantissa."),n("li",null,n(j.a,null,"k")," è uguale a ",n(j.a,null,"1")," se il numero viene rappresentato per troncamento oppure a ",n(j.a,null,O(b()))," se viene rappresentato per arrotondamento.")))),n(H.a,{title:"Operazioni di macchina"},n(q.a,{title:"Un nuovo insieme"},n("p",null,"L'insieme ",n(j.a,null,"F")," è il sottoinsieme dei numeri reali rappresentabili in floating point dalla macchina che stiamo usando."),n("p",null,"Operazioni tra elementi di ",n(j.a,null,"F")," producono risultati in ",n(j.a,null,O(x())),", che però decaderanno nuovamente a elementi di ",n(j.a,null,"F"),", perdendo informazioni."),n("p",null,"Il teorema della precisione di macchina si applica quindi anche ai risultati delle operazioni.")),n(q.a,{title:"Caratteristiche delle operazioni di macchina"},n("ul",null,n("li",null,"Hanno più di un elemento neutro."),n("li",null,"Un numero ha più opposti."),n("li",null,"Non sono associative."),n("li",null,"Non sono distributive."),n("li",null,"Non vale la legge di annullamento del prodotto."))),n(q.a,{title:"La funzione fl"},n("p",null,"Indica che un valore è soggetto alla precisione di macchina:"),n("p",null,n(j.a,null,O(g()))))),n(H.a,{title:"Errori nelle operazioni di macchina"},n(q.a,{title:"Errore inerente"},n("p",null,"Errore dipendente ",n("b",null,"solo dai dati"),"."),n("p",null,n(N.a,null,"TODO: qual è la formula?")),n("p",null,"È l'errore che si presenterebbe se ",n(j.a,null,O(v())),".")),n(q.a,{title:"Errore algoritmico"},n("p",null,"Errore dipendente ",n("b",null,"solo dalle operazioni effettuate"),"."),n("p",null,n(N.a,null,"TODO: qual è la formula?")),n("p",null,"È l'errore che si presenterebbe se ",n(j.a,null,O(h())),"."))),n(H.a,null,n(q.a,{title:"Problema ben condizionato"},n("p",null,"Un problema poco sensibile all'",n("b",null,"errore inerente"),"."),n(C.a,null,n(j.a,null,O(m()))," è mal condizionato intorno allo 0 e ben condizionato lontano dallo 0.")),n(q.a,{title:"Algoritmo stabile"},n("p",null,"Un algoritmo poco sensibile all'",n("b",null,"errore algoritmico"),"."),n(C.a,null,n("p",null,"Cerchiamo un algoritmo che risolva ",n(j.a,null,O(f())),"."),n("p",null,"Calcolare prima ",n(j.a,null,O(d()))," e poi ",n(j.a,null,O(_()))," porta a una perdita di precisione."),n("p",null,"Calcolare direttamente ",n(j.a,null,O(p()))," non ha alcuna perdita di precisione e rende l'algoritmo ",n("b",null,"più stabile")," del precedente.")))),n(H.a,null,n(q.a,{title:"Indice di condizionamento"},n("p",null,"È il coefficiente di proporzionalità tra i dati e l'",n("b",null,"errore inerente"),"."),n("p",null,"Essendo sempre maggiore di uno, si può dire che sia un coefficiente di amplificazione."),n("p",null,"Minore è l'indice di condizionamento, meglio condizionato è un problema.")),n(q.a,{title:"Indice algoritmico"},n("p",null,"È il coefficiente di proporzionalità tra i dati e l'",n("b",null,"errore algoritmico"),"."),n("p",null,"Essendo sempre maggiore di uno, si può dire che sia un coefficiente di amplificazione."))),n(H.a,{title:"Le cose più difficili di Algebra Lineare"},n(q.a,{title:"Matrice singolare"},n("p",null,"Matrice con determinante 0."),n("p",null,"Le matrici singolari ",n("b",null,"non sono invertibili"),"."))),n(H.a,{title:"Norme"},n(q.a,{title:"Norma vettoriale"},n("p",null,"Funzione che associa un valore positivo a ogni vettore diverso da 0, e 0 al vettore zero."),n(C.a,null,n("a",{href:"https://it.wikipedia.org/wiki/Norma_(matematica)#/media/File:Vector_norms.svg"},"Esempi su Wikipedia"))),n(q.a,{title:"Norma a infinito"},n("p",null,"Massimo dei valori assoluti di tutti gli elementi del vettore."),n("p",null,n(j.a,null,O(s())))),n(q.a,{title:"Norma a 1"},n("p",null,"Somma dei valori assoluti di tutti gli elementi del vettore."),n("p",null,n(j.a,null,O(c())))),n(q.a,{title:"Norma a 2"},n("p",null,"Radice quadrata della somma dei quadrati di tutti gli elementi del vettore."),n("p",null,n(j.a,null,O(u()))))),n(H.a,null,n(q.a,{title:"Norma matriciale indotta"},n("p",null,"Funzione che associa un valore positivo a ogni matrice diversa da 0, e 0 alla matrice zero."),n("p",null,"Si ricavano dalle norme vettoriali:"),n("p",null,n(j.a,null,O(a()))),n(C.a,null,n(j.a,null,"sup")," è l'estremo superiore di un insieme. E' molto simile al massimo: ricordi le prime lezioni di Analisi?")),n(q.a,{title:"Norma a infinito"},n("p",null,"Massimo delle somme dei valori assoluti di tutti gli elementi di ogni riga di una matrice."),n("p",null,n(j.a,null,O(l())))),n(q.a,{title:"Norma a 1"},n("p",null,"Massimo delle somme dei valori assoluti di tutti gli elementi di ogni colonna di una matrice."),n("p",null,n(j.a,null,O(o())))),n(q.a,{title:"Norma a 2"},n("p",null,"Radice quadrata del rango del prodotto tra una matrice e la sua trasposta."),n("p",null,n(j.a,null,O(r()))))),n(H.a,null,n(q.a,{title:"Errore relativo tra vettori e matrici"},n("p",null,"Le norme sono usate per calcolare l'errore relativo tra due vettori o matrici:"),n("p",null,n(j.a,null,O(i()))))),n(H.a,{title:"Fattorizzazione"},n(q.a,{title:"Cos'è?"},n("p",null,"La fattorizzazione è il processo che permette di risolvere sistemi di equazioni lineari rappresentati in forma di matrice."),n("p",null,"Esistono molteplici algoritmi in grado di realizzarla: mentre tutti portano alla stessa soluzione, possono avere ",n("b",null,"velocità")," e ",n("b",null,"indici algoritmici")," diversi."),n("p",null,"Il sistema lineare da risolvere viene diviso in due parti: la ",n("i",null,"matrice dei coefficienti")," e il ",n("i",null,"vettore termine noto"),".")),n(q.a,{title:"Teorema di Rouché-Capélli"},n("p",null))))},e}(L.Component)}.call(this,e("hosL").h)},BSmf:function(n,t,e){"use strict";(function(n){e.d(t,"a",(function(){return l}));var i=e("hosL"),r=e("EfTa"),o=e.n(r),l=function(t){function e(){var n;return(n=t.call(this)||this).state={now:Date.now()},n.timer=null,n}var i,r;r=t,(i=e).prototype=Object.create(r.prototype),i.prototype.constructor=i,i.__proto__=r;var l=e.prototype;return l.componentDidMount=function(){var n=this;this.timer=setInterval((function(){n.setState({now:Date.now()})}),1e3)},l.componentWillUnmount=function(){null!==this.timer&&clearInterval(this.timer)},l.render=function(){var t="Unknown date",e=o.a.timer,i={milliseconds:"?",seconds:"?",minutes:"?",hours:"?",days:"?"};if(this.props.to){var r=(t=new Date(this.props.to))-this.state.now;r>0?i={milliseconds:r%1e3,seconds:Math.floor(r/1e3)%60,minutes:Math.floor(r/6e4)%60,hours:Math.floor(r/36e5)%24,days:Math.floor(r/864e5)}:(i={milliseconds:0,seconds:0,minutes:0,hours:0,days:0},e+=" "+o.a.expired)}else e+=" "+o.a.unknown;return n("div",{class:e,title:t},n("div",{class:o.a.days+" "+o.a.count},i.days),n("div",{className:o.a.days+" "+o.a.text},"giorni"),n("div",{class:o.a.hours+" "+o.a.count},i.hours),n("div",{className:o.a.hours+" "+o.a.text},"ore"),n("div",{class:o.a.minutes+" "+o.a.count},i.minutes),n("div",{className:o.a.minutes+" "+o.a.text},"minuti"),n("div",{class:o.a.seconds+" "+o.a.count},i.seconds),n("div",{class:o.a.seconds+" "+o.a.text},"secondi"),n("div",{class:o.a.remaining},"rimasti"))},e}(i.Component)}).call(this,e("hosL").h)},EfTa:function(n){n.exports={timer:"timer__K0K_h",days:"days__vN3tf",hours:"hours__3v0KX",minutes:"minutes__vkYk7",seconds:"seconds__3gJ99",count:"count__1VV4k",text:"text__khS4i",remaining:"remaining__zUECg",unknown:"unknown__af307",expired:"expired__1rtHB"}},HKwK:function(n,t,e){"use strict";(function(n){e.d(t,"a",(function(){return o}));var i=e("r4EX"),r=e.n(i),o=function(t){function e(){return t.apply(this,arguments)||this}var i,o;o=t,(i=e).prototype=Object.create(o.prototype),i.prototype.constructor=i,i.__proto__=o;var l=e.prototype;return l.getStyle=function(){return r.a.panel},l.render=function(){var t=null;return void 0!==this.props.title&&(t=n("h3",null,this.props.title)),n("div",{class:this.getStyle(),id:this.props.id},t,this.props.children)},e}(e("hosL").Component)}).call(this,e("hosL").h)},OMhl:function(n,t,e){"use strict";(function(n){var i=e("p7QU"),r=e.n(i),o=e("QRet"),l=e("8CDw"),a=e("wQ73");t.a=function(t){var e=Object(o.b)(l.a),i=Object(o.b)(a.a);return n("img",{src:"https://latex.codecogs.com/svg.latex?"+(((void 0===t.inline?i:t.inline)?"\\inline":"")+" {\\color{"+e+"} "+t.children+" }"),alt:t.children,title:t.children,class:r.a.latex})}}).call(this,e("hosL").h)},PEwj:function(n,t,e){"use strict";(function(n){var i=e("2w3n"),r=e.n(i);e("hosL");t.a=function(t){return n("div",{class:r.a.example},t.children)}}).call(this,e("hosL").h)},QRet:function(n,t,e){"use strict";function i(n){V.options.__h&&V.options.__h(b);var t=b.__H||(b.__H={__:[],__h:[]});return n>=t.__.length&&t.__.push({}),t.__[n]}function r(n){return o(g,n)}function o(n,t,e){var r=i(x++);return r.__c||(r.__c=b,r.__=[e?e(t):g(void 0,t),function(t){var e=n(r.__[0],t);r.__[0]!==e&&(r.__[0]=e,r.__c.setState({}))}]),r.__}function l(n,t){var e=i(x++);v(e.__H,t)&&(e.__=n,e.__H=t,b.__H.__h.push(e))}function a(n,t){var e=i(x++);v(e.__H,t)&&(e.__=n,e.__H=t,b.__h.push(e))}function u(n){return s((function(){return{current:n}}),[])}function c(n,t,e){a((function(){"function"==typeof n?n(t()):n&&(n.current=t())}),null==e?e:e.concat(n))}function s(n,t){var e=i(x++);return v(e.__H,t)?(e.__H=t,e.__h=n,e.__=n()):e.__}function p(n,t){return s((function(){return n}),t)}function _(n){var t=b.context[n.__c];if(!t)return n.__;var e=i(x++);return null==e.__&&(e.__=!0,t.sub(b)),t.props.value}function d(n,t){V.options.useDebugValue&&V.options.useDebugValue(t?t(n):n)}function f(){z.some((function(n){if(n.__P)try{n.__H.__h.forEach(m),n.__H.__h.forEach(h),n.__H.__h=[]}catch(t){return n.__H.__h=[],V.options.__e(t,n.__v),!0}})),z=[]}function m(n){n.t&&n.t()}function h(n){var t=n.__();"function"==typeof t&&(n.t=t)}function v(n,t){return!n||t.some((function(t,e){return t!==n[e]}))}function g(n,t){return"function"==typeof t?t(n):t}e.d(t,"j",(function(){return r})),e.d(t,"h",(function(){return o})),e.d(t,"d",(function(){return l})),e.d(t,"f",(function(){return a})),e.d(t,"i",(function(){return u})),e.d(t,"e",(function(){return c})),e.d(t,"g",(function(){return s})),e.d(t,"a",(function(){return p})),e.d(t,"b",(function(){return _})),e.d(t,"c",(function(){return d}));var x,b,y,V=e("hosL"),z=[],E=V.options.__r,w=V.options.diffed,A=V.options.__c,L=V.options.unmount;V.options.__r=function(n){E&&E(n),x=0,(b=n.__c).__H&&(b.__H.__h.forEach(m),b.__H.__h.forEach(h),b.__H.__h=[])},V.options.diffed=function(n){w&&w(n);var t=n.__c;if(t){var e=t.__H;e&&e.__h.length&&(1!==z.push(t)&&y===V.options.requestAnimationFrame||((y=V.options.requestAnimationFrame)||function(n){var t,e=function(){clearTimeout(i),cancelAnimationFrame(t),setTimeout(n)},i=setTimeout(e,100);"undefined"!=typeof window&&(t=requestAnimationFrame(e))})(f))}},V.options.__c=function(n,t){t.some((function(n){try{n.__h.forEach(m),n.__h=n.__h.filter((function(n){return!n.__||h(n)}))}catch(e){t.some((function(n){n.__h&&(n.__h=[])})),t=[],V.options.__e(e,n.__v)}})),A&&A(n,t)},V.options.unmount=function(n){L&&L(n);var t=n.__c;if(t){var e=t.__H;if(e)try{e.__.forEach((function(n){return n.t&&n.t()}))}catch(n){V.options.__e(n,t.__v)}}}},eCjK:function(n){n.exports={split:"split__3dL9r",splitparent:"splitparent__2H-vS",splitchild:"splitchild__1B-Jt"}},jXlC:function(n,t,e){"use strict";(function(n){e.d(t,"a",(function(){return o}));var i=e("3k98"),r=e.n(i),o=function(t){function e(){return t.apply(this,arguments)||this}var i,o;return o=t,(i=e).prototype=Object.create(o.prototype),i.prototype.constructor=i,i.__proto__=o,e.prototype.render=function(){return n("span",{class:r.a.todo},this.props.children)},e}(e("hosL").Component)}).call(this,e("hosL").h)},lL4N:function(n,t,e){"use strict";(function(n){e.d(t,"a",(function(){return o}));var i=e("eCjK"),r=e.n(i),o=function(t){function e(){return t.apply(this,arguments)||this}var i,o;return o=t,(i=e).prototype=Object.create(o.prototype),i.prototype.constructor=i,i.__proto__=o,e.prototype.render=function(){var t,e=null;return void 0!==this.props.title&&(e=n("h2",null,this.props.title)),t=Array.isArray(this.props.children)?this.props.children.map((function(t){return n("div",{class:r.a.splitchild},t)})):n("div",{class:r.a.splitchild},this.props.children),n("div",{class:r.a.split},e,n("div",{class:r.a.splitparent},t))},e}(e("hosL").Component)}).call(this,e("hosL").h)},p7QU:function(n){n.exports={latex:"latex__3zlIu"}},r4EX:function(n){n.exports={panel:"panel__7bYPC"}},wQ73:function(n,t,e){"use strict";var i=e("hosL");t.a=Object(i.createContext)(!0)}}]); -//# sourceMappingURL=route-calcoloNumerico.chunk.b64db.js.map \ No newline at end of file diff --git a/docs/route-calcoloNumerico.chunk.b64db.js.map b/docs/route-calcoloNumerico.chunk.b64db.js.map deleted file mode 100644 index 1ba0c38..0000000 --- a/docs/route-calcoloNumerico.chunk.b64db.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./components/Example.less","webpack:///./components/old/todo.css","webpack:///./routes/calcoloNumerico.js","webpack:///./components/old/timer.js","webpack:///./components/old/timer.less","webpack:///./components/old/panel.js","webpack:///./components/Latex.js","webpack:///./components/example.js","webpack:///../src/index.js","webpack:///./components/old/split.css","webpack:///./components/old/todo.js","webpack:///./components/old/split.js","webpack:///./components/Latex.css","webpack:///./components/old/panel.less","webpack:///./contexts/LatexDefaultInline.js"],"names":["module","exports","r","String","raw","CalcoloNumerico","render","title","href","Component","Timer","state","Date","now","timer","componentDidMount","this","setInterval","setState","componentWillUnmount","clearInterval","dateTo","className","style","parts","milliseconds","seconds","minutes","hours","days","props","to","timeLeft","Math","floor","expired","unknown","class","count","text","remaining","Panel","getStyle","panel","undefined","id","children","renderColor","useContext","LatexRenderColor","defaultInline","LatexDefaultInline","src","inline","alt","latex","example","getHookState","index","options","_hook","currentComponent","hooks","__hooks","_list","_pendingEffects","length","push","useState","initialState","useReducer","invokeOrReturn","reducer","init","hookState","currentIndex","_component","_value","nextValue","action","useEffect","callback","args","argsChanged","_args","useLayoutEffect","_renderCallbacks","useRef","initialValue","useMemo","current","useImperativeHandle","ref","createHandle","concat","factory","_factory","useCallback","context","provider","_id","_defaultValue","sub","value","useDebugValue","formatter","flushAfterPaintEffects","afterPaintEffects","some","component","_parentDom","forEach","invokeCleanup","invokeEffect","e","_catchError","_vnode","hook","_cleanup","result","oldArgs","newArgs","arg","f","prevRaf","oldBeforeRender","_render","oldAfterDiff","diffed","oldCommit","_commit","oldBeforeUnmount","unmount","vnode","c","requestAnimationFrame","raf","done","clearTimeout","timeout","cancelAnimationFrame","setTimeout","window","commitQueue","filter","cb","Todo","todo","Split","Array","isArray","map","element","splitchild","split","splitparent","createContext"],"mappings":"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","file":"route-calcoloNumerico.chunk.b64db.js","sourcesContent":["// extracted by mini-css-extract-plugin\nmodule.exports = {\"example\":\"example__2PzAa\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"todo\":\"todo__1UVRh\"};","import {Component} from 'preact'\nimport Split from \"../components/old/split\";\nimport Latex from \"../components/Latex\";\nimport Panel from \"../components/old/panel\";\nimport Example from \"../components/example\";\nimport Todo from \"../components/old/todo\";\nimport Timer from \"../components/old/timer\";\n\nconst r = String.raw;\n\nexport default class CalcoloNumerico extends Component {\n render() {\n return (\n
\n

Calcolo Numerico

\n \n \n

\n silvia.bonettini@unimore.it\n

\n
\n \n

\n Su appuntamento.\n

\n
\n
\n \n \n

\n E' composto da:\n

\n
    \n
  • 2 domande sugli argomenti teorici
  • \n
  • 1 domanda di implementazione algoritmo in MATLAB (facoltativa per i punteggi migliori del TBL)
  • \n
\n

\n Prossimo appello:\n \n

\n
\n
\n \n \n

\n Algoritmi che hanno:\n

\n
    \n
  • numeri reali in input e output
  • \n
  • successioni delle quattro operazioni aritmetiche fondamentali come passi
  • \n
\n
\n
\n \n \n

\n Con i numeri floating point può capitare che un certo numero {r`\\alpha`} non sia rappresentato correttamente.\n

\n

\n In tal caso, il numero si indica con {r`\\alpha^*`}.\n

\n
\n \n

\n È la differenza tra il numero desiderato e il numero rappresentato:\n

\n

\n {r`E_a = \\left | \\alpha - \\alpha^* \\right |`}\n

\n \n Vale sempre 0, tranne in caso di underflow o overflow.\n \n
\n \n

\n Indica quanto il numero rappresentato differisce dal numero desiderato:\n

\n

\n {r`\\forall \\alpha \\neq 0, E_r = \\frac{E_a}{\\left | \\alpha \\right |}`}\n

\n
\n
\n \n \n

\n L'errore relativo di un numero reale rappresentato in virgola mobile è minore o uguale alla precisione di macchina:\n

\n

\n {r`E_r \\leq k \\cdot \\beta^{1-t}`}\n

\n
    \n
  • \n \\beta è uguale alla base utilizzata (solitamente 2).\n
  • \n
  • \n t è uguale al numero di cifre della mantissa.\n
  • \n
  • \n k è uguale a 1 se il numero viene rappresentato per troncamento oppure a {r`\\frac{1}{2}`} se viene rappresentato per arrotondamento.\n
  • \n
\n
\n
\n \n \n

\n L'insieme F è il sottoinsieme dei numeri reali rappresentabili in floating point dalla macchina che stiamo usando.\n

\n

\n Operazioni tra elementi di F producono risultati in {r`\\mathbb{R}`}, che però decaderanno nuovamente a elementi di F, perdendo informazioni.\n

\n

\n Il teorema della precisione di macchina si applica quindi anche ai risultati delle operazioni.\n

\n
\n \n
    \n
  • Hanno più di un elemento neutro.
  • \n
  • Un numero ha più opposti.
  • \n
  • Non sono associative.
  • \n
  • Non sono distributive.
  • \n
  • Non vale la legge di annullamento del prodotto.
  • \n
\n
\n \n

\n Indica che un valore è soggetto alla precisione di macchina:\n

\n

\n {r`fl(x) = (x)(1 + \\epsilon_x)`}\n

\n
\n
\n \n \n

\n Errore dipendente solo dai dati.\n

\n

\n TODO: qual è la formula?\n

\n

\n È l'errore che si presenterebbe se {r`\\epsilon_1 = \\epsilon_2 = \\dots = 0`}.\n

\n
\n \n

\n Errore dipendente solo dalle operazioni effettuate.\n

\n

\n TODO: qual è la formula?\n

\n

\n È l'errore che si presenterebbe se {r`\\epsilon_x = \\epsilon_y = \\dots = 0`}.\n

\n
\n
\n \n \n

\n Un problema poco sensibile all'errore inerente.\n

\n \n {r`y = \\frac{1}{x}`} è mal condizionato intorno allo 0 e ben condizionato lontano dallo 0.\n \n
\n \n

\n Un algoritmo poco sensibile all'errore algoritmico.\n

\n \n

\n Cerchiamo un algoritmo che risolva {r`2x = 4`}.\n

\n

\n Calcolare prima {r`t = fl \\left( \\frac{1}{4} \\right)`} e poi {r`x^* = fl ( 2 \\cdot t )`} porta a una perdita di precisione.\n

\n

\n Calcolare direttamente {r`x^* = fl \\left( \\frac{2}{4} \\right)`} non ha alcuna perdita di precisione e rende l'algoritmo più stabile del precedente.\n

\n
\n
\n
\n \n \n

\n È il coefficiente di proporzionalità tra i dati e l'errore inerente.\n

\n

\n Essendo sempre maggiore di uno, si può dire che sia un coefficiente di amplificazione.\n

\n

\n Minore è l'indice di condizionamento, meglio condizionato è un problema.\n

\n
\n \n

\n È il coefficiente di proporzionalità tra i dati e l'errore algoritmico.\n

\n

\n Essendo sempre maggiore di uno, si può dire che sia un coefficiente di amplificazione.\n

\n
\n
\n \n \n

\n Matrice con determinante 0.\n

\n

\n Le matrici singolari non sono invertibili.\n

\n
\n
\n \n \n

\n Funzione che associa un valore positivo a ogni vettore diverso da 0, e 0 al vettore zero.\n

\n \n Esempi su Wikipedia\n \n
\n \n

\n Massimo dei valori assoluti di tutti gli elementi del vettore.\n

\n

\n {r`\\Vert x \\Vert_\\infty = max_{i = 1..n} | x_i |`}\n

\n
\n \n

\n Somma dei valori assoluti di tutti gli elementi del vettore.\n

\n

\n {r`\\Vert x \\Vert_1 = \\sum_{i = 1}^n | x_i |`}\n

\n
\n \n

\n Radice quadrata della somma dei quadrati di tutti gli elementi del vettore.\n

\n

\n {r`\\Vert x \\Vert_2 = \\sqrt{\\sum_{i = 1}^n x_i^2}`}\n

\n
\n
\n \n \n

\n Funzione che associa un valore positivo a ogni matrice diversa da 0, e 0 alla matrice zero.\n

\n

\n Si ricavano dalle norme vettoriali:\n

\n

\n {r`\\Vert A \\Vert = sup_{x \\in \\mathbb{R}, x \\neq 0} \\frac{\\Vert A \\cdot x \\Vert}{\\Vert x \\Vert}`}\n

\n \n sup è l'estremo superiore di un insieme. E' molto simile al massimo: ricordi le prime lezioni di Analisi?\n \n
\n \n

\n Massimo delle somme dei valori assoluti di tutti gli elementi di ogni riga di una matrice.\n

\n

\n {r`\\Vert A \\Vert_\\infty = max_{i = 1..n} \\sum_{j = 1}^n | a_{ij} |`}\n

\n
\n \n

\n Massimo delle somme dei valori assoluti di tutti gli elementi di ogni colonna di una matrice.\n

\n

\n {r`\\Vert A \\Vert_1 = max_{j = 1..n} \\sum_{i = 1}^n | a_{ij} |`}\n

\n
\n \n

\n Radice quadrata del rango del prodotto tra una matrice e la sua trasposta.\n

\n

\n {r`\\Vert A \\Vert_2 = \\sqrt{\\rho ( A^T \\times A ) }`}\n

\n
\n
\n \n \n

\n Le norme sono usate per calcolare l'errore relativo tra due vettori o matrici:\n

\n

\n {r`\\frac{\\Vert x - y \\Vert}{\\Vert x \\Vert}`}\n

\n
\n
\n \n \n

\n La fattorizzazione è il processo che permette di risolvere sistemi di equazioni lineari rappresentati in forma di matrice.\n

\n

\n Esistono molteplici algoritmi in grado di realizzarla: mentre tutti portano alla stessa soluzione, possono avere velocità e indici algoritmici diversi.\n

\n

\n Il sistema lineare da risolvere viene diviso in due parti: la matrice dei coefficienti e il vettore termine noto.\n

\n
\n \n

\n\n

\n
\n
\n
\n )\n }\n}\n","import {Component} from 'preact'\nimport style from \"./timer.less\"\n\n\nexport default class Timer extends Component {\n constructor() {\n super();\n this.state = {\n \"now\": Date.now()\n };\n this.timer = null;\n }\n\n componentDidMount() {\n this.timer = setInterval(() => {\n this.setState({\"now\": Date.now()})\n }, 1000)\n }\n\n componentWillUnmount() {\n if(this.timer !== null) {\n clearInterval(this.timer)\n }\n }\n\n render() {\n let dateTo = \"Unknown date\";\n let className = style.timer;\n\n let parts = {\n milliseconds: \"?\",\n seconds: \"?\",\n minutes: \"?\",\n hours: \"?\",\n days: \"?\",\n };\n\n if(this.props.to) {\n dateTo = new Date(this.props.to);\n let timeLeft = dateTo - this.state.now;\n\n if(timeLeft > 0) {\n parts = {\n milliseconds: timeLeft % 1000,\n seconds: Math.floor(timeLeft / 1000) % 60,\n minutes: Math.floor(timeLeft / 60000) % 60,\n hours: Math.floor(timeLeft / 3600000) % 24,\n days: Math.floor(timeLeft / 86400000),\n };\n }\n\n else {\n parts = {\n milliseconds: 0,\n seconds: 0,\n minutes: 0,\n hours: 0,\n days: 0,\n };\n\n className += \" \" + style.expired;\n }\n }\n else {\n className += \" \" + style.unknown;\n }\n\n return (\n
\n
\n {parts.days}\n
\n
\n giorni\n
\n
\n {parts.hours}\n
\n
\n ore\n
\n
\n {parts.minutes}\n
\n
\n minuti\n
\n
\n {parts.seconds}\n
\n
\n secondi\n
\n
\n rimasti\n
\n
\n )\n }\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"timer\":\"timer__K0K_h\",\"days\":\"days__vN3tf\",\"hours\":\"hours__3v0KX\",\"minutes\":\"minutes__vkYk7\",\"seconds\":\"seconds__3gJ99\",\"count\":\"count__1VV4k\",\"text\":\"text__khS4i\",\"remaining\":\"remaining__zUECg\",\"unknown\":\"unknown__af307\",\"expired\":\"expired__1rtHB\"};","import style from \"./panel.less\";\nimport { Component } from 'preact';\n\nexport default class Panel extends Component {\n\tgetStyle() {\n\t\treturn style.panel;\n\t};\n\n\trender() {\n\t\tlet title = null;\n\t\tif(this.props.title !== undefined) {\n\t\t\ttitle = (

{this.props.title}

);\n\t\t}\n\n\t\treturn (\n\t\t\t
\n\t\t\t\t{title}\n\t\t\t\t{this.props.children}\n\t\t\t
\n\t\t);\n\t}\n}\n","import style from './Latex.css';\nimport {useContext} from \"preact/hooks\";\nimport LatexRenderColor from \"../contexts/LatexRenderColor\";\nimport LatexDefaultInline from \"../contexts/LatexDefaultInline\";\n\nexport default function(props) {\n\t// black, blue, brown, cyan, darkgray, gray, green, lightgray, lime, magenta, olive, orange, pink, purple, red, teal, violet, white, yellow\n\tlet renderColor = useContext(LatexRenderColor);\n\tlet defaultInline = useContext(LatexDefaultInline);\n\n\tlet is_inline;\n\tif(props.inline === undefined) {\n\t\tis_inline = defaultInline;\n\t}\n\telse {\n\t\tis_inline = props.inline;\n\t}\n\n\tlet inline = is_inline ? `\\\\inline` : \"\";\n\tlet equation = `${inline} {\\\\color{${renderColor}} ${props.children} }`;\n\n\treturn (\n\t\t{props.children}\n\t\t\t\n\t);\n}\n","import style from \"./Example.less\";\r\nimport {Component} from \"preact\";\r\n\r\nexport default function(props) {\r\n return (\r\n
\r\n {props.children}\r\n
\r\n );\r\n}\r\n","import { options } from 'preact';\n\n/** @type {number} */\nlet currentIndex;\n\n/** @type {import('./internal').Component} */\nlet currentComponent;\n\n/** @type {Array} */\nlet afterPaintEffects = [];\n\nlet oldBeforeRender = options._render;\nlet oldAfterDiff = options.diffed;\nlet oldCommit = options._commit;\nlet oldBeforeUnmount = options.unmount;\n\nconst RAF_TIMEOUT = 100;\nlet prevRaf;\n\noptions._render = vnode => {\n\tif (oldBeforeRender) oldBeforeRender(vnode);\n\n\tcurrentComponent = vnode._component;\n\tcurrentIndex = 0;\n\n\tif (currentComponent.__hooks) {\n\t\tcurrentComponent.__hooks._pendingEffects.forEach(invokeCleanup);\n\t\tcurrentComponent.__hooks._pendingEffects.forEach(invokeEffect);\n\t\tcurrentComponent.__hooks._pendingEffects = [];\n\t}\n};\n\noptions.diffed = vnode => {\n\tif (oldAfterDiff) oldAfterDiff(vnode);\n\n\tconst c = vnode._component;\n\tif (!c) return;\n\n\tconst hooks = c.__hooks;\n\tif (hooks) {\n\t\tif (hooks._pendingEffects.length) {\n\t\t\tafterPaint(afterPaintEffects.push(c));\n\t\t}\n\t}\n};\n\noptions._commit = (vnode, commitQueue) => {\n\tcommitQueue.some(component => {\n\t\ttry {\n\t\t\tcomponent._renderCallbacks.forEach(invokeCleanup);\n\t\t\tcomponent._renderCallbacks = component._renderCallbacks.filter(cb =>\n\t\t\t\tcb._value ? invokeEffect(cb) : true\n\t\t\t);\n\t\t} catch (e) {\n\t\t\tcommitQueue.some(c => {\n\t\t\t\tif (c._renderCallbacks) c._renderCallbacks = [];\n\t\t\t});\n\t\t\tcommitQueue = [];\n\t\t\toptions._catchError(e, component._vnode);\n\t\t}\n\t});\n\n\tif (oldCommit) oldCommit(vnode, commitQueue);\n};\n\noptions.unmount = vnode => {\n\tif (oldBeforeUnmount) oldBeforeUnmount(vnode);\n\n\tconst c = vnode._component;\n\tif (!c) return;\n\n\tconst hooks = c.__hooks;\n\tif (hooks) {\n\t\ttry {\n\t\t\thooks._list.forEach(hook => hook._cleanup && hook._cleanup());\n\t\t} catch (e) {\n\t\t\toptions._catchError(e, c._vnode);\n\t\t}\n\t}\n};\n\n/**\n * Get a hook's state from the currentComponent\n * @param {number} index The index of the hook to get\n * @returns {import('./internal').HookState}\n */\nfunction getHookState(index) {\n\tif (options._hook) options._hook(currentComponent);\n\t// Largely inspired by:\n\t// * https://github.com/michael-klein/funcy.js/blob/f6be73468e6ec46b0ff5aa3cc4c9baf72a29025a/src/hooks/core_hooks.mjs\n\t// * https://github.com/michael-klein/funcy.js/blob/650beaa58c43c33a74820a3c98b3c7079cf2e333/src/renderer.mjs\n\t// Other implementations to look at:\n\t// * https://codesandbox.io/s/mnox05qp8\n\tconst hooks =\n\t\tcurrentComponent.__hooks ||\n\t\t(currentComponent.__hooks = { _list: [], _pendingEffects: [] });\n\n\tif (index >= hooks._list.length) {\n\t\thooks._list.push({});\n\t}\n\treturn hooks._list[index];\n}\n\n/**\n * @param {import('./index').StateUpdater} initialState\n */\nexport function useState(initialState) {\n\treturn useReducer(invokeOrReturn, initialState);\n}\n\n/**\n * @param {import('./index').Reducer} reducer\n * @param {import('./index').StateUpdater} initialState\n * @param {(initialState: any) => void} [init]\n * @returns {[ any, (state: any) => void ]}\n */\nexport function useReducer(reducer, initialState, init) {\n\t/** @type {import('./internal').ReducerHookState} */\n\tconst hookState = getHookState(currentIndex++);\n\tif (!hookState._component) {\n\t\thookState._component = currentComponent;\n\n\t\thookState._value = [\n\t\t\t!init ? invokeOrReturn(undefined, initialState) : init(initialState),\n\n\t\t\taction => {\n\t\t\t\tconst nextValue = reducer(hookState._value[0], action);\n\t\t\t\tif (hookState._value[0] !== nextValue) {\n\t\t\t\t\thookState._value[0] = nextValue;\n\t\t\t\t\thookState._component.setState({});\n\t\t\t\t}\n\t\t\t}\n\t\t];\n\t}\n\n\treturn hookState._value;\n}\n\n/**\n * @param {import('./internal').Effect} callback\n * @param {any[]} args\n */\nexport function useEffect(callback, args) {\n\t/** @type {import('./internal').EffectHookState} */\n\tconst state = getHookState(currentIndex++);\n\tif (argsChanged(state._args, args)) {\n\t\tstate._value = callback;\n\t\tstate._args = args;\n\n\t\tcurrentComponent.__hooks._pendingEffects.push(state);\n\t}\n}\n\n/**\n * @param {import('./internal').Effect} callback\n * @param {any[]} args\n */\nexport function useLayoutEffect(callback, args) {\n\t/** @type {import('./internal').EffectHookState} */\n\tconst state = getHookState(currentIndex++);\n\tif (argsChanged(state._args, args)) {\n\t\tstate._value = callback;\n\t\tstate._args = args;\n\n\t\tcurrentComponent._renderCallbacks.push(state);\n\t}\n}\n\nexport function useRef(initialValue) {\n\treturn useMemo(() => ({ current: initialValue }), []);\n}\n\n/**\n * @param {object} ref\n * @param {() => object} createHandle\n * @param {any[]} args\n */\nexport function useImperativeHandle(ref, createHandle, args) {\n\tuseLayoutEffect(\n\t\t() => {\n\t\t\tif (typeof ref == 'function') ref(createHandle());\n\t\t\telse if (ref) ref.current = createHandle();\n\t\t},\n\t\targs == null ? args : args.concat(ref)\n\t);\n}\n\n/**\n * @param {() => any} factory\n * @param {any[]} args\n */\nexport function useMemo(factory, args) {\n\t/** @type {import('./internal').MemoHookState} */\n\tconst state = getHookState(currentIndex++);\n\tif (argsChanged(state._args, args)) {\n\t\tstate._args = args;\n\t\tstate._factory = factory;\n\t\treturn (state._value = factory());\n\t}\n\n\treturn state._value;\n}\n\n/**\n * @param {() => void} callback\n * @param {any[]} args\n */\nexport function useCallback(callback, args) {\n\treturn useMemo(() => callback, args);\n}\n\n/**\n * @param {import('./internal').PreactContext} context\n */\nexport function useContext(context) {\n\tconst provider = currentComponent.context[context._id];\n\tif (!provider) return context._defaultValue;\n\tconst state = getHookState(currentIndex++);\n\t// This is probably not safe to convert to \"!\"\n\tif (state._value == null) {\n\t\tstate._value = true;\n\t\tprovider.sub(currentComponent);\n\t}\n\treturn provider.props.value;\n}\n\n/**\n * Display a custom label for a custom hook for the devtools panel\n * @type {(value: T, cb?: (value: T) => string | number) => void}\n */\nexport function useDebugValue(value, formatter) {\n\tif (options.useDebugValue) {\n\t\toptions.useDebugValue(formatter ? formatter(value) : value);\n\t}\n}\n\nexport function useErrorBoundary(cb) {\n\tconst state = getHookState(currentIndex++);\n\tconst errState = useState();\n\tstate._value = cb;\n\tif (!currentComponent.componentDidCatch) {\n\t\tcurrentComponent.componentDidCatch = err => {\n\t\t\tif (state._value) state._value(err);\n\t\t\terrState[1](err);\n\t\t};\n\t}\n\treturn [\n\t\terrState[0],\n\t\t() => {\n\t\t\terrState[1](undefined);\n\t\t}\n\t];\n}\n\n/**\n * After paint effects consumer.\n */\nfunction flushAfterPaintEffects() {\n\tafterPaintEffects.some(component => {\n\t\tif (component._parentDom) {\n\t\t\ttry {\n\t\t\t\tcomponent.__hooks._pendingEffects.forEach(invokeCleanup);\n\t\t\t\tcomponent.__hooks._pendingEffects.forEach(invokeEffect);\n\t\t\t\tcomponent.__hooks._pendingEffects = [];\n\t\t\t} catch (e) {\n\t\t\t\tcomponent.__hooks._pendingEffects = [];\n\t\t\t\toptions._catchError(e, component._vnode);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t});\n\tafterPaintEffects = [];\n}\n\n/**\n * Schedule a callback to be invoked after the browser has a chance to paint a new frame.\n * Do this by combining requestAnimationFrame (rAF) + setTimeout to invoke a callback after\n * the next browser frame.\n *\n * Also, schedule a timeout in parallel to the the rAF to ensure the callback is invoked\n * even if RAF doesn't fire (for example if the browser tab is not visible)\n *\n * @param {() => void} callback\n */\nfunction afterNextFrame(callback) {\n\tconst done = () => {\n\t\tclearTimeout(timeout);\n\t\tcancelAnimationFrame(raf);\n\t\tsetTimeout(callback);\n\t};\n\tconst timeout = setTimeout(done, RAF_TIMEOUT);\n\n\tlet raf;\n\tif (typeof window != 'undefined') {\n\t\traf = requestAnimationFrame(done);\n\t}\n}\n\n// Note: if someone used options.debounceRendering = requestAnimationFrame,\n// then effects will ALWAYS run on the NEXT frame instead of the current one, incurring a ~16ms delay.\n// Perhaps this is not such a big deal.\n/**\n * Schedule afterPaintEffects flush after the browser paints\n * @param {number} newQueueLength\n */\nfunction afterPaint(newQueueLength) {\n\tif (newQueueLength === 1 || prevRaf !== options.requestAnimationFrame) {\n\t\tprevRaf = options.requestAnimationFrame;\n\t\t(prevRaf || afterNextFrame)(flushAfterPaintEffects);\n\t}\n}\n\n/**\n * @param {import('./internal').EffectHookState} hook\n */\nfunction invokeCleanup(hook) {\n\tif (hook._cleanup) hook._cleanup();\n}\n\n/**\n * Invoke a Hook's effect\n * @param {import('./internal').EffectHookState} hook\n */\nfunction invokeEffect(hook) {\n\tconst result = hook._value();\n\tif (typeof result == 'function') hook._cleanup = result;\n}\n\n/**\n * @param {any[]} oldArgs\n * @param {any[]} newArgs\n */\nfunction argsChanged(oldArgs, newArgs) {\n\treturn !oldArgs || newArgs.some((arg, index) => arg !== oldArgs[index]);\n}\n\nfunction invokeOrReturn(arg, f) {\n\treturn typeof f == 'function' ? f(arg) : f;\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"split\":\"split__3dL9r\",\"splitparent\":\"splitparent__2H-vS\",\"splitchild\":\"splitchild__1B-Jt\"};","import style from \"./todo.css\";\nimport { Component } from 'preact';\n\nexport default class Todo extends Component {\n\trender() {\n\t\treturn {this.props.children};\n\t}\n}\n","import style from \"./split.css\";\nimport { Component } from 'preact';\n\nexport default class Split extends Component {\n\trender() {\n\t let title = null;\n\t if(this.props.title !== undefined) {\n title = (

{this.props.title}

)\n }\n\n let children;\n if(Array.isArray(this.props.children)) {\n children = this.props.children.map(element => {\n return (
{element}
);\n });\n }\n else {\n children =
{this.props.children}
;\n }\n\t\treturn (\n\t
\n {title}\n
{children}
\n
\n );\n\t}\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"latex\":\"latex__3zlIu\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"panel\":\"panel__7bYPC\"};","import {createContext} from \"preact\";\r\n\r\nexport default createContext(true);\r\n"],"sourceRoot":""} \ No newline at end of file diff --git a/docs/route-calcoloNumerico.chunk.d6955.esm.js b/docs/route-calcoloNumerico.chunk.d6955.esm.js new file mode 100644 index 0000000..489cfa9 --- /dev/null +++ b/docs/route-calcoloNumerico.chunk.d6955.esm.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[5],{"2w3n":function(i){i.exports={example:"example__2PzAa"}},"3k98":function(i){i.exports={todo:"todo__1UVRh"}},"6GOG":function(i,e,n){"use strict";n.r(e),function(i){n.d(e,"default",(function(){return O}));var t=n("hosL"),l=n("lL4N"),a=n("OMhl"),o=n("HKwK"),r=n("PEwj"),u=n("jXlC"),s=n("BSmf");let c,p,d,m,_,f,h,v,g,x,b,z,E,w,V,L,y,H,A,C,N,k,q,j=i=>i;const M=String.raw;class O extends t.Component{render(){return i("div",null,i("h1",null,"Calcolo Numerico"),i(l.a,{title:"Unimore"},i(o.a,{title:"Email della prof.ssa"},i("p",null,i("a",{href:"mailto:silvia.bonettini@unimore.it"},"silvia.bonettini@unimore.it"))),i(o.a,{title:"Orale"},i("p",null,"E' composto da:"),i("ul",null,i("li",null,"2 domande sugli argomenti teorici"),i("li",null,"1 domanda di implementazione algoritmo in MATLAB ",i("small",null,"(facoltativa per i punteggi migliori del TBL)")))),i(o.a,{title:"Prossimi appelli"},i("ol",null,i("li",null,i(s.a,{to:"2020-06-15"})),i("li",null,i(s.a,{to:"2020-06-22"})),i("li",null,i(s.a,{to:"2020-07-06"})),i("li",null,i(s.a,{to:"2020-07-13"})),i("li",null,i(s.a,{to:"2020-07-20"})),i("li",null,i(s.a,{to:"2020-07-27"}))))),i(l.a,{title:"Algoritmi"},i(o.a,{title:"Algoritmi numerici"},i("p",null,"Algoritmi che hanno:"),i("ul",null,i("li",null,"numeri reali in input e output"),i("li",null,"successioni delle quattro operazioni aritmetiche fondamentali come passi")))),i(l.a,{title:"Errore di rappresentazione"},i(o.a,{title:"Errore di rappresentazione"},i("p",null,"Con i numeri floating point può capitare che un certo numero ",i(a.a,null,M(c||(c=j`\alpha`)))," non sia rappresentato correttamente."),i("p",null,"In tal caso, il numero si indica con ",i(a.a,null,M(p||(p=j`\alpha^*`))),".")),i(o.a,{title:"Errore assoluto"},i("p",null,"È la differenza tra il numero desiderato e il numero rappresentato:"),i("p",null,i(a.a,null,M(d||(d=j`E_a = \left | \alpha - \alpha^* \right |`)))),i(r.a,null,"Vale sempre 0, tranne in caso di underflow o overflow.")),i(o.a,{title:"Errore relativo"},i("p",null,"Indica quanto il numero rappresentato differisce dal numero desiderato:"),i("p",null,i(a.a,null,M(m||(m=j`\forall \alpha \neq 0, E_r = \frac{E_a}{\left | \alpha \right |}`)))))),i(l.a,{title:"Floating point"},i(o.a,{title:"Precisione di macchina"},i("p",null,"L'errore relativo di un numero reale rappresentato in virgola mobile è minore o uguale alla ",i("i",null,"precisione di macchina"),":"),i("p",null,i(a.a,null,M(_||(_=j`E_r \leq k \cdot \beta^{1-t}`)))),i("ul",null,i("li",null,i(a.a,null,"\\beta")," è uguale alla base utilizzata (solitamente 2)."),i("li",null,i(a.a,null,"t")," è uguale al numero di cifre della mantissa."),i("li",null,i(a.a,null,"k")," è uguale a ",i(a.a,null,"1")," se il numero viene rappresentato per troncamento oppure a ",i(a.a,null,M(f||(f=j`\frac{1}{2}`)))," se viene rappresentato per arrotondamento.")))),i(l.a,{title:"Operazioni di macchina"},i(o.a,{title:"Un nuovo insieme"},i("p",null,"L'insieme ",i(a.a,null,"F")," è il sottoinsieme dei numeri reali rappresentabili in floating point dalla macchina che stiamo usando."),i("p",null,"Operazioni tra elementi di ",i(a.a,null,"F")," producono risultati in ",i(a.a,null,M(h||(h=j`\mathbb{R}`))),", che però decaderanno nuovamente a elementi di ",i(a.a,null,"F"),", perdendo informazioni."),i("p",null,"Il teorema della precisione di macchina si applica quindi anche ai risultati delle operazioni.")),i(o.a,{title:"Caratteristiche delle operazioni di macchina"},i("ul",null,i("li",null,"Hanno più di un elemento neutro."),i("li",null,"Un numero ha più opposti."),i("li",null,"Non sono associative."),i("li",null,"Non sono distributive."),i("li",null,"Non vale la legge di annullamento del prodotto."))),i(o.a,{title:"La funzione fl"},i("p",null,"Indica che un valore è soggetto alla precisione di macchina:"),i("p",null,i(a.a,null,M(v||(v=j`fl(x) = (x)(1 + \epsilon_x)`)))))),i(l.a,{title:"Errori nelle operazioni di macchina"},i(o.a,{title:"Errore inerente"},i("p",null,"Errore dipendente ",i("b",null,"solo dai dati"),"."),i("p",null,i(u.a,null,"TODO: qual è la formula?")),i("p",null,"È l'errore che si presenterebbe se ",i(a.a,null,M(g||(g=j`\epsilon_1 = \epsilon_2 = \dots = 0`))),".")),i(o.a,{title:"Errore algoritmico"},i("p",null,"Errore dipendente ",i("b",null,"solo dalle operazioni effettuate"),"."),i("p",null,i(u.a,null,"TODO: qual è la formula?")),i("p",null,"È l'errore che si presenterebbe se ",i(a.a,null,M(x||(x=j`\epsilon_x = \epsilon_y = \dots = 0`))),"."))),i(l.a,null,i(o.a,{title:"Problema ben condizionato"},i("p",null,"Un problema poco sensibile all'",i("b",null,"errore inerente"),"."),i(r.a,null,i(a.a,null,M(b||(b=j`y = \frac{1}{x}`)))," è mal condizionato intorno allo 0 e ben condizionato lontano dallo 0.")),i(o.a,{title:"Algoritmo stabile"},i("p",null,"Un algoritmo poco sensibile all'",i("b",null,"errore algoritmico"),"."),i(r.a,null,i("p",null,"Cerchiamo un algoritmo che risolva ",i(a.a,null,M(z||(z=j`2x = 4`))),"."),i("p",null,"Calcolare prima ",i(a.a,null,M(E||(E=j`t = fl \left( \frac{1}{4} \right)`)))," e poi ",i(a.a,null,M(w||(w=j`x^* = fl ( 2 \cdot t )`)))," porta a una perdita di precisione."),i("p",null,"Calcolare direttamente ",i(a.a,null,M(V||(V=j`x^* = fl \left( \frac{2}{4} \right)`)))," non ha alcuna perdita di precisione e rende l'algoritmo ",i("b",null,"più stabile")," del precedente.")))),i(l.a,null,i(o.a,{title:"Indice di condizionamento"},i("p",null,"È il coefficiente di proporzionalità tra i dati e l'",i("b",null,"errore inerente"),"."),i("p",null,"Essendo sempre maggiore di uno, si può dire che sia un coefficiente di amplificazione."),i("p",null,"Minore è l'indice di condizionamento, meglio condizionato è un problema.")),i(o.a,{title:"Indice algoritmico"},i("p",null,"È il coefficiente di proporzionalità tra i dati e l'",i("b",null,"errore algoritmico"),"."),i("p",null,"Essendo sempre maggiore di uno, si può dire che sia un coefficiente di amplificazione."))),i(l.a,{title:"Le cose più difficili di Algebra Lineare"},i(o.a,{title:"Matrice singolare"},i("p",null,"Matrice con determinante 0."),i("p",null,"Le matrici singolari ",i("b",null,"non sono invertibili"),"."))),i(l.a,{title:"Norme"},i(o.a,{title:"Norma vettoriale"},i("p",null,"Funzione che associa un valore positivo a ogni vettore diverso da 0, e 0 al vettore zero."),i(r.a,null,i("a",{href:"https://it.wikipedia.org/wiki/Norma_(matematica)#/media/File:Vector_norms.svg"},"Esempi su Wikipedia"))),i(o.a,{title:"Norma a infinito"},i("p",null,"Massimo dei valori assoluti di tutti gli elementi del vettore."),i("p",null,i(a.a,null,M(L||(L=j`\Vert x \Vert_\infty = max_{i = 1..n} | x_i |`))))),i(o.a,{title:"Norma a 1"},i("p",null,"Somma dei valori assoluti di tutti gli elementi del vettore."),i("p",null,i(a.a,null,M(y||(y=j`\Vert x \Vert_1 = \sum_{i = 1}^n | x_i |`))))),i(o.a,{title:"Norma a 2"},i("p",null,"Radice quadrata della somma dei quadrati di tutti gli elementi del vettore."),i("p",null,i(a.a,null,M(H||(H=j`\Vert x \Vert_2 = \sqrt{\sum_{i = 1}^n x_i^2}`)))))),i(l.a,null,i(o.a,{title:"Norma matriciale indotta"},i("p",null,"Funzione che associa un valore positivo a ogni matrice diversa da 0, e 0 alla matrice zero."),i("p",null,"Si ricavano dalle norme vettoriali:"),i("p",null,i(a.a,null,M(A||(A=j`\Vert A \Vert = sup_{x \in \mathbb{R}, x \neq 0} \frac{\Vert A \cdot x \Vert}{\Vert x \Vert}`)))),i(r.a,null,i(a.a,null,"sup")," è l'estremo superiore di un insieme. E' molto simile al massimo: ricordi le prime lezioni di Analisi?")),i(o.a,{title:"Norma a infinito"},i("p",null,"Massimo delle somme dei valori assoluti di tutti gli elementi di ogni riga di una matrice."),i("p",null,i(a.a,null,M(C||(C=j`\Vert A \Vert_\infty = max_{i = 1..n} \sum_{j = 1}^n | a_{ij} |`))))),i(o.a,{title:"Norma a 1"},i("p",null,"Massimo delle somme dei valori assoluti di tutti gli elementi di ogni colonna di una matrice."),i("p",null,i(a.a,null,M(N||(N=j`\Vert A \Vert_1 = max_{j = 1..n} \sum_{i = 1}^n | a_{ij} |`))))),i(o.a,{title:"Norma a 2"},i("p",null,"Radice quadrata del rango del prodotto tra una matrice e la sua trasposta."),i("p",null,i(a.a,null,M(k||(k=j`\Vert A \Vert_2 = \sqrt{\rho ( A^T \times A ) }`)))))),i(l.a,null,i(o.a,{title:"Errore relativo tra vettori e matrici"},i("p",null,"Le norme sono usate per calcolare l'errore relativo tra due vettori o matrici:"),i("p",null,i(a.a,null,M(q||(q=j`\frac{\Vert x - y \Vert}{\Vert x \Vert}`)))))),i(l.a,{title:"Fattorizzazione"},i(o.a,{title:"Cos'è?"},i("p",null,"La fattorizzazione è il processo che permette di risolvere sistemi di equazioni lineari rappresentati in forma di matrice."),i("p",null,"Esistono molteplici algoritmi in grado di realizzarla: mentre tutti portano alla stessa soluzione, possono avere ",i("b",null,"velocità")," e ",i("b",null,"indici algoritmici")," diversi."),i("p",null,"Il sistema lineare da risolvere viene diviso in due parti: la ",i("i",null,"matrice dei coefficienti")," e il ",i("i",null,"vettore termine noto"),".")),i(o.a,{title:"Teorema di Rouché-Capélli"},i("p",null))))}}}.call(this,n("hosL").h)},BSmf:function(i,e,n){"use strict";(function(i){n.d(e,"a",(function(){return o}));var t=n("hosL"),l=n("EfTa"),a=n.n(l);class o extends t.Component{constructor(){super(),this.state={now:Date.now()},this.timer=null}componentDidMount(){this.timer=setInterval(()=>{this.setState({now:Date.now()})},1e3)}componentWillUnmount(){null!==this.timer&&clearInterval(this.timer)}render(){let e="Unknown date",n=a.a.timer,t={milliseconds:"?",seconds:"?",minutes:"?",hours:"?",days:"?"};if(this.props.to){e=new Date(this.props.to);let i=e-this.state.now;i>0?t={milliseconds:i%1e3,seconds:Math.floor(i/1e3)%60,minutes:Math.floor(i/6e4)%60,hours:Math.floor(i/36e5)%24,days:Math.floor(i/864e5)}:(t={milliseconds:0,seconds:0,minutes:0,hours:0,days:0},n+=" "+a.a.expired)}else n+=" "+a.a.unknown;return i("div",{class:n,title:e},i("div",{class:a.a.days+" "+a.a.count},t.days),i("div",{className:a.a.days+" "+a.a.text},"giorni"),i("div",{class:a.a.hours+" "+a.a.count},t.hours),i("div",{className:a.a.hours+" "+a.a.text},"ore"),i("div",{class:a.a.minutes+" "+a.a.count},t.minutes),i("div",{className:a.a.minutes+" "+a.a.text},"minuti"),i("div",{class:a.a.seconds+" "+a.a.count},t.seconds),i("div",{class:a.a.seconds+" "+a.a.text},"secondi"),i("div",{class:a.a.remaining},"rimasti"))}}}).call(this,n("hosL").h)},EfTa:function(i){i.exports={timer:"timer__K0K_h",days:"days__vN3tf",hours:"hours__3v0KX",minutes:"minutes__vkYk7",seconds:"seconds__3gJ99",count:"count__1VV4k",text:"text__khS4i",remaining:"remaining__zUECg",unknown:"unknown__af307",expired:"expired__1rtHB"}},HKwK:function(i,e,n){"use strict";(function(i){n.d(e,"a",(function(){return o}));var t=n("r4EX"),l=n.n(t),a=n("hosL");class o extends a.Component{getStyle(){return l.a.panel}render(){let e=null;return void 0!==this.props.title&&(e=i("h3",null,this.props.title)),i("div",{class:this.getStyle(),id:this.props.id},e,this.props.children)}}}).call(this,n("hosL").h)},OMhl:function(i,e,n){"use strict";(function(i){var t=n("p7QU"),l=n.n(t),a=n("QRet"),o=n("8CDw"),r=n("wQ73");e.a=function(e){let n,t=Object(a.b)(o.a),u=Object(a.b)(r.a);return n=void 0===e.inline?u:e.inline,i("img",{src:`https://latex.codecogs.com/svg.latex?${`${n?"\\inline":""} {\\color{${t}} ${e.children} }`}`,alt:e.children,title:e.children,class:l.a.latex})}}).call(this,n("hosL").h)},PEwj:function(i,e,n){"use strict";(function(i){var t=n("2w3n"),l=n.n(t);n("hosL"),e.a=function(e){return i("div",{class:l.a.example},e.children)}}).call(this,n("hosL").h)},QRet:function(i,e,n){"use strict";function t(i){E.options.__h&&E.options.__h(b);var e=b.__H||(b.__H={__:[],__h:[]});return i>=e.__.length&&e.__.push({}),e.__[i]}function l(i){return a(g,i)}function a(i,e,n){var l=t(x++);return l.__c||(l.__c=b,l.__=[n?n(e):g(void 0,e),function(e){var n=i(l.__[0],e);l.__[0]!==n&&(l.__[0]=n,l.__c.setState({}))}]),l.__}function o(i,e){var n=t(x++);v(n.__H,e)&&(n.__=i,n.__H=e,b.__H.__h.push(n))}function r(i,e){var n=t(x++);v(n.__H,e)&&(n.__=i,n.__H=e,b.__h.push(n))}function u(i){return c((function(){return{current:i}}),[])}function s(i,e,n){r((function(){"function"==typeof i?i(e()):i&&(i.current=e())}),null==n?n:n.concat(i))}function c(i,e){var n=t(x++);return v(n.__H,e)?(n.__H=e,n.__h=i,n.__=i()):n.__}function p(i,e){return c((function(){return i}),e)}function d(i){var e=b.context[i.__c];if(!e)return i.__;var n=t(x++);return null==n.__&&(n.__=!0,e.sub(b)),e.props.value}function m(i,e){E.options.useDebugValue&&E.options.useDebugValue(e?e(i):i)}function _(){w.some((function(i){if(i.__P)try{i.__H.__h.forEach(f),i.__H.__h.forEach(h),i.__H.__h=[]}catch(e){return i.__H.__h=[],E.options.__e(e,i.__v),!0}})),w=[]}function f(i){i.t&&i.t()}function h(i){var e=i.__();"function"==typeof e&&(i.t=e)}function v(i,e){return!i||e.some((function(e,n){return e!==i[n]}))}function g(i,e){return"function"==typeof e?e(i):e}n.d(e,"j",(function(){return l})),n.d(e,"h",(function(){return a})),n.d(e,"d",(function(){return o})),n.d(e,"f",(function(){return r})),n.d(e,"i",(function(){return u})),n.d(e,"e",(function(){return s})),n.d(e,"g",(function(){return c})),n.d(e,"a",(function(){return p})),n.d(e,"b",(function(){return d})),n.d(e,"c",(function(){return m}));var x,b,z,E=n("hosL"),w=[],V=E.options.__r,L=E.options.diffed,y=E.options.__c,H=E.options.unmount;E.options.__r=function(i){V&&V(i),x=0,(b=i.__c).__H&&(b.__H.__h.forEach(f),b.__H.__h.forEach(h),b.__H.__h=[])},E.options.diffed=function(i){L&&L(i);var e=i.__c;if(e){var n=e.__H;n&&n.__h.length&&(1!==w.push(e)&&z===E.options.requestAnimationFrame||((z=E.options.requestAnimationFrame)||function(i){var e,n=function(){clearTimeout(t),cancelAnimationFrame(e),setTimeout(i)},t=setTimeout(n,100);"undefined"!=typeof window&&(e=requestAnimationFrame(n))})(_))}},E.options.__c=function(i,e){e.some((function(i){try{i.__h.forEach(f),i.__h=i.__h.filter((function(i){return!i.__||h(i)}))}catch(n){e.some((function(i){i.__h&&(i.__h=[])})),e=[],E.options.__e(n,i.__v)}})),y&&y(i,e)},E.options.unmount=function(i){H&&H(i);var e=i.__c;if(e){var n=e.__H;if(n)try{n.__.forEach((function(i){return i.t&&i.t()}))}catch(i){E.options.__e(i,e.__v)}}}},eCjK:function(i){i.exports={split:"split__3dL9r",splitparent:"splitparent__2H-vS",splitchild:"splitchild__1B-Jt"}},jXlC:function(i,e,n){"use strict";(function(i){n.d(e,"a",(function(){return o}));var t=n("3k98"),l=n.n(t),a=n("hosL");class o extends a.Component{render(){return i("span",{class:l.a.todo},this.props.children)}}}).call(this,n("hosL").h)},lL4N:function(i,e,n){"use strict";(function(i){n.d(e,"a",(function(){return o}));var t=n("eCjK"),l=n.n(t),a=n("hosL");class o extends a.Component{render(){let e,n=null;return void 0!==this.props.title&&(n=i("h2",null,this.props.title)),e=Array.isArray(this.props.children)?this.props.children.map(e=>i("div",{class:l.a.splitchild},e)):i("div",{class:l.a.splitchild},this.props.children),i("div",{class:l.a.split},n,i("div",{class:l.a.splitparent},e))}}}).call(this,n("hosL").h)},p7QU:function(i){i.exports={latex:"latex__3zlIu"}},r4EX:function(i){i.exports={panel:"panel__7bYPC"}},wQ73:function(i,e,n){"use strict";var t=n("hosL");e.a=Object(t.createContext)(!0)}}]); +//# sourceMappingURL=route-calcoloNumerico.chunk.d6955.esm.js.map \ No newline at end of file diff --git a/docs/route-calcoloNumerico.chunk.abaa3.esm.js.map b/docs/route-calcoloNumerico.chunk.d6955.esm.js.map similarity index 54% rename from docs/route-calcoloNumerico.chunk.abaa3.esm.js.map rename to docs/route-calcoloNumerico.chunk.d6955.esm.js.map index ca9cfc1..f1bafa5 100644 --- a/docs/route-calcoloNumerico.chunk.abaa3.esm.js.map +++ b/docs/route-calcoloNumerico.chunk.d6955.esm.js.map @@ -1 +1 @@ -{"version":3,"sources":[],"names":[],"mappings":"","file":"route-calcoloNumerico.chunk.abaa3.esm.js","sourceRoot":""} \ No newline at end of file +{"version":3,"sources":[],"names":[],"mappings":"","file":"route-calcoloNumerico.chunk.d6955.esm.js","sourceRoot":""} \ No newline at end of file diff --git a/docs/route-ottimizzazioneLineare.chunk.0d083.js b/docs/route-ottimizzazioneLineare.chunk.0d083.js new file mode 100644 index 0000000..1817457 --- /dev/null +++ b/docs/route-ottimizzazioneLineare.chunk.0d083.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[9],{"/fDt":function(n,l,i){"use strict";i.r(l),function(n){function e(){var n=j(["u_n"]);return e=function(){return n},n}function a(){var n=j(["x_n"]);return a=function(){return n},n}function t(){var n=j(["\n \begin{cases}\n z_{LR} = 3 x_1 + 5 x_2 + u_1 ( 12 - 2 x_1 - 3 x_2 ) + u_2 ( 3 + x_1 - 3 x_2 )\\\n x_1 geq 0\\\n x_2 geq 0\n end{cases}\n "],["\n \\begin{cases}\n z_{LR} = 3 x_1 + 5 x_2 + u_1 ( 12 - 2 x_1 - 3 x_2 ) + u_2 ( 3 + x_1 - 3 x_2 )\\\\\n x_1 \\geq 0\\\\\n x_2 \\geq 0\n \\end{cases}\n "]);return t=function(){return n},n}function o(){var n=j(["\n \begin{cases}\n z = 3 x_1 + 5 x_2\\\n 2 x_1 + 3 x_2 geq 12\\\n - x_1 + 3 x_2 geq 3\\\n x_1 geq 0\\\n x_2 geq 0\n end{cases}\n "],["\n \\begin{cases}\n z = 3 x_1 + 5 x_2\\\\\n 2 x_1 + 3 x_2 \\geq 12\\\\\n - x_1 + 3 x_2 \\geq 3\\\\\n x_1 \\geq 0\\\\\n x_2 \\geq 0\n \\end{cases}\n "]);return o=function(){return n},n}function u(){var n=j(["u_n"]);return u=function(){return n},n}function r(){var n=j(["y_n"]);return r=function(){return n},n}function s(){var n=j(["\frac{termine noto}{coeff. variabile entrante}"],["\\frac{termine\\ noto}{coeff.\\ variabile\\ entrante}"]);return s=function(){return n},n}function c(){var n=j(["\n \begin{cases}\n 2000A + 1000B = z\\\n 1A leq 3\\\n 1B leq 3\\\n 2A + 2B leq 7\n end{cases}\n "],["\n \\begin{cases}\n 2000A + 1000B = z\\\\\n 1A \\leq 3\\\\\n 1B \\leq 3\\\\\n 2A + 2B \\leq 7\n \\end{cases}\n "]);return c=function(){return n},n}function d(){var n=j(["z"]);return d=function(){return n},n}function p(){var n=j(["-a^- in mathbb{N}"],["-a^- \\in \\mathbb{N}"]);return p=function(){return n},n}function m(){var n=j(["a^+ in mathbb{N}"],["a^+ \\in \\mathbb{N}"]);return m=function(){return n},n}function f(){var n=j(["a in mathbb{Z}"],["a \\in \\mathbb{Z}"]);return f=function(){return n},n}function b(){var n=j(["x_j^-"]);return b=function(){return n},n}function v(){var n=j(["x_j^+"]);return v=function(){return n},n}function h(){var n=j(["x_j"]);return h=function(){return n},n}function _(){var n=j(["a + s_1 = 3"]);return _=function(){return n},n}function x(){var n=j(["a leq 3"],["a \\leq 3"]);return x=function(){return n},n}function g(){var n=j(["geq"],["\\geq"]);return g=function(){return n},n}function z(){var n=j(["leq"],["\\leq"]);return z=function(){return n},n}function q(){var n=j(["="]);return q=function(){return n},n}function w(){var n=j(["\nabla z = (2, 3, 4)"],["\\nabla z = (2, 3, 4)"]);return w=function(){return n},n}function y(){var n=j(["e_3 = (0, 0, 1)"]);return y=function(){return n},n}function S(){var n=j(["e_2 = (0, 1, 0)"]);return S=function(){return n},n}function L(){var n=j(["e_1 = (1, 0, 0)"]);return L=function(){return n},n}function U(){var n=j(["n = 3"]);return U=function(){return n},n}function C(){var n=j(["e_i"]);return C=function(){return n},n}function O(){var n=j(["\nabla f = \frac{delta f}{delta x_1} e_1 + \frac{delta f}{delta x_2} e_2 + \frac{delta f}{delta x_n} e_n"],["\\nabla f = \\frac{\\delta f}{\\delta x_1} e_1 + \\frac{\\delta f}{\\delta x_2} e_2 + \\frac{\\delta f}{\\delta x_n} e_n"]);return O=function(){return n},n}function D(){var n=j(["z = C_1 cdot x_1 + C_2 cdot x_2 + C_n cdot x_n"],["z = C_1 \\cdot x_1 + C_2 \\cdot x_2 + C_n \\cdot x_n"]);return D=function(){return n},n}function j(n,l){return l||(l=n.slice(0)),n.raw=l,n}i.d(l,"default",(function(){return W}));var k=i("hosL"),I=i("lL4N"),F=i("OMhl"),R=i("HKwK"),T=i("PEwj"),E=i("jXlC"),B=i("UEJU"),N=i("h7i1"),M=(i("3Gjt"),i("BSmf")),P=i("xY5u"),A=i("8YA6"),V=i("dIxp"),J=i("fWbf"),H=i("RPi6"),K=String.raw,W=function(l){function i(){return l.apply(this,arguments)||this}var j,k;return k=l,(j=i).prototype=Object.create(k.prototype),j.prototype.constructor=j,j.__proto__=k,i.prototype.render=function(){return n("div",null,n("h1",null,"Ottimizzazione lineare intera"),n(I.a,{title:"Unimore"},n(R.a,{title:"Videolezioni su YouTube"},n("p",null,"Ho rimosso il rumore in sottofondo da tutti i video di Ricerca Operativa!"),n("p",null,n("b",null,n("a",{href:"https://www.youtube.com/playlist?list=PLh93e8qjTszffkHNn-19CqUOhHFbhBlBh"},"Guardate i video qui!")))),n(R.a,{title:"Prossimi appelli"},n("ol",null,n("li",null,n(M.a,{to:"2020-06-08"})),n("li",null,n(M.a,{to:"2020-06-25"})),n("li",null,n(M.a,{to:"2020-07-14"}))))),n(I.a,{title:"Le basi"},n(R.a,{title:"Funzione obiettivo"},n("p",null,"La funzione obiettivo è la funzione con valore noto sconosciuto:"),n("p",null,n(F.a,null,K(D())))),n(R.a,{title:"Gradiente"},n("p",null,"Funzione della funzione obiettivo che indica la direzione del suo aumento più veloce."),n("p",null,n(F.a,null,K(O()))),n("p",null,n(F.a,null,K(C()))," è la direzione della coordinata i-esima."),n(T.a,null,"Se ",n(F.a,null,K(U())),", allora:",n("ul",null,n("li",null,n(F.a,null,K(L()))),n("li",null,n(F.a,null,K(S()))),n("li",null,n(F.a,null,K(y()))))),n(T.a,null,"Se la funzione obiettivo è ",n(F.a,null,"z = 2w + 3x + 4y"),", il suo gradiente è ",n(F.a,null,K(w())),"."))),n(I.a,{title:"Forme di un sistema"},n(R.a,{title:"Forma standard"},n("ul",null,n("li",null,n(B.a,null,"Solo equazioni")),n("li",null,n(B.a,null,"Tutte le variabili maggiori di zero")))),n(R.a,{title:"Forma canonica"},n("ul",null,n("li",null,n(N.a,null,"Equazioni e disequazioni")),n("li",null,n(B.a,null,"Tutte le variabili maggiori di zero")))),n(R.a,{title:"Forma generale"},n("ul",null,n("li",null,n(N.a,null,"Equazioni e disequazioni")),n("li",null,n(N.a,null,"Variabili con qualsiasi valore"))))),n(I.a,{title:"Equivalenza di forma"},n(R.a,{title:"Da standard a generale"},n("p",null,"Convertiamo ogni equazione ",n(F.a,null,K(q()))," in due disequazioni ",n(F.a,null,K(z()))," e ",n(F.a,null,K(g())),","),n(T.a,null,"Why would you ever do that?!")),n(R.a,{title:"Da canonica a standard"},n("p",null,"Convertiamo le disequazioni in equazioni aggiungendo una variabile slack."),n(T.a,null,n(F.a,null,K(x()))," diventa ",n(F.a,null,K(_())),".")),n(R.a,{title:"Da generale a canonica"},n("p",null,"Sostituiamo le variabili potenzialmente negative (unconstrained) ",n(F.a,null,K(h()))," con due variabili ",n(F.a,null,K(v()))," e ",n(F.a,null,K(b())),"."),n(T.a,null,n(F.a,null,K(f()))," diventa ",n(F.a,null,K(m()))," e ",n(F.a,null,K(p())),"."))),n(I.a,{title:"La forma standard"},n(R.a,{title:"Funzione obiettivo"},n("p",null,"La funzione da minimizzare/massimizzare, tipicamente indicata con una ",n(F.a,null,K(d()))," al termine noto.")),n(R.a,{title:"Vincoli"},n("p",null,"Le funzioni del sistema che non sono quella obiettivo.")),n(R.a,{title:"Tableu"},n("p",null,"Un modo per rappresentare sistemi in forma standard, anche noto come ",n("b",null,"matrice equivalente completa")," del sistema."),n(T.a,null,"Il sistema:",n("br",null),n("br",null),n(F.a,null,K(c())),n("br",null),n("br",null),"Diventa in forma di tableau:",n("br",null),n("br",null),n("table",{class:"right"},n("thead",null,n("tr",null,n("th",null,n("abbr",{title:"Termine noto"},"TN")),n("th",null,n(F.a,null,"x_1")),n("th",null,n(F.a,null,"x_2")),n("th",null,n(F.a,null,"s_1")),n("th",null,n(F.a,null,"s_2")))),n("tbody",null,n("tr",null,n("td",null,n(F.a,null,"z")),n("td",null,n(F.a,null,"2000")),n("td",null,n(F.a,null,"1000")),n("td",null,n(F.a,null,"0")),n("td",null,n(F.a,null,"0"))),n("tr",null,n("td",null,n(F.a,null,"3")),n("td",null,n(F.a,null,"1")),n("td",null,n(F.a,null,"0")),n("td",null,n(F.a,null,"1")),n("td",null,n(F.a,null,"0"))),n("tr",null,n("td",null,n(F.a,null,"3")),n("td",null,n(F.a,null,"0")),n("td",null,n(F.a,null,"1")),n("td",null,n(F.a,null,"0")),n("td",null,n(F.a,null,"1"))),n("tr",null,n("td",null,n(F.a,null,"7")),n("td",null,n(F.a,null,"2")),n("td",null,n(F.a,null,"2")),n("td",null,n(F.a,null,"0")),n("td",null,n(F.a,null,"0"))))))),n(R.a,{title:"Variabili di base"},n("p",null,"Variabili che hanno tutti 0 e un 1 nella loro colonna del tableu."),n("p",null,"La loro controparte sono le ",n("i",null,"variabili fuori base"),"."),n("p",null,"Un sistema lineare è risolto quando tutte le variabili originali (",n(F.a,null,"x_n"),") sono nella base."))),n(I.a,{title:"Simplex"},n(R.a,{title:"Cos'è?"},n("p",null,"Un algoritmo per ",n(J.a,null,"minimizzare"),"/",n(H.a,null,"massimizzare")," efficientemente variabili di sistemi lineari, derivato da Gauss-Jordan."),n(T.a,null,"E' spiegato in modo semplice ",n("a",{href:"https://web.archive.org/web/20200523052252/https://www.cs.cmu.edu/~15451-f17/handouts/simplex.pdf"},"qui"),", e ci sono dei codici sorgenti di esempio ",n("a",{href:"https://www.cs.cmu.edu/~15451-f17/handouts/simplexcodes/"},"qui"),".")),n(R.a,{title:"I passi"},n("ol",null,n("li",null,"Trasforma il sistema in ",n("b",null,"forma standard"),"."),n("li",null,"Trova tante variabili ",n("b",null,"linearmente indipendenti")," quante siano le righe: esse saranno la ",n("i",null,"base iniziale"),"."),n("li",null,"Finchè ci sono variabili con coefficienti ",n(J.a,null,"positivi"),"/",n(H.a,null,"negativi")," nella funzione obiettivo:",n("ol",null,n("li",null,n("b",null,"Scegli")," la prima variabile con coefficiente ",n(J.a,null,"positivo"),"/",n(H.a,null,"negativo")," nella funzione obiettivo: essa è la ",n("i",null,"variabile entrante"),".",n(T.a,null,"Si potrebbe scegliere qualsiasi variabile, ma scegliendo sempre la prima possibile (",n("i",null,"Regola di Bland"),") ci si assicura che l'algoritmo termini.")),n("li",null,"Trova la variabile di base (detta ",n("i",null,"variabile uscente"),") tramite il rapporto ",n(F.a,null,K(s())),": scegli la variabile con il ",n("b",null,"rapporto minore"),", assicurandoti che esso sia ",n("b",null,"positivo"),". Se tutti i rapporti sono negativi, allora il problema è ",n("b",null,n(V.a,null)),"."),n("li",null,n("b",null,"Riscrivi")," tutte le funzioni del sistema in termini della variabile entrante."))),n("li",null,"I ",n("b",null,"termini noti dei vincoli")," sono le coordinate del risultato, mentre il ",n("b",null,"termine noto della funzione obiettivo")," è il valore ",n(J.a,null,"minimizzato"),"/",n(H.a,null,"massimizzato"),"."))),n(R.a,{title:"Sotto forma di tableau"},n("p",null,"Se il problema è rappresentato in forma di tableau, allora esso è risolvibile applicando l'algoritmo di Gauss-Jordan, in aggiunta tenendo conto delle regole per la selezione delle variabili entranti e uscenti."))),n(I.a,null,n(R.a,{title:"Soluzioni di base degenerata"},n("p",null,"Una soluzione con almeno una variabile di valore ",n(F.a,null,"0"),", dovuta a uno o più ",n("b",null,"vincoli ridondanti"),"."),n("p",null,"Senza ",n("b",null,"Regola di Bland")," e in presenza di vincoli ridondanti si rischia di trovarsi a fare pivot infiniti.")),n(R.a,{title:"Esempio"},n(T.a,null,"Ho risolto il problema 3 del file ",n("a",{href:"https://dolly.fim.unimore.it/2019/mod/resource/view.php?id=2716"},n("code",null,"Ex_LP_testo"))," con il Simplex:",n("p",null,n(P.a,{src:"https://i.imgur.com/1r405Mb.jpg"}))))),n(I.a,{title:"Metodo delle due fasi"},n(R.a,{title:"Metodo delle due fasi"},n("p",null,"Un estensione del Simplex per permettere la risoluzione di problemi la cui origine non è una soluzione ammissibile."),n("p",null,"Prevede l'introduzione di un ",n("i",null,"problema ausiliario"),", le cui variabili sono dette ",n("i",null,"artificiali")," e sono solitamente rappresentate come ",n(F.a,null,K(r())),"."),n(T.a,null,"E' spiegato in modo semplice ",n("a",{href:"https://web.archive.org/web/20200523052252/https://www.cs.cmu.edu/~15451-f17/handouts/simplex.pdf"},"qui"),".")),n(R.a,{title:"Procedimento"},n("ol",null,n("li",null,"Crea un nuovo tableau, ",n("b",null,"aggiungendo variabili artificiali")," in modo da avere una base ammissibile."),n("li",null,"Sostituisci la vecchia funzione obiettivo con una nuova che ",n("b",null,"minimizzi la somma")," di tutte le variabili artificiali."),n("li",null,n("u",null,"Fase 1"),": ",n("b",null,"Risolvi")," il nuovo problema con il metodo Simplex."),n("li",null,"Se il Simplex termina con ancora ",n("b",null,"variabili artificiali nella base"),", allora il problema è ",n("b",null,n(A.a,null)),"."),n("li",null,"Una volta che le variabili artificiali sono fuori base, ",n("b",null,"elimina")," le loro colonne e la nuova funzione obiettivo.",n("br",null)),n("li",null,"Riporta il tableau in forma base compiendo operazioni per ",n("b",null,"azzerare i coefficienti")," delle variabili di base nella funzione obiettivo."),n("li",null,n("u",null,"Fase 2"),": ",n("b",null,"Risolvi")," il tableau con il metodo Simplex.")))),n(I.a,{title:"Dualità"},n(R.a,{title:"Rilassamento"},n("p",null,"Una versione semplificata di un problema nella quale si ",n("b",null,"ignorano")," uno o più vincoli.")),n(R.a,{title:"Rilassamento di Lagrange"},n("p",null,"Un rilassamento che permette di misurare ",n("b",null,"di quanto i vincoli vengono violati"),"."),n("p",null,"I vincoli vengono aggiunti alla funzione obiettivo assieme a un moltiplicatore, solitamente rappresentato con ",n(F.a,null,K(u())),"."),n(T.a,null,n("p",null,"Il sistema:"),n(F.a,{inline:!1},K(o())),n("p",null,"diventa:"),n(F.a,{inline:!1},K(t())))),n(R.a,{title:"Duale"},n("p",null,"Il sistema che ",n("b",null,n(J.a,null,"massimizza"),"/",n(H.a,null,"minimizza")," i moltiplicatori di rilassamento")," di un qualsiasi sistema, detto ",n("i",null,"primale"),"."),n("p",null,"Si dimostra che la sua soluzione (se esiste) è ",n("b",null,"uguale")," alla soluzione del problema primale.")),n(R.a,{title:"In termini matriciali"},n("p",null,"Possiamo ",n("b",null,"trasporre")," il tableau e sostituire le variabili ",n(F.a,null,K(a()))," con variabili ",n(F.a,null,K(e()))," per ottenere il sistema duale!"),n("p",null,"I maggiori e minori dei vincoli diventeranno maggiori e minori delle variabili e viceversa.")),n(R.a,{title:"Feasibility del duale"},n("ul",null,n("li",null,"Se un problema ha una ",n("b",null,"soluzione finita"),", allora anche il suo duale la avrà."),n("li",null,"Se un problema è ",n("b",null,n(A.a,null)),", allora il suo duale potrà essere ",n(A.a,null)," oppure ",n(V.a,null),"."),n("li",null,"Se un problema è ",n("b",null,n(V.a,null)),", allora il suo duale sarà certamente ",n(A.a,null),".")))),n(I.a,null,n(R.a,{title:"Lemma di Farkas"},n("p",null,n(E.a,null,"TODO: una complicata dimostrazione per dire varie cose. Probabilmente si riesce a saltare se non si dà l'orale..."))),n(R.a,{title:"Dualità forte"},n("p",null,"Il teorema che dimostra l'equivalenza tra primale e duale."),n("p",null,n(E.a,null,"TODO: Anche qui c'è una lunga dimostrazione..."))),n(R.a,{title:"Dualità debole"},n("p",null,"Il teorema che dimostra che il valore della funzione obiettivo del duale (di un qualsiasi tableau) è sempre ",n(J.a,null,"minore o uguale"),"/",n(H.a,null,"maggiore o uguale")," alla soluzione del corrispettivo primale."),n("p",null,n(E.a,null,"TODO: Dimostrazione cortina, ma sembra complicata.")))))},i}(k.Component)}.call(this,i("hosL").h)},"3k98":function(n){n.exports={todo:"todo__1UVRh"}},"4fSx":function(n){n.exports={unbounded:"unbounded__25UN8",unfeasible:"unfeasible__2MuIF",min:"min__3lPpn",max:"max__1hxKl"}},"56OW":function(n){n.exports={plus:"plus__2u13i"}},"8YA6":function(n,l,i){"use strict";(function(n){var e=i("4fSx"),a=i.n(e);l.a=function(l){return n("span",{class:a.a.unfeasible},l.children?l.children:"unfeasible")}}).call(this,i("hosL").h)},BSmf:function(n,l,i){"use strict";(function(n){i.d(l,"a",(function(){return o}));var e=i("hosL"),a=i("EfTa"),t=i.n(a),o=function(l){function i(){var n;return(n=l.call(this)||this).state={now:Date.now()},n.timer=null,n}var e,a;a=l,(e=i).prototype=Object.create(a.prototype),e.prototype.constructor=e,e.__proto__=a;var o=i.prototype;return o.componentDidMount=function(){var n=this;this.timer=setInterval((function(){n.setState({now:Date.now()})}),1e3)},o.componentWillUnmount=function(){null!==this.timer&&clearInterval(this.timer)},o.render=function(){var l="Unknown date",i=t.a.timer,e={milliseconds:"?",seconds:"?",minutes:"?",hours:"?",days:"?"};if(this.props.to){var a=(l=new Date(this.props.to))-this.state.now;a>0?e={milliseconds:a%1e3,seconds:Math.floor(a/1e3)%60,minutes:Math.floor(a/6e4)%60,hours:Math.floor(a/36e5)%24,days:Math.floor(a/864e5)}:(e={milliseconds:0,seconds:0,minutes:0,hours:0,days:0},i+=" "+t.a.expired)}else i+=" "+t.a.unknown;return n("div",{class:i,title:l},n("div",{class:t.a.days+" "+t.a.count},e.days),n("div",{className:t.a.days+" "+t.a.text},"giorni"),n("div",{class:t.a.hours+" "+t.a.count},e.hours),n("div",{className:t.a.hours+" "+t.a.text},"ore"),n("div",{class:t.a.minutes+" "+t.a.count},e.minutes),n("div",{className:t.a.minutes+" "+t.a.text},"minuti"),n("div",{class:t.a.seconds+" "+t.a.count},e.seconds),n("div",{class:t.a.seconds+" "+t.a.text},"secondi"),n("div",{class:t.a.remaining},"rimasti"))},i}(e.Component)}).call(this,i("hosL").h)},EfTa:function(n){n.exports={timer:"timer__K0K_h",days:"days__vN3tf",hours:"hours__3v0KX",minutes:"minutes__vkYk7",seconds:"seconds__3gJ99",count:"count__1VV4k",text:"text__khS4i",remaining:"remaining__zUECg",unknown:"unknown__af307",expired:"expired__1rtHB"}},OMhl:function(n,l,i){"use strict";(function(n){var e=i("p7QU"),a=i.n(e),t=i("QRet"),o=i("8CDw"),u=i("wQ73");l.a=function(l){var i=Object(t.b)(o.a),e=Object(t.b)(u.a);return n("img",{src:"https://latex.codecogs.com/svg.latex?"+(((void 0===l.inline?e:l.inline)?"\\inline":"")+" {\\color{"+i+"} "+l.children+" }"),alt:l.children,title:l.children,class:a.a.latex})}}).call(this,i("hosL").h)},RPi6:function(n,l,i){"use strict";(function(n){var e=i("4fSx"),a=i.n(e);l.a=function(l){return n("span",{class:a.a.max},l.children?l.children:"max")}}).call(this,i("hosL").h)},UEJU:function(n,l,i){"use strict";(function(n){i.d(l,"a",(function(){return t}));var e=i("nhUl"),a=i.n(e),t=function(l){function i(){return l.apply(this,arguments)||this}var e,t;return t=l,(e=i).prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t,i.prototype.render=function(){return n("span",{class:a.a.minus},this.props.children)},i}(i("hosL").Component)}).call(this,i("hosL").h)},dIxp:function(n,l,i){"use strict";(function(n){var e=i("4fSx"),a=i.n(e);l.a=function(l){return n("span",{class:a.a.unbounded},l.children?l.children:"unbounded")}}).call(this,i("hosL").h)},fWbf:function(n,l,i){"use strict";(function(n){var e=i("4fSx"),a=i.n(e);l.a=function(l){return n("span",{class:a.a.min},l.children?l.children:"min")}}).call(this,i("hosL").h)},h7i1:function(n,l,i){"use strict";(function(n){i.d(l,"a",(function(){return t}));var e=i("56OW"),a=i.n(e),t=function(l){function i(){return l.apply(this,arguments)||this}var e,t;return t=l,(e=i).prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t,i.prototype.render=function(){return n("span",{class:a.a.plus},this.props.children)},i}(i("hosL").Component)}).call(this,i("hosL").h)},jXlC:function(n,l,i){"use strict";(function(n){i.d(l,"a",(function(){return t}));var e=i("3k98"),a=i.n(e),t=function(l){function i(){return l.apply(this,arguments)||this}var e,t;return t=l,(e=i).prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t,i.prototype.render=function(){return n("span",{class:a.a.todo},this.props.children)},i}(i("hosL").Component)}).call(this,i("hosL").h)},nhUl:function(n){n.exports={minus:"minus__2EaF0"}},p7QU:function(n){n.exports={latex:"latex__3zlIu"}},wQ73:function(n,l,i){"use strict";var e=i("hosL");l.a=Object(e.createContext)(!0)},xY5u:function(n,l,i){"use strict";(function(n){l.a=function(l){return n("a",{href:l.src,title:l.alt,target:"_blank"},n("img",{src:l.src,alt:l.alt}))}}).call(this,i("hosL").h)}}]); +//# sourceMappingURL=route-ottimizzazioneLineare.chunk.0d083.js.map \ No newline at end of file diff --git a/docs/route-ottimizzazioneLineare.chunk.0d083.js.map b/docs/route-ottimizzazioneLineare.chunk.0d083.js.map new file mode 100644 index 0000000..c88f81d --- /dev/null +++ b/docs/route-ottimizzazioneLineare.chunk.0d083.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./routes/ottimizzazioneLineare.js","webpack:///./components/old/todo.css","webpack:///./components/OttimizzazioneLineare/Styles.less","webpack:///./components/old/plus.css","webpack:///./components/OttimizzazioneLineare/Unfeasible.js","webpack:///./components/old/timer.js","webpack:///./components/old/timer.less","webpack:///./components/Latex.js","webpack:///./components/OttimizzazioneLineare/Max.js","webpack:///./components/old/minus.js","webpack:///./components/OttimizzazioneLineare/Unbounded.js","webpack:///./components/OttimizzazioneLineare/Min.js","webpack:///./components/old/plus.js","webpack:///./components/old/todo.js","webpack:///./components/old/minus.css","webpack:///./components/Latex.css","webpack:///./contexts/LatexDefaultInline.js","webpack:///./components/Image.js"],"names":["r","String","raw","OttimizzazioneLineare","render","title","href","to","class","src","inline","Component","module","exports","props","style","unfeasible","children","Timer","state","Date","now","timer","componentDidMount","this","setInterval","setState","componentWillUnmount","clearInterval","dateTo","className","parts","milliseconds","seconds","minutes","hours","days","timeLeft","Math","floor","expired","unknown","count","text","remaining","renderColor","useContext","LatexRenderColor","defaultInline","LatexDefaultInline","undefined","alt","latex","max","Minus","minus","unbounded","min","Plus","plus","Todo","todo","createContext","target"],"mappings":"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","file":"route-ottimizzazioneLineare.chunk.0d083.js","sourcesContent":["import {Component} from 'preact'\nimport Split from \"../components/old/split\";\nimport Latex from \"../components/Latex\";\nimport Panel from \"../components/old/panel\";\nimport Example from \"../components/example\";\nimport Todo from \"../components/old/todo\";\nimport Minus from \"../components/old/minus\";\nimport Plus from \"../components/old/plus\";\nimport Code from \"../components/old/code\";\nimport Timer from \"../components/old/timer\";\nimport Image from \"../components/Image\";\nimport Unfeasible from \"../components/OttimizzazioneLineare/Unfeasible\";\nimport Unbounded from \"../components/OttimizzazioneLineare/Unbounded\";\nimport Min from \"../components/OttimizzazioneLineare/Min\";\nimport Max from \"../components/OttimizzazioneLineare/Max\";\n\nconst r = String.raw;\n\nexport default class OttimizzazioneLineare extends Component {\n render() {\n return (\n
\n

Ottimizzazione lineare intera

\n \n \n

\n Ho rimosso il rumore in sottofondo da tutti i video di Ricerca Operativa!\n

\n

\n Guardate i video qui!\n

\n
\n \n
    \n
  1. \n
  2. \n
  3. \n
\n
\n
\n \n \n

\n La funzione obiettivo è la funzione con valore noto sconosciuto:\n

\n

\n {r`z = C_1 \\cdot x_1 + C_2 \\cdot x_2 + C_n \\cdot x_n`}\n

\n
\n \n

\n Funzione della funzione obiettivo che indica la direzione del suo aumento più veloce.\n

\n

\n {r`\\nabla f = \\frac{\\delta f}{\\delta x_1} e_1 + \\frac{\\delta f}{\\delta x_2} e_2 + \\frac{\\delta f}{\\delta x_n} e_n`}\n

\n

\n {r`e_i`} è la direzione della coordinata i-esima.\n

\n \n Se {r`n = 3`}, allora:\n
    \n
  • {r`e_1 = (1, 0, 0)`}
  • \n
  • {r`e_2 = (0, 1, 0)`}
  • \n
  • {r`e_3 = (0, 0, 1)`}
  • \n
\n
\n \n Se la funzione obiettivo è z = 2w + 3x + 4y, il suo gradiente è {r`\\nabla z = (2, 3, 4)`}.\n \n
\n
\n \n \n
    \n
  • Solo equazioni
  • \n
  • Tutte le variabili maggiori di zero
  • \n
\n
\n \n
    \n
  • Equazioni e disequazioni
  • \n
  • Tutte le variabili maggiori di zero
  • \n
\n
\n \n
    \n
  • Equazioni e disequazioni
  • \n
  • Variabili con qualsiasi valore
  • \n
\n
\n
\n \n \n

\n Convertiamo ogni equazione {r`=`} in due disequazioni {r`\\leq`} e {r`\\geq`},\n

\n Why would you ever do that?!\n
\n \n

\n Convertiamo le disequazioni in equazioni aggiungendo una variabile slack.\n

\n \n {r`a \\leq 3`} diventa {r`a + s_1 = 3`}.\n \n
\n \n

\n Sostituiamo le variabili potenzialmente negative (unconstrained) {r`x_j`} con due variabili {r`x_j^+`} e {r`x_j^-`}.\n

\n \n {r`a \\in \\mathbb{Z}`} diventa {r`a^+ \\in \\mathbb{N}`} e {r`-a^- \\in \\mathbb{N}`}.\n \n
\n
\n \n \n

\n La funzione da minimizzare/massimizzare, tipicamente indicata con una {r`z`} al termine noto.\n

\n
\n \n

\n Le funzioni del sistema che non sono quella obiettivo.\n

\n
\n \n

\n Un modo per rappresentare sistemi in forma standard, anche noto come matrice equivalente completa del sistema.\n

\n \n Il sistema:

\n {r`\n \\begin{cases}\n 2000A + 1000B = z\\\\\n 1A \\leq 3\\\\\n 1B \\leq 3\\\\\n 2A + 2B \\leq 7\n \\end{cases}\n `}

\n Diventa in forma di tableau:

\n
should have a
should have a
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
TNx_1x_2s_1s_2
z2000100000
31010
30101
72200
\n \n \n \n

\n Variabili che hanno tutti 0 e un 1 nella loro colonna del tableu.\n

\n

\n La loro controparte sono le variabili fuori base.\n

\n

\n Un sistema lineare è risolto quando tutte le variabili originali (x_n) sono nella base.\n

\n
\n \n \n \n

\n Un algoritmo per minimizzare/massimizzare efficientemente variabili di sistemi lineari, derivato da Gauss-Jordan.\n

\n \n E' spiegato in modo semplice qui, e ci sono dei codici sorgenti di esempio qui.\n \n
\n \n
    \n
  1. Trasforma il sistema in forma standard.
  2. \n
  3. Trova tante variabili linearmente indipendenti quante siano le righe: esse saranno la base iniziale.
  4. \n
  5. Finchè ci sono variabili con coefficienti positivi/negativi nella funzione obiettivo:\n
      \n
    1. \n Scegli la prima variabile con coefficiente positivo/negativo nella funzione obiettivo: essa è la variabile entrante.\n Si potrebbe scegliere qualsiasi variabile, ma scegliendo sempre la prima possibile (Regola di Bland) ci si assicura che l'algoritmo termini.\n
    2. \n
    3. Trova la variabile di base (detta variabile uscente) tramite il rapporto {r`\\frac{termine\\ noto}{coeff.\\ variabile\\ entrante}`}: scegli la variabile con il rapporto minore, assicurandoti che esso sia positivo. Se tutti i rapporti sono negativi, allora il problema è .
    4. \n
    5. Riscrivi tutte le funzioni del sistema in termini della variabile entrante.
    6. \n
    \n
  6. \n
  7. I termini noti dei vincoli sono le coordinate del risultato, mentre il termine noto della funzione obiettivo è il valore minimizzato/massimizzato.
  8. \n
\n
\n \n

\n Se il problema è rappresentato in forma di tableau, allora esso è risolvibile applicando l'algoritmo di Gauss-Jordan, in aggiunta tenendo conto delle regole per la selezione delle variabili entranti e uscenti.\n

\n
\n
\n \n \n

\n Una soluzione con almeno una variabile di valore 0, dovuta a uno o più vincoli ridondanti.\n

\n

\n Senza Regola di Bland e in presenza di vincoli ridondanti si rischia di trovarsi a fare pivot infiniti.\n

\n
\n \n \n Ho risolto il problema 3 del file Ex_LP_testo con il Simplex:\n

\n \n

\n
\n
\n
\n \n \n

\n Un estensione del Simplex per permettere la risoluzione di problemi la cui origine non è una soluzione ammissibile.\n

\n

\n Prevede l'introduzione di un problema ausiliario, le cui variabili sono dette artificiali e sono solitamente rappresentate come {r`y_n`}.\n

\n \n E' spiegato in modo semplice qui.\n \n
\n \n
    \n
  1. Crea un nuovo tableau, aggiungendo variabili artificiali in modo da avere una base ammissibile.
  2. \n
  3. Sostituisci la vecchia funzione obiettivo con una nuova che minimizzi la somma di tutte le variabili artificiali.
  4. \n
  5. Fase 1: Risolvi il nuovo problema con il metodo Simplex.
  6. \n
  7. Se il Simplex termina con ancora variabili artificiali nella base, allora il problema è .
  8. \n
  9. Una volta che le variabili artificiali sono fuori base, elimina le loro colonne e la nuova funzione obiettivo.
  10. \n
  11. Riporta il tableau in forma base compiendo operazioni per azzerare i coefficienti delle variabili di base nella funzione obiettivo.
  12. \n
  13. Fase 2: Risolvi il tableau con il metodo Simplex.
  14. \n
\n
\n
\n \n \n

\n Una versione semplificata di un problema nella quale si ignorano uno o più vincoli.\n

\n
\n \n

\n Un rilassamento che permette di misurare di quanto i vincoli vengono violati.\n

\n

\n I vincoli vengono aggiunti alla funzione obiettivo assieme a un moltiplicatore, solitamente rappresentato con {r`u_n`}.\n

\n \n

\n Il sistema:\n

\n {r`\n \\begin{cases}\n z = 3 x_1 + 5 x_2\\\\\n 2 x_1 + 3 x_2 \\geq 12\\\\\n - x_1 + 3 x_2 \\geq 3\\\\\n x_1 \\geq 0\\\\\n x_2 \\geq 0\n \\end{cases}\n `}\n

\n diventa:\n

\n {r`\n \\begin{cases}\n z_{LR} = 3 x_1 + 5 x_2 + u_1 ( 12 - 2 x_1 - 3 x_2 ) + u_2 ( 3 + x_1 - 3 x_2 )\\\\\n x_1 \\geq 0\\\\\n x_2 \\geq 0\n \\end{cases}\n `}\n
\n
\n \n

\n Il sistema che massimizza/minimizza i moltiplicatori di rilassamento di un qualsiasi sistema, detto primale.\n

\n

\n Si dimostra che la sua soluzione (se esiste) è uguale alla soluzione del problema primale.\n

\n
\n \n

\n Possiamo trasporre il tableau e sostituire le variabili {r`x_n`} con variabili {r`u_n`} per ottenere il sistema duale!\n

\n

\n I maggiori e minori dei vincoli diventeranno maggiori e minori delle variabili e viceversa.\n

\n
\n \n
    \n
  • Se un problema ha una soluzione finita, allora anche il suo duale la avrà.
  • \n
  • Se un problema è , allora il suo duale potrà essere oppure .
  • \n
  • Se un problema è , allora il suo duale sarà certamente .
  • \n
\n
\n
\n \n \n

\n TODO: una complicata dimostrazione per dire varie cose. Probabilmente si riesce a saltare se non si dà l'orale...\n

\n
\n \n

\n Il teorema che dimostra l'equivalenza tra primale e duale.\n

\n

\n TODO: Anche qui c'è una lunga dimostrazione...\n

\n
\n \n

\n Il teorema che dimostra che il valore della funzione obiettivo del duale (di un qualsiasi tableau) è sempre minore o uguale/maggiore o uguale alla soluzione del corrispettivo primale.\n

\n

\n TODO: Dimostrazione cortina, ma sembra complicata.\n

\n
\n
\n \n )\n }\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"todo\":\"todo__1UVRh\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"unbounded\":\"unbounded__25UN8\",\"unfeasible\":\"unfeasible__2MuIF\",\"min\":\"min__3lPpn\",\"max\":\"max__1hxKl\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"plus\":\"plus__2u13i\"};","import style from \"./Styles.less\";\r\n\r\nexport default function (props) {\r\n return (\r\n {props.children ? props.children : \"unfeasible\"}\r\n );\r\n}\r\n","import {Component} from 'preact'\nimport style from \"./timer.less\"\n\n\nexport default class Timer extends Component {\n constructor() {\n super();\n this.state = {\n \"now\": Date.now()\n };\n this.timer = null;\n }\n\n componentDidMount() {\n this.timer = setInterval(() => {\n this.setState({\"now\": Date.now()})\n }, 1000)\n }\n\n componentWillUnmount() {\n if(this.timer !== null) {\n clearInterval(this.timer)\n }\n }\n\n render() {\n let dateTo = \"Unknown date\";\n let className = style.timer;\n\n let parts = {\n milliseconds: \"?\",\n seconds: \"?\",\n minutes: \"?\",\n hours: \"?\",\n days: \"?\",\n };\n\n if(this.props.to) {\n dateTo = new Date(this.props.to);\n let timeLeft = dateTo - this.state.now;\n\n if(timeLeft > 0) {\n parts = {\n milliseconds: timeLeft % 1000,\n seconds: Math.floor(timeLeft / 1000) % 60,\n minutes: Math.floor(timeLeft / 60000) % 60,\n hours: Math.floor(timeLeft / 3600000) % 24,\n days: Math.floor(timeLeft / 86400000),\n };\n }\n\n else {\n parts = {\n milliseconds: 0,\n seconds: 0,\n minutes: 0,\n hours: 0,\n days: 0,\n };\n\n className += \" \" + style.expired;\n }\n }\n else {\n className += \" \" + style.unknown;\n }\n\n return (\n
\n
\n {parts.days}\n
\n
\n giorni\n
\n
\n {parts.hours}\n
\n
\n ore\n
\n
\n {parts.minutes}\n
\n
\n minuti\n
\n
\n {parts.seconds}\n
\n
\n secondi\n
\n
\n rimasti\n
\n
\n )\n }\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"timer\":\"timer__K0K_h\",\"days\":\"days__vN3tf\",\"hours\":\"hours__3v0KX\",\"minutes\":\"minutes__vkYk7\",\"seconds\":\"seconds__3gJ99\",\"count\":\"count__1VV4k\",\"text\":\"text__khS4i\",\"remaining\":\"remaining__zUECg\",\"unknown\":\"unknown__af307\",\"expired\":\"expired__1rtHB\"};","import style from './Latex.css';\nimport {useContext} from \"preact/hooks\";\nimport LatexRenderColor from \"../contexts/LatexRenderColor\";\nimport LatexDefaultInline from \"../contexts/LatexDefaultInline\";\n\nexport default function(props) {\n\t// black, blue, brown, cyan, darkgray, gray, green, lightgray, lime, magenta, olive, orange, pink, purple, red, teal, violet, white, yellow\n\tlet renderColor = useContext(LatexRenderColor);\n\tlet defaultInline = useContext(LatexDefaultInline);\n\n\tlet is_inline;\n\tif(props.inline === undefined) {\n\t\tis_inline = defaultInline;\n\t}\n\telse {\n\t\tis_inline = props.inline;\n\t}\n\n\tlet inline = is_inline ? `\\\\inline` : \"\";\n\tlet equation = `${inline} {\\\\color{${renderColor}} ${props.children} }`;\n\n\treturn (\n\t\t{props.children}\n\t\t\t\n\t);\n}\n","import style from \"./Styles.less\";\r\n\r\nexport default function (props) {\r\n return (\r\n {props.children ? props.children : \"max\"}\r\n );\r\n}\r\n","import style from \"./minus.css\";\nimport { Component } from 'preact';\n\nexport default class Minus extends Component {\n\trender() {\n\t\treturn {this.props.children};\n\t}\n}\n","import style from \"./Styles.less\";\r\n\r\nexport default function (props) {\r\n return (\r\n {props.children ? props.children : \"unbounded\"}\r\n );\r\n}\r\n","import style from \"./Styles.less\";\r\n\r\nexport default function (props) {\r\n return (\r\n {props.children ? props.children : \"min\"}\r\n );\r\n}\r\n","import style from \"./plus.css\";\nimport { Component } from 'preact';\n\nexport default class Plus extends Component {\n\trender() {\n\t\treturn {this.props.children};\n\t}\n}\n","import style from \"./todo.css\";\nimport { Component } from 'preact';\n\nexport default class Todo extends Component {\n\trender() {\n\t\treturn {this.props.children};\n\t}\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"minus\":\"minus__2EaF0\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"latex\":\"latex__3zlIu\"};","import {createContext} from \"preact\";\r\n\r\nexport default createContext(true);\r\n","export default function(props) {\r\n return (\r\n {props.alt}/\r\n )\r\n}\r\n"],"sourceRoot":""} \ No newline at end of file diff --git a/docs/route-ottimizzazioneLineare.chunk.353b8.esm.js b/docs/route-ottimizzazioneLineare.chunk.353b8.esm.js deleted file mode 100644 index 144bef2..0000000 --- a/docs/route-ottimizzazioneLineare.chunk.353b8.esm.js +++ /dev/null @@ -1,9 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[9],{"/fDt":function(l,i,n){"use strict";n.r(i),function(l){n.d(i,"default",(function(){return I}));var a=n("hosL"),e=n("lL4N"),t=n("OMhl"),o=n("HKwK"),u=n("PEwj"),s=(n("jXlC"),n("UEJU")),r=n("h7i1"),d=(n("3Gjt"),n("BSmf")),c=n("xY5u"),m=n("8YA6"),p=n("dIxp");let b,h,f,v,z,_,g,x,w,q,L,S,C,U,y,k,E,O,j,F,T,M,N,B=l=>l;const D=String.raw;class I extends a.Component{render(){return l("div",null,l("h1",null,"Ottimizzazione lineare intera"),l(e.a,{title:"Unimore"},l(o.a,{title:"Videolezioni su YouTube"},l("p",null,"Ho rimosso il rumore in sottofondo da tutti i video di Ricerca Operativa!"),l("p",null,l("b",null,l("a",{href:"https://www.youtube.com/playlist?list=PLh93e8qjTszffkHNn-19CqUOhHFbhBlBh"},"Guardate i video qui!")))),l(o.a,{title:"Prossimi appelli"},l("ol",null,l("li",null,l(d.a,{to:"2020-06-08"})),l("li",null,l(d.a,{to:"2020-06-25"})),l("li",null,l(d.a,{to:"2020-07-14"}))))),l(e.a,{title:"Le basi"},l(o.a,{title:"Funzione obiettivo"},l("p",null,"La funzione obiettivo è la funzione con valore noto sconosciuto:"),l("p",null,l(t.a,null,D(b||(b=B`z = C_1 \cdot x_1 + C_2 \cdot x_2 + C_n \cdot x_n`))))),l(o.a,{title:"Gradiente"},l("p",null,"Funzione della funzione obiettivo che indica la direzione del suo aumento più veloce."),l("p",null,l(t.a,null,D(h||(h=B`\nabla f = \frac{\delta f}{\delta x_1} e_1 + \frac{\delta f}{\delta x_2} e_2 + \frac{\delta f}{\delta x_n} e_n`)))),l("p",null,l(t.a,null,D(f||(f=B`e_i`)))," è la direzione della coordinata i-esima."),l(u.a,null,"Se ",l(t.a,null,D(v||(v=B`n = 3`))),", allora:",l("ul",null,l("li",null,l(t.a,null,D(z||(z=B`e_1 = (1, 0, 0)`)))),l("li",null,l(t.a,null,D(_||(_=B`e_2 = (0, 1, 0)`)))),l("li",null,l(t.a,null,D(g||(g=B`e_3 = (0, 0, 1)`)))))),l(u.a,null,"Se la funzione obiettivo è ",l(t.a,null,"z = 2w + 3x + 4y"),", il suo gradiente è ",l(t.a,null,D(x||(x=B`\nabla z = (2, 3, 4)`))),"."))),l(e.a,{title:"Forme di un sistema"},l(o.a,{title:"Forma standard"},l("ul",null,l("li",null,l(s.a,null,"Solo equazioni")),l("li",null,l(s.a,null,"Tutte le variabili maggiori di zero")))),l(o.a,{title:"Forma canonica"},l("ul",null,l("li",null,l(r.a,null,"Equazioni e disequazioni")),l("li",null,l(s.a,null,"Tutte le variabili maggiori di zero")))),l(o.a,{title:"Forma generale"},l("ul",null,l("li",null,l(r.a,null,"Equazioni e disequazioni")),l("li",null,l(r.a,null,"Variabili con qualsiasi valore"))))),l(e.a,{title:"Equivalenza di forma"},l(o.a,{title:"Da standard a generale"},l("p",null,"Convertiamo ogni equazione ",l(t.a,null,D(w||(w=B`=`)))," in due disequazioni ",l(t.a,null,D(q||(q=B`\leq`)))," e ",l(t.a,null,D(L||(L=B`\geq`))),","),l(u.a,null,"Why would you ever do that?!")),l(o.a,{title:"Da canonica a standard"},l("p",null,"Convertiamo le disequazioni in equazioni aggiungendo una variabile slack."),l(u.a,null,l(t.a,null,D(S||(S=B`a \leq 3`)))," diventa ",l(t.a,null,D(C||(C=B`a + s_1 = 3`))),".")),l(o.a,{title:"Da generale a canonica"},l("p",null,"Sostituiamo le variabili potenzialmente negative (unconstrained) ",l(t.a,null,D(U||(U=B`x_j`)))," con due variabili ",l(t.a,null,D(y||(y=B`x_j^+`)))," e ",l(t.a,null,D(k||(k=B`x_j^-`))),"."),l(u.a,null,l(t.a,null,D(E||(E=B`a \in \mathbb{Z}`)))," diventa ",l(t.a,null,D(O||(O=B`a^+ \in \mathbb{N}`)))," e ",l(t.a,null,D(j||(j=B`-a^- \in \mathbb{N}`))),"."))),l(e.a,{title:"La forma standard"},l(o.a,{title:"Funzione obiettivo"},l("p",null,"La funzione da minimizzare/massimizzare, tipicamente indicata con una ",l(t.a,null,D(F||(F=B`z`)))," al termine noto.")),l(o.a,{title:"Tableu"},l("p",null,"Un modo per rappresentare sistemi in forma standard, anche noto come ",l("b",null,"matrice equivalente completa")," del sistema."),l(u.a,null,"Il sistema:",l("br",null),l("br",null),l(t.a,null,D(T||(T=B` - \begin{cases} - 2000A + 1000B = z\\ - 1A \leq 3\\ - 1B \leq 3\\ - 2A + 2B \leq 7 - \end{cases} - `))),l("br",null),l("br",null),"Diventa in forma di tableau:",l("br",null),l("br",null),l("table",{class:"right"},l("thead",null,l("tr",null,l("th",null,l("abbr",{title:"Termine noto"},"TN")),l("th",null,l(t.a,null,"x_1")),l("th",null,l(t.a,null,"x_2")),l("th",null,l(t.a,null,"s_1")),l("th",null,l(t.a,null,"s_2")))),l("tbody",null,l("tr",null,l("td",null,l(t.a,null,"z")),l("td",null,l(t.a,null,"2000")),l("td",null,l(t.a,null,"1000")),l("td",null,l(t.a,null,"0")),l("td",null,l(t.a,null,"0"))),l("tr",null,l("td",null,l(t.a,null,"3")),l("td",null,l(t.a,null,"1")),l("td",null,l(t.a,null,"0")),l("td",null,l(t.a,null,"1")),l("td",null,l(t.a,null,"0"))),l("tr",null,l("td",null,l(t.a,null,"3")),l("td",null,l(t.a,null,"0")),l("td",null,l(t.a,null,"1")),l("td",null,l(t.a,null,"0")),l("td",null,l(t.a,null,"1"))),l("tr",null,l("td",null,l(t.a,null,"7")),l("td",null,l(t.a,null,"2")),l("td",null,l(t.a,null,"2")),l("td",null,l(t.a,null,"0")),l("td",null,l(t.a,null,"0"))))))),l(o.a,{title:"Variabili di base"},l("p",null,"Variabili che hanno tutti 0 e un 1 nella loro colonna del tableu."),l("p",null,"La loro controparte sono le ",l("i",null,"variabili fuori base"),"."),l("p",null,"Un sistema lineare è risolto quando tutte le variabili originali (",l(t.a,null,"x_n"),") sono nella base."))),l(e.a,{title:"Simplex"},l(o.a,{title:"Cos'è?"},l("p",null,"Un algoritmo per ",l(s.a,null,"minimizzare"),"/",l(r.a,null,"massimizzare")," efficientemente variabili di sistemi lineari, derivato da Gauss-Jordan."),l(u.a,null,"E' spiegato in modo semplice ",l("a",{href:"https://web.archive.org/web/20200523052252/https://www.cs.cmu.edu/~15451-f17/handouts/simplex.pdf"},"qui"),", e ci sono dei codici sorgenti di esempio ",l("a",{href:"https://www.cs.cmu.edu/~15451-f17/handouts/simplexcodes/"},"qui"),".")),l(o.a,{title:"I passi"},l("ol",null,l("li",null,"Trasforma il sistema in ",l("b",null,"forma standard"),"."),l("li",null,"Trova tante variabili ",l("b",null,"linearmente indipendenti")," quante siano le righe: esse saranno la ",l("i",null,"base iniziale"),"."),l("li",null,"Finchè ci sono variabili con coefficienti ",l(s.a,null,"positivi"),"/",l(r.a,null,"negativi")," nella funzione obiettivo:",l("ol",null,l("li",null,l("b",null,"Scegli")," la prima variabile con coefficiente ",l(s.a,null,"positivo"),"/",l(r.a,null,"negativo")," nella funzione obiettivo: essa è la ",l("i",null,"variabile entrante"),".",l(u.a,null,"Si potrebbe scegliere qualsiasi variabile, ma scegliendo sempre la prima possibile (",l("i",null,"Regola di Bland"),") ci si assicura che l'algoritmo termini.")),l("li",null,"Trova la variabile di base (detta ",l("i",null,"variabile uscente"),") tramite il rapporto ",l(t.a,null,D(M||(M=B`\frac{termine\ noto}{coeff.\ variabile\ entrante}`))),": scegli la variabile con il ",l("b",null,"rapporto minore"),", assicurandoti che esso sia ",l("b",null,"positivo"),". Se tutti i rapporti sono negativi, allora il problema è ",l("b",null,l(p.a,null)),"."),l("li",null,l("b",null,"Riscrivi")," tutte le funzioni del sistema in termini della variabile entrante."))),l("li",null,"I ",l("b",null,"termini noti dei vincoli")," sono le coordinate del risultato, mentre il ",l("b",null,"termine noto della funzione obiettivo")," è il valore ",l(s.a,null,"minimizzato"),"/",l(r.a,null,"massimizzato"),"."))),l(o.a,{title:"Sotto forma di tableau"},l("p",null,"Se il problema è rappresentato in forma di tableau, allora esso è risolvibile applicando l'algoritmo di Gauss-Jordan, in aggiunta tenendo conto delle regole per la selezione delle variabili entranti e uscenti."))),l(e.a,null,l(o.a,{title:"Soluzioni di base degenerata"},l("p",null,"Una soluzione con almeno una variabile di valore ",l(t.a,null,"0"),", dovuta a uno o più ",l("b",null,"vincoli ridondanti"),"."),l("p",null,"Senza ",l("b",null,"Regola di Bland")," e in presenza di vincoli ridondanti si rischia di trovarsi a fare pivot infiniti.")),l(o.a,{title:"Esempio"},l(u.a,null,"Ho risolto il problema 3 del file ",l("a",{href:"https://dolly.fim.unimore.it/2019/mod/resource/view.php?id=2716"},l("code",null,"Ex_LP_testo"))," con il Simplex:",l("p",null,l(c.a,{src:"https://i.imgur.com/1r405Mb.jpg"}))))),l(e.a,{title:"Metodo delle due fasi"},l(o.a,{title:"Metodo delle due fasi"},l("p",null,"Un estensione del Simplex per permettere la risoluzione di problemi la cui origine non è una soluzione ammissibile."),l("p",null,"Prevede l'introduzione di un ",l("i",null,"problema ausiliario"),", le cui variabili sono dette ",l("i",null,"artificiali")," e sono solitamente rappresentate come ",l(t.a,null,D(N||(N=B`y_n`))),"."),l(u.a,null,"E' spiegato in modo semplice ",l("a",{href:"https://web.archive.org/web/20200523052252/https://www.cs.cmu.edu/~15451-f17/handouts/simplex.pdf"},"qui"),".")),l(o.a,{title:"Procedimento"},l("ol",null,l("li",null,"Crea un nuovo tableau, ",l("b",null,"aggiungendo variabili artificiali")," in modo da avere una base ammissibile."),l("li",null,"Sostituisci la vecchia funzione obiettivo con una nuova che ",l("b",null,l(s.a,null,"minimizzi")," la somma")," di tutte le variabili artificiali."),l("li",null,l("u",null,"Fase 1"),": ",l("b",null,"Risolvi")," il nuovo problema con il metodo Simplex."),l("li",null,"Se il Simplex termina con ancora ",l("b",null,"variabili artificiali nella base"),", allora il problema è ",l("b",null,l(m.a,null)),"."),l("li",null,"Una volta che le variabili artificiali sono fuori base, ",l("b",null,"elimina")," le loro colonne e la nuova funzione obiettivo.",l("br",null)),l("li",null,"Riporta il tableau in forma base compiendo operazioni per ",l("b",null,"azzerare i coefficienti")," delle variabili di base nella funzione obiettivo."),l("li",null,l("u",null,"Fase 2"),": ",l("b",null,"Risolvi")," il tableau con il metodo Simplex.")))))}}}.call(this,n("hosL").h)},"3k98":function(l){l.exports={todo:"todo__1UVRh"}},"56OW":function(l){l.exports={plus:"plus__2u13i"}},"8YA6":function(l,i,n){"use strict";(function(l){var a=n("zCOL"),e=n.n(a);i.a=function(i){return l("span",{class:e.a.unfeasible},i.children?i.children:"unfeasible")}}).call(this,n("hosL").h)},BSmf:function(l,i,n){"use strict";(function(l){n.d(i,"a",(function(){return o}));var a=n("hosL"),e=n("EfTa"),t=n.n(e);class o extends a.Component{constructor(){super(),this.state={now:Date.now()},this.timer=null}componentDidMount(){this.timer=setInterval(()=>{this.setState({now:Date.now()})},1e3)}componentWillUnmount(){null!==this.timer&&clearInterval(this.timer)}render(){let i="Unknown date",n=t.a.timer,a={milliseconds:"?",seconds:"?",minutes:"?",hours:"?",days:"?"};if(this.props.to){i=new Date(this.props.to);let l=i-this.state.now;l>0?a={milliseconds:l%1e3,seconds:Math.floor(l/1e3)%60,minutes:Math.floor(l/6e4)%60,hours:Math.floor(l/36e5)%24,days:Math.floor(l/864e5)}:(a={milliseconds:0,seconds:0,minutes:0,hours:0,days:0},n+=" "+t.a.expired)}else n+=" "+t.a.unknown;return l("div",{class:n,title:i},l("div",{class:t.a.days+" "+t.a.count},a.days),l("div",{className:t.a.days+" "+t.a.text},"giorni"),l("div",{class:t.a.hours+" "+t.a.count},a.hours),l("div",{className:t.a.hours+" "+t.a.text},"ore"),l("div",{class:t.a.minutes+" "+t.a.count},a.minutes),l("div",{className:t.a.minutes+" "+t.a.text},"minuti"),l("div",{class:t.a.seconds+" "+t.a.count},a.seconds),l("div",{class:t.a.seconds+" "+t.a.text},"secondi"),l("div",{class:t.a.remaining},"rimasti"))}}}).call(this,n("hosL").h)},EfTa:function(l){l.exports={timer:"timer__K0K_h",days:"days__vN3tf",hours:"hours__3v0KX",minutes:"minutes__vkYk7",seconds:"seconds__3gJ99",count:"count__1VV4k",text:"text__khS4i",remaining:"remaining__zUECg",unknown:"unknown__af307",expired:"expired__1rtHB"}},IwNZ:function(l){l.exports={unbounded:"unbounded__3Q7MA"}},OMhl:function(l,i,n){"use strict";(function(l){var a=n("p7QU"),e=n.n(a),t=n("QRet"),o=n("8CDw"),u=n("wQ73");i.a=function(i){let n,a=Object(t.b)(o.a),s=Object(t.b)(u.a);return n=void 0===i.inline?s:i.inline,l("img",{src:`https://latex.codecogs.com/svg.latex?${`${n?"\\inline":""} {\\color{${a}} ${i.children} }`}`,alt:i.children,title:i.children,class:e.a.latex})}}).call(this,n("hosL").h)},UEJU:function(l,i,n){"use strict";(function(l){n.d(i,"a",(function(){return o}));var a=n("nhUl"),e=n.n(a),t=n("hosL");class o extends t.Component{render(){return l("span",{class:e.a.minus},this.props.children)}}}).call(this,n("hosL").h)},dIxp:function(l,i,n){"use strict";(function(l){var a=n("IwNZ"),e=n.n(a);i.a=function(i){return l("span",{class:e.a.unbounded},i.children?i.children:"unbounded")}}).call(this,n("hosL").h)},h7i1:function(l,i,n){"use strict";(function(l){n.d(i,"a",(function(){return o}));var a=n("56OW"),e=n.n(a),t=n("hosL");class o extends t.Component{render(){return l("span",{class:e.a.plus},this.props.children)}}}).call(this,n("hosL").h)},jXlC:function(l,i,n){"use strict";(function(l){n.d(i,"a",(function(){return o}));var a=n("3k98"),e=n.n(a),t=n("hosL");class o extends t.Component{render(){return l("span",{class:e.a.todo},this.props.children)}}}).call(this,n("hosL").h)},nhUl:function(l){l.exports={minus:"minus__2EaF0"}},p7QU:function(l){l.exports={latex:"latex__3zlIu"}},wQ73:function(l,i,n){"use strict";var a=n("hosL");i.a=Object(a.createContext)(!0)},xY5u:function(l,i,n){"use strict";(function(l){i.a=function(i){return l("a",{href:i.src,title:i.alt,target:"_blank"},l("img",{src:i.src,alt:i.alt}))}}).call(this,n("hosL").h)},zCOL:function(l){l.exports={unfeasible:"unfeasible__3QoOn"}}}]); -//# sourceMappingURL=route-ottimizzazioneLineare.chunk.353b8.esm.js.map \ No newline at end of file diff --git a/docs/route-ottimizzazioneLineare.chunk.762b1.js b/docs/route-ottimizzazioneLineare.chunk.762b1.js deleted file mode 100644 index b94fe37..0000000 --- a/docs/route-ottimizzazioneLineare.chunk.762b1.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[9],{"/fDt":function(n,l,i){"use strict";i.r(l),function(n){function e(){var n=S(["y_n"]);return e=function(){return n},n}function t(){var n=S(["\frac{termine noto}{coeff. variabile entrante}"],["\\frac{termine\\ noto}{coeff.\\ variabile\\ entrante}"]);return t=function(){return n},n}function a(){var n=S(["\n \begin{cases}\n 2000A + 1000B = z\\\n 1A leq 3\\\n 1B leq 3\\\n 2A + 2B leq 7\n end{cases}\n "],["\n \\begin{cases}\n 2000A + 1000B = z\\\\\n 1A \\leq 3\\\\\n 1B \\leq 3\\\\\n 2A + 2B \\leq 7\n \\end{cases}\n "]);return a=function(){return n},n}function o(){var n=S(["z"]);return o=function(){return n},n}function u(){var n=S(["-a^- in mathbb{N}"],["-a^- \\in \\mathbb{N}"]);return u=function(){return n},n}function r(){var n=S(["a^+ in mathbb{N}"],["a^+ \\in \\mathbb{N}"]);return r=function(){return n},n}function s(){var n=S(["a in mathbb{Z}"],["a \\in \\mathbb{Z}"]);return s=function(){return n},n}function c(){var n=S(["x_j^-"]);return c=function(){return n},n}function d(){var n=S(["x_j^+"]);return d=function(){return n},n}function p(){var n=S(["x_j"]);return p=function(){return n},n}function f(){var n=S(["a + s_1 = 3"]);return f=function(){return n},n}function m(){var n=S(["a leq 3"],["a \\leq 3"]);return m=function(){return n},n}function b(){var n=S(["geq"],["\\geq"]);return b=function(){return n},n}function v(){var n=S(["leq"],["\\leq"]);return v=function(){return n},n}function h(){var n=S(["="]);return h=function(){return n},n}function _(){var n=S(["\nabla z = (2, 3, 4)"],["\\nabla z = (2, 3, 4)"]);return _=function(){return n},n}function z(){var n=S(["e_3 = (0, 0, 1)"]);return z=function(){return n},n}function g(){var n=S(["e_2 = (0, 1, 0)"]);return g=function(){return n},n}function x(){var n=S(["e_1 = (1, 0, 0)"]);return x=function(){return n},n}function w(){var n=S(["n = 3"]);return w=function(){return n},n}function y(){var n=S(["e_i"]);return y=function(){return n},n}function q(){var n=S(["\nabla f = \frac{delta f}{delta x_1} e_1 + \frac{delta f}{delta x_2} e_2 + \frac{delta f}{delta x_n} e_n"],["\\nabla f = \\frac{\\delta f}{\\delta x_1} e_1 + \\frac{\\delta f}{\\delta x_2} e_2 + \\frac{\\delta f}{\\delta x_n} e_n"]);return q=function(){return n},n}function L(){var n=S(["z = C_1 cdot x_1 + C_2 cdot x_2 + C_n cdot x_n"],["z = C_1 \\cdot x_1 + C_2 \\cdot x_2 + C_n \\cdot x_n"]);return L=function(){return n},n}function S(n,l){return l||(l=n.slice(0)),n.raw=l,n}i.d(l,"default",(function(){return I}));var C=i("hosL"),U=i("lL4N"),O=i("OMhl"),j=i("HKwK"),k=i("PEwj"),E=(i("jXlC"),i("UEJU")),B=i("h7i1"),N=(i("3Gjt"),i("BSmf")),F=i("xY5u"),T=i("8YA6"),M=i("dIxp"),D=String.raw,I=function(l){function i(){return l.apply(this,arguments)||this}var S,C;return C=l,(S=i).prototype=Object.create(C.prototype),S.prototype.constructor=S,S.__proto__=C,i.prototype.render=function(){return n("div",null,n("h1",null,"Ottimizzazione lineare intera"),n(U.a,{title:"Unimore"},n(j.a,{title:"Videolezioni su YouTube"},n("p",null,"Ho rimosso il rumore in sottofondo da tutti i video di Ricerca Operativa!"),n("p",null,n("b",null,n("a",{href:"https://www.youtube.com/playlist?list=PLh93e8qjTszffkHNn-19CqUOhHFbhBlBh"},"Guardate i video qui!")))),n(j.a,{title:"Prossimi appelli"},n("ol",null,n("li",null,n(N.a,{to:"2020-06-08"})),n("li",null,n(N.a,{to:"2020-06-25"})),n("li",null,n(N.a,{to:"2020-07-14"}))))),n(U.a,{title:"Le basi"},n(j.a,{title:"Funzione obiettivo"},n("p",null,"La funzione obiettivo è la funzione con valore noto sconosciuto:"),n("p",null,n(O.a,null,D(L())))),n(j.a,{title:"Gradiente"},n("p",null,"Funzione della funzione obiettivo che indica la direzione del suo aumento più veloce."),n("p",null,n(O.a,null,D(q()))),n("p",null,n(O.a,null,D(y()))," è la direzione della coordinata i-esima."),n(k.a,null,"Se ",n(O.a,null,D(w())),", allora:",n("ul",null,n("li",null,n(O.a,null,D(x()))),n("li",null,n(O.a,null,D(g()))),n("li",null,n(O.a,null,D(z()))))),n(k.a,null,"Se la funzione obiettivo è ",n(O.a,null,"z = 2w + 3x + 4y"),", il suo gradiente è ",n(O.a,null,D(_())),"."))),n(U.a,{title:"Forme di un sistema"},n(j.a,{title:"Forma standard"},n("ul",null,n("li",null,n(E.a,null,"Solo equazioni")),n("li",null,n(E.a,null,"Tutte le variabili maggiori di zero")))),n(j.a,{title:"Forma canonica"},n("ul",null,n("li",null,n(B.a,null,"Equazioni e disequazioni")),n("li",null,n(E.a,null,"Tutte le variabili maggiori di zero")))),n(j.a,{title:"Forma generale"},n("ul",null,n("li",null,n(B.a,null,"Equazioni e disequazioni")),n("li",null,n(B.a,null,"Variabili con qualsiasi valore"))))),n(U.a,{title:"Equivalenza di forma"},n(j.a,{title:"Da standard a generale"},n("p",null,"Convertiamo ogni equazione ",n(O.a,null,D(h()))," in due disequazioni ",n(O.a,null,D(v()))," e ",n(O.a,null,D(b())),","),n(k.a,null,"Why would you ever do that?!")),n(j.a,{title:"Da canonica a standard"},n("p",null,"Convertiamo le disequazioni in equazioni aggiungendo una variabile slack."),n(k.a,null,n(O.a,null,D(m()))," diventa ",n(O.a,null,D(f())),".")),n(j.a,{title:"Da generale a canonica"},n("p",null,"Sostituiamo le variabili potenzialmente negative (unconstrained) ",n(O.a,null,D(p()))," con due variabili ",n(O.a,null,D(d()))," e ",n(O.a,null,D(c())),"."),n(k.a,null,n(O.a,null,D(s()))," diventa ",n(O.a,null,D(r()))," e ",n(O.a,null,D(u())),"."))),n(U.a,{title:"La forma standard"},n(j.a,{title:"Funzione obiettivo"},n("p",null,"La funzione da minimizzare/massimizzare, tipicamente indicata con una ",n(O.a,null,D(o()))," al termine noto.")),n(j.a,{title:"Tableu"},n("p",null,"Un modo per rappresentare sistemi in forma standard, anche noto come ",n("b",null,"matrice equivalente completa")," del sistema."),n(k.a,null,"Il sistema:",n("br",null),n("br",null),n(O.a,null,D(a())),n("br",null),n("br",null),"Diventa in forma di tableau:",n("br",null),n("br",null),n("table",{class:"right"},n("thead",null,n("tr",null,n("th",null,n("abbr",{title:"Termine noto"},"TN")),n("th",null,n(O.a,null,"x_1")),n("th",null,n(O.a,null,"x_2")),n("th",null,n(O.a,null,"s_1")),n("th",null,n(O.a,null,"s_2")))),n("tbody",null,n("tr",null,n("td",null,n(O.a,null,"z")),n("td",null,n(O.a,null,"2000")),n("td",null,n(O.a,null,"1000")),n("td",null,n(O.a,null,"0")),n("td",null,n(O.a,null,"0"))),n("tr",null,n("td",null,n(O.a,null,"3")),n("td",null,n(O.a,null,"1")),n("td",null,n(O.a,null,"0")),n("td",null,n(O.a,null,"1")),n("td",null,n(O.a,null,"0"))),n("tr",null,n("td",null,n(O.a,null,"3")),n("td",null,n(O.a,null,"0")),n("td",null,n(O.a,null,"1")),n("td",null,n(O.a,null,"0")),n("td",null,n(O.a,null,"1"))),n("tr",null,n("td",null,n(O.a,null,"7")),n("td",null,n(O.a,null,"2")),n("td",null,n(O.a,null,"2")),n("td",null,n(O.a,null,"0")),n("td",null,n(O.a,null,"0"))))))),n(j.a,{title:"Variabili di base"},n("p",null,"Variabili che hanno tutti 0 e un 1 nella loro colonna del tableu."),n("p",null,"La loro controparte sono le ",n("i",null,"variabili fuori base"),"."),n("p",null,"Un sistema lineare è risolto quando tutte le variabili originali (",n(O.a,null,"x_n"),") sono nella base."))),n(U.a,{title:"Simplex"},n(j.a,{title:"Cos'è?"},n("p",null,"Un algoritmo per ",n(E.a,null,"minimizzare"),"/",n(B.a,null,"massimizzare")," efficientemente variabili di sistemi lineari, derivato da Gauss-Jordan."),n(k.a,null,"E' spiegato in modo semplice ",n("a",{href:"https://web.archive.org/web/20200523052252/https://www.cs.cmu.edu/~15451-f17/handouts/simplex.pdf"},"qui"),", e ci sono dei codici sorgenti di esempio ",n("a",{href:"https://www.cs.cmu.edu/~15451-f17/handouts/simplexcodes/"},"qui"),".")),n(j.a,{title:"I passi"},n("ol",null,n("li",null,"Trasforma il sistema in ",n("b",null,"forma standard"),"."),n("li",null,"Trova tante variabili ",n("b",null,"linearmente indipendenti")," quante siano le righe: esse saranno la ",n("i",null,"base iniziale"),"."),n("li",null,"Finchè ci sono variabili con coefficienti ",n(E.a,null,"positivi"),"/",n(B.a,null,"negativi")," nella funzione obiettivo:",n("ol",null,n("li",null,n("b",null,"Scegli")," la prima variabile con coefficiente ",n(E.a,null,"positivo"),"/",n(B.a,null,"negativo")," nella funzione obiettivo: essa è la ",n("i",null,"variabile entrante"),".",n(k.a,null,"Si potrebbe scegliere qualsiasi variabile, ma scegliendo sempre la prima possibile (",n("i",null,"Regola di Bland"),") ci si assicura che l'algoritmo termini.")),n("li",null,"Trova la variabile di base (detta ",n("i",null,"variabile uscente"),") tramite il rapporto ",n(O.a,null,D(t())),": scegli la variabile con il ",n("b",null,"rapporto minore"),", assicurandoti che esso sia ",n("b",null,"positivo"),". Se tutti i rapporti sono negativi, allora il problema è ",n("b",null,n(M.a,null)),"."),n("li",null,n("b",null,"Riscrivi")," tutte le funzioni del sistema in termini della variabile entrante."))),n("li",null,"I ",n("b",null,"termini noti dei vincoli")," sono le coordinate del risultato, mentre il ",n("b",null,"termine noto della funzione obiettivo")," è il valore ",n(E.a,null,"minimizzato"),"/",n(B.a,null,"massimizzato"),"."))),n(j.a,{title:"Sotto forma di tableau"},n("p",null,"Se il problema è rappresentato in forma di tableau, allora esso è risolvibile applicando l'algoritmo di Gauss-Jordan, in aggiunta tenendo conto delle regole per la selezione delle variabili entranti e uscenti."))),n(U.a,null,n(j.a,{title:"Soluzioni di base degenerata"},n("p",null,"Una soluzione con almeno una variabile di valore ",n(O.a,null,"0"),", dovuta a uno o più ",n("b",null,"vincoli ridondanti"),"."),n("p",null,"Senza ",n("b",null,"Regola di Bland")," e in presenza di vincoli ridondanti si rischia di trovarsi a fare pivot infiniti.")),n(j.a,{title:"Esempio"},n(k.a,null,"Ho risolto il problema 3 del file ",n("a",{href:"https://dolly.fim.unimore.it/2019/mod/resource/view.php?id=2716"},n("code",null,"Ex_LP_testo"))," con il Simplex:",n("p",null,n(F.a,{src:"https://i.imgur.com/1r405Mb.jpg"}))))),n(U.a,{title:"Metodo delle due fasi"},n(j.a,{title:"Metodo delle due fasi"},n("p",null,"Un estensione del Simplex per permettere la risoluzione di problemi la cui origine non è una soluzione ammissibile."),n("p",null,"Prevede l'introduzione di un ",n("i",null,"problema ausiliario"),", le cui variabili sono dette ",n("i",null,"artificiali")," e sono solitamente rappresentate come ",n(O.a,null,D(e())),"."),n(k.a,null,"E' spiegato in modo semplice ",n("a",{href:"https://web.archive.org/web/20200523052252/https://www.cs.cmu.edu/~15451-f17/handouts/simplex.pdf"},"qui"),".")),n(j.a,{title:"Procedimento"},n("ol",null,n("li",null,"Crea un nuovo tableau, ",n("b",null,"aggiungendo variabili artificiali")," in modo da avere una base ammissibile."),n("li",null,"Sostituisci la vecchia funzione obiettivo con una nuova che ",n("b",null,n(E.a,null,"minimizzi")," la somma")," di tutte le variabili artificiali."),n("li",null,n("u",null,"Fase 1"),": ",n("b",null,"Risolvi")," il nuovo problema con il metodo Simplex."),n("li",null,"Se il Simplex termina con ancora ",n("b",null,"variabili artificiali nella base"),", allora il problema è ",n("b",null,n(T.a,null)),"."),n("li",null,"Una volta che le variabili artificiali sono fuori base, ",n("b",null,"elimina")," le loro colonne e la nuova funzione obiettivo.",n("br",null)),n("li",null,"Riporta il tableau in forma base compiendo operazioni per ",n("b",null,"azzerare i coefficienti")," delle variabili di base nella funzione obiettivo."),n("li",null,n("u",null,"Fase 2"),": ",n("b",null,"Risolvi")," il tableau con il metodo Simplex.")))))},i}(C.Component)}.call(this,i("hosL").h)},"3k98":function(n){n.exports={todo:"todo__1UVRh"}},"56OW":function(n){n.exports={plus:"plus__2u13i"}},"8YA6":function(n,l,i){"use strict";(function(n){var e=i("zCOL"),t=i.n(e);l.a=function(l){return n("span",{class:t.a.unfeasible},l.children?l.children:"unfeasible")}}).call(this,i("hosL").h)},BSmf:function(n,l,i){"use strict";(function(n){i.d(l,"a",(function(){return o}));var e=i("hosL"),t=i("EfTa"),a=i.n(t),o=function(l){function i(){var n;return(n=l.call(this)||this).state={now:Date.now()},n.timer=null,n}var e,t;t=l,(e=i).prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t;var o=i.prototype;return o.componentDidMount=function(){var n=this;this.timer=setInterval((function(){n.setState({now:Date.now()})}),1e3)},o.componentWillUnmount=function(){null!==this.timer&&clearInterval(this.timer)},o.render=function(){var l="Unknown date",i=a.a.timer,e={milliseconds:"?",seconds:"?",minutes:"?",hours:"?",days:"?"};if(this.props.to){var t=(l=new Date(this.props.to))-this.state.now;t>0?e={milliseconds:t%1e3,seconds:Math.floor(t/1e3)%60,minutes:Math.floor(t/6e4)%60,hours:Math.floor(t/36e5)%24,days:Math.floor(t/864e5)}:(e={milliseconds:0,seconds:0,minutes:0,hours:0,days:0},i+=" "+a.a.expired)}else i+=" "+a.a.unknown;return n("div",{class:i,title:l},n("div",{class:a.a.days+" "+a.a.count},e.days),n("div",{className:a.a.days+" "+a.a.text},"giorni"),n("div",{class:a.a.hours+" "+a.a.count},e.hours),n("div",{className:a.a.hours+" "+a.a.text},"ore"),n("div",{class:a.a.minutes+" "+a.a.count},e.minutes),n("div",{className:a.a.minutes+" "+a.a.text},"minuti"),n("div",{class:a.a.seconds+" "+a.a.count},e.seconds),n("div",{class:a.a.seconds+" "+a.a.text},"secondi"),n("div",{class:a.a.remaining},"rimasti"))},i}(e.Component)}).call(this,i("hosL").h)},EfTa:function(n){n.exports={timer:"timer__K0K_h",days:"days__vN3tf",hours:"hours__3v0KX",minutes:"minutes__vkYk7",seconds:"seconds__3gJ99",count:"count__1VV4k",text:"text__khS4i",remaining:"remaining__zUECg",unknown:"unknown__af307",expired:"expired__1rtHB"}},IwNZ:function(n){n.exports={unbounded:"unbounded__3Q7MA"}},OMhl:function(n,l,i){"use strict";(function(n){var e=i("p7QU"),t=i.n(e),a=i("QRet"),o=i("8CDw"),u=i("wQ73");l.a=function(l){var i=Object(a.b)(o.a),e=Object(a.b)(u.a);return n("img",{src:"https://latex.codecogs.com/svg.latex?"+(((void 0===l.inline?e:l.inline)?"\\inline":"")+" {\\color{"+i+"} "+l.children+" }"),alt:l.children,title:l.children,class:t.a.latex})}}).call(this,i("hosL").h)},UEJU:function(n,l,i){"use strict";(function(n){i.d(l,"a",(function(){return a}));var e=i("nhUl"),t=i.n(e),a=function(l){function i(){return l.apply(this,arguments)||this}var e,a;return a=l,(e=i).prototype=Object.create(a.prototype),e.prototype.constructor=e,e.__proto__=a,i.prototype.render=function(){return n("span",{class:t.a.minus},this.props.children)},i}(i("hosL").Component)}).call(this,i("hosL").h)},dIxp:function(n,l,i){"use strict";(function(n){var e=i("IwNZ"),t=i.n(e);l.a=function(l){return n("span",{class:t.a.unbounded},l.children?l.children:"unbounded")}}).call(this,i("hosL").h)},h7i1:function(n,l,i){"use strict";(function(n){i.d(l,"a",(function(){return a}));var e=i("56OW"),t=i.n(e),a=function(l){function i(){return l.apply(this,arguments)||this}var e,a;return a=l,(e=i).prototype=Object.create(a.prototype),e.prototype.constructor=e,e.__proto__=a,i.prototype.render=function(){return n("span",{class:t.a.plus},this.props.children)},i}(i("hosL").Component)}).call(this,i("hosL").h)},jXlC:function(n,l,i){"use strict";(function(n){i.d(l,"a",(function(){return a}));var e=i("3k98"),t=i.n(e),a=function(l){function i(){return l.apply(this,arguments)||this}var e,a;return a=l,(e=i).prototype=Object.create(a.prototype),e.prototype.constructor=e,e.__proto__=a,i.prototype.render=function(){return n("span",{class:t.a.todo},this.props.children)},i}(i("hosL").Component)}).call(this,i("hosL").h)},nhUl:function(n){n.exports={minus:"minus__2EaF0"}},p7QU:function(n){n.exports={latex:"latex__3zlIu"}},wQ73:function(n,l,i){"use strict";var e=i("hosL");l.a=Object(e.createContext)(!0)},xY5u:function(n,l,i){"use strict";(function(n){l.a=function(l){return n("a",{href:l.src,title:l.alt,target:"_blank"},n("img",{src:l.src,alt:l.alt}))}}).call(this,i("hosL").h)},zCOL:function(n){n.exports={unfeasible:"unfeasible__3QoOn"}}}]); -//# sourceMappingURL=route-ottimizzazioneLineare.chunk.762b1.js.map \ No newline at end of file diff --git a/docs/route-ottimizzazioneLineare.chunk.762b1.js.map b/docs/route-ottimizzazioneLineare.chunk.762b1.js.map deleted file mode 100644 index ed7ab35..0000000 --- a/docs/route-ottimizzazioneLineare.chunk.762b1.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./routes/ottimizzazioneLineare.js","webpack:///./components/old/todo.css","webpack:///./components/old/plus.css","webpack:///./components/OttimizzazioneLineare/Unfeasible.js","webpack:///./components/old/timer.js","webpack:///./components/old/timer.less","webpack:///./components/OttimizzazioneLineare/Unbounded.less","webpack:///./components/Latex.js","webpack:///./components/old/minus.js","webpack:///./components/OttimizzazioneLineare/Unbounded.js","webpack:///./components/old/plus.js","webpack:///./components/old/todo.js","webpack:///./components/old/minus.css","webpack:///./components/Latex.css","webpack:///./contexts/LatexDefaultInline.js","webpack:///./components/Image.js","webpack:///./components/OttimizzazioneLineare/Unfeasible.less"],"names":["r","String","raw","OttimizzazioneLineare","render","title","href","to","class","src","Component","module","exports","props","style","unfeasible","children","Timer","state","Date","now","timer","componentDidMount","this","setInterval","setState","componentWillUnmount","clearInterval","dateTo","className","parts","milliseconds","seconds","minutes","hours","days","timeLeft","Math","floor","expired","unknown","count","text","remaining","renderColor","useContext","LatexRenderColor","defaultInline","LatexDefaultInline","undefined","inline","alt","latex","Minus","minus","unbounded","Plus","plus","Todo","todo","createContext","target"],"mappings":"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","file":"route-ottimizzazioneLineare.chunk.762b1.js","sourcesContent":["import {Component} from 'preact'\nimport Split from \"../components/old/split\";\nimport Latex from \"../components/Latex\";\nimport Panel from \"../components/old/panel\";\nimport Example from \"../components/example\";\nimport Todo from \"../components/old/todo\";\nimport Minus from \"../components/old/minus\";\nimport Plus from \"../components/old/plus\";\nimport Code from \"../components/old/code\";\nimport Timer from \"../components/old/timer\";\nimport Image from \"../components/Image\";\nimport Unfeasible from \"../components/OttimizzazioneLineare/Unfeasible\";\nimport Unbounded from \"../components/OttimizzazioneLineare/Unbounded\";\n\nconst r = String.raw;\n\nexport default class OttimizzazioneLineare extends Component {\n render() {\n return (\n
\n

Ottimizzazione lineare intera

\n \n \n

\n Ho rimosso il rumore in sottofondo da tutti i video di Ricerca Operativa!\n

\n

\n Guardate i video qui!\n

\n
\n \n
    \n
  1. \n
  2. \n
  3. \n
\n
\n
\n \n \n

\n La funzione obiettivo è la funzione con valore noto sconosciuto:\n

\n

\n {r`z = C_1 \\cdot x_1 + C_2 \\cdot x_2 + C_n \\cdot x_n`}\n

\n
\n \n

\n Funzione della funzione obiettivo che indica la direzione del suo aumento più veloce.\n

\n

\n {r`\\nabla f = \\frac{\\delta f}{\\delta x_1} e_1 + \\frac{\\delta f}{\\delta x_2} e_2 + \\frac{\\delta f}{\\delta x_n} e_n`}\n

\n

\n {r`e_i`} è la direzione della coordinata i-esima.\n

\n \n Se {r`n = 3`}, allora:\n
    \n
  • {r`e_1 = (1, 0, 0)`}
  • \n
  • {r`e_2 = (0, 1, 0)`}
  • \n
  • {r`e_3 = (0, 0, 1)`}
  • \n
\n
\n \n Se la funzione obiettivo è z = 2w + 3x + 4y, il suo gradiente è {r`\\nabla z = (2, 3, 4)`}.\n \n
\n
\n \n \n
    \n
  • Solo equazioni
  • \n
  • Tutte le variabili maggiori di zero
  • \n
\n
\n \n
    \n
  • Equazioni e disequazioni
  • \n
  • Tutte le variabili maggiori di zero
  • \n
\n
\n \n
    \n
  • Equazioni e disequazioni
  • \n
  • Variabili con qualsiasi valore
  • \n
\n
\n
\n \n \n

\n Convertiamo ogni equazione {r`=`} in due disequazioni {r`\\leq`} e {r`\\geq`},\n

\n Why would you ever do that?!\n
\n \n

\n Convertiamo le disequazioni in equazioni aggiungendo una variabile slack.\n

\n \n {r`a \\leq 3`} diventa {r`a + s_1 = 3`}.\n \n
\n \n

\n Sostituiamo le variabili potenzialmente negative (unconstrained) {r`x_j`} con due variabili {r`x_j^+`} e {r`x_j^-`}.\n

\n \n {r`a \\in \\mathbb{Z}`} diventa {r`a^+ \\in \\mathbb{N}`} e {r`-a^- \\in \\mathbb{N}`}.\n \n
\n
\n \n \n

\n La funzione da minimizzare/massimizzare, tipicamente indicata con una {r`z`} al termine noto.\n

\n
\n \n

\n Un modo per rappresentare sistemi in forma standard, anche noto come matrice equivalente completa del sistema.\n

\n \n Il sistema:

\n {r`\n \\begin{cases}\n 2000A + 1000B = z\\\\\n 1A \\leq 3\\\\\n 1B \\leq 3\\\\\n 2A + 2B \\leq 7\n \\end{cases}\n `}

\n Diventa in forma di tableau:

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
TNx_1x_2s_1s_2
z2000100000
31010
30101
72200
\n
\n
\n \n

\n Variabili che hanno tutti 0 e un 1 nella loro colonna del tableu.\n

\n

\n La loro controparte sono le variabili fuori base.\n

\n

\n Un sistema lineare è risolto quando tutte le variabili originali (x_n) sono nella base.\n

\n
\n
\n \n \n

\n Un algoritmo per minimizzare/massimizzare efficientemente variabili di sistemi lineari, derivato da Gauss-Jordan.\n

\n \n E' spiegato in modo semplice qui, e ci sono dei codici sorgenti di esempio qui.\n \n
\n \n
    \n
  1. Trasforma il sistema in forma standard.
  2. \n
  3. Trova tante variabili linearmente indipendenti quante siano le righe: esse saranno la base iniziale.
  4. \n
  5. Finchè ci sono variabili con coefficienti positivi/negativi nella funzione obiettivo:\n
      \n
    1. \n Scegli la prima variabile con coefficiente positivo/negativo nella funzione obiettivo: essa è la variabile entrante.\n Si potrebbe scegliere qualsiasi variabile, ma scegliendo sempre la prima possibile (Regola di Bland) ci si assicura che l'algoritmo termini.\n
    2. \n
    3. Trova la variabile di base (detta variabile uscente) tramite il rapporto {r`\\frac{termine\\ noto}{coeff.\\ variabile\\ entrante}`}: scegli la variabile con il rapporto minore, assicurandoti che esso sia positivo. Se tutti i rapporti sono negativi, allora il problema è .
    4. \n
    5. Riscrivi tutte le funzioni del sistema in termini della variabile entrante.
    6. \n
    \n
  6. \n
  7. I termini noti dei vincoli sono le coordinate del risultato, mentre il termine noto della funzione obiettivo è il valore minimizzato/massimizzato.
  8. \n
\n
\n \n

\n Se il problema è rappresentato in forma di tableau, allora esso è risolvibile applicando l'algoritmo di Gauss-Jordan, in aggiunta tenendo conto delle regole per la selezione delle variabili entranti e uscenti.\n

\n
\n
\n \n \n

\n Una soluzione con almeno una variabile di valore 0, dovuta a uno o più vincoli ridondanti.\n

\n

\n Senza Regola di Bland e in presenza di vincoli ridondanti si rischia di trovarsi a fare pivot infiniti.\n

\n
\n \n \n Ho risolto il problema 3 del file Ex_LP_testo con il Simplex:\n

\n \n

\n
\n
\n
\n \n \n

\n Un estensione del Simplex per permettere la risoluzione di problemi la cui origine non è una soluzione ammissibile.\n

\n

\n Prevede l'introduzione di un problema ausiliario, le cui variabili sono dette artificiali e sono solitamente rappresentate come {r`y_n`}.\n

\n \n E' spiegato in modo semplice qui.\n \n
\n \n
    \n
  1. Crea un nuovo tableau, aggiungendo variabili artificiali in modo da avere una base ammissibile.
  2. \n
  3. Sostituisci la vecchia funzione obiettivo con una nuova che minimizzi la somma di tutte le variabili artificiali.
  4. \n
  5. Fase 1: Risolvi il nuovo problema con il metodo Simplex.
  6. \n
  7. Se il Simplex termina con ancora variabili artificiali nella base, allora il problema è .
  8. \n
  9. Una volta che le variabili artificiali sono fuori base, elimina le loro colonne e la nuova funzione obiettivo.
  10. \n
  11. Riporta il tableau in forma base compiendo operazioni per azzerare i coefficienti delle variabili di base nella funzione obiettivo.
  12. \n
  13. Fase 2: Risolvi il tableau con il metodo Simplex.
  14. \n
\n
\n
\n
\n )\n }\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"todo\":\"todo__1UVRh\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"plus\":\"plus__2u13i\"};","import style from \"./Unfeasible.less\";\r\n\r\nexport default function (props) {\r\n return (\r\n {props.children ? props.children : \"unfeasible\"}\r\n );\r\n}\r\n","import {Component} from 'preact'\nimport style from \"./timer.less\"\n\n\nexport default class Timer extends Component {\n constructor() {\n super();\n this.state = {\n \"now\": Date.now()\n };\n this.timer = null;\n }\n\n componentDidMount() {\n this.timer = setInterval(() => {\n this.setState({\"now\": Date.now()})\n }, 1000)\n }\n\n componentWillUnmount() {\n if(this.timer !== null) {\n clearInterval(this.timer)\n }\n }\n\n render() {\n let dateTo = \"Unknown date\";\n let className = style.timer;\n\n let parts = {\n milliseconds: \"?\",\n seconds: \"?\",\n minutes: \"?\",\n hours: \"?\",\n days: \"?\",\n };\n\n if(this.props.to) {\n dateTo = new Date(this.props.to);\n let timeLeft = dateTo - this.state.now;\n\n if(timeLeft > 0) {\n parts = {\n milliseconds: timeLeft % 1000,\n seconds: Math.floor(timeLeft / 1000) % 60,\n minutes: Math.floor(timeLeft / 60000) % 60,\n hours: Math.floor(timeLeft / 3600000) % 24,\n days: Math.floor(timeLeft / 86400000),\n };\n }\n\n else {\n parts = {\n milliseconds: 0,\n seconds: 0,\n minutes: 0,\n hours: 0,\n days: 0,\n };\n\n className += \" \" + style.expired;\n }\n }\n else {\n className += \" \" + style.unknown;\n }\n\n return (\n
\n
\n {parts.days}\n
\n
\n giorni\n
\n
\n {parts.hours}\n
\n
\n ore\n
\n
\n {parts.minutes}\n
\n
\n minuti\n
\n
\n {parts.seconds}\n
\n
\n secondi\n
\n
\n rimasti\n
\n
\n )\n }\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"timer\":\"timer__K0K_h\",\"days\":\"days__vN3tf\",\"hours\":\"hours__3v0KX\",\"minutes\":\"minutes__vkYk7\",\"seconds\":\"seconds__3gJ99\",\"count\":\"count__1VV4k\",\"text\":\"text__khS4i\",\"remaining\":\"remaining__zUECg\",\"unknown\":\"unknown__af307\",\"expired\":\"expired__1rtHB\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"unbounded\":\"unbounded__3Q7MA\"};","import style from './Latex.css';\nimport {useContext} from \"preact/hooks\";\nimport LatexRenderColor from \"../contexts/LatexRenderColor\";\nimport LatexDefaultInline from \"../contexts/LatexDefaultInline\";\n\nexport default function(props) {\n\t// black, blue, brown, cyan, darkgray, gray, green, lightgray, lime, magenta, olive, orange, pink, purple, red, teal, violet, white, yellow\n\tlet renderColor = useContext(LatexRenderColor);\n\tlet defaultInline = useContext(LatexDefaultInline);\n\n\tlet is_inline;\n\tif(props.inline === undefined) {\n\t\tis_inline = defaultInline;\n\t}\n\telse {\n\t\tis_inline = props.inline;\n\t}\n\n\tlet inline = is_inline ? `\\\\inline` : \"\";\n\tlet equation = `${inline} {\\\\color{${renderColor}} ${props.children} }`;\n\n\treturn (\n\t\t{props.children}\n\t\t\t\n\t);\n}\n","import style from \"./minus.css\";\nimport { Component } from 'preact';\n\nexport default class Minus extends Component {\n\trender() {\n\t\treturn {this.props.children};\n\t}\n}\n","import style from \"./Unbounded.less\";\r\n\r\nexport default function (props) {\r\n return (\r\n {props.children ? props.children : \"unbounded\"}\r\n );\r\n}\r\n","import style from \"./plus.css\";\nimport { Component } from 'preact';\n\nexport default class Plus extends Component {\n\trender() {\n\t\treturn {this.props.children};\n\t}\n}\n","import style from \"./todo.css\";\nimport { Component } from 'preact';\n\nexport default class Todo extends Component {\n\trender() {\n\t\treturn {this.props.children};\n\t}\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"minus\":\"minus__2EaF0\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"latex\":\"latex__3zlIu\"};","import {createContext} from \"preact\";\r\n\r\nexport default createContext(true);\r\n","export default function(props) {\r\n return (\r\n {props.alt}/\r\n )\r\n}\r\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"unfeasible\":\"unfeasible__3QoOn\"};"],"sourceRoot":""} \ No newline at end of file diff --git a/docs/route-ottimizzazioneLineare.chunk.9a20b.css b/docs/route-ottimizzazioneLineare.chunk.ce59d.css similarity index 82% rename from docs/route-ottimizzazioneLineare.chunk.9a20b.css rename to docs/route-ottimizzazioneLineare.chunk.ce59d.css index 3fdcf48..8114bf4 100644 --- a/docs/route-ottimizzazioneLineare.chunk.9a20b.css +++ b/docs/route-ottimizzazioneLineare.chunk.ce59d.css @@ -1 +1 @@ -.latex__3zlIu{display:inline-block;vertical-align:middle}.todo__1UVRh{border:1px solid #ff0;border-radius:2px;padding:1px;background-color:#000;color:#ff0}.minus__2EaF0{color:#7d7dff}.plus__2u13i{color:#ff7d7d}.timer__K0K_h{display:grid;text-align:center;-ms-flex-align:center;align-items:center;-ms-flex-pack:start;justify-content:start;margin-top:8px;margin-bottom:8px;grid-template-columns:80px 80px 80px 80px 50px}.days__vN3tf{grid-column:1}.hours__3v0KX{grid-column:2}.minutes__vkYk7{grid-column:3}.seconds__3gJ99{grid-column:4}.count__1VV4k{grid-row:1;font-size:xx-large;color:#fff}.text__khS4i{grid-row:2;font-size:small}.remaining__zUECg{grid-column:5;grid-row-start:1;grid-row-end:3}.unknown__af307,.unknown__af307 .count__1VV4k{color:#ff7dff}.expired__1rtHB,.expired__1rtHB .count__1VV4k{color:#ff7d7d}.unfeasible__3QoOn{color:#ffbb7d}.unbounded__3Q7MA{color:#7dffff} \ No newline at end of file +.latex__3zlIu{display:inline-block;vertical-align:middle}.todo__1UVRh{border:1px solid #ff0;border-radius:2px;padding:1px;background-color:#000;color:#ff0}.minus__2EaF0{color:#7d7dff}.plus__2u13i{color:#ff7d7d}.timer__K0K_h{display:grid;text-align:center;-ms-flex-align:center;align-items:center;-ms-flex-pack:start;justify-content:start;margin-top:8px;margin-bottom:8px;grid-template-columns:80px 80px 80px 80px 50px}.days__vN3tf{grid-column:1}.hours__3v0KX{grid-column:2}.minutes__vkYk7{grid-column:3}.seconds__3gJ99{grid-column:4}.count__1VV4k{grid-row:1;font-size:xx-large;color:#fff}.text__khS4i{grid-row:2;font-size:small}.remaining__zUECg{grid-column:5;grid-row-start:1;grid-row-end:3}.unknown__af307,.unknown__af307 .count__1VV4k{color:#ff7dff}.expired__1rtHB,.expired__1rtHB .count__1VV4k{color:#ff7d7d}.unbounded__25UN8{color:#7d7dff}.unfeasible__2MuIF{color:#ff7d7d}.min__3lPpn{color:#7dffff}.max__1hxKl{color:#ffbb7d} \ No newline at end of file diff --git a/docs/route-ottimizzazioneLineare.chunk.f48cc.esm.js b/docs/route-ottimizzazioneLineare.chunk.f48cc.esm.js new file mode 100644 index 0000000..3fc921f --- /dev/null +++ b/docs/route-ottimizzazioneLineare.chunk.f48cc.esm.js @@ -0,0 +1,23 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[9],{"/fDt":function(l,i,n){"use strict";n.r(i),function(l){n.d(i,"default",(function(){return W}));var a=n("hosL"),e=n("lL4N"),t=n("OMhl"),o=n("HKwK"),u=n("PEwj"),s=n("jXlC"),r=n("UEJU"),c=n("h7i1"),d=(n("3Gjt"),n("BSmf")),m=n("xY5u"),p=n("8YA6"),b=n("dIxp"),h=n("fWbf"),f=n("RPi6");let v,_,z,g,x,w,q,S,L,U,C,D,y,k,I,O,F,T,E,R,j,M,P,B,N,V,J,A,H=l=>l;const K=String.raw;class W extends a.Component{render(){return l("div",null,l("h1",null,"Ottimizzazione lineare intera"),l(e.a,{title:"Unimore"},l(o.a,{title:"Videolezioni su YouTube"},l("p",null,"Ho rimosso il rumore in sottofondo da tutti i video di Ricerca Operativa!"),l("p",null,l("b",null,l("a",{href:"https://www.youtube.com/playlist?list=PLh93e8qjTszffkHNn-19CqUOhHFbhBlBh"},"Guardate i video qui!")))),l(o.a,{title:"Prossimi appelli"},l("ol",null,l("li",null,l(d.a,{to:"2020-06-08"})),l("li",null,l(d.a,{to:"2020-06-25"})),l("li",null,l(d.a,{to:"2020-07-14"}))))),l(e.a,{title:"Le basi"},l(o.a,{title:"Funzione obiettivo"},l("p",null,"La funzione obiettivo è la funzione con valore noto sconosciuto:"),l("p",null,l(t.a,null,K(v||(v=H`z = C_1 \cdot x_1 + C_2 \cdot x_2 + C_n \cdot x_n`))))),l(o.a,{title:"Gradiente"},l("p",null,"Funzione della funzione obiettivo che indica la direzione del suo aumento più veloce."),l("p",null,l(t.a,null,K(_||(_=H`\nabla f = \frac{\delta f}{\delta x_1} e_1 + \frac{\delta f}{\delta x_2} e_2 + \frac{\delta f}{\delta x_n} e_n`)))),l("p",null,l(t.a,null,K(z||(z=H`e_i`)))," è la direzione della coordinata i-esima."),l(u.a,null,"Se ",l(t.a,null,K(g||(g=H`n = 3`))),", allora:",l("ul",null,l("li",null,l(t.a,null,K(x||(x=H`e_1 = (1, 0, 0)`)))),l("li",null,l(t.a,null,K(w||(w=H`e_2 = (0, 1, 0)`)))),l("li",null,l(t.a,null,K(q||(q=H`e_3 = (0, 0, 1)`)))))),l(u.a,null,"Se la funzione obiettivo è ",l(t.a,null,"z = 2w + 3x + 4y"),", il suo gradiente è ",l(t.a,null,K(S||(S=H`\nabla z = (2, 3, 4)`))),"."))),l(e.a,{title:"Forme di un sistema"},l(o.a,{title:"Forma standard"},l("ul",null,l("li",null,l(r.a,null,"Solo equazioni")),l("li",null,l(r.a,null,"Tutte le variabili maggiori di zero")))),l(o.a,{title:"Forma canonica"},l("ul",null,l("li",null,l(c.a,null,"Equazioni e disequazioni")),l("li",null,l(r.a,null,"Tutte le variabili maggiori di zero")))),l(o.a,{title:"Forma generale"},l("ul",null,l("li",null,l(c.a,null,"Equazioni e disequazioni")),l("li",null,l(c.a,null,"Variabili con qualsiasi valore"))))),l(e.a,{title:"Equivalenza di forma"},l(o.a,{title:"Da standard a generale"},l("p",null,"Convertiamo ogni equazione ",l(t.a,null,K(L||(L=H`=`)))," in due disequazioni ",l(t.a,null,K(U||(U=H`\leq`)))," e ",l(t.a,null,K(C||(C=H`\geq`))),","),l(u.a,null,"Why would you ever do that?!")),l(o.a,{title:"Da canonica a standard"},l("p",null,"Convertiamo le disequazioni in equazioni aggiungendo una variabile slack."),l(u.a,null,l(t.a,null,K(D||(D=H`a \leq 3`)))," diventa ",l(t.a,null,K(y||(y=H`a + s_1 = 3`))),".")),l(o.a,{title:"Da generale a canonica"},l("p",null,"Sostituiamo le variabili potenzialmente negative (unconstrained) ",l(t.a,null,K(k||(k=H`x_j`)))," con due variabili ",l(t.a,null,K(I||(I=H`x_j^+`)))," e ",l(t.a,null,K(O||(O=H`x_j^-`))),"."),l(u.a,null,l(t.a,null,K(F||(F=H`a \in \mathbb{Z}`)))," diventa ",l(t.a,null,K(T||(T=H`a^+ \in \mathbb{N}`)))," e ",l(t.a,null,K(E||(E=H`-a^- \in \mathbb{N}`))),"."))),l(e.a,{title:"La forma standard"},l(o.a,{title:"Funzione obiettivo"},l("p",null,"La funzione da minimizzare/massimizzare, tipicamente indicata con una ",l(t.a,null,K(R||(R=H`z`)))," al termine noto.")),l(o.a,{title:"Vincoli"},l("p",null,"Le funzioni del sistema che non sono quella obiettivo.")),l(o.a,{title:"Tableu"},l("p",null,"Un modo per rappresentare sistemi in forma standard, anche noto come ",l("b",null,"matrice equivalente completa")," del sistema."),l(u.a,null,"Il sistema:",l("br",null),l("br",null),l(t.a,null,K(j||(j=H` + \begin{cases} + 2000A + 1000B = z\\ + 1A \leq 3\\ + 1B \leq 3\\ + 2A + 2B \leq 7 + \end{cases} + `))),l("br",null),l("br",null),"Diventa in forma di tableau:",l("br",null),l("br",null),l("table",{class:"right"},l("thead",null,l("tr",null,l("th",null,l("abbr",{title:"Termine noto"},"TN")),l("th",null,l(t.a,null,"x_1")),l("th",null,l(t.a,null,"x_2")),l("th",null,l(t.a,null,"s_1")),l("th",null,l(t.a,null,"s_2")))),l("tbody",null,l("tr",null,l("td",null,l(t.a,null,"z")),l("td",null,l(t.a,null,"2000")),l("td",null,l(t.a,null,"1000")),l("td",null,l(t.a,null,"0")),l("td",null,l(t.a,null,"0"))),l("tr",null,l("td",null,l(t.a,null,"3")),l("td",null,l(t.a,null,"1")),l("td",null,l(t.a,null,"0")),l("td",null,l(t.a,null,"1")),l("td",null,l(t.a,null,"0"))),l("tr",null,l("td",null,l(t.a,null,"3")),l("td",null,l(t.a,null,"0")),l("td",null,l(t.a,null,"1")),l("td",null,l(t.a,null,"0")),l("td",null,l(t.a,null,"1"))),l("tr",null,l("td",null,l(t.a,null,"7")),l("td",null,l(t.a,null,"2")),l("td",null,l(t.a,null,"2")),l("td",null,l(t.a,null,"0")),l("td",null,l(t.a,null,"0"))))))),l(o.a,{title:"Variabili di base"},l("p",null,"Variabili che hanno tutti 0 e un 1 nella loro colonna del tableu."),l("p",null,"La loro controparte sono le ",l("i",null,"variabili fuori base"),"."),l("p",null,"Un sistema lineare è risolto quando tutte le variabili originali (",l(t.a,null,"x_n"),") sono nella base."))),l(e.a,{title:"Simplex"},l(o.a,{title:"Cos'è?"},l("p",null,"Un algoritmo per ",l(h.a,null,"minimizzare"),"/",l(f.a,null,"massimizzare")," efficientemente variabili di sistemi lineari, derivato da Gauss-Jordan."),l(u.a,null,"E' spiegato in modo semplice ",l("a",{href:"https://web.archive.org/web/20200523052252/https://www.cs.cmu.edu/~15451-f17/handouts/simplex.pdf"},"qui"),", e ci sono dei codici sorgenti di esempio ",l("a",{href:"https://www.cs.cmu.edu/~15451-f17/handouts/simplexcodes/"},"qui"),".")),l(o.a,{title:"I passi"},l("ol",null,l("li",null,"Trasforma il sistema in ",l("b",null,"forma standard"),"."),l("li",null,"Trova tante variabili ",l("b",null,"linearmente indipendenti")," quante siano le righe: esse saranno la ",l("i",null,"base iniziale"),"."),l("li",null,"Finchè ci sono variabili con coefficienti ",l(h.a,null,"positivi"),"/",l(f.a,null,"negativi")," nella funzione obiettivo:",l("ol",null,l("li",null,l("b",null,"Scegli")," la prima variabile con coefficiente ",l(h.a,null,"positivo"),"/",l(f.a,null,"negativo")," nella funzione obiettivo: essa è la ",l("i",null,"variabile entrante"),".",l(u.a,null,"Si potrebbe scegliere qualsiasi variabile, ma scegliendo sempre la prima possibile (",l("i",null,"Regola di Bland"),") ci si assicura che l'algoritmo termini.")),l("li",null,"Trova la variabile di base (detta ",l("i",null,"variabile uscente"),") tramite il rapporto ",l(t.a,null,K(M||(M=H`\frac{termine\ noto}{coeff.\ variabile\ entrante}`))),": scegli la variabile con il ",l("b",null,"rapporto minore"),", assicurandoti che esso sia ",l("b",null,"positivo"),". Se tutti i rapporti sono negativi, allora il problema è ",l("b",null,l(b.a,null)),"."),l("li",null,l("b",null,"Riscrivi")," tutte le funzioni del sistema in termini della variabile entrante."))),l("li",null,"I ",l("b",null,"termini noti dei vincoli")," sono le coordinate del risultato, mentre il ",l("b",null,"termine noto della funzione obiettivo")," è il valore ",l(h.a,null,"minimizzato"),"/",l(f.a,null,"massimizzato"),"."))),l(o.a,{title:"Sotto forma di tableau"},l("p",null,"Se il problema è rappresentato in forma di tableau, allora esso è risolvibile applicando l'algoritmo di Gauss-Jordan, in aggiunta tenendo conto delle regole per la selezione delle variabili entranti e uscenti."))),l(e.a,null,l(o.a,{title:"Soluzioni di base degenerata"},l("p",null,"Una soluzione con almeno una variabile di valore ",l(t.a,null,"0"),", dovuta a uno o più ",l("b",null,"vincoli ridondanti"),"."),l("p",null,"Senza ",l("b",null,"Regola di Bland")," e in presenza di vincoli ridondanti si rischia di trovarsi a fare pivot infiniti.")),l(o.a,{title:"Esempio"},l(u.a,null,"Ho risolto il problema 3 del file ",l("a",{href:"https://dolly.fim.unimore.it/2019/mod/resource/view.php?id=2716"},l("code",null,"Ex_LP_testo"))," con il Simplex:",l("p",null,l(m.a,{src:"https://i.imgur.com/1r405Mb.jpg"}))))),l(e.a,{title:"Metodo delle due fasi"},l(o.a,{title:"Metodo delle due fasi"},l("p",null,"Un estensione del Simplex per permettere la risoluzione di problemi la cui origine non è una soluzione ammissibile."),l("p",null,"Prevede l'introduzione di un ",l("i",null,"problema ausiliario"),", le cui variabili sono dette ",l("i",null,"artificiali")," e sono solitamente rappresentate come ",l(t.a,null,K(P||(P=H`y_n`))),"."),l(u.a,null,"E' spiegato in modo semplice ",l("a",{href:"https://web.archive.org/web/20200523052252/https://www.cs.cmu.edu/~15451-f17/handouts/simplex.pdf"},"qui"),".")),l(o.a,{title:"Procedimento"},l("ol",null,l("li",null,"Crea un nuovo tableau, ",l("b",null,"aggiungendo variabili artificiali")," in modo da avere una base ammissibile."),l("li",null,"Sostituisci la vecchia funzione obiettivo con una nuova che ",l("b",null,"minimizzi la somma")," di tutte le variabili artificiali."),l("li",null,l("u",null,"Fase 1"),": ",l("b",null,"Risolvi")," il nuovo problema con il metodo Simplex."),l("li",null,"Se il Simplex termina con ancora ",l("b",null,"variabili artificiali nella base"),", allora il problema è ",l("b",null,l(p.a,null)),"."),l("li",null,"Una volta che le variabili artificiali sono fuori base, ",l("b",null,"elimina")," le loro colonne e la nuova funzione obiettivo.",l("br",null)),l("li",null,"Riporta il tableau in forma base compiendo operazioni per ",l("b",null,"azzerare i coefficienti")," delle variabili di base nella funzione obiettivo."),l("li",null,l("u",null,"Fase 2"),": ",l("b",null,"Risolvi")," il tableau con il metodo Simplex.")))),l(e.a,{title:"Dualità"},l(o.a,{title:"Rilassamento"},l("p",null,"Una versione semplificata di un problema nella quale si ",l("b",null,"ignorano")," uno o più vincoli.")),l(o.a,{title:"Rilassamento di Lagrange"},l("p",null,"Un rilassamento che permette di misurare ",l("b",null,"di quanto i vincoli vengono violati"),"."),l("p",null,"I vincoli vengono aggiunti alla funzione obiettivo assieme a un moltiplicatore, solitamente rappresentato con ",l(t.a,null,K(B||(B=H`u_n`))),"."),l(u.a,null,l("p",null,"Il sistema:"),l(t.a,{inline:!1},K(N||(N=H` + \begin{cases} + z = 3 x_1 + 5 x_2\\ + 2 x_1 + 3 x_2 \geq 12\\ + - x_1 + 3 x_2 \geq 3\\ + x_1 \geq 0\\ + x_2 \geq 0 + \end{cases} + `))),l("p",null,"diventa:"),l(t.a,{inline:!1},K(V||(V=H` + \begin{cases} + z_{LR} = 3 x_1 + 5 x_2 + u_1 ( 12 - 2 x_1 - 3 x_2 ) + u_2 ( 3 + x_1 - 3 x_2 )\\ + x_1 \geq 0\\ + x_2 \geq 0 + \end{cases} + `))))),l(o.a,{title:"Duale"},l("p",null,"Il sistema che ",l("b",null,l(h.a,null,"massimizza"),"/",l(f.a,null,"minimizza")," i moltiplicatori di rilassamento")," di un qualsiasi sistema, detto ",l("i",null,"primale"),"."),l("p",null,"Si dimostra che la sua soluzione (se esiste) è ",l("b",null,"uguale")," alla soluzione del problema primale.")),l(o.a,{title:"In termini matriciali"},l("p",null,"Possiamo ",l("b",null,"trasporre")," il tableau e sostituire le variabili ",l(t.a,null,K(J||(J=H`x_n`)))," con variabili ",l(t.a,null,K(A||(A=H`u_n`)))," per ottenere il sistema duale!"),l("p",null,"I maggiori e minori dei vincoli diventeranno maggiori e minori delle variabili e viceversa.")),l(o.a,{title:"Feasibility del duale"},l("ul",null,l("li",null,"Se un problema ha una ",l("b",null,"soluzione finita"),", allora anche il suo duale la avrà."),l("li",null,"Se un problema è ",l("b",null,l(p.a,null)),", allora il suo duale potrà essere ",l(p.a,null)," oppure ",l(b.a,null),"."),l("li",null,"Se un problema è ",l("b",null,l(b.a,null)),", allora il suo duale sarà certamente ",l(p.a,null),".")))),l(e.a,null,l(o.a,{title:"Lemma di Farkas"},l("p",null,l(s.a,null,"TODO: una complicata dimostrazione per dire varie cose. Probabilmente si riesce a saltare se non si dà l'orale..."))),l(o.a,{title:"Dualità forte"},l("p",null,"Il teorema che dimostra l'equivalenza tra primale e duale."),l("p",null,l(s.a,null,"TODO: Anche qui c'è una lunga dimostrazione..."))),l(o.a,{title:"Dualità debole"},l("p",null,"Il teorema che dimostra che il valore della funzione obiettivo del duale (di un qualsiasi tableau) è sempre ",l(h.a,null,"minore o uguale"),"/",l(f.a,null,"maggiore o uguale")," alla soluzione del corrispettivo primale."),l("p",null,l(s.a,null,"TODO: Dimostrazione cortina, ma sembra complicata.")))))}}}.call(this,n("hosL").h)},"3k98":function(l){l.exports={todo:"todo__1UVRh"}},"4fSx":function(l){l.exports={unbounded:"unbounded__25UN8",unfeasible:"unfeasible__2MuIF",min:"min__3lPpn",max:"max__1hxKl"}},"56OW":function(l){l.exports={plus:"plus__2u13i"}},"8YA6":function(l,i,n){"use strict";(function(l){var a=n("4fSx"),e=n.n(a);i.a=function(i){return l("span",{class:e.a.unfeasible},i.children?i.children:"unfeasible")}}).call(this,n("hosL").h)},BSmf:function(l,i,n){"use strict";(function(l){n.d(i,"a",(function(){return o}));var a=n("hosL"),e=n("EfTa"),t=n.n(e);class o extends a.Component{constructor(){super(),this.state={now:Date.now()},this.timer=null}componentDidMount(){this.timer=setInterval(()=>{this.setState({now:Date.now()})},1e3)}componentWillUnmount(){null!==this.timer&&clearInterval(this.timer)}render(){let i="Unknown date",n=t.a.timer,a={milliseconds:"?",seconds:"?",minutes:"?",hours:"?",days:"?"};if(this.props.to){i=new Date(this.props.to);let l=i-this.state.now;l>0?a={milliseconds:l%1e3,seconds:Math.floor(l/1e3)%60,minutes:Math.floor(l/6e4)%60,hours:Math.floor(l/36e5)%24,days:Math.floor(l/864e5)}:(a={milliseconds:0,seconds:0,minutes:0,hours:0,days:0},n+=" "+t.a.expired)}else n+=" "+t.a.unknown;return l("div",{class:n,title:i},l("div",{class:t.a.days+" "+t.a.count},a.days),l("div",{className:t.a.days+" "+t.a.text},"giorni"),l("div",{class:t.a.hours+" "+t.a.count},a.hours),l("div",{className:t.a.hours+" "+t.a.text},"ore"),l("div",{class:t.a.minutes+" "+t.a.count},a.minutes),l("div",{className:t.a.minutes+" "+t.a.text},"minuti"),l("div",{class:t.a.seconds+" "+t.a.count},a.seconds),l("div",{class:t.a.seconds+" "+t.a.text},"secondi"),l("div",{class:t.a.remaining},"rimasti"))}}}).call(this,n("hosL").h)},EfTa:function(l){l.exports={timer:"timer__K0K_h",days:"days__vN3tf",hours:"hours__3v0KX",minutes:"minutes__vkYk7",seconds:"seconds__3gJ99",count:"count__1VV4k",text:"text__khS4i",remaining:"remaining__zUECg",unknown:"unknown__af307",expired:"expired__1rtHB"}},OMhl:function(l,i,n){"use strict";(function(l){var a=n("p7QU"),e=n.n(a),t=n("QRet"),o=n("8CDw"),u=n("wQ73");i.a=function(i){let n,a=Object(t.b)(o.a),s=Object(t.b)(u.a);return n=void 0===i.inline?s:i.inline,l("img",{src:`https://latex.codecogs.com/svg.latex?${`${n?"\\inline":""} {\\color{${a}} ${i.children} }`}`,alt:i.children,title:i.children,class:e.a.latex})}}).call(this,n("hosL").h)},RPi6:function(l,i,n){"use strict";(function(l){var a=n("4fSx"),e=n.n(a);i.a=function(i){return l("span",{class:e.a.max},i.children?i.children:"max")}}).call(this,n("hosL").h)},UEJU:function(l,i,n){"use strict";(function(l){n.d(i,"a",(function(){return o}));var a=n("nhUl"),e=n.n(a),t=n("hosL");class o extends t.Component{render(){return l("span",{class:e.a.minus},this.props.children)}}}).call(this,n("hosL").h)},dIxp:function(l,i,n){"use strict";(function(l){var a=n("4fSx"),e=n.n(a);i.a=function(i){return l("span",{class:e.a.unbounded},i.children?i.children:"unbounded")}}).call(this,n("hosL").h)},fWbf:function(l,i,n){"use strict";(function(l){var a=n("4fSx"),e=n.n(a);i.a=function(i){return l("span",{class:e.a.min},i.children?i.children:"min")}}).call(this,n("hosL").h)},h7i1:function(l,i,n){"use strict";(function(l){n.d(i,"a",(function(){return o}));var a=n("56OW"),e=n.n(a),t=n("hosL");class o extends t.Component{render(){return l("span",{class:e.a.plus},this.props.children)}}}).call(this,n("hosL").h)},jXlC:function(l,i,n){"use strict";(function(l){n.d(i,"a",(function(){return o}));var a=n("3k98"),e=n.n(a),t=n("hosL");class o extends t.Component{render(){return l("span",{class:e.a.todo},this.props.children)}}}).call(this,n("hosL").h)},nhUl:function(l){l.exports={minus:"minus__2EaF0"}},p7QU:function(l){l.exports={latex:"latex__3zlIu"}},wQ73:function(l,i,n){"use strict";var a=n("hosL");i.a=Object(a.createContext)(!0)},xY5u:function(l,i,n){"use strict";(function(l){i.a=function(i){return l("a",{href:i.src,title:i.alt,target:"_blank"},l("img",{src:i.src,alt:i.alt}))}}).call(this,n("hosL").h)}}]); +//# sourceMappingURL=route-ottimizzazioneLineare.chunk.f48cc.esm.js.map \ No newline at end of file diff --git a/docs/route-ottimizzazioneLineare.chunk.353b8.esm.js.map b/docs/route-ottimizzazioneLineare.chunk.f48cc.esm.js.map similarity index 52% rename from docs/route-ottimizzazioneLineare.chunk.353b8.esm.js.map rename to docs/route-ottimizzazioneLineare.chunk.f48cc.esm.js.map index 3423d7d..86c48fc 100644 --- a/docs/route-ottimizzazioneLineare.chunk.353b8.esm.js.map +++ b/docs/route-ottimizzazioneLineare.chunk.f48cc.esm.js.map @@ -1 +1 @@ -{"version":3,"sources":[],"names":[],"mappings":"","file":"route-ottimizzazioneLineare.chunk.353b8.esm.js","sourceRoot":""} \ No newline at end of file +{"version":3,"sources":[],"names":[],"mappings":"","file":"route-ottimizzazioneLineare.chunk.f48cc.esm.js","sourceRoot":""} \ No newline at end of file diff --git a/docs/sw-esm.js b/docs/sw-esm.js index 99040b2..657c2f5 100644 --- a/docs/sw-esm.js +++ b/docs/sw-esm.js @@ -1,4 +1,4 @@ -importScripts("/precache-manifest.40c748ad559066accc883673cce8ce47.esm.js", "https://storage.googleapis.com/workbox-cdn/releases/4.3.1/workbox-sw.js"); +importScripts("/precache-manifest.097656f7b3d3f849be5cd65abd2c2890.esm.js", "https://storage.googleapis.com/workbox-cdn/releases/4.3.1/workbox-sw.js"); !function(e){function t(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var r={};t.m=e,t.c=r,t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:n})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,r){if(1&r&&(e=t(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(t.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var o in e)t.d(n,o,function(t){return e[t]}.bind(null,o));return n},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="/",t(t.s="idKB")}({idKB:function(){self.__precacheManifest=[].concat(self.__precacheManifest||[]);const e=e=>"navigate"===e.request.mode;workbox.routing.registerRoute(({event:t})=>e(t),new workbox.strategies.NetworkFirst({cacheName:workbox.core.cacheNames.precache,networkTimeoutSeconds:5,plugins:[new workbox.cacheableResponse.Plugin({statuses:[200]})]})),workbox.precaching.precacheAndRoute(self.__precacheManifest,{}),workbox.routing.setCatchHandler(({event:t})=>e(t)?caches.match(workbox.precaching.getCacheKeyForURL("/index.html")):Response.error())}}); //# sourceMappingURL=sw-esm.js.map diff --git a/docs/sw.js b/docs/sw.js index c20c5b6..a566838 100644 --- a/docs/sw.js +++ b/docs/sw.js @@ -1,4 +1,4 @@ -importScripts("/precache-manifest.c174bc8e42d4199c747cda8554c67ae3.js", "https://storage.googleapis.com/workbox-cdn/releases/4.3.1/workbox-sw.js"); +importScripts("/precache-manifest.4c3e7a8015e5e75e77ad3c23bfc02e4c.js", "https://storage.googleapis.com/workbox-cdn/releases/4.3.1/workbox-sw.js"); !function(e){function t(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var r={};t.m=e,t.c=r,t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:n})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,r){if(1&r&&(e=t(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(t.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var o in e)t.d(n,o,function(t){return e[t]}.bind(null,o));return n},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="/",t(t.s="idKB")}({idKB:function(){self.__precacheManifest=[].concat(self.__precacheManifest||[]);const e=e=>"navigate"===e.request.mode;workbox.routing.registerRoute(({event:t})=>e(t),new workbox.strategies.NetworkFirst({cacheName:workbox.core.cacheNames.precache,networkTimeoutSeconds:5,plugins:[new workbox.cacheableResponse.Plugin({statuses:[200]})]})),workbox.precaching.precacheAndRoute(self.__precacheManifest,{}),workbox.routing.setCatchHandler(({event:t})=>e(t)?caches.match(workbox.precaching.getCacheKeyForURL("/index.html")):Response.error())}}); //# sourceMappingURL=sw.js.map diff --git a/src/components/OttimizzazioneLineare/Max.js b/src/components/OttimizzazioneLineare/Max.js new file mode 100644 index 0000000..546a79a --- /dev/null +++ b/src/components/OttimizzazioneLineare/Max.js @@ -0,0 +1,7 @@ +import style from "./Unbounded.less"; + +export default function (props) { + return ( + {props.children ? props.children : "unbounded"} + ); +} diff --git a/src/components/OttimizzazioneLineare/Min.js b/src/components/OttimizzazioneLineare/Min.js new file mode 100644 index 0000000..546a79a --- /dev/null +++ b/src/components/OttimizzazioneLineare/Min.js @@ -0,0 +1,7 @@ +import style from "./Unbounded.less"; + +export default function (props) { + return ( + {props.children ? props.children : "unbounded"} + ); +} diff --git a/src/components/OttimizzazioneLineare/Unbounded.less b/src/components/OttimizzazioneLineare/Styles.less similarity index 100% rename from src/components/OttimizzazioneLineare/Unbounded.less rename to src/components/OttimizzazioneLineare/Styles.less diff --git a/src/components/OttimizzazioneLineare/Unfeasible.less b/src/components/OttimizzazioneLineare/Unfeasible.less deleted file mode 100644 index 683e252..0000000 --- a/src/components/OttimizzazioneLineare/Unfeasible.less +++ /dev/null @@ -1,2 +0,0 @@ -@import "../styles/constants.less"; -