PageSourceSearch

https://second-hander.com/static/js/main.791c6ce3.js

js second-hander.com collected 2026-10-06 12:22:28 UTC 456,498 bytes, 3 lines download raw bytes

1/*! For license information please see main.791c6ce3.js.LICENSE.txt */
2!function(){var e={566:function(e,t,n){"use strict";var r="__global_unique_id__";e.exports=function(){return n.g[r]=(n.g[r]||0)+1}},110:function(e,t,n){"use strict";var r=n(441),a={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},i={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},o={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},s={};function l(e){return r.isMemo(e)?o:s[e.$$typeof]||a}s[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0};var u=Object.defineProperty,c=Object.getOwnPropertyNames,p=Object.getOwnPropertySymbols,d=Object.getOwnPropertyDescriptor,f=Object.getPrototypeOf,m=Object.prototype;e.exports=function e(t,n,r){if("string"!==typeof n){if(m){var a=f(n);a&&a!==m&&e(t,a,r)}var o=c(n);p&&(o=o.concat(p(n)));for(var s=l(t),h=l(n),v=0;v<o.length;++v){var g=o[v];if(!i[g]&&(!r||!r[g])&&(!h||!h[g])&&(!s||!s[g])){var b=d(n,g);try{u(t,g,b)}catch(y){}}}}return t}},571:function(e){e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},735:function(e,t,n){e=n.nmd(e);var r="__lodash_hash_undefined__",a=9007199254740991,i="[object Arguments]",o="[object Array]",s="[object Boolean]",l="[object Date]",u="[object Error]",c="[object Function]",p="[object Map]",d="[object Number]",f="[object Object]",m="[object Promise]",h="[object RegExp]",v="[object Set]",g="[object String]",b="[object Symbol]",y="[object WeakMap]",w="[object ArrayBuffer]",k="[object DataView]",x=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,E=/^\w*$/,T=/^\./,S=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,C=/\\(\\)?/g,q=/^\[object .+?Constructor\]$/,_=/^(?:0|[1-9]\d*)$/,P={};P["[object Float32Array]"]=P["[object Float64Array]"]=P["[object Int8Array]"]=P["[object Int16Array]"]=P["[object Int32Array]"]=P["[object Uint8Array]"]=P["[object Uint8ClampedArray]"]=P["[object Uint16Array]"]=P["[object Uint32Array]"]=!0,P[i]=P[o]=P[w]=P[s]=P[k]=P[l]=P[u]=P[c]=P[p]=P[d]=P[f]=P[h]=P[v]=P[g]=P[y]=!1;var A="object"==typeof n.g&&n.g&&n.g.Object===Object&&n.g,j="object"==typeof self&&self&&self.Object===Object&&self,O=A||j||Function("return this")(),I=t&&!t.nodeType&&t,M=I&&e&&!e.nodeType&&e,L=M&&M.exports===I&&A.process,N=function(){try{return L&&L.binding("util")}catch(e){}}(),F=N&&N.isTypedArray;function D(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}function z(e,t){for(var n=-1,r=e?e.length:0,a=Array(r);++n<r;)a[n]=t(e[n],n,e);return a}function R(e,t){for(var n=-1,r=t.length,a=e.length;++n<r;)e[a+n]=t[n];return e}function W(e,t){for(var n=-1,r=e?e.length:0;++n<r;)if(t(e[n],n,e))return!0;return!1}function U(e){return function(t){return e(t)}}function B(e){var t=!1;if(null!=e&&"function"!=typeof e.toString)try{t=!!(e+"")}catch(n){}return t}function V(e){var t=-1,n=Array(e.size);return e.forEach((function(e,r){n[++t]=[r,e]})),n}function H(e){var t=-1,n=Array(e.size);return e.forEach((function(e){n[++t]=e})),n}var G,$,K=Array.prototype,Y=Function.prototype,Q=Object.prototype,J=O["__core-js_shared__"],X=function(){var e=/[^.]+$/.exec(J&&J.keys&&J.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}(),Z=Y.toString,ee=Q.hasOwnProperty,te=Q.toString,ne=RegExp("^"+Z.call(ee).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),re=O.Symbol,ae=O.Uint8Array,ie=Q.propertyIsEnumerable,oe=K.splice,se=re?re.isConcatSpreadable:void 0,le=(G=Object.keys,$=Object,function(e){return G($(e))}),ue=Math.max,ce=$e(O,"DataView"),pe=$e(O,"Map"),de=$e(O,"Promise"),fe=$e(O,"Set"),me=$e(O,"WeakMap"),he=$e(Object,"create"),ve=rt(ce),ge=rt(pe),be=rt(de),ye=rt(fe),we=rt(me),ke=re?re.prototype:void 0,xe=ke?ke.valueOf:void 0,Ee=ke?ke.toString:void 0;function Te(e){var t=-1,n=e?e.length:0;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function Se(e){var t=-1,n=e?e.length:0;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function Ce(e){var t=-1,n=e?e.length:0;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function qe(e){var t=-1,n=e?e.length:0;for(this.__data__=new Ce;++t<n;)this.add(e[t])}function _e(e){this.__data__=new Se(e)}function Pe(e,t){var n=lt(e)||st(e)?function(e,t){for(var n=-1,r=Array(e);++n<e;)r[n]=t(n);return r}(e.length,String):[],r=n.length,a=!!r;for(var i in e)!t&&!ee.call(e,i)||a&&("length"==i||Qe(i,r))||n.push(i);return n}function Ae(e,t){for(var n=e.length;n--;)if(ot(e[n][0],t))return n;return-1}Te.prototype.clear=function(){this.__data__=he?he(null):{}},Te.prototype.delete=function(e){return this.has(e)&&delete this.__data__[e]},Te.prototype.get=function(e){var t=this.__data__;if(he){var n=t[e];return n===r?void 0:n}return ee.call(t,e)?t[e]:void 0},Te.prototype.has=function(e){var t=this.__data__;return he?void 0!==t[e]:ee.call(t,e)},Te.prototype.set=function(e,t){return this.__data__[e]=he&&void 0===t?r:t,this},Se.prototype.clear=function(){this.__data__=[]},Se.prototype.delete=function(e){var t=this.__data__,n=Ae(t,e);return!(n<0)&&(n==t.length-1?t.pop():oe.call(t,n,1),!0)},Se.prototype.get=function(e){var t=this.__data__,n=Ae(t,e);return n<0?void 0:t[n][1]},Se.prototype.has=function(e){return Ae(this.__data__,e)>-1},Se.prototype.set=function(e,t){var n=this.__data__,r=Ae(n,e);return r<0?n.push([e,t]):n[r][1]=t,this},Ce.prototype.clear=function(){this.__data__={hash:new Te,map:new(pe||Se),string:new Te}},Ce.prototype.delete=function(e){return Ge(this,e).delete(e)},Ce.prototype.get=function(e){return Ge(this,e).get(e)},Ce.prototype.has=function(e){return Ge(this,e).has(e)},Ce.prototype.set=function(e,t){return Ge(this,e).set(e,t),this},qe.prototype.add=qe.prototype.push=function(e){return this.__data__.set(e,r),this},qe.prototype.has=function(e){return this.__data__.has(e)},_e.prototype.clear=function(){this.__data__=new Se},_e.prototype.delete=function(e){return this.__data__.delete(e)},_e.prototype.get=function(e){return this.__data__.get(e)},_e.prototype.has=function(e){return this.__data__.has(e)},_e.prototype.set=function(e,t){var n=this.__data__;if(n instanceof Se){var r=n.__data__;
2if(!pe||r.length<199)return r.push([e,t]),this;n=this.__data__=new Ce(r)}return n.set(e,t),this};var je,Oe,Ie=(je=function(e,t){return e&&Le(e,t,vt)},function(e,t){if(null==e)return e;if(!ut(e))return je(e,t);for(var n=e.length,r=Oe?n:-1,a=Object(e);(Oe?r--:++r<n)&&!1!==t(a[r],r,a););return e});function Me(e,t,n,r,a){var i=-1,o=e.length;for(n||(n=Ye),a||(a=[]);++i<o;){var s=e[i];t>0&&n(s)?t>1?Me(s,t-1,n,r,a):R(a,s):r||(a[a.length]=s)}return a}var Le=function(e){return function(t,n,r){for(var a=-1,i=Object(t),o=r(t),s=o.length;s--;){var l=o[e?s:++a];if(!1===n(i[l],l,i))break}return t}}();function Ne(e,t){for(var n=0,r=(t=Xe(t,e)?[t]:Be(t)).length;null!=e&&n<r;)e=e[nt(t[n++])];return n&&n==r?e:void 0}function Fe(e,t){return null!=e&&t in Object(e)}function De(e,t,n,r,a){return e===t||(null==e||null==t||!dt(e)&&!ft(t)?e!==e&&t!==t:function(e,t,n,r,a,c){var m=lt(e),y=lt(t),x=o,E=o;m||(x=(x=Ke(e))==i?f:x);y||(E=(E=Ke(t))==i?f:E);var T=x==f&&!B(e),S=E==f&&!B(t),C=x==E;if(C&&!T)return c||(c=new _e),m||ht(e)?He(e,t,n,r,a,c):function(e,t,n,r,a,i,o){switch(n){case k:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case w:return!(e.byteLength!=t.byteLength||!r(new ae(e),new ae(t)));case s:case l:case d:return ot(+e,+t);case u:return e.name==t.name&&e.message==t.message;case h:case g:return e==t+"";case p:var c=V;case v:var f=2&i;if(c||(c=H),e.size!=t.size&&!f)return!1;var m=o.get(e);if(m)return m==t;i|=1,o.set(e,t);var y=He(c(e),c(t),r,a,i,o);return o.delete(e),y;case b:if(xe)return xe.call(e)==xe.call(t)}return!1}(e,t,x,n,r,a,c);if(!(2&a)){var q=T&&ee.call(e,"__wrapped__"),_=S&&ee.call(t,"__wrapped__");
2if(q||_){var P=q?e.value():e,A=_?t.value():t;return c||(c=new _e),n(P,A,r,a,c)}}if(!C)return!1;return c||(c=new _e),function(e,t,n,r,a,i){var o=2&a,s=vt(e),l=s.length,u=vt(t),c=u.length;if(l!=c&&!o)return!1;var p=l;for(;p--;){var d=s[p];if(!(o?d in t:ee.call(t,d)))return!1}var f=i.get(e);if(f&&i.get(t))return f==t;var m=!0;i.set(e,t),i.set(t,e);var h=o;for(;++p<l;){var v=e[d=s[p]],g=t[d];if(r)var b=o?r(g,v,d,t,e,i):r(v,g,d,e,t,i);if(!(void 0===b?v===g||n(v,g,r,a,i):b)){m=!1;break}h||(h="constructor"==d)}if(m&&!h){var y=e.constructor,w=t.constructor;y==w||!("constructor"in e)||!("constructor"in t)||"function"==typeof y&&y instanceof y&&"function"==typeof w&&w instanceof w||(m=!1)}return i.delete(e),i.delete(t),m}(e,t,n,r,a,c)}(e,t,De,n,r,a))}function ze(e){return!(!dt(e)||function(e){return!!X&&X in e}(e))&&(ct(e)||B(e)?ne:q).test(rt(e))}function Re(e){return"function"==typeof e?e:null==e?gt:"object"==typeof e?lt(e)?function(e,t){if(Xe(e)&&Ze(t))return et(nt(e),t);return function(n){var r=function(e,t,n){var r=null==e?void 0:Ne(e,t);return void 0===r?n:r}(n,e);return void 0===r&&r===t?function(e,t){return null!=e&&function(e,t,n){t=Xe(t,e)?[t]:Be(t);var r,a=-1,i=t.length;for(;++a<i;){var o=nt(t[a]);if(!(r=null!=e&&n(e,o)))break;e=e[o]}if(r)return r;i=e?e.length:0;return!!i&&pt(i)&&Qe(o,i)&&(lt(e)||st(e))}(e,t,Fe)}(n,e):De(t,r,void 0,3)}}(e[0],e[1]):function(e){var t=function(e){var t=vt(e),n=t.length;for(;n--;){var r=t[n],a=e[r];t[n]=[r,a,Ze(a)]}return t}(e);if(1==t.length&&t[0][2])return et(t[0][0],t[0][1]);return function(n){return n===e||function(e,t,n,r){var a=n.length,i=a,o=!r;if(null==e)return!i;for(e=Object(e);a--;){var s=n[a];if(o&&s[2]?s[1]!==e[s[0]]:!(s[0]in e))return!1}for(;++a<i;){var l=(s=n[a])[0],u=e[l],c=s[1];if(o&&s[2]){if(void 0===u&&!(l in e))return!1}else{var p=new _e;if(r)var d=r(u,c,l,e,t,p);if(!(void 0===d?De(c,u,r,3,p):d))return!1}}return!0}(n,e,t)}}(e):function(e){return Xe(e)?(t=nt(e),function(e){return null==e?void 0:e[t]}):function(e){return function(t){return Ne(t,e)}}(e);var t}(e)}function We(e){if(!function(e){var t=e&&e.constructor,n="function"==typeof t&&t.prototype||Q;return e===n}(e))return le(e);var t=[];for(var n in Object(e))ee.call(e,n)&&"constructor"!=n&&t.push(n);return t}function Ue(e,t,n){var r=-1;t=z(t.length?t:[gt],U(Re));var a=function(e,t){var n=-1,r=ut(e)?Array(e.length):[];return Ie(e,(function(e,a,i){r[++n]=t(e,a,i)})),r}(e,(function(e,n,a){return{criteria:z(t,(function(t){return t(e)})),index:++r,value:e}}));return function(e,t){var n=e.length;for(e.sort(t);n--;)e[n]=e[n].value;return e}(a,(function(e,t){return function(e,t,n){var r=-1,a=e.criteria,i=t.criteria,o=a.length,s=n.length;for(;++r<o;){var l=Ve(a[r],i[r]);if(l)return r>=s?l:l*("desc"==n[r]?-1:1)}return e.index-t.index}(e,t,n)}))}function Be(e){return lt(e)?e:tt(e)}function Ve(e,t){if(e!==t){var n=void 0!==e,r=null===e,a=e===e,i=mt(e),o=void 0!==t,s=null===t,l=t===t,u=mt(t);if(!s&&!u&&!i&&e>t||i&&o&&l&&!s&&!u||r&&o&&l||!n&&l||!a)return 1;if(!r&&!i&&!u&&e<t||u&&n&&a&&!r&&!i||s&&n&&a||!o&&a||!l)return-1}return 0}function He(e,t,n,r,a,i){var o=2&a,s=e.length,l=t.length;if(s!=l&&!(o&&l>s))return!1;var u=i.get(e);if(u&&i.get(t))return u==t;var c=-1,p=!0,d=1&a?new qe:void 0;for(i.set(e,t),i.set(t,e);++c<s;){var f=e[c],m=t[c];if(r)var h=o?r(m,f,c,t,e,i):r(f,m,c,e,t,i);if(void 0!==h){if(h)continue;p=!1;break}if(d){if(!W(t,(function(e,t){if(!d.has(t)&&(f===e||n(f,e,r,a,i)))return d.add(t)}))){p=!1;break}}else if(f!==m&&!n(f,m,r,a,i)){p=!1;break}}return i.delete(e),i.delete(t),p}function Ge(e,t){var n=e.__data__;return function(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e}(t)?n["string"==typeof t?"string":"hash"]:n.map}function $e(e,t){var n=function(e,t){return null==e?void 0:e[t]}(e,t);return ze(n)?n:void 0}var Ke=function(e){return te.call(e)};function Ye(e){return lt(e)||st(e)||!!(se&&e&&e[se])}function Qe(e,t){return!!(t=null==t?a:t)&&("number"==typeof e||_.test(e))&&e>-1&&e%1==0&&e<t}function Je(e,t,n){if(!dt(n))return!1;var r=typeof t;return!!("number"==r?ut(n)&&Qe(t,n.length):"string"==r&&t in n)&&ot(n[t],e)}function Xe(e,t){if(lt(e))return!1;var n=typeof e;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=e&&!mt(e))||(E.test(e)||!x.test(e)||null!=t&&e in Object(t))}function Ze(e){return e===e&&!dt(e)}function et(e,t){return function(n){return null!=n&&(n[e]===t&&(void 0!==t||e in Object(n)))}}(ce&&Ke(new ce(new ArrayBuffer(1)))!=k||pe&&Ke(new pe)!=p||de&&Ke(de.resolve())!=m||fe&&Ke(new fe)!=v||me&&Ke(new me)!=y)&&(Ke=function(e){var t=te.call(e),n=t==f?e.constructor:void 0,r=n?rt(n):void 0;if(r)switch(r){case ve:return k;case ge:return p;case be:return m;case ye:return v;case we:return y}return t});var tt=it((function(e){var t;
2e=null==(t=e)?"":function(e){if("string"==typeof e)return e;if(mt(e))return Ee?Ee.call(e):"";var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}(t);var n=[];return T.test(e)&&n.push(""),e.replace(S,(function(e,t,r,a){n.push(r?a.replace(C,"$1"):t||e)})),n}));function nt(e){if("string"==typeof e||mt(e))return e;var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}function rt(e){if(null!=e){try{return Z.call(e)}catch(t){}try{return e+""}catch(t){}}return""}var at=function(e,t){return t=ue(void 0===t?e.length-1:t,0),function(){for(var n=arguments,r=-1,a=ue(n.length-t,0),i=Array(a);++r<a;)i[r]=n[t+r];r=-1;for(var o=Array(t+1);++r<t;)o[r]=n[r];return o[t]=i,D(e,this,o)}}((function(e,t){if(null==e)return[];var n=t.length;return n>1&&Je(e,t[0],t[1])?t=[]:n>2&&Je(t[0],t[1],t[2])&&(t=[t[0]]),Ue(e,Me(t,1),[])}));function it(e,t){if("function"!=typeof e||t&&"function"!=typeof t)throw new TypeError("Expected a function");var n=function n(){var r=arguments,a=t?t.apply(this,r):r[0],i=n.cache;if(i.has(a))return i.get(a);var o=e.apply(this,r);return n.cache=i.set(a,o),o};return n.cache=new(it.Cache||Ce),n}function ot(e,t){return e===t||e!==e&&t!==t}function st(e){return function(e){return ft(e)&&ut(e)}(e)&&ee.call(e,"callee")&&(!ie.call(e,"callee")||te.call(e)==i)}it.Cache=Ce;var lt=Array.isArray;function ut(e){return null!=e&&pt(e.length)&&!ct(e)}function ct(e){var t=dt(e)?te.call(e):"";return t==c||"[object GeneratorFunction]"==t}function pt(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=a}function dt(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function ft(e){return!!e&&"object"==typeof e}function mt(e){return"symbol"==typeof e||ft(e)&&te.call(e)==b}var ht=F?U(F):function(e){return ft(e)&&pt(e.length)&&!!P[te.call(e)]};function vt(e){return ut(e)?Pe(e):We(e)}function gt(e){return e}e.exports=at},725:function(e){"use strict";var t=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;function a(e){if(null===e||void 0===e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(a){return!1}}()?Object.assign:function(e,i){for(var o,s,l=a(e),u=1;u<arguments.length;u++){for(var c in o=Object(arguments[u]))n.call(o,c)&&(l[c]=o[c]);if(t){s=t(o);for(var p=0;p<s.length;p++)r.call(o,s[p])&&(l[s[p]]=o[s[p]])}}return l}},151:function(e,t,n){var r=n(571);e.exports=f,e.exports.parse=i,e.exports.compile=function(e,t){return s(i(e,t),t)},e.exports.tokensToFunction=s,e.exports.tokensToRegExp=d;var a=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function i(e,t){for(var n,r=[],i=0,o=0,s="",c=t&&t.delimiter||"/";null!=(n=a.exec(e));){var p=n[0],d=n[1],f=n.index;if(s+=e.slice(o,f),o=f+p.length,d)s+=d[1];else{var m=e[o],h=n[2],v=n[3],g=n[4],b=n[5],y=n[6],w=n[7];s&&(r.push(s),s="");var k=null!=h&&null!=m&&m!==h,x="+"===y||"*"===y,E="?"===y||"*"===y,T=n[2]||c,S=g||b;r.push({name:v||i++,prefix:h||"",delimiter:T,optional:E,repeat:x,partial:k,asterisk:!!w,pattern:S?u(S):w?".*":"[^"+l(T)+"]+?"})}}return o<e.length&&(s+=e.substr(o)),s&&r.push(s),r}function o(e){return encodeURI(e).replace(/[\/?#]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()}))}function s(e,t){for(var n=new Array(e.length),a=0;a<e.length;a++)"object"===typeof e[a]&&(n[a]=new RegExp("^(?:"+e[a].pattern+")$",p(t)));return function(t,a){for(var i="",s=t||{},l=(a||{}).pretty?o:encodeURIComponent,u=0;u<e.length;u++){var c=e[u];if("string"!==typeof c){var p,d=s[c.name];if(null==d){if(c.optional){c.partial&&(i+=c.prefix);continue}throw new TypeError('Expected "'+c.name+'" to be defined')}if(r(d)){if(!c.repeat)throw new TypeError('Expected "'+c.name+'" to not repeat, but received `'+JSON.stringify(d)+"`");if(0===d.length){if(c.optional)continue;throw new TypeError('Expected "'+c.name+'" to not be empty')}for(var f=0;f<d.length;f++){if(p=l(d[f]),!n[u].test(p))throw new TypeError('Expected all "'+c.name+'" to match "'+c.pattern+'", but received `'+JSON.stringify(p)+"`");i+=(0===f?c.prefix:c.delimiter)+p}}else{if(p=c.asterisk?encodeURI(d).replace(/[?#]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})):l(d),!n[u].test(p))throw new TypeError('Expected "'+c.name+'" to match "'+c.pattern+'", but received "'+p+'"');i+=c.prefix+p}}else i+=c}return i}}function l(e){return e.replace(/([.+*?=^!:${}()[\]|\/\\])/g,"\\$1")}function u(e){return e.replace(/([=!:$\/()])/g,"\\$1")}function c(e,t){return e.keys=t,e}function p(e){return e&&e.sensitive?"":"i"}function d(e,t,n){r(t)||(n=t||n,t=[]);for(var a=(n=n||{}).strict,i=!1!==n.end,o="",s=0;s<e.length;s++){var u=e[s];if("string"===typeof u)o+=l(u);else{var d=l(u.prefix),f="(?:"+u.pattern+")";t.push(u),u.repeat&&(f+="(?:"+d+f+")*"),o+=f=u.optional?u.partial?d+"("+f+")?":"(?:"+d+"("+f+"))?":d+"("+f+")"}}var m=l(n.delimiter||"/"),h=o.slice(-m.length)===m;return a||(o=(h?o.slice(0,-m.length):o)+"(?:"+m+"(?=$))?"),o+=i?"$":a&&h?"":"(?="+m+"|$)",c(new RegExp("^"+o,p(n)),t)}function f(e,t,n){return r(t)||(n=t||n,t=[]),n=n||{},e instanceof RegExp?function(e,t){var n=e.source.match(/\((?!\?)/g);if(n)for(var r=0;r<n.length;r++)t.push({name:r,prefix:null,delimiter:null,optional:!1,repeat:!1,partial:!1,asterisk:!1,pattern:null});return c(e,t)}(e,t):r(e)?function(e,t,n){for(var r=[],a=0;a<e.length;a++)r.push(f(e[a],t,n).source);return c(new RegExp("(?:"+r.join("|")+")",p(n)),t)}(e,t,n):function(e,t,n){return d(i(e,n),t,n)}
vendor: 2,670 bytes, line 2
2(e,t,n)}},888:function(e,t,n){"use strict";var r=n(47);function a(){}function i(){}i.resetWarningCache=a,e.exports=function(){function e(e,t,n,a,i,o){if(o!==r){var s=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:i,resetWarningCache:a};return n.PropTypes=n,n}},7:function(e,t,n){e.exports=n(888)()},47:function(e){"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},463:function(e,t,n){"use strict";var r=n(791),a=n(725),i=n(296);function o(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}if(!r)throw Error(o(227));var s=null,l={};function u(){if(s)for(var e in l){var t=l[e],n=s.indexOf(e);if(!(-1<n))throw Error(o(96,e));if(!p[n]){if(!t.extractEvents)throw Error(o(97,e));for(var r in p[n]=t,n=t.eventTypes){var a=void 0,i=n[r],u=t,f=r;if(d.hasOwnProperty(f))throw Error(o(99,f));d[f]=i;var m=i.phasedRegistrationNames;if(m){for(a in m)m.hasOwnProperty(a)&&c(m[a],u,f);a=!0}else i.registrationName?(c(i.registrationName,u,f),a=!0):a=!1;if(!a)throw Error(o(98,r,e))}}}}function c(e,t,n){if(f[e])throw Error(o(100,e));f[e]=t,m[e]=t.eventTypes[n].dependencies}var p=[],d={},f={},m={};function h(e,t,n,r,a,i,o,s,l){var u=Array.prototype.slice.call(arguments,3);try{t.apply(n,u)}catch(c){this.onError(c)}}var v=!1,g=null,b=!1,y=null,w={onError:function(e){v=!0,g=e}};function k(e,t,n,r,a,i,o,s,l){v=!1,g=null,h.apply(w,arguments)}var x=null,E=null,T=null;function S(e,t,n){var r=e.type||"unknown-event";e.currentTarget=T(n),function(e,t,n,r,a,i,s,l,u){if(k.apply(this,arguments),v){if(!v)throw Error(o(198));var c=g;v=!1,g=null,b||(b=!0,y=c)}}(r,t,void 0,e),e.currentTarget=null}function C(e,t){if(null==t)throw Error(o(30));return null==e?t:Array.isArray(e)?Array.isArray(t)?(e.push.apply(e,t),e):(e.push(t),e):Array.isArray(t)?[e].concat(t):[e,t]}function q(e,t,n){Array.isArray(e)?e.forEach(t,n):e&&t.call(n,e)}var _=null;function P(e){if(e){var t=e._dispatchListeners,n=e._dispatchInstances;if(Array.isArray(t))for(var r=0;r<t.length&&!e.isPropagationStopped();r++)S(e,t[r],n[r]);
2else t&&S(e,t,n);e._dispatchListeners=null,e._dispatchInstances=null,e.isPersistent()||e.constructor.release(e)}}function A(e){if(null!==e&&(_=C(_,e)),e=_,_=null,e){if(q(e,P),_)throw Error(o(95));if(b)throw e=y,b=!1,y=null,e}}var j={injectEventPluginOrder:function(e){if(s)throw Error(o(101));s=Array.prototype.slice.call(e),u()},injectEventPluginsByName:function(e){var t,n=!1;for(t in e)if(e.hasOwnProperty(t)){var r=e[t];if(!l.hasOwnProperty(t)||l[t]!==r){if(l[t])throw Error(o(102,t));l[t]=r,n=!0}}n&&u()}};function O(e,t){var n=e.stateNode;if(!n)return null;var r=x(n);if(!r)return null;n=r[t];e:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":(r=!r.disabled)||(r=!("button"===(e=e.type)||"input"===e||"select"===e||"textarea"===e)),e=!r;break e;default:e=!1}if(e)return null;if(n&&"function"!==typeof n)throw Error(o(231,t,typeof n));return n}var I=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;I.hasOwnProperty("ReactCurrentDispatcher")||(I.ReactCurrentDispatcher={current:null}),I.hasOwnProperty("ReactCurrentBatchConfig")||(I.ReactCurrentBatchConfig={suspense:null});var M=/^(.*)[\\\/]/,L="function"===typeof Symbol&&Symbol.for,N=L?Symbol.for("react.element"):60103,F=L?Symbol.for("react.portal"):60106,D=L?Symbol.for("react.fragment"):60107,z=L?Symbol.for("react.strict_mode"):60108,R=L?Symbol.for("react.profiler"):60114,W=L?Symbol.for("react.provider"):60109,U=L?Symbol.for("react.context"):60110,B=L?Symbol.for("react.concurrent_mode"):60111,V=L?Symbol.for("react.forward_ref"):60112,H=L?Symbol.for("react.suspense"):60113,G=L?Symbol.for("react.suspense_list"):60120,$=L?Symbol.for("react.memo"):60115,K=L?Symbol.for("react.lazy"):60116;L&&Symbol.for("react.fundamental"),L&&Symbol.for("react.responder"),L&&Symbol.for("react.scope");var Y="function"===typeof Symbol&&Symbol.iterator;function Q(e){return null===e||"object"!==typeof e?null:"function"===typeof(e=Y&&e[Y]||e["@@iterator"])?e:null}function J(e){if(null==e)return null;if("function"===typeof e)return e.displayName||e.name||null;if("string"===typeof e)return e;switch(e){case D:return"Fragment";case F:return"Portal";case R:return"Profiler";case z:return"StrictMode";case H:return"Suspense";case G:return"SuspenseList"}if("object"===typeof e)switch(e.$$typeof){case U:return"Context.Consumer";case W:return"Context.Provider";case V:var t=e.render;return t=t.displayName||t.name||"",e.displayName||(""!==t?"ForwardRef("+t+")":"ForwardRef");case $:return J(e.type);case K:if(e=1===e._status?e._result:null)return J(e)}return null}function X(e){var t="";do{e:switch(e.tag){case 3:case 4:case 6:case 7:case 10:case 9:var n="";break e;default:var r=e._debugOwner,a=e._debugSource,i=J(e.type);n=null,r&&(n=J(r.type)),r=i,i="",a?i=" (at "+a.fileName.replace(M,"")+":"+a.lineNumber+")":n&&(i=" (created by "+n+")"),n="\n    in "+(r||"Unknown")+i}t+=n,e=e.return}while(e);return t}var Z=!("undefined"===typeof window||"undefined"===typeof window.document||"undefined"===typeof window.document.createElement),ee=null,te=null,ne=null;function re(e){if(e=E(e)){if("function"!==typeof ee)throw Error(o(280));var t=x(e.stateNode);ee(e.stateNode,e.type,t)}}function ae(e){te?ne?ne.push(e):ne=[e]:te=e}function ie(){if(te){var e=te,t=ne;if(ne=te=null,re(e),t)for(e=0;e<t.length;e++)re(t[e])}}function oe(e,t){return e(t)}function se(e,t,n,r){return e(t,n,r)}function le(){}var ue=oe,ce=!1,pe=!1;function de(){null===te&&null===ne||(le(),ie())}new Map;var fe=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,me=Object.prototype.hasOwnProperty,he={},ve={};function ge(e,t,n,r,a,i){this.acceptsBooleans=2===t||3===t||4===t,this.attributeName=r,this.attributeNamespace=a,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=i}var be={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach((function(e){be[e]=new ge(e,0,!1,e,null,!1)})),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEac
vendor: 10,062 bytes, line 2
2h((function(e){var t=e[0];be[t]=new ge(t,1,!1,e[1],null,!1)})),["contentEditable","draggable","spellCheck","value"].forEach((function(e){be[e]=new ge(e,2,!1,e.toLowerCase(),null,!1)})),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach((function(e){be[e]=new ge(e,2,!1,e,null,!1)})),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach((function(e){be[e]=new ge(e,3,!1,e.toLowerCase(),null,!1)})),["checked","multiple","muted","selected"].forEach((function(e){be[e]=new ge(e,3,!0,e,null,!1)})),["capture","download"].forEach((function(e){be[e]=new ge(e,4,!1,e,null,!1)})),["cols","rows","size","span"].forEach((function(e){be[e]=new ge(e,6,!1,e,null,!1)})),["rowSpan","start"].forEach((function(e){be[e]=new ge(e,5,!1,e.toLowerCase(),null,!1)}));var ye=/[\-:]([a-z])/g;function we(e){return e[1].toUpperCase()}function ke(e){switch(typeof e){case"boolean":case"number":case"object":case"string":case"undefined":return e;default:return""}}function xe(e,t,n,r){var a=be.hasOwnProperty(t)?be[t]:null;(null!==a?0===a.type:!r&&(2<t.length&&("o"===t[0]||"O"===t[0])&&("n"===t[1]||"N"===t[1])))||(function(e,t,n,r){if(null===t||"undefined"===typeof t||function(e,t,n,r){if(null!==n&&0===n.type)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return!r&&(null!==n?!n.acceptsBooleans:"data-"!==(e=e.toLowerCase().slice(0,5))&&"aria-"!==e);default:return!1}}(e,t,n,r))return!0;if(r)return!1;if(null!==n)switch(n.type){case 3:return!t;case 4:return!1===t;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}(t,n,a,r)&&(n=null),r||null===a?function(e){return!!me.call(ve,e)||!me.call(he,e)&&(fe.test(e)?ve[e]=!0:(he[e]=!0,!1))}(t)&&(null===n?e.removeAttribute(t):e.setAttribute(t,""+n)):a.mustUseProperty?e[a.propertyName]=null===n?3!==a.type&&"":n:(t=a.attributeName,r=a.attributeNamespace,null===n?e.removeAttribute(t):(n=3===(a=a.type)||4===a&&!0===n?"":""+n,r?e.setAttributeNS(r,t,n):e.setAttribute(t,n))))}function Ee(e){var t=e.type;return(e=e.nodeName)&&"input"===e.toLowerCase()&&("checkbox"===t||"radio"===t)}function Te(e){e._valueTracker||(e._valueTracker=function(e){var t=Ee(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&"undefined"!==typeof n&&"function"===typeof n.get&&"function"===typeof n.set){var a=n.get,i=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return a.call(this)},set:function(e){r=""+e,i.call(this,e)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(e){r=""+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}(e))}function Se(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=Ee(e)?e.checked?"true":"false":e.value),(e=r)!==n&&(t.setValue(e),!0)}function Ce(e,t){var n=t.checked;return a({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=n?n:e._wrapperState.initialChecked})}function qe(e,t){var n=null==t.defaultValue?"":t.defaultValue,r=null!=t.checked?t.checked:t.defaultChecked;n=ke(null!=t.value?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:"checkbox"===t.type||"radio"===t.type?null!=t.checked:null!=t.value}}function _e(e,t){null!=(t=t.checked)&&xe(e,"checked",t,!1)}function Pe(e,t){_e(e,t);var n=ke(t.value),r=t.type;if(null!=n)"number"===r?(0===n&&""===e.value||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if("submit"===r||"reset"===r)return void e.removeAttribute("value");t.hasOwnProperty("value")?je(e,t.type,n):t.hasOwnProperty("defaultValue")&&je(e,t.type,ke(t.defaultValue)),null==t.checked&&null!=t.defaultChecked&&(e.defaultChecked=!!t.defaultChecked)}function Ae(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!("submit"!==r&&"reset"!==r||void 0!==t.value&&null!==t.value))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}""!==(n=e.name)&&(e.name=""),e.defaultChecked=!e.defaultChecked,e.defaultChecked=!!e._wrapperState.initialChecked,""!==n&&(e.name=n)}function je(e,t,n){"number"===t&&e.ownerDocument.activeElement===e||(null==n?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}function Oe(e,t){return e=a({children:void 0},t),(t=function(e){var t="";return r.Children.forEach(e,(function(e){null!=e&&(t+=e)})),t}(t.children))&&(e.children=t),e}function Ie(e,t,n,r){if(e=e.options,t){t={};for(var a=0;a<n.length;a++)t["$"+n[a]]=!0;for(n=0;n<e.length;n++)a=t.hasOwnProperty("$"+e[n].value),e[n].selected!==a&&(e[n].selected=a),a&&r&&(e[n].defaultSelected=!0)}else{for(n=""+ke(n),t=null,a=0;a<e.length;a++){if(e[a].value===n)return e[a].selected=!0,void(r&&(e[a].defaultSelected=!0));null!==t||e[a].disabled||(t=e[a])}null!==t&&(t.selected=!0)}}function Me(e,t){if(null!=t.dangerouslySetInnerHTML)throw Error(o(91));return a({},t,{value:void 0,defaultValue:void 0,children:""+e._wrapperState.initialValue})}function Le(e,t){var n=t.value;if(null==n){if(n=t.defaultValue,null!=(t=t.children)){if(null!=n)throw Error(o(92));if(Array.isArray(t)){if(!(1>=t.length))throw Error(o(93));t=t[0]}n=t}null==n&&(n="")}e._wrapperState={initialValue:ke(n)}}function Ne(e,t){var n=ke(t.value),r=ke(t.defaultValue);null!=n&&((n=""+n)!==e.value&&(e.value=n),null==t.defaultValue&&e.defaultValue!==n&&(e.defaultValue=n)),null!=r&&(e.defaultValue=""+r)}function Fe(e){var t=e.textContent;t===e._wrapperState.initialValue&&""!==t&&null!==t&&(e.value=t)}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach((function(e){var t=e.replace(ye,we);be[t]=new ge(t,1,!1,e,null,!1)})),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach((function(e){var t=e.replace(ye,we);be[t]=new ge(t,1,!1,e,"http://www.w3.org/1999/xlink",!1)})),["xml:base","xml:lang","xml:space"].forEach((function(e){var t=e.replace(ye,we);be[t]=new ge(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1)})),["tabIndex","crossOrigin"].forEach((function(e){be[e]=new ge(e,1,!1,e.toLowerCase(),null,!1)})),be.xlinkHref=new ge("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0),["src","href","action","formAction"].forEach((function(e){be[e]=new ge(e,1,!1,e.toLowerCase(),null,!0)}));var De="http://www.w3.org/1999/xhtml",ze="http://www.w3.org/2000/svg";function Re(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function We(e,t){return null==e||"http://www.w3.org/1999/xhtml"===e?Re(t):"http://www.w3.org/2000/svg"===e&&"foreignObject"===t?"http://www.w3.org/1999/xhtml":e}var Ue,Be,Ve=(Be=function(e,t){if(e.namespaceURI!==ze||"innerHTML"in e)e.innerHTML=t;else{for((Ue=Ue||document.createElement("div")).innerHTML="<svg>"+t.valueOf().toString()+"</svg>",t=Ue.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}},"undefined"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(e,t,n,r){MSApp.execUnsafeLocalFunction((function(){return Be(e,t)}))}:Be);function He(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.nodeType)return void(n.nodeValue=t)}e.textContent=t}function Ge(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var $e={animationend:Ge("Animation","AnimationEnd"),animationiteration:Ge("Animation","AnimationIteration"),animationstart:Ge("Animation","AnimationStart"),transitionend:Ge("Transition","TransitionEnd")},Ke={},Ye={};function Qe(e){if(Ke[e])return Ke[e];if(!$e[e])return e;var t,n=$e[e];for(t in n)if(n.hasOwnProperty(t)&&t in Ye)return Ke[e]=n[t];return e}Z&&(Ye=document.createElement("div").style,"AnimationEvent"in window||(delete $e.animationend.animation,delete $e.animationiteration.animation,delete $e.animationstart.animation),"TransitionEvent"in window||delete $e.transitionend.transition);var Je=Qe("animationend"),Xe=Qe("animationiteration"),Ze=Qe("animationstart"),et=Qe("transitionend"),tt="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting".split(" ");function nt(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do{0!==(1026&(t=e).effectTag)&&(n=t.return),e=t.return}while(e)}return 3===t.tag?n:null}function rt(e){if(13===e.tag){var t=e.memoizedState;if(null===t&&(null!==(e=e.alternate)&&(t=e.memoizedState)),null!==t)return t.dehydrated}return null}function at(e){if(nt(e)!==e)throw Error(o(188))}function it(e){if(e=function(e){var t=e.alternate;if(!t){if(null===(t=nt(e)))throw Error(o(188));return t!==e?null:e}for(var n=e,r=t;;){var a=n.return;if(null===a)break;var i=a.alternate;
vendor: 1,846 bytes, line 2
2if(null===i){if(null!==(r=a.return)){n=r;continue}break}if(a.child===i.child){for(i=a.child;i;){if(i===n)return at(a),e;if(i===r)return at(a),t;i=i.sibling}throw Error(o(188))}if(n.return!==r.return)n=a,r=i;else{for(var s=!1,l=a.child;l;){if(l===n){s=!0,n=a,r=i;break}if(l===r){s=!0,r=a,n=i;break}l=l.sibling}if(!s){for(l=i.child;l;){if(l===n){s=!0,n=i,r=a;break}if(l===r){s=!0,r=i,n=a;break}l=l.sibling}if(!s)throw Error(o(189))}}if(n.alternate!==r)throw Error(o(190))}if(3!==n.tag)throw Error(o(188));return n.stateNode.current===n?e:t}(e),!e)return null;for(var t=e;;){if(5===t.tag||6===t.tag)return t;if(t.child)t.child.return=t,t=t.child;else{if(t===e)break;for(;!t.sibling;){if(!t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}}return null}var ot,st,lt,ut=!1,ct=[],pt=null,dt=null,ft=null,mt=new Map,ht=new Map,vt=[],gt="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput close cancel copy cut paste click change contextmenu reset submit".split(" "),bt="focus blur dragenter dragleave mouseover mouseout pointerover pointerout gotpointercapture lostpointercapture".split(" ");function yt(e,t,n,r){return{blockedOn:e,topLevelType:t,eventSystemFlags:32|n,nativeEvent:r}}function wt(e,t){switch(e){case"focus":case"blur":pt=null;break;case"dragenter":case"dragleave":dt=null;break;case"mouseover":case"mouseout":ft=null;break;case"pointerover":case"pointerout":mt.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":ht.delete(t.pointerId)}}function kt(e,t,n,r,a){return null===e||e.nativeEvent!==a?(e=yt(t,n,r,a),null!==t&&(null!==(t=fr(t))&&st(t)),e):(e.eventSystemFlags|=r,e)}function xt(e){var t=dr(e.target);if(null!==t){var n=nt(t);
vendor: 5,650 bytes, line 2
2if(null!==n)if(13===(t=n.tag)){if(null!==(t=rt(n)))return e.blockedOn=t,void i.unstable_runWithPriority(e.priority,(function(){lt(n)}))}else if(3===t&&n.stateNode.hydrate)return void(e.blockedOn=3===n.tag?n.stateNode.containerInfo:null)}e.blockedOn=null}function Et(e){if(null!==e.blockedOn)return!1;var t=On(e.topLevelType,e.eventSystemFlags,e.nativeEvent);if(null!==t){var n=fr(t);return null!==n&&st(n),e.blockedOn=t,!1}return!0}function Tt(e,t,n){Et(e)&&n.delete(t)}function St(){for(ut=!1;0<ct.length;){var e=ct[0];if(null!==e.blockedOn){null!==(e=fr(e.blockedOn))&&ot(e);break}var t=On(e.topLevelType,e.eventSystemFlags,e.nativeEvent);null!==t?e.blockedOn=t:ct.shift()}null!==pt&&Et(pt)&&(pt=null),null!==dt&&Et(dt)&&(dt=null),null!==ft&&Et(ft)&&(ft=null),mt.forEach(Tt),ht.forEach(Tt)}function Ct(e,t){e.blockedOn===t&&(e.blockedOn=null,ut||(ut=!0,i.unstable_scheduleCallback(i.unstable_NormalPriority,St)))}function qt(e){function t(t){return Ct(t,e)}if(0<ct.length){Ct(ct[0],e);for(var n=1;n<ct.length;n++){var r=ct[n];r.blockedOn===e&&(r.blockedOn=null)}}for(null!==pt&&Ct(pt,e),null!==dt&&Ct(dt,e),null!==ft&&Ct(ft,e),mt.forEach(t),ht.forEach(t),n=0;n<vt.length;n++)(r=vt[n]).blockedOn===e&&(r.blockedOn=null);for(;0<vt.length&&null===(n=vt[0]).blockedOn;)xt(n),null===n.blockedOn&&vt.shift()}function _t(e){return(e=e.target||e.srcElement||window).correspondingUseElement&&(e=e.correspondingUseElement),3===e.nodeType?e.parentNode:e}function Pt(e){do{e=e.return}while(e&&5!==e.tag);return e||null}function At(e,t,n){(t=O(e,n.dispatchConfig.phasedRegistrationNames[t]))&&(n._dispatchListeners=C(n._dispatchListeners,t),n._dispatchInstances=C(n._dispatchInstances,e))}function jt(e){if(e&&e.dispatchConfig.phasedRegistrationNames){for(var t=e._targetInst,n=[];t;)n.push(t),t=Pt(t);for(t=n.length;0<t--;)At(n[t],"captured",e);for(t=0;t<n.length;t++)At(n[t],"bubbled",e)}}function Ot(e,t,n){e&&n&&n.dispatchConfig.registrationName&&(t=O(e,n.dispatchConfig.registrationName))&&(n._dispatchListeners=C(n._dispatchListeners,t),n._dispatchInstances=C(n._dispatchInstances,e))}function It(e){e&&e.dispatchConfig.registrationName&&Ot(e._targetInst,null,e)}function Mt(e){q(e,jt)}function Lt(){return!0}function Nt(){return!1}function Ft(e,t,n,r){for(var a in this.dispatchConfig=e,this._targetInst=t,this.nativeEvent=n,e=this.constructor.Interface)e.hasOwnProperty(a)&&((t=e[a])?this[a]=t(n):"target"===a?this.target=r:this[a]=n[a]);return this.isDefaultPrevented=(null!=n.defaultPrevented?n.defaultPrevented:!1===n.returnValue)?Lt:Nt,this.isPropagationStopped=Nt,this}function Dt(e,t,n,r){if(this.eventPool.length){var a=this.eventPool.pop();return this.call(a,e,t,n,r),a}return new this(e,t,n,r)}function zt(e){if(!(e instanceof this))throw Error(o(279));e.destructor(),10>this.eventPool.length&&this.eventPool.push(e)}function Rt(e){e.eventPool=[],e.getPooled=Dt,e.release=zt}a(Ft.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!==typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=Lt)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!==typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=Lt)},persist:function(){this.isPersistent=Lt},isPersistent:Nt,destructor:function(){var e,t=this.constructor.Interface;for(e in t)this[e]=null;this.nativeEvent=this._targetInst=this.dispatchConfig=null,this.isPropagationStopped=this.isDefaultPrevented=Nt,this._dispatchInstances=this._dispatchListeners=null}}),Ft.Interface={type:null,target:null,currentTarget:function(){return null},eventPhase:null,bubbles:null,cancelable:null,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:null,isTrusted:null},Ft.extend=function(e){function t(){}function n(){return r.apply(this,arguments)}var r=this;t.prototype=r.prototype;var i=new t;return a(i,n.prototype),n.prototype=i,n.prototype.constructor=n,n.Interface=a({},r.Interface,e),n.extend=r.extend,Rt(n),n},Rt(Ft);var Wt=Ft.extend({animationName:null,elapsedTime:null,pseudoElement:null}),Ut=Ft.extend({clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),Bt=Ft.extend({view:null,detail:null}),Vt=Bt.extend({relatedTarget:null});function Ht(e){var t=e.keyCode;return"charCode"in e?0===(e=e.charCode)&&13===t&&(e=13):e=t,10===e&&(e=13),32<=e||13===e?e:0}var Gt={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},$t={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},Kt={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function Yt(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):!!(e=Kt[e])&&!!t[e]}function Qt(){return Yt}for(var Jt=Bt.extend({key:function(e){if(e.key){var t=Gt[e.key]||e.key;if("Unidentified"!==t)return t}return"keypress"===e.type?13===(e=Ht(e))?"Enter":String.fromCharCode(e):"keydown"===e.type||"keyup"===e.type?$t[e.keyCode]||"Unidentified":""},location:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,repeat:null,locale:null,getModifierState:Qt,charCode:function(e){return"keypress"===e.type?Ht(e):0}
2,keyCode:function(e){return"keydown"===e.type||"keyup"===e.type?e.keyCode:0},which:function(e){return"keypress"===e.type?Ht(e):"keydown"===e.type||"keyup"===e.type?e.keyCode:0}}),Xt=0,Zt=0,en=!1,tn=!1,nn=Bt.extend({screenX:null,screenY:null,clientX:null,clientY:null,pageX:null,pageY:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,getModifierState:Qt,button:null,buttons:null,relatedTarget:function(e){return e.relatedTarget||(e.fromElement===e.srcElement?e.toElement:e.fromElement)},movementX:function(e){if("movementX"in e)return e.movementX;var t=Xt;return Xt=e.screenX,en?"mousemove"===e.type?e.screenX-t:0:(en=!0,0)},movementY:function(e){if("movementY"in e)return e.movementY;var t=Zt;return Zt=e.screenY,tn?"mousemove"===e.type?e.screenY-t:0:(tn=!0,0)}}),rn=nn.extend({pointerId:null,width:null,height:null,pressure:null,tangentialPressure:null,tiltX:null,tiltY:null,twist:null,pointerType:null,isPrimary:null}),an=nn.extend({dataTransfer:null}),on=Bt.extend({touches:null,targetTouches:null,changedTouches:null,altKey:null,metaKey:null,ctrlKey:null,shiftKey:null,getModifierState:Qt}),sn=Ft.extend({propertyName:null,elapsedTime:null,pseudoElement:null}),ln=nn.extend({deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:null,deltaMode:null}),un=[["blur","blur",0],["cancel","cancel",0],["click","click",0],["close","close",0],["contextmenu","contextMenu",0],["copy","copy",0],["cut","cut",0],["auxclick","auxClick",0],["dblclick","doubleClick",0],["dragend","dragEnd",0],["dragstart","dragStart",0],["drop","drop",0],["focus","focus",0],["input","input",0],["invalid","invalid",0],["keydown","keyDown",0],["keypress","keyPress",0],["keyup","keyUp",0],["mousedown","mouseDown",0],["mouseup","mouseUp",0],["paste","paste",0],["pause","pause",0],["play","play",0],["pointercancel","pointerCancel",0],["pointerdown","pointerDown",0],["pointerup","pointerUp",0],["ratechange","rateChange",0],["reset","reset",0],["seeked","seeked",0],["submit","submit",0],["touchcancel","touchCancel",0],["touchend","touchEnd",0],["touchstart","touchStart",0],["volumechange","volumeChange",0],["drag","drag",1],["dragenter","dragEnter",1],["dragexit","dragExit",1],["dragleave","dragLeave",1],["dragover","dragOver",1],["mousemove","mouseMove",1],["mouseout","mouseOut",1],["mouseover","mouseOver",1],["pointermove","pointerMove",1],["pointerout","pointerOut",1],["pointerover","pointerOver",1],["scroll","scroll",1],["toggle","toggle",1],["touchmove","touchMove",1],["wheel","wheel",1],["abort","abort",2],[Je,"animationEnd",2],[Xe,"animationIteration",2],[Ze,"animationStart",2],["canplay","canPlay",2],["canplaythrough","canPlayThrough",2],["durationchange","durationChange",2],["emptied","emptied",2],["encrypted","encrypted",2],["ended","ended",2],["error","error",2],["gotpointercapture","gotPointerCapture",2],["load","load",2],["loadeddata","loadedData",2],["loadedmetadata","loadedMetadata",2],["loadstart","loadStart",2],["lostpointercapture","lostPointerCapture",2],["playing","playing",2],["progress","progress",2],["seeking","seeking",2],["stalled","stalled",2],["suspend","suspend",2],["timeupdate","timeUpdate",2],[et,"transitionEnd",2],["waiting","waiting",2]],cn={},pn={},dn=0;dn<un.length;dn++){var fn=un[dn],mn=fn[0],hn=fn[1],vn=fn[2],gn="on"+(hn[0].toUpperCase()+hn.slice(1)),bn={phasedRegistrationNames:{bubbled:gn,captured:gn+"Capture"},dependencies:[mn],eventPriority:vn};cn[hn]=bn,pn[mn]=bn}var yn={eventTypes:cn,getEventPriority:function(e){return void 0!==(e=pn[e])?e.eventPriority:2},extractEvents:function(e,t,n,r){var a=pn[e];if(!a)return null;switch(e){case"keypress":if(0===Ht(n))return null;case"keydown":case"keyup":e=Jt;break;case"blur":case"focus":e=Vt;break;case"click":if(2===n.button)return null;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":e=nn;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":e=an;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":e=on;break;case Je:case Xe:case Ze:e=Wt;break;case et:e=sn;break;case"scroll":e=Bt;break;case"wheel":e=ln;break;case"copy":case"cut":case"paste":e=Ut;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":e=rn;break;default:e=Ft}return Mt(t=e.getPooled(a,t,n,r)),t}},wn=i.unstable_UserBlockingPriority,kn=i.unstable_runWithPriority,xn=yn.getEventPriority,En=[];function Tn(e){var t=e.targetInst,n=t;do{if(!n){e.ancestors.push(n);break}var r=n;if(3===r.tag)r=r.stateNode.containerInfo;else{for(;r.return;)r=r.return;r=3!==r.tag?null:r.stateNode.containerInfo}if(!r)break;5!==(t=n.tag)&&6!==t||e.ancestors.push(n),n=dr(r)}while(n);for(n=0;n<e.ancestors.length;n++){t=e.ancestors[n];var a=_t(e.nativeEvent);r=e.topLevelType;for(var i=e.nativeEvent,o=e.eventSystemFlags,s=null,l=0;l<p.length;l++){var u=p[l];u&&(u=u.extractEvents(r,t,i,a,o))&&(s=C(s,u))}A(s)}}var Sn=!0;function Cn(e,t){qn(t,e,!1)}
2function qn(e,t,n){switch(xn(t)){case 0:var r=_n.bind(null,t,1);break;case 1:r=Pn.bind(null,t,1);break;default:r=jn.bind(null,t,1)}n?e.addEventListener(t,r,!0):e.addEventListener(t,r,!1)}function _n(e,t,n){ce||le();var r=jn,a=ce;ce=!0;try{se(r,e,t,n)}finally{(ce=a)||de()}}function Pn(e,t,n){kn(wn,jn.bind(null,e,t,n))}function An(e,t,n,r){if(En.length){var a=En.pop();a.topLevelType=e,a.eventSystemFlags=t,a.nativeEvent=n,a.targetInst=r,e=a}else e={topLevelType:e,eventSystemFlags:t,nativeEvent:n,targetInst:r,ancestors:[]};try{if(t=Tn,n=e,pe)t(n,void 0);else{pe=!0;try{ue(t,n,void 0)}finally{pe=!1,de()}}}finally{e.topLevelType=null,e.nativeEvent=null,e.targetInst=null,e.ancestors.length=0,En.length<10&&En.push(e)}}function jn(e,t,n){if(Sn)if(0<ct.length&&-1<gt.indexOf(e))e=yt(null,e,t,n),ct.push(e);else{var r=On(e,t,n);null===r?wt(e,n):-1<gt.indexOf(e)?(e=yt(r,e,t,n),ct.push(e)):function(e,t,n,r){switch(t){case"focus":return pt=kt(pt,e,t,n,r),!0;case"dragenter":return dt=kt(dt,e,t,n,r),!0;case"mouseover":return ft=kt(ft,e,t,n,r),!0;case"pointerover":var a=r.pointerId;return mt.set(a,kt(mt.get(a)||null,e,t,n,r)),!0;case"gotpointercapture":return a=r.pointerId,ht.set(a,kt(ht.get(a)||null,e,t,n,r)),!0}return!1}(r,e,t,n)||(wt(e,n),An(e,t,n,null))}}function On(e,t,n){var r=_t(n);if(null!==(r=dr(r))){var a=nt(r);if(null===a)r=null;else{var i=a.tag;if(13===i){if(null!==(r=rt(a)))return r;r=null}else if(3===i){if(a.stateNode.hydrate)return 3===a.tag?a.stateNode.containerInfo:null;r=null}else a!==r&&(r=null)}}return An(e,t,n,r),null}function In(e){if(!Z)return!1;var t=(e="on"+e)in document;return t||((t=document.createElement("div")).setAttribute(e,"return;"),t="function"===typeof t[e]),t}var Mn=new("function"===typeof WeakMap?WeakMap:Map);function Ln(e){var t=Mn.get(e);return void 0===t&&(t=new Set,Mn.set(e,t)),t}function Nn(e,t,n){if(!n.has(e)){switch(e){case"scroll":qn(t,"scroll",!0);break;case"focus":case"blur":qn(t,"focus",!0),qn(t,"blur",!0),n.add("blur"),n.add("focus");break;case"cancel":case"close":In(e)&&qn(t,e,!0);break;case"invalid":case"submit":case"reset":break;default:-1===tt.indexOf(e)&&Cn(e,t)}n.add(e)}}var Fn={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},Dn=["Webkit","ms","Moz","O"];function zn(e,t,n){return null==t||"boolean"===typeof t||""===t?"":n||"number"!==typeof t||0===t||Fn.hasOwnProperty(e)&&Fn[e]?(""+t).trim():t+"px"}function Rn(e,t){for(var n in e=e.style,t)if(t.hasOwnProperty(n)){var r=0===n.indexOf("--"),a=zn(n,t[n],r);"float"===n&&(n="cssFloat"),r?e.setProperty(n,a):e[n]=a}}Object.keys(Fn).forEach((function(e){Dn.forEach((function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),Fn[t]=Fn[e]}))}));var Wn=a({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function Un(e,t){if(t){if(Wn[e]&&(null!=t.children||null!=t.dangerouslySetInnerHTML))throw Error(o(137,e,""));if(null!=t.dangerouslySetInnerHTML){if(null!=t.children)throw Error(o(60));if("object"!==typeof t.dangerouslySetInnerHTML||!("__html"in t.dangerouslySetInnerHTML))throw Error(o(61))}if(null!=t.style&&"object"!==typeof t.style)throw Error(o(62,""))}}function Bn(e,t){if(-1===e.indexOf("-"))return"string"===typeof t.is;switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}function Vn(e,t){var n=Ln(e=9===e.nodeType||11===e.nodeType?e:e.ownerDocument);t=m[t];for(var r=0;r<t.length;r++)Nn(t[r],e,n)}function Hn(){}function Gn(e){if("undefined"===typeof(e=e||("undefined"!==typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(t){return e.body}}function $n(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function Kn(e,t){var n,r=$n(e);for(e=0;r;){if(3===r.nodeType){if(n=e+r.textContent.length,e<=t&&n>=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=$n(r)}}function Yn(e,t){return!(!e||!t)&&(e===t||(!e||3!==e.nodeType)&&(t&&3===t.nodeType?Yn(e,t.parentNode):"contains"in e?e.contains(t):!!e.compareDocumentPosition&&!!(16&e.compareDocumentPosition(t))))}function Qn(){for(var e=window,t=Gn();t instanceof e.HTMLIFrameElement;){try{var n="string"===typeof t.contentWindow.location.href}catch(r){n=!1}if(!n)break;t=Gn((e=t.contentWindow).document)}return t}function Jn(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}var Xn="$?",Zn="$!",er=null,tr=null;function nr(e,t){switch(e){case"button":case"input":case"select":case"textarea":return!!t.autoF
2ocus}return!1}function rr(e,t){return"textarea"===e||"option"===e||"noscript"===e||"string"===typeof t.children||"number"===typeof t.children||"object"===typeof t.dangerouslySetInnerHTML&&null!==t.dangerouslySetInnerHTML&&null!=t.dangerouslySetInnerHTML.__html}var ar="function"===typeof setTimeout?setTimeout:void 0,ir="function"===typeof clearTimeout?clearTimeout:void 0;function or(e){for(;null!=e;e=e.nextSibling){var t=e.nodeType;if(1===t||3===t)break}return e}function sr(e){e=e.previousSibling;for(var t=0;e;){if(8===e.nodeType){var n=e.data;if("$"===n||n===Zn||n===Xn){if(0===t)return e;t--}else"/$"===n&&t++}e=e.previousSibling}return null}var lr=Math.random().toString(36).slice(2),ur="__reactInternalInstance$"+lr,cr="__reactEventHandlers$"+lr,pr="__reactContainere$"+lr;function dr(e){var t=e[ur];if(t)return t;for(var n=e.parentNode;n;){if(t=n[pr]||n[ur]){if(n=t.alternate,null!==t.child||null!==n&&null!==n.child)for(e=sr(e);null!==e;){if(n=e[ur])return n;e=sr(e)}return t}n=(e=n).parentNode}return null}function fr(e){return!(e=e[ur]||e[pr])||5!==e.tag&&6!==e.tag&&13!==e.tag&&3!==e.tag?null:e}function mr(e){if(5===e.tag||6===e.tag)return e.stateNode;throw Error(o(33))}function hr(e){return e[cr]||null}var vr=null,gr=null,br=null;function yr(){if(br)return br;var e,t,n=gr,r=n.length,a="value"in vr?vr.value:vr.textContent,i=a.length;for(e=0;e<r&&n[e]===a[e];e++);var o=r-e;for(t=1;t<=o&&n[r-t]===a[i-t];t++);return br=a.slice(e,1<t?1-t:void 0)}var wr=Ft.extend({data:null}),kr=Ft.extend({data:null}),xr=[9,13,27,32],Er=Z&&"CompositionEvent"in window,Tr=null;Z&&"documentMode"in document&&(Tr=document.documentMode);var Sr=Z&&"TextEvent"in window&&!Tr,Cr=Z&&(!Er||Tr&&8<Tr&&11>
vendor: 4,119 bytes, line 2
2=Tr),qr=String.fromCharCode(32),_r={beforeInput:{phasedRegistrationNames:{bubbled:"onBeforeInput",captured:"onBeforeInputCapture"},dependencies:["compositionend","keypress","textInput","paste"]},compositionEnd:{phasedRegistrationNames:{bubbled:"onCompositionEnd",captured:"onCompositionEndCapture"},dependencies:"blur compositionend keydown keypress keyup mousedown".split(" ")},compositionStart:{phasedRegistrationNames:{bubbled:"onCompositionStart",captured:"onCompositionStartCapture"},dependencies:"blur compositionstart keydown keypress keyup mousedown".split(" ")},compositionUpdate:{phasedRegistrationNames:{bubbled:"onCompositionUpdate",captured:"onCompositionUpdateCapture"},dependencies:"blur compositionupdate keydown keypress keyup mousedown".split(" ")}},Pr=!1;function Ar(e,t){switch(e){case"keyup":return-1!==xr.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"blur":return!0;default:return!1}}function jr(e){return"object"===typeof(e=e.detail)&&"data"in e?e.data:null}var Or=!1;var Ir={eventTypes:_r,extractEvents:function(e,t,n,r){var a;if(Er)e:{switch(e){case"compositionstart":var i=_r.compositionStart;break e;case"compositionend":i=_r.compositionEnd;break e;case"compositionupdate":i=_r.compositionUpdate;break e}i=void 0}else Or?Ar(e,n)&&(i=_r.compositionEnd):"keydown"===e&&229===n.keyCode&&(i=_r.compositionStart);return i?(Cr&&"ko"!==n.locale&&(Or||i!==_r.compositionStart?i===_r.compositionEnd&&Or&&(a=yr()):(gr="value"in(vr=r)?vr.value:vr.textContent,Or=!0)),i=wr.getPooled(i,t,n,r),a?i.data=a:null!==(a=jr(n))&&(i.data=a),Mt(i),a=i):a=null,(e=Sr?function(e,t){switch(e){case"compositionend":return jr(t);case"keypress":return 32!==t.which?null:(Pr=!0,qr);case"textInput":return(e=t.data)===qr&&Pr?null:e;default:return null}}(e,n):function(e,t){if(Or)return"compositionend"===e||!Er&&Ar(e,t)?(e=yr(),br=gr=vr=null,Or=!1,e):null;switch(e){case"paste":default:return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case"compositionend":return Cr&&"ko"!==t.locale?null:t.data}}(e,n))?((t=kr.getPooled(_r.beforeInput,t,n,r)).data=e,Mt(t)):t=null,null===a?t:null===t?a:[a,t]}},Mr={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function Lr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!Mr[e.type]:"textarea"===t}var Nr={change:{phasedRegistrationNames:{bubbled:"onChange",captured:"onChangeCapture"},dependencies:"blur change click focus input keydown keyup selectionchange".split(" ")}};function Fr(e,t,n){return(e=Ft.getPooled(Nr.change,e,t,n)).type="change",ae(n),Mt(e),e}var Dr=null,zr=null;function Rr(e){A(e)}function Wr(e){if(Se(mr(e)))return e}function Ur(e,t){if("change"===e)return t}var Br=!1;function Vr(){Dr&&(Dr.detachEvent("onpropertychange",Hr),zr=Dr=null)}function Hr(e){if("value"===e.propertyName&&Wr(zr))if(e=Fr(zr,e,_t(e)),ce)A(e);else{ce=!0;try{oe(Rr,e)}finally{ce=!1,de()}}}function Gr(e,t,n){"focus"===e?(Vr(),zr=n,(Dr=t).attachEvent("onpropertychange",Hr)):"blur"===e&&Vr()}function $r(e){if("selectionchange"===e||"keyup"===e||"keydown"===e)return Wr(zr)}function Kr(e,t){if("click"===e)return Wr(t)}function Yr(e,t){if("input"===e||"change"===e)return Wr(t)}Z&&(Br=In("input")&&(!document.documentMode||9<document.documentMode));var Qr,Jr={eventTypes:Nr,_isInputEventSupported:Br,extractEvents:function(e,t,n,r){var a=t?mr(t):window,i=a.nodeName&&a.nodeName.toLowerCase();if("select"===i||"input"===i&&"file"===a.type)var o=Ur;else if(Lr(a))if(Br)o=Yr;else{o=$r;var s=Gr}else(i=a.nodeName)&&"input"===i.toLowerCase()&&("checkbox"===a.type||"radio"===a.type)&&(o=Kr);if(o&&(o=o(e,t)))return Fr(o,n,r);s&&s(e,a,t),"blur"===e&&(e=a._wrapperState)&&e.controlled&&"number"===a.type&&je(a,"number",a.value)}},Xr={mouseEnter:{registrationName:"onMouseEnter",dependencies:["mouseout","mouseover"]},mouseLeave:{registrationName:"onMouseLeave",dependencies:["mouseout","mouseover"]}
2,pointerEnter:{registrationName:"onPointerEnter",dependencies:["pointerout","pointerover"]},pointerLeave:{registrationName:"onPointerLeave",dependencies:["pointerout","pointerover"]}},Zr={eventTypes:Xr,extractEvents:function(e,t,n,r,a){var i="mouseover"===e||"pointerover"===e,o="mouseout"===e||"pointerout"===e;if(i&&0===(32&a)&&(n.relatedTarget||n.fromElement)||!o&&!i)return null;if(a=r.window===r?r:(a=r.ownerDocument)?a.defaultView||a.parentWindow:window,o?(o=t,null!==(t=(t=n.relatedTarget||n.toElement)?dr(t):null)&&(t!==(i=nt(t))||5!==t.tag&&6!==t.tag)&&(t=null)):o=null,o===t)return null;if("mouseout"===e||"mouseover"===e)var s=nn,l=Xr.mouseLeave,u=Xr.mouseEnter,c="mouse";else"pointerout"!==e&&"pointerover"!==e||(s=rn,l=Xr.pointerLeave,u=Xr.pointerEnter,c="pointer");if(e=null==o?a:mr(o),a=null==t?a:mr(t),(l=s.getPooled(l,o,n,r)).type=c+"leave",l.target=e,l.relatedTarget=a,(r=s.getPooled(u,t,n,r)).type=c+"enter",r.target=a,r.relatedTarget=e,c=t,(s=o)&&c)e:{for(e=c,o=0,t=u=s;t;t=Pt(t))o++;for(t=0,a=e;a;a=Pt(a))t++;for(;0<o-t;)u=Pt(u),o--;for(;0<t-o;)e=Pt(e),t--;for(;o--;){if(u===e||u===e.alternate)break e;u=Pt(u),e=Pt(e)}u=null}else u=null;for(e=u,u=[];s&&s!==e&&(null===(o=s.alternate)||o!==e);)u.push(s),s=Pt(s);for(s=[];c&&c!==e&&(null===(o=c.alternate)||o!==e);)s.push(c),c=Pt(c);for(c=0;c<u.length;c++)Ot(u[c],"bubbled",l);for(c=s.length;0<c--;)Ot(s[c],"captured",r);return n===Qr?(Qr=null,[l]):(Qr=n,[l,r])}};var ea="function"===typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e===1/t)||e!==e&&t!==t},ta=Object.prototype.hasOwnProperty;function na(e,t){if(ea(e,t))return!0;if("object"!==typeof e||null===e||"object"!==typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(r=0;r<n.length;r++)if(!ta.call(t,n[r])||!ea(e[n[r]],t[n[r]]))return!1;return!0}var ra=Z&&"documentMode"in document&&11>=document.documentMode,aa={select:{phasedRegistrationNames:{bubbled:"onSelect",captured:"onSelectCapture"},dependencies:"blur contextmenu dragend focus keydown keyup mousedown mouseup selectionchange".split(" ")}},ia=null,oa=null,sa=null,la=!1;function ua(e,t){var n=t.window===t?t.document:9===t.nodeType?t:t.ownerDocument;return la||null==ia||ia!==Gn(n)?null:("selectionStart"in(n=ia)&&Jn(n)?n={start:n.selectionStart,end:n.selectionEnd}:n={anchorNode:(n=(n.ownerDocument&&n.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:n.anchorOffset,focusNode:n.focusNode,focusOffset:n.focusOffset},sa&&na(sa,n)?null:(sa=n,(e=Ft.getPooled(aa.select,oa,e,t)).type="select",e.target=ia,Mt(e),e))}var ca={eventTypes:aa,extractEvents:function(e,t,n,r){var a,i=r.window===r?r.document:9===r.nodeType?r:r.ownerDocument;if(!(a=!i)){e:{i=Ln(i),a=m.onSelect;for(var o=0;o<a.length;o++)if(!i.has(a[o])){i=!1;break e}i=!0}a=!i}if(a)return null;switch(i=t?mr(t):window,e){case"focus":(Lr(i)||"true"===i.contentEditable)&&(ia=i,oa=t,sa=null);break;case"blur":sa=oa=ia=null;break;case"mousedown":la=!0;break;case"contextmenu":case"mouseup":case"dragend":return la=!1,ua(n,r);case"selectionchange":if(ra)break;case"keydown":case"keyup":return ua(n,r)}return null}};j.injectEventPluginOrder("ResponderEventPlugin SimpleEventPlugin EnterLeaveEventPlugin ChangeEventPlugin SelectEventPlugin BeforeInputEventPlugin".split(" ")),x=hr,E=fr,T=mr,j.injectEventPluginsByName({SimpleEventPlugin:yn,EnterLeaveEventPlugin:Zr,ChangeEventPlugin:Jr,SelectEventPlugin:ca,BeforeInputEventPlugin:Ir}),new Set;var pa=[],da=-1;function fa(e){0>da||(e.current=pa[da],pa[da]=null,da--)}function ma(e,t){da++,pa[da]=e.current,e.current=t}var ha={},va={current:ha},ga={current:!1},ba=ha;function ya(e,t){var n=e.type.contextTypes;if(!n)return ha;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var a,i={};for(a in n)i[a]=t[a];return r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=i),i}function wa(e){return null!==(e=e.childContextTypes)&&void 0!==e}function ka(e){fa(ga),fa(va)}function xa(e){fa(ga),fa(va)}function Ea(e,t,n){if(va.current!==ha)throw Error(o(168));ma(va,t),ma(ga,n)}function Ta(e,t,n){var r=e.stateNode;if(e=t.childContextTypes,"function"!==typeof r.getChildContext)return n;for(var i in r=r.getChildContext())if(!(i in e))throw Error(o(108,J(t)||"Unknown",i));return a({},n,{},r)}function Sa(e){var t=e.stateNode;return t=t&&t.__reactInternalMemoizedMergedChildContext||ha,ba=va.current,ma(va,t),ma(ga,ga.current),!0}function Ca(e,t,n){var r=e.stateNode;if(!r)throw Error(o(169));n?(t=Ta(e,t,ba),r.__reactInternalMemoizedMergedChildContext=t,fa(ga),fa(va),ma(va,t)):fa(ga),ma(ga,n)}var qa=i.unstable_runWithPriority,_a=i.unstable_scheduleCallback,Pa=i.unstable_cancelCallback,Aa=i.unstable_shouldYield,ja=i.unstable_requestPaint,Oa=i.unstable_now,Ia=i.unstable_getCurrentPriorityLevel,Ma=i.unstable_ImmediatePriority,La=i.unstable_UserBlockingPriority,Na=i.unstable_NormalPriority,Fa=i.unstable_LowPriority,Da=i.unstable_IdlePriority,za={},Ra=void 0!==ja?ja:function(){},Wa=null,Ua=null,Ba=!1,Va=Oa(),Ha=1e4>Va?Oa:function(){return Oa()-Va};function Ga(){switch(Ia()){case Ma:return 99;case La:return 98;case Na:return 97;case Fa:return 96;case Da:return 95;default:throw Error(o(332))}}function $a(e){switch(e){case 99:return Ma;case 98:return La;case 97:return Na;case 96:return Fa;case 95:return Da;default:throw Error(o(332))}}function Ka(e,t){return e=$a(e),qa(e,t)}function Ya(e,t,n){return e=$a(e),_a(e,t,n)}function Qa(e){return null===Wa?(Wa=[e],Ua=_a(Ma,Xa)):Wa.push(e),za}function Ja(){if(null!==Ua){var e=Ua;Ua=null,Pa(e)}Xa()}function Xa(){if(!Ba&&null!==Wa){Ba=!0;var e=0;try{var t=Wa;Ka(99,(function(){for(;e<t.length;e++){var n=t[e];do{n=n(!0)}while(null!==n)}})),Wa=null}catch(n){throw null!==Wa&&(Wa=Wa.slice(e+1)),_a(Ma,Ja),n}finally{Ba=!1}}}var Za=3;
2function ei(e,t,n){return 1073741821-(1+((1073741821-e+t/10)/(n/=10)|0))*n}function ti(e,t){if(e&&e.defaultProps)for(var n in t=a({},t),e=e.defaultProps)void 0===t[n]&&(t[n]=e[n]);return t}var ni={current:null},ri=null,ai=null,ii=null;function oi(){ii=ai=ri=null}function si(e,t){var n=e.type._context;ma(ni,n._currentValue),n._currentValue=t}function li(e){var t=ni.current;fa(ni),e.type._context._currentValue=t}function ui(e,t){for(;null!==e;){var n=e.alternate;if(e.childExpirationTime<t)e.childExpirationTime=t,null!==n&&n.childExpirationTime<t&&(n.childExpirationTime=t);else{if(!(null!==n&&n.childExpirationTime<t))break;n.childExpirationTime=t}e=e.return}}function ci(e,t){ri=e,ii=ai=null,null!==(e=e.dependencies)&&null!==e.firstContext&&(e.expirationTime>=t&&(Ho=!0),e.firstContext=null)}function pi(e,t){if(ii!==e&&!1!==t&&0!==t)if("number"===typeof t&&1073741823!==t||(ii=e,t=1073741823),t={context:e,observedBits:t,next:null},null===ai){if(null===ri)throw Error(o(308));ai=t,ri.dependencies={expirationTime:0,firstContext:t,responders:null}}else ai=ai.next=t;return e._currentValue}var di=!1;function fi(e){return{baseState:e,firstUpdate:null,lastUpdate:null,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}function mi(e){return{baseState:e.baseState,firstUpdate:e.firstUpdate,lastUpdate:e.lastUpdate,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}function hi(e,t){return{expirationTime:e,suspenseConfig:t,tag:0,payload:null,callback:null,next:null,nextEffect:null}}function vi(e,t){null===e.lastUpdate?e.firstUpdate=e.lastUpdate=t:(e.lastUpdate.next=t,e.lastUpdate=t)}function gi(e,t){var n=e.alternate;if(null===n){var r=e.updateQueue,a=null;null===r&&(r=e.updateQueue=fi(e.memoizedState))}else r=e.updateQueue,a=n.updateQueue,null===r?null===a?(r=e.updateQueue=fi(e.memoizedState),a=n.updateQueue=fi(n.memoizedState)):r=e.updateQueue=mi(a):null===a&&(a=n.updateQueue=mi(r));null===a||r===a?vi(r,t):null===r.lastUpdate||null===a.lastUpdate?(vi(r,t),vi(a,t)):(vi(r,t),a.lastUpdate=t)}function bi(e,t){var n=e.updateQueue;null===(n=null===n?e.updateQueue=fi(e.memoizedState):yi(e,n)).lastCapturedUpdate?n.firstCapturedUpdate=n.lastCapturedUpdate=t:(n.lastCapturedUpdate.next=t,n.lastCapturedUpdate=t)}function yi(e,t){var n=e.alternate;return null!==n&&t===n.updateQueue&&(t=e.updateQueue=mi(t)),t}function wi(e,t,n,r,i,o){switch(n.tag){case 1:return"function"===typeof(e=n.payload)?e.call(o,r,i):e;case 3:e.effectTag=-4097&e.effectTag|64;case 0:if(null===(i="function"===typeof(e=n.payload)?e.call(o,r,i):e)||void 0===i)break;return a({},r,i);case 2:di=!0}return r}function ki(e,t,n,r,a){di=!1;for(var i=(t=yi(e,t)).baseState,o=null,s=0,l=t.firstUpdate,u=i;null!==l;){var c=l.expirationTime;c<a?(null===o&&(o=l,i=u),s<c&&(s=c)):(gl(c,l.suspenseConfig),u=wi(e,0,l,u,n,r),null!==l.callback&&(e.effectTag|=32,l.nextEffect=null,null===t.lastEffect?t.firstEffect=t.lastEffect=l:(t.lastEffect.nextEffect=l,t.lastEffect=l))),l=l.next}for(c=null,l=t.firstCapturedUpdate;null!==l;){var p=l.expirationTime;p<a?(null===c&&(c=l,null===o&&(i=u)),s<p&&(s=p)):(u=wi(e,0,l,u,n,r),null!==l.callback&&(e.effectTag|=32,l.nextEffect=null,null===t.lastCapturedEffect?t.firstCapturedEffect=t.lastCapturedEffect=l:(t.lastCapturedEffect.nextEffect=l,t.lastCapturedEffect=l))),l=l.next}null===o&&(t.lastUpdate=null),null===c?t.lastCapturedUpdate=null:e.effectTag|=32,null===o&&null===c&&(i=u),t.baseState=i,t.firstUpdate=o,t.firstCapturedUpdate=c,bl(s),e.expirationTime=s,e.memoizedState=u}function xi(e,t,n){null!==t.firstCapturedUpdate&&(null!==t.lastUpdate&&(t.lastUpdate.next=t.firstCapturedUpdate,t.lastUpdate=t.lastCapturedUpdate),t.firstCapturedUpdate=t.lastCapturedUpdate=null),Ei(t.firstEffect,n),t.firstEffect=t.lastEffect=null,Ei(t.firstCapturedEffect,n),t.firstCapturedEffect=t.lastCapturedEffect=null}function Ei(e,t){for(;null!==e;){var n=e.callback;if(null!==n){e.callback=null;var r=t;if("function"!==typeof n)throw Error(o(191,n));n.call(r)}e=e.nextEffect}}var Ti=I.ReactCurrentBatchConfig,Si=(new r.Component).refs;function Ci(e,t,n,r){n=null===(n=n(r,t=e.memoizedState))||void 0===n?t:a({},t,n),e.memoizedState=n,null!==(r=e.updateQueue)&&0===e.expirationTime&&(r.baseState=n)}var qi={isMounted:function(e){return!!(e=e._reactInternalFiber)&&nt(e)===e},enqueueSetState:function(e,t,n){e=e._reactInternalFiber;var r=al(),a=Ti.suspense;
2(a=hi(r=il(r,e,a),a)).payload=t,void 0!==n&&null!==n&&(a.callback=n),gi(e,a),ol(e,r)},enqueueReplaceState:function(e,t,n){e=e._reactInternalFiber;var r=al(),a=Ti.suspense;(a=hi(r=il(r,e,a),a)).tag=1,a.payload=t,void 0!==n&&null!==n&&(a.callback=n),gi(e,a),ol(e,r)},enqueueForceUpdate:function(e,t){e=e._reactInternalFiber;var n=al(),r=Ti.suspense;(r=hi(n=il(n,e,r),r)).tag=2,void 0!==t&&null!==t&&(r.callback=t),gi(e,r),ol(e,n)}};function _i(e,t,n,r,a,i,o){return"function"===typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(r,i,o):!t.prototype||!t.prototype.isPureReactComponent||(!na(n,r)||!na(a,i))}function Pi(e,t,n){var r=!1,a=ha,i=t.contextType;return"object"===typeof i&&null!==i?i=pi(i):(a=wa(t)?ba:va.current,i=(r=null!==(r=t.contextTypes)&&void 0!==r)?ya(e,a):ha),t=new t(n,i),e.memoizedState=null!==t.state&&void 0!==t.state?t.state:null,t.updater=qi,e.stateNode=t,t._reactInternalFiber=e,r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=a,e.__reactInternalMemoizedMaskedChildContext=i),t}function Ai(e,t,n,r){e=t.state,"function"===typeof t.componentWillReceiveProps&&t.componentWillReceiveProps(n,r),"function"===typeof t.UNSAFE_componentWillReceiveProps&&t.UNSAFE_componentWillReceiveProps(n,r),t.state!==e&&qi.enqueueReplaceState(t,t.state,null)}function ji(e,t,n,r){var a=e.stateNode;a.props=n,a.state=e.memoizedState,a.refs=Si;var i=t.contextType;"object"===typeof i&&null!==i?a.context=pi(i):(i=wa(t)?ba:va.current,a.context=ya(e,i)),null!==(i=e.updateQueue)&&(ki(e,i,n,a,r),a.state=e.memoizedState),"function"===typeof(i=t.getDerivedStateFromProps)&&(Ci(e,t,i,n),a.state=e.memoizedState),"function"===typeof t.getDerivedStateFromProps||"function"===typeof a.getSnapshotBeforeUpdate||"function"!==typeof a.UNSAFE_componentWillMount&&"function"!==typeof a.componentWillMount||(t=a.state,"function"===typeof a.componentWillMount&&a.componentWillMount(),"function"===typeof a.UNSAFE_componentWillMount&&a.UNSAFE_componentWillMount(),t!==a.state&&qi.enqueueReplaceState(a,a.state,null),null!==(i=e.updateQueue)&&(ki(e,i,n,a,r),a.state=e.memoizedState)),"function"===typeof a.componentDidMount&&(e.effectTag|=4)}var Oi=Array.isArray;function Ii(e,t,n){if(null!==(e=n.ref)&&"function"!==typeof e&&"object"!==typeof e){if(n._owner){if(n=n._owner){if(1!==n.tag)throw Error(o(309));var r=n.stateNode}if(!r)throw Error(o(147,e));var a=""+e;return null!==t&&null!==t.ref&&"function"===typeof t.ref&&t.ref._stringRef===a?t.ref:(t=function(e){var t=r.refs;t===Si&&(t=r.refs={}),null===e?delete t[a]:t[a]=e},t._stringRef=a,t)}if("string"!==typeof e)throw Error(o(284));if(!n._owner)throw Error(o(290,e))}return e}function Mi(e,t){if("textarea"!==e.type)throw Error(o(31,"[object Object]"===Object.prototype.toString.call(t)?"object with keys {"+Object.keys(t).join(", ")+"}":t,""))}function Li(e){function t(t,n){if(e){var r=t.lastEffect;null!==r?(r.nextEffect=n,t.lastEffect=n):t.firstEffect=t.lastEffect=n,n.nextEffect=null,n.effectTag=8}}function n(n,r){if(!e)return null;for(;null!==r;)t(n,r),r=r.sibling;return null}function r(e,t){for(e=new Map;null!==t;)null!==t.key?e.set(t.key,t):e.set(t.index,t),t=t.sibling;return e}function a(e,t,n){return(e=Dl(e,t)).index=0,e.sibling=null,e}function i(t,n,r){return t.index=r,e?null!==(r=t.alternate)?(r=r.index)<n?(t.effectTag=2,n):r:(t.effectTag=2,n):n}function s(t){return e&&null===t.alternate&&(t.effectTag=2),t}function l(e,t,n,r){return null===t||6!==t.tag?((t=Wl(n,e.mode,r)).return=e,t):((t=a(t,n)).return=e,t)}function u(e,t,n,r){return null!==t&&t.elementType===n.type?((r=a(t,n.props)).ref=Ii(e,t,n),r.return=e,r):((r=zl(n.type,n.key,n.props,null,e.mode,r)).ref=Ii(e,t,n),r.return=e,r)}function c(e,t,n,r){return null===t||4!==t.tag||t.stateNode.containerInfo!==n.containerInfo||t.stateNode.implementation!==n.implementation?((t=Ul(n,e.mode,r)).return=e,t):((t=a(t,n.children||[])).return=e,t)}function p(e,t,n,r,i){return null===t||7!==t.tag?((t=Rl(n,e.mode,r,i)).return=e,t):((t=a(t,n)).return=e,t)}function d(e,t,n){if("string"===typeof t||"number"===typeof t)return(t=Wl(""+t,e.mode,n)).return=e,t;if("object"===typeof t&&null!==t){switch(t.$$typeof){case N:return(n=zl(t.type,t.key,t.props,null,e.mode,n)).ref=Ii(e,null,t),n.return=e,n;case F:return(t=Ul(t,e.mode,n)).return=e,t}if(Oi(t)||Q(t))return(t=Rl(t,e.mode,n,null)).return=e,t;Mi(e,t)}return null}function f(e,t,n,r){var a=null!==t?t.key:null;if("string"===typeof n||"number"===typeof n)return null!==a?null:l(e,t,""+n,r);if("object"===typeof n&&null!==n){switch(n.$$typeof){case N:return n.key===a?n.type===D?p(e,t,n.props.children,r,a):u(e,t,n,r):null;case F:return n.key===a?c(e,t,n,r):null}if(Oi(n)||Q(n))return null!==a?null:p(e,t,n,r,null);Mi(e,n)}return null}function m(e,t,n,r,a){if("string"===typeof r||"number"===typeof r)return l(t,e=e.get(n)||null,""+r,a);if("object"===typeof r&&null!==r){switch(r.$$typeof){case N:return e=e.get(null===r.key?n:r.key)||null,r.type===D?p(t,e,r.props.children,a,r.key):u(t,e,r,a);case F:return c(t,e=e.get(null===r.key?n:r.key)||null,r,a)}if(Oi(r)||Q(r))return p(t,e=e.get(n)||null,r,a,null);Mi(t,r)}return null}function h(a,o,s,l){for(var u=null,c=null,p=o,h=o=0,v=null;null!==p&&h<s.length;h++){p.index>h?(v=p,p=null):v=p.sibling;var g=f(a,p,s[h],l);if(null===g){null===p&&(p=v);break}e&&p&&null===g.alternate&&t(a,p),o=i(g,o,h),null===c?u=g:c.sibling=g,c=g,p=v}if(h===s.length)return n(a,p),u;if(null===p){for(;h<s.length;h++)null!==(p=d(a,s[h],l))&&(o=i(p,o,h),null===c?u=p:c.sibling=p,c=p);return u}for(p=r(a,p);h<s.length;h++)null!==(v=m(p,a,h,s[h],l))&&(e&&null!==v.alternate&&p.delete(null===v.key?h:v.key),o=i(v,o,h),null===c?u=v:c.sibling=v,c=v);return e&&p.forEach((function(e){return t(a,e)})),u}function v(a,s,l,u){var c=Q(l);if("function"!==typeof c)throw Error(o(150));if(null==(l=c.call(l)))throw Error(o(151));for(var p=c=null,h=s,v=s=0,g=null,b=l.next();null!==h&&!b.done;v++,b=l.next()){h.index>v?(g=h,h=null):g=h.sibling;var y=f(a,h,b.value,u);
2if(null===y){null===h&&(h=g);break}e&&h&&null===y.alternate&&t(a,h),s=i(y,s,v),null===p?c=y:p.sibling=y,p=y,h=g}if(b.done)return n(a,h),c;if(null===h){for(;!b.done;v++,b=l.next())null!==(b=d(a,b.value,u))&&(s=i(b,s,v),null===p?c=b:p.sibling=b,p=b);return c}for(h=r(a,h);!b.done;v++,b=l.next())null!==(b=m(h,a,v,b.value,u))&&(e&&null!==b.alternate&&h.delete(null===b.key?v:b.key),s=i(b,s,v),null===p?c=b:p.sibling=b,p=b);return e&&h.forEach((function(e){return t(a,e)})),c}return function(e,r,i,l){var u="object"===typeof i&&null!==i&&i.type===D&&null===i.key;u&&(i=i.props.children);var c="object"===typeof i&&null!==i;if(c)switch(i.$$typeof){case N:e:{for(c=i.key,u=r;null!==u;){if(u.key===c){if(7===u.tag?i.type===D:u.elementType===i.type){n(e,u.sibling),(r=a(u,i.type===D?i.props.children:i.props)).ref=Ii(e,u,i),r.return=e,e=r;break e}n(e,u);break}t(e,u),u=u.sibling}i.type===D?((r=Rl(i.props.children,e.mode,l,i.key)).return=e,e=r):((l=zl(i.type,i.key,i.props,null,e.mode,l)).ref=Ii(e,r,i),l.return=e,e=l)}return s(e);case F:e:{for(u=i.key;null!==r;){if(r.key===u){if(4===r.tag&&r.stateNode.containerInfo===i.containerInfo&&r.stateNode.implementation===i.implementation){n(e,r.sibling),(r=a(r,i.children||[])).return=e,e=r;break e}n(e,r);break}t(e,r),r=r.sibling}(r=Ul(i,e.mode,l)).return=e,e=r}return s(e)}if("string"===typeof i||"number"===typeof i)return i=""+i,null!==r&&6===r.tag?(n(e,r.sibling),(r=a(r,i)).return=e,e=r):(n(e,r),(r=Wl(i,e.mode,l)).return=e,e=r),s(e);if(Oi(i))return h(e,r,i,l);if(Q(i))return v(e,r,i,l);if(c&&Mi(e,i),"undefined"===typeof i&&!u)switch(e.tag){case 1:case 0:throw e=e.type,Error(o(152,e.displayName||e.name||"Component"))}return n(e,r)}}var Ni=Li(!0),Fi=Li(!1),Di={},zi={current:Di},Ri={current:Di},Wi={current:Di};function Ui(e){if(e===Di)throw Error(o(174));return e}function Bi(e,t){ma(Wi,t),ma(Ri,e),ma(zi,Di);var n=t.nodeType;switch(n){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:We(null,"");break;default:t=We(t=(n=8===n?t.parentNode:t).namespaceURI||null,n=n.tagName)}fa(zi),ma(zi,t)}function Vi(e){fa(zi),fa(Ri),fa(Wi)}function Hi(e){Ui(Wi.current);var t=Ui(zi.current),n=We(t,e.type);t!==n&&(ma(Ri,e),ma(zi,n))}function Gi(e){Ri.current===e&&(fa(zi),fa(Ri))}var $i={current:0};function Ki(e){for(var t=e;null!==t;){if(13===t.tag){var n=t.memoizedState;if(null!==n&&(null===(n=n.dehydrated)||n.data===Xn||n.data===Zn))return t}else if(19===t.tag&&void 0!==t.memoizedProps.revealOrder){if(0!==(64&t.effectTag))return t}else if(null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}function Yi(e,t){return{responder:e,props:t}}var Qi=I.ReactCurrentDispatcher,Ji=I.ReactCurrentBatchConfig,Xi=0,Zi=null,eo=null,to=null,no=null,ro=null,ao=null,io=0,oo=null,so=0,lo=!1,uo=null,co=0;function po(){throw Error(o(321))}function fo(e,t){if(null===t)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!ea(e[n],t[n]))return!1;return!0}function mo(e,t,n,r,a,i){if(Xi=i,Zi=t,to=null!==e?e.memoizedState:null,Qi.current=null===to?Io:Mo,t=n(r,a),lo){do{lo=!1,co+=1,to=null!==e?e.memoizedState:null,ao=no,oo=ro=eo=null,Qi.current=Mo,t=n(r,a)}while(lo);uo=null,co=0}if(Qi.current=Oo,(e=Zi).memoizedState=no,e.expirationTime=io,e.updateQueue=oo,e.effectTag|=so,e=null!==eo&&null!==eo.next,Xi=0,ao=ro=no=to=eo=Zi=null,io=0,oo=null,so=0,e)throw Error(o(300));return t}function ho(){Qi.current=Oo,Xi=0,ao=ro=no=to=eo=Zi=null,io=0,oo=null,so=0,lo=!1,uo=null,co=0}function vo(){var e={memoizedState:null,baseState:null,queue:null,baseUpdate:null,next:null};return null===ro?no=ro=e:ro=ro.next=e,ro}function go(){if(null!==ao)ao=(ro=ao).next,to=null!==(eo=to)?eo.next:null;else{if(null===to)throw Error(o(310));var e={memoizedState:(eo=to).memoizedState,baseState:eo.baseState,queue:eo.queue,baseUpdate:eo.baseUpdate,next:null};ro=null===ro?no=e:ro.next=e,to=eo.next}return ro}function bo(e,t){return"function"===typeof t?t(e):t}function yo(e){var t=go(),n=t.queue;if(null===n)throw Error(o(311));if(n.lastRenderedReducer=e,0<co){var r=n.dispatch;if(null!==uo){var a=uo.get(n);if(void 0!==a){uo.delete(n);var i=t.memoizedState;do{i=e(i,a.action),a=a.next}while(null!==a);return ea(i,t.memoizedState)||(Ho=!0),t.memoizedState=i,t.baseUpdate===n.last&&(t.baseState=i),n.lastRenderedState=i,[i,r]}}return[t.memoizedState,r]}r=n.last;var s=t.baseUpdate;if(i=t.baseState,null!==s?(null!==r&&(r.next=null),r=s.next):r=null!==r?r.next:null,null!==r){var l=a=null,u=r,c=!1;do{var p=u.expirationTime;p<Xi?(c||(c=!0,l=s,a=i),p>
2io&&bl(io=p)):(gl(p,u.suspenseConfig),i=u.eagerReducer===e?u.eagerState:e(i,u.action)),s=u,u=u.next}while(null!==u&&u!==r);c||(l=s,a=i),ea(i,t.memoizedState)||(Ho=!0),t.memoizedState=i,t.baseUpdate=l,t.baseState=a,n.lastRenderedState=i}return[t.memoizedState,n.dispatch]}function wo(e){var t=vo();return"function"===typeof e&&(e=e()),t.memoizedState=t.baseState=e,e=(e=t.queue={last:null,dispatch:null,lastRenderedReducer:bo,lastRenderedState:e}).dispatch=jo.bind(null,Zi,e),[t.memoizedState,e]}function ko(e){return yo(bo)}function xo(e,t,n,r){return e={tag:e,create:t,destroy:n,deps:r,next:null},null===oo?(oo={lastEffect:null}).lastEffect=e.next=e:null===(t=oo.lastEffect)?oo.lastEffect=e.next=e:(n=t.next,t.next=e,e.next=n,oo.lastEffect=e),e}function Eo(e,t,n,r){var a=vo();so|=e,a.memoizedState=xo(t,n,void 0,void 0===r?null:r)}function To(e,t,n,r){var a=go();r=void 0===r?null:r;var i=void 0;if(null!==eo){var o=eo.memoizedState;if(i=o.destroy,null!==r&&fo(r,o.deps))return void xo(0,n,i,r)}so|=e,a.memoizedState=xo(t,n,i,r)}function So(e,t){return Eo(516,192,e,t)}function Co(e,t){return To(516,192,e,t)}function qo(e,t){return"function"===typeof t?(e=e(),t(e),function(){t(null)}):null!==t&&void 0!==t?(e=e(),t.current=e,function(){t.current=null}):void 0}function _o(){}function Po(e,t){return vo().memoizedState=[e,void 0===t?null:t],e}function Ao(e,t){var n=go();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&fo(t,r[1])?r[0]:(n.memoizedState=[e,t],e)}function jo(e,t,n){if(!(25>co))throw Error(o(301));var r=e.alternate;if(e===Zi||null!==r&&r===Zi)if(lo=!0,e={expirationTime:Xi,suspenseConfig:null,action:n,eagerReducer:null,eagerState:null,next:null},null===uo&&(uo=new Map),void 0===(n=uo.get(t)))uo.set(t,e);else{for(t=n;null!==t.next;)t=t.next;t.next=e}else{var a=al(),i=Ti.suspense;i={expirationTime:a=il(a,e,i),suspenseConfig:i,action:n,eagerReducer:null,eagerState:null,next:null};var s=t.last;if(null===s)i.next=i;else{var l=s.next;null!==l&&(i.next=l),s.next=i}if(t.last=i,0===e.expirationTime&&(null===r||0===r.expirationTime)&&null!==(r=t.lastRenderedReducer))try{var u=t.lastRenderedState,c=r(u,n);if(i.eagerReducer=r,i.eagerState=c,ea(c,u))return}catch(p){}ol(e,a)}}var Oo={readContext:pi,useCallback:po,useContext:po,useEffect:po,useImperativeHandle:po,useLayoutEffect:po,useMemo:po,useReducer:po,useRef:po,useState:po,useDebugValue:po,useResponder:po,useDeferredValue:po,useTransition:po},Io={readContext:pi,useCallback:Po,useContext:pi,useEffect:So,useImperativeHandle:function(e,t,n){return n=null!==n&&void 0!==n?n.concat([e]):null,Eo(4,36,qo.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Eo(4,36,e,t)},useMemo:function(e,t){var n=vo();return t=void 0===t?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=vo();return t=void 0!==n?n(t):t,r.memoizedState=r.baseState=t,e=(e=r.queue={last:null,dispatch:null,lastRenderedReducer:e,lastRenderedState:t}).dispatch=jo.bind(null,Zi,e),[r.memoizedState,e]},useRef:function(e){return e={current:e},vo().memoizedState=e},useState:wo,useDebugValue:_o,useResponder:Yi,useDeferredValue:function(e,t){var n=wo(e),r=n[0],a=n[1];return So((function(){i.unstable_next((function(){var n=Ji.suspense;Ji.suspense=void 0===t?null:t;try{a(e)}finally{Ji.suspense=n}}))}),[e,t]),r},useTransition:function(e){var t=wo(!1),n=t[0],r=t[1];return[Po((function(t){r(!0),i.unstable_next((function(){var n=Ji.suspense;Ji.suspense=void 0===e?null:e;try{r(!1),t()}finally{Ji.suspense=n}}))}),[e,n]),n]}},Mo={readContext:pi,useCallback:Ao,useContext:pi,useEffect:Co,useImperativeHandle:function(e,t,n){return n=null!==n&&void 0!==n?n.concat([e]):null,To(4,36,qo.bind(null,t,e),n)},useLayoutEffect:function(e,t){return To(4,36,e,t)},useMemo:function(e,t){var n=go();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&fo(t,r[1])?r[0]:(e=e(),n.memoizedState=[e,t],e)},useReducer:yo,useRef:function(){return go().memoizedState},useState:ko,useDebugValue:_o,useResponder:Yi,useDeferredValue:function(e,t){var n=ko(),r=n[0],a=n[1];return Co((function(){i.unstable_next((function(){var n=Ji.suspense;Ji.suspense=void 0===t?null:t;try{a(e)}finally{Ji.suspense=n}}))}),[e,t]),r},useTransition:function(e){var t=ko(),n=t[0],r=t[1];return[Ao((function(t){r(!0),i.unstable_next((function(){var n=Ji.suspense;Ji.suspense=void 0===e?null:e;try{r(!1),t()}finally{Ji.suspense=n}}))}),[e,n]),n]}},Lo=null,No=null,Fo=!1;function Do(e,t){var n=Nl(5,null,null,0);n.elementType="DELETED",n.type="DELETED",n.stateNode=t,n.return=e,n.effectTag=8,null!==e.lastEffect?(e.lastEffect.nextEffect=n,e.lastEffect=n):e.firstEffect=e.lastEffect=n}function zo(e,t){switch(e.tag){case 5:var n=e.type;return null!==(t=1!==t.nodeType||n.toLowerCase()!==t.nodeName.toLowerCase()?null:t)&&(e.stateNode=t,!0);case 6:return null!==(t=""===e.pendingProps||3!==t.nodeType?null:t)&&(e.stateNode=t,!0);default:return!1}}function Ro(e){if(Fo){var t=No;if(t){var n=t;if(!zo(e,t)){if(!(t=or(n.nextSibling))||!zo(e,t))return e.effectTag=-1025&e.effectTag|2,Fo=!1,void(Lo=e);Do(Lo,n)}Lo=e,No=or(t.firstChild)}else e.effectTag=-1025&e.effectTag|2,Fo=!1,Lo=e}}function Wo(e){for(e=e.return;null!==e&&5!==e.tag&&3!==e.tag&&13!==e.tag;)e=e.return;Lo=e}function Uo(e){if(e!==Lo)return!1;if(!Fo)return Wo(e),Fo=!0,!1;var t=e.type;if(5!==e.tag||"head"!==t&&"body"!==t&&!rr(t,e.memoizedProps))for(t=No;t;)Do(e,t),t=or(t.nextSibling);if(Wo(e),13===e.tag){if(!(e=null!==(e=e.memoizedState)?e.dehydrated:null))throw Error(o(317));e:{for(e=e.nextSibling,t=0;e;){if(8===e.nodeType){var n=e.data;if("/$"===n){if(0===t){No=or(e.nextSibling);break e}t--}
2else"$"!==n&&n!==Zn&&n!==Xn||t++}e=e.nextSibling}No=null}}else No=Lo?or(e.stateNode.nextSibling):null;return!0}function Bo(){No=Lo=null,Fo=!1}var Vo=I.ReactCurrentOwner,Ho=!1;function Go(e,t,n,r){t.child=null===e?Fi(t,null,n,r):Ni(t,e.child,n,r)}function $o(e,t,n,r,a){n=n.render;var i=t.ref;return ci(t,a),r=mo(e,t,n,r,i,a),null===e||Ho?(t.effectTag|=1,Go(e,t,r,a),t.child):(t.updateQueue=e.updateQueue,t.effectTag&=-517,e.expirationTime<=a&&(e.expirationTime=0),us(e,t,a))}function Ko(e,t,n,r,a,i){if(null===e){var o=n.type;return"function"!==typeof o||Fl(o)||void 0!==o.defaultProps||null!==n.compare||void 0!==n.defaultProps?((e=zl(n.type,null,r,null,t.mode,i)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=o,Yo(e,t,o,r,a,i))}return o=e.child,a<i&&(a=o.memoizedProps,(n=null!==(n=n.compare)?n:na)(a,r)&&e.ref===t.ref)?us(e,t,i):(t.effectTag|=1,(e=Dl(o,r)).ref=t.ref,e.return=t,t.child=e)}function Yo(e,t,n,r,a,i){return null!==e&&na(e.memoizedProps,r)&&e.ref===t.ref&&(Ho=!1,a<i)?us(e,t,i):Jo(e,t,n,r,i)}function Qo(e,t){var n=t.ref;(null===e&&null!==n||null!==e&&e.ref!==n)&&(t.effectTag|=128)}function Jo(e,t,n,r,a){var i=wa(n)?ba:va.current;return i=ya(t,i),ci(t,a),n=mo(e,t,n,r,i,a),null===e||Ho?(t.effectTag|=1,Go(e,t,n,a),t.child):(t.updateQueue=e.updateQueue,t.effectTag&=-517,e.expirationTime<=a&&(e.expirationTime=0),us(e,t,a))}function Xo(e,t,n,r,a){if(wa(n)){var i=!0;Sa(t)}else i=!1;if(ci(t,a),null===t.stateNode)null!==e&&(e.alternate=null,t.alternate=null,t.effectTag|=2),Pi(t,n,r),ji(t,n,r,a),r=!0;else if(null===e){var o=t.stateNode,s=t.memoizedProps;o.props=s;var l=o.context,u=n.contextType;"object"===typeof u&&null!==u?u=pi(u):u=ya(t,u=wa(n)?ba:va.current);var c=n.getDerivedStateFromProps,p="function"===typeof c||"function"===typeof o.getSnapshotBeforeUpdate;p||"function"!==typeof o.UNSAFE_componentWillReceiveProps&&"function"!==typeof o.componentWillReceiveProps||(s!==r||l!==u)&&Ai(t,o,r,u),di=!1;var d=t.memoizedState;l=o.state=d;var f=t.updateQueue;null!==f&&(ki(t,f,r,o,a),l=t.memoizedState),s!==r||d!==l||ga.current||di?("function"===typeof c&&(Ci(t,n,c,r),l=t.memoizedState),(s=di||_i(t,n,s,r,d,l,u))?(p||"function"!==typeof o.UNSAFE_componentWillMount&&"function"!==typeof o.componentWillMount||("function"===typeof o.componentWillMount&&o.componentWillMount(),"function"===typeof o.UNSAFE_componentWillMount&&o.UNSAFE_componentWillMount()),"function"===typeof o.componentDidMount&&(t.effectTag|=4)):("function"===typeof o.componentDidMount&&(t.effectTag|=4),t.memoizedProps=r,t.memoizedState=l),o.props=r,o.state=l,o.context=u,r=s):("function"===typeof o.componentDidMount&&(t.effectTag|=4),r=!1)}else o=t.stateNode,s=t.memoizedProps,o.props=t.type===t.elementType?s:ti(t.type,s),l=o.context,"object"===typeof(u=n.contextType)&&null!==u?u=pi(u):u=ya(t,u=wa(n)?ba:va.current),(p="function"===typeof(c=n.getDerivedStateFromProps)||"function"===typeof o.getSnapshotBeforeUpdate)||"function"!==typeof o.UNSAFE_componentWillReceiveProps&&"function"!==typeof o.componentWillReceiveProps||(s!==r||l!==u)&&Ai(t,o,r,u),di=!1,l=t.memoizedState,d=o.state=l,null!==(f=t.updateQueue)&&(ki(t,f,r,o,a),d=t.memoizedState),s!==r||l!==d||ga.current||di?("function"===typeof c&&(Ci(t,n,c,r),d=t.memoizedState),(c=di||_i(t,n,s,r,l,d,u))?(p||"function"!==typeof o.UNSAFE_componentWillUpdate&&"function"!==typeof o.componentWillUpdate||("function"===typeof o.componentWillUpdate&&o.componentWillUpdate(r,d,u),"function"===typeof o.UNSAFE_componentWillUpdate&&o.UNSAFE_componentWillUpdate(r,d,u)),"function"===typeof o.componentDidUpdate&&(t.effectTag|=4),"function"===typeof o.getSnapshotBeforeUpdate&&(t.effectTag|=256)):("function"!==typeof o.componentDidUpdate||s===e.memoizedProps&&l===e.memoizedState||(t.effectTag|=4),"function"!==typeof o.getSnapshotBeforeUpdate||s===e.memoizedProps&&l===e.memoizedState||(t.effectTag|=256),t.memoizedProps=r,t.memoizedState=d),o.props=r,o.state=d,o.context=u,r=c):("function"!==typeof o.componentDidUpdate||s===e.memoizedProps&&l===e.memoizedState||(t.effectTag|=4),"function"!==typeof o.getSnapshotBeforeUpdate||s===e.memoizedProps&&l===e.memoizedState||(t.effectTag|=256),r=!1);return Zo(e,t,n,r,i,a)}function Zo(e,t,n,r,a,i){Qo(e,t);var o=0!==(64&t.effectTag);if(!r&&!o)return a&&Ca(t,n,!1),us(e,t,i);r=t.stateNode,Vo.current=t;var s=o&&"function"!==typeof n.getDerivedStateFromError?null:r.render();return t.effectTag|=1,null!==e&&o?(t.child=Ni(t,e.child,null,i),t.child=Ni(t,null,s,i)):Go(e,t,s,i),t.memoizedState=r.state,a&&Ca(t,n,!0),t.child}function es(e){var t=e.stateNode;t.pendingContext?Ea(0,t.pendingContext,t.pendingContext!==t.context):t.context&&Ea(0,t.context,!1),Bi(e,t.containerInfo)}var ts,ns,rs,as={dehydrated:null,retryTime:0};function is(e,t,n){var r,a=t.mode,i=t.pendingProps,o=$i.current,s=!1;if((r=0!==(64&t.effectTag))||(r=0!==(2&o)&&(null===e||null!==e.memoizedState)),r?(s=!0,t.effectTag&=-65):null!==e&&null===e.memoizedState||void 0===i.fallback||!0===i.unstable_avoidThisFallback||(o|=1),ma($i,1&o),null===e){if(void 0!==i.fallback&&Ro(t),s){if
2(s=i.fallback,(i=Rl(null,a,0,null)).return=t,0===(2&t.mode))for(e=null!==t.memoizedState?t.child.child:t.child,i.child=e;null!==e;)e.return=i,e=e.sibling;return(n=Rl(s,a,n,null)).return=t,i.sibling=n,t.memoizedState=as,t.child=i,n}return a=i.children,t.memoizedState=null,t.child=Fi(t,null,a,n)}if(null!==e.memoizedState){if(a=(e=e.child).sibling,s){if(i=i.fallback,(n=Dl(e,e.pendingProps)).return=t,0===(2&t.mode)&&(s=null!==t.memoizedState?t.child.child:t.child)!==e.child)for(n.child=s;null!==s;)s.return=n,s=s.sibling;return(a=Dl(a,i,a.expirationTime)).return=t,n.sibling=a,n.childExpirationTime=0,t.memoizedState=as,t.child=n,a}return n=Ni(t,e.child,i.children,n),t.memoizedState=null,t.child=n}if(e=e.child,s){if(s=i.fallback,(i=Rl(null,a,0,null)).return=t,i.child=e,null!==e&&(e.return=i),0===(2&t.mode))for(e=null!==t.memoizedState?t.child.child:t.child,i.child=e;null!==e;)e.return=i,e=e.sibling;return(n=Rl(s,a,n,null)).return=t,i.sibling=n,n.effectTag|=2,i.childExpirationTime=0,t.memoizedState=as,t.child=i,n}return t.memoizedState=null,t.child=Ni(t,e,i.children,n)}function os(e,t){e.expirationTime<t&&(e.expirationTime=t);var n=e.alternate;null!==n&&n.expirationTime<t&&(n.expirationTime=t),ui(e.return,t)}function ss(e,t,n,r,a,i){var o=e.memoizedState;null===o?e.memoizedState={isBackwards:t,rendering:null,last:r,tail:n,tailExpiration:0,tailMode:a,lastEffect:i}:(o.isBackwards=t,o.rendering=null,o.last=r,o.tail=n,o.tailExpiration=0,o.tailMode=a,o.lastEffect=i)}function ls(e,t,n){var r=t.pendingProps,a=r.revealOrder,i=r.tail;if(Go(e,t,r.children,n),0!==(2&(r=$i.current)))r=1&r|2,t.effectTag|=64;else{if(null!==e&&0!==(64&e.effectTag))e:for(e=t.child;null!==e;){if(13===e.tag)null!==e.memoizedState&&os(e,n);else if(19===e.tag)os(e,n);else if(null!==e.child){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;null===e.sibling;){if(null===e.return||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}r&=1}if(ma($i,r),0===(2&t.mode))t.memoizedState=null;else switch(a){case"forwards":for(n=t.child,a=null;null!==n;)null!==(e=n.alternate)&&null===Ki(e)&&(a=n),n=n.sibling;null===(n=a)?(a=t.child,t.child=null):(a=n.sibling,n.sibling=null),ss(t,!1,a,n,i,t.lastEffect);break;case"backwards":for(n=null,a=t.child,t.child=null;null!==a;){if(null!==(e=a.alternate)&&null===Ki(e)){t.child=a;break}e=a.sibling,a.sibling=n,n=a,a=e}ss(t,!0,n,null,i,t.lastEffect);break;case"together":ss(t,!1,null,null,void 0,t.lastEffect);break;default:t.memoizedState=null}return t.child}function us(e,t,n){null!==e&&(t.dependencies=e.dependencies);var r=t.expirationTime;if(0!==r&&bl(r),t.childExpirationTime<n)return null;if(null!==e&&t.child!==e.child)throw Error(o(153));if(null!==t.child){for(n=Dl(e=t.child,e.pendingProps,e.expirationTime),t.child=n,n.return=t;null!==e.sibling;)e=e.sibling,(n=n.sibling=Dl(e,e.pendingProps,e.expirationTime)).return=t;n.sibling=null}return t.child}function cs(e){e.effectTag|=4}function ps(e,t){switch(e.tailMode){case"hidden":t=e.tail;for(var n=null;null!==t;)null!==t.alternate&&(n=t),t=t.sibling;null===n?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var r=null;null!==n;)null!==n.alternate&&(r=n),n=n.sibling;null===r?t||null===e.tail?e.tail=null:e.tail.sibling=null:r.sibling=null}}function ds(e){switch(e.tag){case 1:wa(e.type)&&ka();var t=e.effectTag;return 4096&t?(e.effectTag=-4097&t|64,e):null;case 3:if(Vi(),xa(),0!==(64&(t=e.effectTag)))throw Error(o(285));return e.effectTag=-4097&t|64,e;case 5:return Gi(e),null;case 13:return fa($i),4096&(t=e.effectTag)?(e.effectTag=-4097&t|64,e):null;case 19:return fa($i),null;case 4:return Vi(),null;case 10:return li(e),null;default:return null}}function fs(e,t){return{value:e,source:t,stack:X(t)}}ts=function(e,t){for(var n=t.child;null!==n;){if(5===n.tag||6===n.tag)e.appendChild(n.stateNode);else if(4!==n.tag&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===t)break;for(;null===n.sibling;){if(null===n.return||n.return===t)return;n=n.return}n.sibling.return=n.return,n=n.sibling}},ns=function(e,t,n,r,i){var o=e.memoizedProps;if(o!==r){var s,l,u=t.stateNode;switch(Ui(zi.current),e=null,n){case"input":o=Ce(u,o),r=Ce(u,r),e=[];break;case"option":o=Oe(u,o),r=Oe(u,r),e=[];break;case"select":o=a({},o,{value:void 0}),r=a({},r,{value:void 0}),e=[];break;case"textarea":o=Me(u,o),r=Me(u,r),e=[];break;default:"function"!==typeof o.onClick&&"function"===typeof r.onClick&&(u.onclick=Hn)}for(s in Un(n,r),n=null,o)if(!r.hasOwnProperty(s)&&o.hasOwnProperty(s)&&null!=o[s])if("style"===s)for(l in u=o[s])u.hasOwnProperty(l)&&(n||(n={}),n[l]="");else"dangerouslySetInnerHTML"!==s&&"children"!==s&&"suppressContentEditableWarning"!==s&&"suppressHydrationWarning"!==s&&"autoFocus"!==s&&(f.hasOwnProperty(s)?e||(e=[]):(e=e||[]).push(s,null));for(s in r){var c=r[s];if(u=null!=o?o[s]:void 0,r.hasOwnProperty(s)&&c!==u&&(null!=c||null!=u))if("style"===s)if(u){for(l in u)!u.hasOwnProperty(l)||c&&c.hasOwnProperty(l)||(n||(n={}),n[l]="");for(l in c)c.hasOwnProperty(l)&&u[l]!==c[l]&&(n||(n={}),n[l]=c[l])}else n||(e||(e=[]),e.push(s,n)),n=c;else"dangerouslySetInnerHTML"===s?(c=c?c.__html:void 0,u=u?u.__html:void 0,null!=c&&u!==c&&(e=e||[]).push(s,""+c)):"children"===s?u===c||"string"!==typeof c&&"number"!==typeof c||(e=e||[]).push(s,""+c):"suppressContentEditableWarning"!==s&&"suppressHydrationWarning"!==s&&(f.hasOwnProperty(s)?(null!=c&&Vn(i,s),e||u===c||(e=[])):(e=e||[]).push(s,c))}n&&(e=e||[]).push("style",n),i=e,(t.updateQueue=i)&&cs(t)}},rs=function(e,t,n,r){n!==r&&cs(t)};var ms="function"===typeof WeakSet?WeakSet:Set;function hs(e,t){var n=t.source,r=t.stack;null===r&&null!==n&&(r=X(n)),null!==n&&J(n.type),t=t.value,null!==e&&1===e.tag&&J(e.type);try{console.error(t)}catch(a){setTimeout((function(){throw a}))}}function vs(e){var t=e.ref;if(null!==t)if("function"===typeof t)try{t(null)}catch(n){Al(e,n)}else t.current=null}function gs(e,t){switch(t.tag){case 0:case 11:case 15:bs(2,0,t);break;case 1:if(256&t.effectTag&&null!==e){var n=e.memoizedProps,r=e.memoizedState;t=(e=t.stateNode).getSnapshotBeforeUpdate(t.elementType===t.type?n:ti(t.type,n),r),e.__reactInternalSnapshotBeforeUpdate=t}break;
2case 3:case 5:case 6:case 4:case 17:break;default:throw Error(o(163))}}function bs(e,t,n){if(null!==(n=null!==(n=n.updateQueue)?n.lastEffect:null)){var r=n=n.next;do{if(0!==(r.tag&e)){var a=r.destroy;r.destroy=void 0,void 0!==a&&a()}0!==(r.tag&t)&&(a=r.create,r.destroy=a()),r=r.next}while(r!==n)}}function ys(e,t,n){switch("function"===typeof Ml&&Ml(t),t.tag){case 0:case 11:case 14:case 15:if(null!==(e=t.updateQueue)&&null!==(e=e.lastEffect)){var r=e.next;Ka(97<n?97:n,(function(){var e=r;do{var n=e.destroy;if(void 0!==n){var a=t;try{n()}catch(i){Al(a,i)}}e=e.next}while(e!==r)}))}break;case 1:vs(t),"function"===typeof(n=t.stateNode).componentWillUnmount&&function(e,t){try{t.props=e.memoizedProps,t.state=e.memoizedState,t.componentWillUnmount()}catch(n){Al(e,n)}}(t,n);break;case 5:vs(t);break;case 4:Es(e,t,n)}}function ws(e){var t=e.alternate;e.return=null,e.child=null,e.memoizedState=null,e.updateQueue=null,e.dependencies=null,e.alternate=null,e.firstEffect=null,e.lastEffect=null,e.pendingProps=null,e.memoizedProps=null,null!==t&&ws(t)}function ks(e){return 5===e.tag||3===e.tag||4===e.tag}function xs(e){e:{for(var t=e.return;null!==t;){if(ks(t)){var n=t;break e}t=t.return}throw Error(o(160))}switch(t=n.stateNode,n.tag){case 5:var r=!1;break;case 3:case 4:t=t.containerInfo,r=!0;break;default:throw Error(o(161))}16&n.effectTag&&(He(t,""),n.effectTag&=-17);e:t:for(n=e;;){for(;null===n.sibling;){if(null===n.return||ks(n.return)){n=null;break e}n=n.return}for(n.sibling.return=n.return,n=n.sibling;5!==n.tag&&6!==n.tag&&18!==n.tag;){if(2&n.effectTag)continue t;if(null===n.child||4===n.tag)continue t;n.child.return=n,n=n.child}if(!(2&n.effectTag)){n=n.stateNode;break e}}for(var a=e;;){var i=5===a.tag||6===a.tag;if(i){var s=i?a.stateNode:a.stateNode.instance;if(n)if(r){var l=s;s=n,8===(i=t).nodeType?i.parentNode.insertBefore(l,s):i.insertBefore(l,s)}else t.insertBefore(s,n);else r?(8===(l=t).nodeType?(i=l.parentNode).insertBefore(s,l):(i=l).appendChild(s),null!==(l=l._reactRootContainer)&&void 0!==l||null!==i.onclick||(i.onclick=Hn)):t.appendChild(s)}else if(4!==a.tag&&null!==a.child){a.child.return=a,a=a.child;continue}if(a===e)break;for(;null===a.sibling;){if(null===a.return||a.return===e)return;a=a.return}a.sibling.return=a.return,a=a.sibling}}function Es(e,t,n){for(var r,a,i=t,s=!1;;){if(!s){s=i.return;e:for(;;){if(null===s)throw Error(o(160));switch(r=s.stateNode,s.tag){case 5:a=!1;break e;case 3:case 4:r=r.containerInfo,a=!0;break e}s=s.return}s=!0}if(5===i.tag||6===i.tag){e:for(var l=e,u=i,c=n,p=u;;)if(ys(l,p,c),null!==p.child&&4!==p.tag)p.child.return=p,p=p.child;else{if(p===u)break;for(;null===p.sibling;){if(null===p.return||p.return===u)break e;p=p.return}p.sibling.return=p.return,p=p.sibling}a?(l=r,u=i.stateNode,8===l.nodeType?l.parentNode.removeChild(u):l.removeChild(u)):r.removeChild(i.stateNode)}else if(4===i.tag){if(null!==i.child){r=i.stateNode.containerInfo,a=!0,i.child.return=i,i=i.child;continue}}else if(ys(e,i,n),null!==i.child){i.child.return=i,i=i.child;continue}if(i===t)break;for(;null===i.sibling;){if(null===i.return||i.return===t)return;4===(i=i.return).tag&&(s=!1)}i.sibling.return=i.return,i=i.sibling}}function Ts(e,t){switch(t.tag){case 0:case 11:case 14:case 15:bs(4,8,t);break;case 1:case 12:case 17:case 20:case 21:break;case 5:var n=t.stateNode;if(null!=n){var r=t.memoizedProps,a=null!==e?e.memoizedProps:r;e=t.type;var i=t.updateQueue;if(t.updateQueue=null,null!==i){for(n[cr]=r,"input"===e&&"radio"===r.type&&null!=r.name&&_e(n,r),Bn(e,a),t=Bn(e,r),a=0;a<i.length;a+=2){var s=i[a],l=i[a+1];"style"===s?Rn(n,l):"dangerouslySetInnerHTML"===s?Ve(n,l):"children"===s?He(n,l):xe(n,s,l,t)}switch(e){case"input":Pe(n,r);break;case"textarea":Ne(n,r);break;case"select":t=n._wrapperState.wasMultiple,n._wrapperState.wasMultiple=!!r.multiple,null!=(e=r.value)?Ie(n,!!r.multiple,e,!1):t!==!!r.multiple&&(null!=r.defaultValue?Ie(n,!!r.multiple,r.defaultValue,!0):Ie(n,!!r.multiple,r.multiple?[]:"",!1))}}}break;case 6:if(null===t.stateNode)throw Error(o(162));t.stateNode.nodeValue=t.memoizedProps;break;case 3:(t=t.stateNode).hydrate&&(t.hydrate=!1,qt(t.containerInfo));break;case 13:if(n=t,null===t.memoizedState?r=!1:(r=!0,n=t.child,Gs=Ha()),null!==n)e:for(e=n;;){if(5===e.tag)i=e.stateNode,r?"function"===typeof(i=i.style).setProperty?i.setProperty("display","none","important"):i.display="none":(i=e.stateNode,a=void 0!==(a=e.memoizedProps.style)&&null!==a&&a.hasOwnProperty("display")?a.display:null,i.style.display=zn("display",a));else if(6===e.tag)e.stateNode.nodeValue=r?"":e.memoizedProps;else{if(13===e.tag&&null!==e.memoizedState&&null===e.memoizedState.dehydrated){(i=e.child.sibling).return=e,e=i;continue}if(null!==e.child){e.child.return=e,e=e.child;continue}}if(e===n)break e;for(;null===e.sibling;){if(null===e.return||e.return===n)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}Ss(t);break;case 19:Ss(t);break;default:throw Error(o(163))}}function Ss(e){var t=e.updateQueue;if(null!==t){e.updateQueue=null;var n=e.stateNode;null===n&&(n=e.stateNode=new ms),t.forEach((function(t){var r=Ol.bind(null,e,t);n.has(t)||(n.add(t),t.then(r,r))}))}}var Cs="function"===typeof WeakMap?WeakMap:Map;
2function qs(e,t,n){(n=hi(n,null)).tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){Ks||(Ks=!0,Ys=r),hs(e,t)},n}function _s(e,t,n){(n=hi(n,null)).tag=3;var r=e.type.getDerivedStateFromError;if("function"===typeof r){var a=t.value;n.payload=function(){return hs(e,t),r(a)}}var i=e.stateNode;return null!==i&&"function"===typeof i.componentDidCatch&&(n.callback=function(){"function"!==typeof r&&(null===Qs?Qs=new Set([this]):Qs.add(this),hs(e,t));var n=t.stack;this.componentDidCatch(t.value,{componentStack:null!==n?n:""})}),n}var Ps,As=Math.ceil,js=I.ReactCurrentDispatcher,Os=I.ReactCurrentOwner,Is=16,Ms=32,Ls=0,Ns=null,Fs=null,Ds=0,zs=0,Rs=null,Ws=1073741823,Us=1073741823,Bs=null,Vs=0,Hs=!1,Gs=0,$s=null,Ks=!1,Ys=null,Qs=null,Js=!1,Xs=null,Zs=90,el=null,tl=0,nl=null,rl=0;function al(){return 0!==(48&Ls)?1073741821-(Ha()/10|0):0!==rl?rl:rl=1073741821-(Ha()/10|0)}function il(e,t,n){if(0===(2&(t=t.mode)))return 1073741823;var r=Ga();if(0===(4&t))return 99===r?1073741823:1073741822;if(0!==(Ls&Is))return Ds;if(null!==n)e=ei(e,0|n.timeoutMs||5e3,250);else switch(r){case 99:e=1073741823;break;case 98:e=ei(e,150,100);break;case 97:case 96:e=ei(e,5e3,250);break;case 95:e=2;break;default:throw Error(o(326))}return null!==Ns&&e===Ds&&--e,e}function ol(e,t){if(50<tl)throw tl=0,nl=null,Error(o(185));if(null!==(e=sl(e,t))){var n=Ga();1073741823===t?0!==(8&Ls)&&0===(48&Ls)?pl(e):(ul(e),0===Ls&&Ja()):ul(e),0===(4&Ls)||98!==n&&99!==n||(null===el?el=new Map([[e,t]]):(void 0===(n=el.get(e))||n>t)&&el.set(e,t))}}function sl(e,t){e.expirationTime<t&&(e.expirationTime=t);var n=e.alternate;null!==n&&n.expirationTime<t&&(n.expirationTime=t);var r=e.return,a=null;if(null===r&&3===e.tag)a=e.stateNode;else for(;null!==r;){if(n=r.alternate,r.childExpirationTime<t&&(r.childExpirationTime=t),null!==n&&n.childExpirationTime<t&&(n.childExpirationTime=t),null===r.return&&3===r.tag){a=r.stateNode;break}r=r.return}return null!==a&&(Ns===a&&(bl(t),4===zs&&Hl(a,Ds)),Gl(a,t)),a}function ll(e){var t=e.lastExpiredTime;return 0!==t?t:Vl(e,t=e.firstPendingTime)?(t=e.lastPingedTime)>(e=e.nextKnownPendingLevel)?t:e:t}function ul(e){if(0!==e.lastExpiredTime)e.callbackExpirationTime=1073741823,e.callbackPriority=99,e.callbackNode=Qa(pl.bind(null,e));else{var t=ll(e),n=e.callbackNode;if(0===t)null!==n&&(e.callbackNode=null,e.callbackExpirationTime=0,e.callbackPriority=90);else{var r=al();if(1073741823===t?r=99:1===t||2===t?r=95:r=0>=(r=10*(1073741821-t)-10*(1073741821-r))?99:250>=r?98:5250>=r?97:95,null!==n){var a=e.callbackPriority;if(e.callbackExpirationTime===t&&a>=r)return;n!==za&&Pa(n)}e.callbackExpirationTime=t,e.callbackPriority=r,t=1073741823===t?Qa(pl.bind(null,e)):Ya(r,cl.bind(null,e),{timeout:10*(1073741821-t)-Ha()}),e.callbackNode=t}}}function cl(e,t){if(rl=0,t)return $l(e,t=al()),ul(e),null;var n=ll(e);
2if(0!==n){if(t=e.callbackNode,0!==(48&Ls))throw Error(o(327));if(ql(),e===Ns&&n===Ds||ml(e,n),null!==Fs){var r=Ls;Ls|=Is;for(var a=vl();;)try{wl();break}catch(l){hl(e,l)}if(oi(),Ls=r,js.current=a,1===zs)throw t=Rs,ml(e,n),Hl(e,n),ul(e),t;if(null===Fs)switch(a=e.finishedWork=e.current.alternate,e.finishedExpirationTime=n,r=zs,Ns=null,r){case 0:case 1:throw Error(o(345));case 2:$l(e,2<n?2:n);break;case 3:if(Hl(e,n),n===(r=e.lastSuspendedTime)&&(e.nextKnownPendingLevel=El(a)),1073741823===Ws&&10<(a=Gs+500-Ha())){if(Hs){var i=e.lastPingedTime;if(0===i||i>=n){e.lastPingedTime=n,ml(e,n);break}}if(0!==(i=ll(e))&&i!==n)break;if(0!==r&&r!==n){e.lastPingedTime=r;break}e.timeoutHandle=ar(Tl.bind(null,e),a);break}Tl(e);break;case 4:if(Hl(e,n),n===(r=e.lastSuspendedTime)&&(e.nextKnownPendingLevel=El(a)),Hs&&(0===(a=e.lastPingedTime)||a>=n)){e.lastPingedTime=n,ml(e,n);break}if(0!==(a=ll(e))&&a!==n)break;if(0!==r&&r!==n){e.lastPingedTime=r;break}if(1073741823!==Us?r=10*(1073741821-Us)-Ha():1073741823===Ws?r=0:(r=10*(1073741821-Ws)-5e3,0>
2(r=(a=Ha())-r)&&(r=0),(n=10*(1073741821-n)-a)<(r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*As(r/1960))-r)&&(r=n)),10<r){e.timeoutHandle=ar(Tl.bind(null,e),r);break}Tl(e);break;case 5:if(1073741823!==Ws&&null!==Bs){i=Ws;var s=Bs;if(0>=(r=0|s.busyMinDurationMs)?r=0:(a=0|s.busyDelayMs,r=(i=Ha()-(10*(1073741821-i)-(0|s.timeoutMs||5e3)))<=a?0:a+r-i),10<r){Hl(e,n),e.timeoutHandle=ar(Tl.bind(null,e),r);break}}Tl(e);break;default:throw Error(o(329))}if(ul(e),e.callbackNode===t)return cl.bind(null,e)}}return null}function pl(e){var t=e.lastExpiredTime;if(t=0!==t?t:1073741823,e.finishedExpirationTime===t)Tl(e);else{if(0!==(48&Ls))throw Error(o(327));if(ql(),e===Ns&&t===Ds||ml(e,t),null!==Fs){var n=Ls;Ls|=Is;for(var r=vl();;)try{yl();break}catch(a){hl(e,a)}if(oi(),Ls=n,js.current=r,1===zs)throw n=Rs,ml(e,t),Hl(e,t),ul(e),n;if(null!==Fs)throw Error(o(261));e.finishedWork=e.current.alternate,e.finishedExpirationTime=t,Ns=null,Tl(e),ul(e)}}return null}function dl(e,t){var n=Ls;Ls|=1;try{return e(t)}finally{0===(Ls=n)&&Ja()}}function fl(e,t){var n=Ls;Ls&=-2,Ls|=8;try{return e(t)}finally{0===(Ls=n)&&Ja()}}function ml(e,t){e.finishedWork=null,e.finishedExpirationTime=0;var n=e.timeoutHandle;if(-1!==n&&(e.timeoutHandle=-1,ir(n)),null!==Fs)for(n=Fs.return;null!==n;){var r=n;switch(r.tag){case 1:var a=r.type.childContextTypes;null!==a&&void 0!==a&&ka();break;case 3:Vi(),xa();break;case 5:Gi(r);break;case 4:Vi();break;case 13:case 19:fa($i);break;case 10:li(r)}n=n.return}Ns=e,Fs=Dl(e.current,null),Ds=t,zs=0,Rs=null,Us=Ws=1073741823,Bs=null,Vs=0,Hs=!1}function hl(e,t){for(;;){try{if(oi(),ho(),null===Fs||null===Fs.return)return zs=1,Rs=t,null;e:{var n=e,r=Fs.return,a=Fs,i=t;if(t=Ds,a.effectTag|=2048,a.firstEffect=a.lastEffect=null,null!==i&&"object"===typeof i&&"function"===typeof i.then){var o=i,s=0!==(1&$i.current),l=r;do{var u;if(u=13===l.tag){var c=l.memoizedState;if(null!==c)u=null!==c.dehydrated;else{var p=l.memoizedProps;u=void 0!==p.fallback&&(!0!==p.unstable_avoidThisFallback||!s)}}if(u){var d=l.updateQueue;if(null===d){var f=new Set;f.add(o),l.updateQueue=f}else d.add(o);if(0===(2&l.mode)){if(l.effectTag|=64,a.effectTag&=-2981,1===a.tag)if(null===a.alternate)a.tag=17;else{var m=hi(1073741823,null);m.tag=2,gi(a,m)}a.expirationTime=1073741823;break e}i=void 0,a=t;var h=n.pingCache;if(null===h?(h=n.pingCache=new Cs,i=new Set,h.set(o,i)):void 0===(i=h.get(o))&&(i=new Set,h.set(o,i)),!i.has(a)){i.add(a);var v=jl.bind(null,n,o,a);o.then(v,v)}l.effectTag|=4096,l.expirationTime=t;break e}l=l.return}while(null!==l);i=Error((J(a.type)||"A React component")+" suspended while rendering, but no fallback UI was specified.\n\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display."+X(a))}5!==zs&&(zs=2),i=fs(i,a),l=r;do{switch(l.tag){case 3:o=i,l.effectTag|=4096,l.expirationTime=t,bi(l,qs(l,o,t));break e;case 1:o=i;var g=l.type,b=l.stateNode;if(0===(64&l.effectTag)&&("function"===typeof g.getDerivedStateFromError||null!==b&&"function"===typeof b.componentDidCatch&&(null===Qs||!Qs.has(b)))){l.effectTag|=4096,l.expirationTime=t,bi(l,_s(l,o,t));break e}}l=l.return}while(null!==l)}Fs=xl(Fs)}catch(y){t=y;continue}break}}function vl(){var e=js.current;return js.current=Oo,null===e?Oo:e}function gl(e,t){e<Ws&&2<e&&(Ws=e),null!==t&&e<Us&&2<e&&(Us=e,Bs=t)}function bl(e){e>Vs&&(Vs=e)}function yl(){for(;null!==Fs;)Fs=kl(Fs)}function wl(){for(;null!==Fs&&!Aa();)Fs=kl(Fs)}function kl(e){var t=Ps(e.alternate,e,Ds);return e.memoizedProps=e.pendingProps,null===t&&(t=xl(e)),Os.current=null,t}function xl(e){Fs=e;do{var t=Fs.alternate;if(e=Fs.return,0===(2048&Fs.effectTag)){e:{var n=t,r=Ds,i=(t=Fs).pendingProps;switch(t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:case 20:case 21:break;case 1:case 17:wa(t.type)&&ka();break;case 3:Vi(),xa(),(i=t.stateNode).pendingContext&&(i.context=i.pendingContext,i.pendingContext=null),(null===n||null===n.child)&&Uo(t)&&cs(t);break;case 5:Gi(t),r=Ui(Wi.current);var s=t.type;if(null!==n&&null!=t.stateNode)ns(n,t,s,i,r),n.ref!==t.ref&&(t.effectTag|=128);else if(i){var l=Ui(zi.current);if(Uo(t)){var u=(i=t).stateNode;n=i.type;var c=i.memoizedProps,p=r;switch(u[ur]=i,u[cr]=c,s=void 0,r=u,n){case"iframe":case"object":case"embed":Cn("load",r);break;case"video":case"audio":for(u=0;
vendor: 1,947 bytes, line 2
2u<tt.length;u++)Cn(tt[u],r);break;case"source":Cn("error",r);break;case"img":case"image":case"link":Cn("error",r),Cn("load",r);break;case"form":Cn("reset",r),Cn("submit",r);break;case"details":Cn("toggle",r);break;case"input":qe(r,c),Cn("invalid",r),Vn(p,"onChange");break;case"select":r._wrapperState={wasMultiple:!!c.multiple},Cn("invalid",r),Vn(p,"onChange");break;case"textarea":Le(r,c),Cn("invalid",r),Vn(p,"onChange")}for(s in Un(n,c),u=null,c)c.hasOwnProperty(s)&&(l=c[s],"children"===s?"string"===typeof l?r.textContent!==l&&(u=["children",l]):"number"===typeof l&&r.textContent!==""+l&&(u=["children",""+l]):f.hasOwnProperty(s)&&null!=l&&Vn(p,s));switch(n){case"input":Te(r),Ae(r,c,!0);break;case"textarea":Te(r),Fe(r);break;case"select":case"option":break;default:"function"===typeof c.onClick&&(r.onclick=Hn)}s=u,i.updateQueue=s,(i=null!==s)&&cs(t)}else{n=t,p=s,c=i,u=9===r.nodeType?r:r.ownerDocument,l===De&&(l=Re(p)),l===De?"script"===p?((c=u.createElement("div")).innerHTML="<script><\/script>",u=c.removeChild(c.firstChild)):"string"===typeof c.is?u=u.createElement(p,{is:c.is}):(u=u.createElement(p),"select"===p&&(p=u,c.multiple?p.multiple=!0:c.size&&(p.size=c.size))):u=u.createElementNS(l,p),(c=u)[ur]=n,c[cr]=i,ts(c,t),t.stateNode=c;var d=r,m=Bn(p=s,n=i);switch(p){case"iframe":case"object":case"embed":Cn("load",c),r=n;break;case"video":case"audio":for(r=0;r<tt.length;r++)Cn(tt[r],c);r=n;break;case"source":Cn("error",c),r=n;break;case"img":case"image":case"link":Cn("error",c),Cn("load",c),r=n;break;case"form":Cn("reset",c),Cn("submit",c),r=n;break;case"details":Cn("toggle",c),r=n;break;case"input":qe(c,n),r=Ce(c,n),Cn("invalid",c),Vn(d,"onChange");break;case"option":r=Oe(c,n);break;case"select":c._wrapperState={wasMultiple:!!n.multiple},r=a({},n,{value:void 0}),Cn("invalid",c),Vn(d,"onChange");break;case"textarea":Le(c,n),r=Me(c,n),Cn("invalid",c),Vn(d,"onChange");break;default:r=n}Un(p,r),u=void 0,l=p;var h=c,v=r;
2for(u in v)if(v.hasOwnProperty(u)){var g=v[u];"style"===u?Rn(h,g):"dangerouslySetInnerHTML"===u?null!=(g=g?g.__html:void 0)&&Ve(h,g):"children"===u?"string"===typeof g?("textarea"!==l||""!==g)&&He(h,g):"number"===typeof g&&He(h,""+g):"suppressContentEditableWarning"!==u&&"suppressHydrationWarning"!==u&&"autoFocus"!==u&&(f.hasOwnProperty(u)?null!=g&&Vn(d,u):null!=g&&xe(h,u,g,m))}switch(p){case"input":Te(c),Ae(c,n,!1);break;case"textarea":Te(c),Fe(c);break;case"option":null!=n.value&&c.setAttribute("value",""+ke(n.value));break;case"select":(r=c).multiple=!!n.multiple,null!=(c=n.value)?Ie(r,!!n.multiple,c,!1):null!=n.defaultValue&&Ie(r,!!n.multiple,n.defaultValue,!0);break;default:"function"===typeof r.onClick&&(c.onclick=Hn)}(i=nr(s,i))&&cs(t)}null!==t.ref&&(t.effectTag|=128)}else if(null===t.stateNode)throw Error(o(166));break;case 6:if(n&&null!=t.stateNode)rs(0,t,n.memoizedProps,i);else{if("string"!==typeof i&&null===t.stateNode)throw Error(o(166));r=Ui(Wi.current),Ui(zi.current),Uo(t)?(s=(i=t).stateNode,r=i.memoizedProps,s[ur]=i,(i=s.nodeValue!==r)&&cs(t)):(s=t,(i=(9===r.nodeType?r:r.ownerDocument).createTextNode(i))[ur]=s,t.stateNode=i)}break;case 13:if(fa($i),i=t.memoizedState,0!==(64&t.effectTag)){t.expirationTime=r;break e}i=null!==i,s=!1,null===n?void 0!==t.memoizedProps.fallback&&Uo(t):(s=null!==(r=n.memoizedState),i||null===r||null!==(r=n.child.sibling)&&(null!==(c=t.firstEffect)?(t.firstEffect=r,r.nextEffect=c):(t.firstEffect=t.lastEffect=r,r.nextEffect=null),r.effectTag=8)),i&&!s&&0!==(2&t.mode)&&(null===n&&!0!==t.memoizedProps.unstable_avoidThisFallback||0!==(1&$i.current)?0===zs&&(zs=3):(0!==zs&&3!==zs||(zs=4),0!==Vs&&null!==Ns&&(Hl(Ns,Ds),Gl(Ns,Vs)))),(i||s)&&(t.effectTag|=4);break;case 4:Vi();break;case 10:li(t);break;case 19:if(fa($i),null===(i=t.memoizedState))break;if(s=0!==(64&t.effectTag),null===(c=i.rendering)){if(s)ps(i,!1);else if(0!==zs||null!==n&&0!==(64&n.effectTag))for(n=t.child;null!==n;){if(null!==(c=Ki(n))){for(t.effectTag|=64,ps(i,!1),null!==(s=c.updateQueue)&&(t.updateQueue=s,t.effectTag|=4),null===i.lastEffect&&(t.firstEffect=null),t.lastEffect=i.lastEffect,i=r,s=t.child;null!==s;)n=i,(r=s).effectTag&=2,r.nextEffect=null,r.firstEffect=null,r.lastEffect=null,null===(c=r.alternate)?(r.childExpirationTime=0,r.expirationTime=n,r.child=null,r.memoizedProps=null,r.memoizedState=null,r.updateQueue=null,r.dependencies=null):(r.childExpirationTime=c.childExpirationTime,r.expirationTime=c.expirationTime,r.child=c.child,r.memoizedProps=c.memoizedProps,r.memoizedState=c.memoizedState,r.updateQueue=c.updateQueue,n=c.dependencies,r.dependencies=null===n?null:{expirationTime:n.expirationTime,firstContext:n.firstContext,responders:n.responders}),s=s.sibling;ma($i,1&$i.current|2),t=t.child;break e}n=n.sibling}}else{if(!s)if(null!==(n=Ki(c))){if(t.effectTag|=64,s=!0,null!==(r=n.updateQueue)&&(t.updateQueue=r,t.effectTag|=4),ps(i,!0),null===i.tail&&"hidden"===i.tailMode&&!c.alternate){null!==(t=t.lastEffect=i.lastEffect)&&(t.nextEffect=null);break}}else Ha()>i.tailExpiration&&1<r&&(t.effectTag|=64,s=!0,ps(i,!1),t.expirationTime=t.childExpirationTime=r-1);i.isBackwards?(c.sibling=t.child,t.child=c):(null!==(r=i.last)?r.sibling=c:t.child=c,i.last=c)}if(null!==i.tail){0===i.tailExpiration&&(i.tailExpiration=Ha()+500),r=i.tail,i.rendering=r,i.tail=r.sibling,i.lastEffect=t.lastEffect,r.sibling=null,i=$i.current,ma($i,i=s?1&i|2:1&i),t=r;break e}break;default:throw Error(o(156,t.tag))}t=null}if(i=Fs,1===Ds||1!==i.childExpirationTime){for(s=0,r=i.child;null!==r;)(n=r.expirationTime)>s&&(s=n),(c=r.childExpirationTime)>s&&(s=c),r=r.sibling;i.childExpirationTime=s}if(null!==t)return t;null!==e&&0===(2048&e.effectTag)&&(null===e.firstEffect&&(e.firstEffect=Fs.firstEffect),null!==Fs.lastEffect&&(null!==e.lastEffect&&(e.lastEffect.nextEffect=Fs.firstEffect),e.lastEffect=Fs.lastEffect),1<Fs.effectTag&&(null!==e.lastEffect?e.lastEffect.nextEffect=Fs:e.firstEffect=Fs,e.lastEffect=Fs))}else{if(null!==(t=ds(Fs)))return t.effectTag&=2047,t;null!==e&&(e.firstEffect=e.lastEffect=null,e.effectTag|=2048)}if(null!==(t=Fs.sibling))return t;Fs=e}while(null!==Fs);return 0===zs&&(zs=5),null}function El(e){var t=e.expirationTime;return t>(e=e.childExpirationTime)?t:e}function Tl(e){var t=Ga();return Ka(99,Sl.bind(null,e,t)),null}function Sl(e,t){do{ql()}while(null!==Xs);if(0!==(48&Ls))throw Error(o(327));var n=e.finishedWork,r=e.finishedExpirationTime;if(null===n)return null;if(e.finishedWork=null,e.finishedExpirationTime=0,n===e.current)throw Error(o(177));e.callbackNode=null,e.callbackExpirationTime=0,e.callbackPriority=90,e.nextKnownPendingLevel=0;var a=El(n);if(e.firstPendingTime=a,r<=e.lastSuspendedTime?e.firstSuspendedTime=e.lastSuspendedTime=e.nextKnownPendingLevel=0:r<=e.firstSuspendedTime&&(e.firstSuspendedTime=r-1),r<=e.lastPingedTime&&(e.lastPingedTime=0),r<=e.lastExpiredTime&&(e.lastExpiredTime=0),e===Ns&&(Fs=Ns=null,Ds=0),1<n.effectTag?null!==n.lastEffect?(n.lastEffect.nextEffect=n,a=n.firstEffect):a=n:a=n.firstEffect,null!==a){var i=Ls;Ls|=Ms,Os.current=null,er=Sn;var s=Qn();if(Jn(s)){if("selectionStart"in s)var l={start:s.selectionStart,end:s.selectionEnd};else e:{var u=(l=(l=s.ownerDocument)&&l.defaultView||window).getSelection&&l.getSelection();if(u&&0!==u.rangeCount){l=u.anchorNode;var c=u.anchorOffset,p=u.focusNode;u=u.focusOffset;try{l.nodeType,p.nodeType}catch(L){l=null;break e}var d=0,f=-1,m=-1,h=0,v=0,g=s,b=null;t:for(;;){for(var y;g!==l||0!==c&&3!==g.nodeType||(f=d+c),g!==p||0!==u&&3!==g.nodeType||(m=d+u),3===g.nodeType&&(d+=g.nodeValue.length),null!==(y=g.firstChild);)b=g,g=y;for(;;){if(g===s)break t;if(b===l&&++h===c&&(f=d),b===p&&++v===u&&(m=d),null!==(y=g.nextSibling))break;b=(g=b).parentNode}g=y}
2l=-1===f||-1===m?null:{start:f,end:m}}else l=null}l=l||{start:0,end:0}}else l=null;tr={focusedElem:s,selectionRange:l},Sn=!1,$s=a;do{try{Cl()}catch(L){if(null===$s)throw Error(o(330));Al($s,L),$s=$s.nextEffect}}while(null!==$s);$s=a;do{try{for(s=e,l=t;null!==$s;){var w=$s.effectTag;if(16&w&&He($s.stateNode,""),128&w){var k=$s.alternate;if(null!==k){var x=k.ref;null!==x&&("function"===typeof x?x(null):x.current=null)}}switch(1038&w){case 2:xs($s),$s.effectTag&=-3;break;case 6:xs($s),$s.effectTag&=-3,Ts($s.alternate,$s);break;case 1024:$s.effectTag&=-1025;break;case 1028:$s.effectTag&=-1025,Ts($s.alternate,$s);break;case 4:Ts($s.alternate,$s);break;case 8:Es(s,c=$s,l),ws(c)}$s=$s.nextEffect}}catch(L){if(null===$s)throw Error(o(330));Al($s,L),$s=$s.nextEffect}}while(null!==$s);if(x=tr,k=Qn(),w=x.focusedElem,l=x.selectionRange,k!==w&&w&&w.ownerDocument&&Yn(w.ownerDocument.documentElement,w)){null!==l&&Jn(w)&&(k=l.start,void 0===(x=l.end)&&(x=k),"selectionStart"in w?(w.selectionStart=k,w.selectionEnd=Math.min(x,w.value.length)):(x=(k=w.ownerDocument||document)&&k.defaultView||window).getSelection&&(x=x.getSelection(),c=w.textContent.length,s=Math.min(l.start,c),l=void 0===l.end?s:Math.min(l.end,c),!x.extend&&s>l&&(c=l,l=s,s=c),c=Kn(w,s),p=Kn(w,l),c&&p&&(1!==x.rangeCount||x.anchorNode!==c.node||x.anchorOffset!==c.offset||x.focusNode!==p.node||x.focusOffset!==p.offset)&&((k=k.createRange()).setStart(c.node,c.offset),x.removeAllRanges(),s>l?(x.addRange(k),x.extend(p.node,p.offset)):(k.setEnd(p.node,p.offset),x.addRange(k))))),k=[];for(x=w;x=x.parentNode;)1===x.nodeType&&k.push({element:x,left:x.scrollLeft,top:x.scrollTop});for("function"===typeof w.focus&&w.focus(),w=0;w<k.length;w++)(x=k[w]).element.scrollLeft=x.left,x.element.scrollTop=x.top}tr=null,Sn=!!er,er=null,e.current=n,$s=a;do{try{for(w=r;null!==$s;){var E=$s.effectTag;if(36&E){var T=$s.alternate;switch(x=w,(k=$s).tag){case 0:case 11:case 15:bs(16,32,k);break;case 1:var S=k.stateNode;if(4&k.effectTag)if(null===T)S.componentDidMount();else{var C=k.elementType===k.type?T.memoizedProps:ti(k.type,T.memoizedProps);S.componentDidUpdate(C,T.memoizedState,S.__reactInternalSnapshotBeforeUpdate)}var q=k.updateQueue;null!==q&&xi(0,q,S);break;case 3:var _=k.updateQueue;if(null!==_){if(s=null,null!==k.child)switch(k.child.tag){case 5:case 1:s=k.child.stateNode}xi(0,_,s)}break;case 5:var P=k.stateNode;null===T&&4&k.effectTag&&nr(k.type,k.memoizedProps)&&P.focus();break;case 6:case 4:case 12:case 19:case 17:case 20:case 21:break;case 13:if(null===k.memoizedState){var A=k.alternate;if(null!==A){var j=A.memoizedState;if(null!==j){var O=j.dehydrated;null!==O&&qt(O)}}}break;default:throw Error(o(163))}}if(128&E){k=void 0;var I=$s.ref;if(null!==I){var M=$s.stateNode;$s.tag,k=M,"function"===typeof I?I(k):I.current=k}}$s=$s.nextEffect}}catch(L){if(null===$s)throw Error(o(330));Al($s,L),$s=$s.nextEffect}}while(null!==$s);$s=null,Ra(),Ls=i}else e.current=n;if(Js)Js=!1,Xs=e,Zs=t;else for($s=a;null!==$s;)t=$s.nextEffect,$s.nextEffect=null,$s=t;if(0===(t=e.firstPendingTime)&&(Qs=null),1073741823===t?e===nl?tl++:(tl=0,nl=e):tl=0,"function"===typeof Il&&Il(n.stateNode,r),ul(e),Ks)throw Ks=!1,e=Ys,Ys=null,e;return 0!==(8&Ls)||Ja(),null}function Cl(){for(;null!==$s;){var e=$s.effectTag;0!==(256&e)&&gs($s.alternate,$s),0===(512&e)||Js||(Js=!0,Ya(97,(function(){return ql(),null}))),$s=$s.nextEffect}}function ql(){if(90!==Zs){var e=97<Zs?97:Zs;return Zs=90,Ka(e,_l)}}function _l(){if(null===Xs)return!1;var e=Xs;if(Xs=null,0!==(48&Ls))throw Error(o(331));var t=Ls;for(Ls|=Ms,e=e.current.firstEffect;null!==e;){try{var n=e;if(0!==(512&n.effectTag))switch(n.tag){case 0:case 11:case 15:bs(128,0,n),bs(0,64,n)}}catch(r){if(null===e)throw Error(o(330));Al(e,r)}n=e.nextEffect,e.nextEffect=null,e=n}return Ls=t,Ja(),!0}function Pl(e,t,n){gi(e,t=qs(e,t=fs(n,t),1073741823)),null!==(e=sl(e,1073741823))&&ul(e)}function Al(e,t){if(3===e.tag)Pl(e,e,t);else for(var n=e.return;null!==n;){if(3===n.tag){Pl(n,e,t);break}if(1===n.tag){var r=n.stateNode;if("function"===typeof n.type.getDerivedStateFromError||"function"===typeof r.componentDidCatch&&(null===Qs||!Qs.has(r))){gi(n,e=_s(n,e=fs(t,e),1073741823)),null!==(n=sl(n,1073741823))&&ul(n);break}}n=n.return}}function jl(e,t,n){var r=e.pingCache;null!==r&&r.delete(t),Ns===e&&Ds===n?4===zs||3===zs&&1073741823===Ws&&Ha()-Gs<500?ml(e,Ds):Hs=!0:Vl(e,n)&&(0!==(t=e.lastPingedTime)&&t<n||(e.lastPingedTime=n,e.finishedExpirationTime===n&&(e.finishedExpirationTime=0,e.finishedWork=null),ul(e)))}function Ol(e,t){var n=e.stateNode;null!==n&&n.delete(t),0===(t=0)&&(t=il(t=al(),e,null)),null!==(e=sl(e,t))&&ul(e)}Ps=function(e,t,n){var r=t.expirationTime;if(null!==e){var a=t.pendingProps;if(e.memoizedProps!==a||ga.current)Ho=!0;else{if(r<n){switch(Ho=!1,t.tag){case 3:es(t),Bo();break;case 5:if(Hi(t),4&t.mode&&1!==n&&a.hidden)return t.expirationTime=t.childExpirationTime=1,null;break;case 1:wa(t.type)&&Sa(t);break;case 4:Bi(t,t.stateNode.containerInfo);break;case 10:si(t,t.memoizedProps.value);break;case 13:if(null!==t.memoizedState)return 0!==(r=t.child.childExpirationTime)&&r>=n?is(e,t,n):(ma($i,1&$i.current),null!==(t=us(e,t,n))?t.sibling:null);ma($i,1&$i.current);break;case 19:if(r=t.childExpirationTime>
2=n,0!==(64&e.effectTag)){if(r)return ls(e,t,n);t.effectTag|=64}if(null!==(a=t.memoizedState)&&(a.rendering=null,a.tail=null),ma($i,$i.current),!r)return null}return us(e,t,n)}Ho=!1}}else Ho=!1;switch(t.expirationTime=0,t.tag){case 2:if(r=t.type,null!==e&&(e.alternate=null,t.alternate=null,t.effectTag|=2),e=t.pendingProps,a=ya(t,va.current),ci(t,n),a=mo(null,t,r,e,a,n),t.effectTag|=1,"object"===typeof a&&null!==a&&"function"===typeof a.render&&void 0===a.$$typeof){if(t.tag=1,ho(),wa(r)){var i=!0;Sa(t)}else i=!1;t.memoizedState=null!==a.state&&void 0!==a.state?a.state:null;var s=r.getDerivedStateFromProps;"function"===typeof s&&Ci(t,r,s,e),a.updater=qi,t.stateNode=a,a._reactInternalFiber=t,ji(t,r,e,n),t=Zo(null,t,r,!0,i,n)}else t.tag=0,Go(null,t,a,n),t=t.child;return t;case 16:if(a=t.elementType,null!==e&&(e.alternate=null,t.alternate=null,t.effectTag|=2),e=t.pendingProps,function(e){if(-1===e._status){e._status=0;var t=e._ctor;t=t(),e._result=t,t.then((function(t){0===e._status&&(t=t.default,e._status=1,e._result=t)}),(function(t){0===e._status&&(e._status=2,e._result=t)}))}}(a),1!==a._status)throw a._result;switch(a=a._result,t.type=a,i=t.tag=function(e){if("function"===typeof e)return Fl(e)?1:0;if(void 0!==e&&null!==e){if((e=e.$$typeof)===V)return 11;if(e===$)return 14}return 2}(a),e=ti(a,e),i){case 0:t=Jo(null,t,a,e,n);break;case 1:t=Xo(null,t,a,e,n);break;case 11:t=$o(null,t,a,e,n);break;case 14:t=Ko(null,t,a,ti(a.type,e),r,n);break;default:throw Error(o(306,a,""))}return t;case 0:return r=t.type,a=t.pendingProps,Jo(e,t,r,a=t.elementType===r?a:ti(r,a),n);case 1:return r=t.type,a=t.pendingProps,Xo(e,t,r,a=t.elementType===r?a:ti(r,a),n);case 3:if(es(t),null===(r=t.updateQueue))throw Error(o(282));if(a=null!==(a=t.memoizedState)?a.element:null,ki(t,r,t.pendingProps,null,n),(r=t.memoizedState.element)===a)Bo(),t=us(e,t,n);else{if((a=t.stateNode.hydrate)&&(No=or(t.stateNode.containerInfo.firstChild),Lo=t,a=Fo=!0),a)for(n=Fi(t,null,r,n),t.child=n;n;)n.effectTag=-3&n.effectTag|1024,n=n.sibling;else Go(e,t,r,n),Bo();t=t.child}return t;case 5:return Hi(t),null===e&&Ro(t),r=t.type,a=t.pendingProps,i=null!==e?e.memoizedProps:null,s=a.children,rr(r,a)?s=null:null!==i&&rr(r,i)&&(t.effectTag|=16),Qo(e,t),4&t.mode&&1!==n&&a.hidden?(t.expirationTime=t.childExpirationTime=1,t=null):(Go(e,t,s,n),t=t.child),t;case 6:return null===e&&Ro(t),null;case 13:return is(e,t,n);case 4:return Bi(t,t.stateNode.containerInfo),r=t.pendingProps,null===e?t.child=Ni(t,null,r,n):Go(e,t,r,n),t.child;case 11:return r=t.type,a=t.pendingProps,$o(e,t,r,a=t.elementType===r?a:ti(r,a),n);case 7:return Go(e,t,t.pendingProps,n),t.child;case 8:case 12:return Go(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,a=t.pendingProps,s=t.memoizedProps,si(t,i=a.value),null!==s){var l=s.value;if(0===(i=ea(l,i)?0:0|("function"===typeof r._calculateChangedBits?r._calculateChangedBits(l,i):1073741823))){if(s.children===a.children&&!ga.current){t=us(e,t,n);break e}}else for(null!==(l=t.child)&&(l.return=t);null!==l;){var u=l.dependencies;if(null!==u){s=l.child;for(var c=u.firstContext;null!==c;){if(c.context===r&&0!==(c.observedBits&i)){1===l.tag&&((c=hi(n,null)).tag=2,gi(l,c)),l.expirationTime<n&&(l.expirationTime=n),null!==(c=l.alternate)&&c.expirationTime<n&&(c.expirationTime=n),ui(l.return,n),u.expirationTime<n&&(u.expirationTime=n);break}c=c.next}}else s=10===l.tag&&l.type===t.type?null:l.child;if(null!==s)s.return=l;else for(s=l;null!==s;){if(s===t){s=null;break}if(null!==(l=s.sibling)){l.return=s.return,s=l;break}s=s.return}l=s}}Go(e,t,a.children,n),t=t.child}return t;case 9:return a=t.type,r=(i=t.pendingProps).children,ci(t,n),r=r(a=pi(a,i.unstable_observedBits)),t.effectTag|=1,Go(e,t,r,n),t.child;case 14:return i=ti(a=t.type,t.pendingProps),Ko(e,t,a,i=ti(a.type,i),r,n);case 15:return Yo(e,t,t.type,t.pendingProps,r,n);case 17:return r=t.type,a=t.pendingProps,a=t.elementType===r?a:ti(r,a),null!==e&&(e.alternate=null,t.alternate=null,t.effectTag|=2),t.tag=1,wa(r)?(e=!0,Sa(t)):e=!1,ci(t,n),Pi(t,r,a),ji(t,r,a,n),Zo(null,t,r,!0,e,n);
vendor: 6,824 bytes, line 2
2case 19:return ls(e,t,n)}throw Error(o(156,t.tag))};var Il=null,Ml=null;function Ll(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.effectTag=0,this.lastEffect=this.firstEffect=this.nextEffect=null,this.childExpirationTime=this.expirationTime=0,this.alternate=null}function Nl(e,t,n,r){return new Ll(e,t,n,r)}function Fl(e){return!(!(e=e.prototype)||!e.isReactComponent)}function Dl(e,t){var n=e.alternate;return null===n?((n=Nl(e.tag,t,e.key,e.mode)).elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.effectTag=0,n.nextEffect=null,n.firstEffect=null,n.lastEffect=null),n.childExpirationTime=e.childExpirationTime,n.expirationTime=e.expirationTime,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=null===t?null:{expirationTime:t.expirationTime,firstContext:t.firstContext,responders:t.responders},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function zl(e,t,n,r,a,i){var s=2;if(r=e,"function"===typeof e)Fl(e)&&(s=1);else if("string"===typeof e)s=5;else e:switch(e){case D:return Rl(n.children,a,i,t);case B:s=8,a|=7;break;case z:s=8,a|=1;break;case R:return(e=Nl(12,n,t,8|a)).elementType=R,e.type=R,e.expirationTime=i,e;case H:return(e=Nl(13,n,t,a)).type=H,e.elementType=H,e.expirationTime=i,e;case G:return(e=Nl(19,n,t,a)).elementType=G,e.expirationTime=i,e;default:if("object"===typeof e&&null!==e)switch(e.$$typeof){case W:s=10;break e;case U:s=9;break e;case V:s=11;break e;case $:s=14;break e;case K:s=16,r=null;break e}throw Error(o(130,null==e?e:typeof e,""))}return(t=Nl(s,n,t,a)).elementType=e,t.type=r,t.expirationTime=i,t}function Rl(e,t,n,r){return(e=Nl(7,e,r,t)).expirationTime=n,e}function Wl(e,t,n){return(e=Nl(6,e,null,t)).expirationTime=n,e}function Ul(e,t,n){return(t=Nl(4,null!==e.children?e.children:[],e.key,t)).expirationTime=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Bl(e,t,n){this.tag=t,this.current=null,this.containerInfo=e,this.pingCache=this.pendingChildren=null,this.finishedExpirationTime=0,this.finishedWork=null,this.timeoutHandle=-1,this.pendingContext=this.context=null,this.hydrate=n,this.callbackNode=null,this.callbackPriority=90,this.lastExpiredTime=this.lastPingedTime=this.nextKnownPendingLevel=this.lastSuspendedTime=this.firstSuspendedTime=this.firstPendingTime=0}function Vl(e,t){var n=e.firstSuspendedTime;return e=e.lastSuspendedTime,0!==n&&n>=t&&e<=t}function Hl(e,t){var n=e.firstSuspendedTime,r=e.lastSuspendedTime;n<t&&(e.firstSuspendedTime=t),(r>t||0===n)&&(e.lastSuspendedTime=t),t<=e.lastPingedTime&&(e.lastPingedTime=0),t<=e.lastExpiredTime&&(e.lastExpiredTime=0)}function Gl(e,t){t>e.firstPendingTime&&(e.firstPendingTime=t);var n=e.firstSuspendedTime;0!==n&&(t>=n?e.firstSuspendedTime=e.lastSuspendedTime=e.nextKnownPendingLevel=0:t>=e.lastSuspendedTime&&(e.lastSuspendedTime=t+1),t>e.nextKnownPendingLevel&&(e.nextKnownPendingLevel=t))}function $l(e,t){var n=e.lastExpiredTime;(0===n||n>t)&&(e.lastExpiredTime=t)}function Kl(e,t,n,r){var a=t.current,i=al(),s=Ti.suspense;i=il(i,a,s);e:if(n){t:{if(nt(n=n._reactInternalFiber)!==n||1!==n.tag)throw Error(o(170));var l=n;do{switch(l.tag){case 3:l=l.stateNode.context;break t;case 1:if(wa(l.type)){l=l.stateNode.__reactInternalMemoizedMergedChildContext;break t}}l=l.return}while(null!==l);throw Error(o(171))}if(1===n.tag){var u=n.type;if(wa(u)){n=Ta(n,u,l);break e}}n=l}else n=ha;return null===t.context?t.context=n:t.pendingContext=n,(t=hi(i,s)).payload={element:e},null!==(r=void 0===r?null:r)&&(t.callback=r),gi(a,t),ol(a,i),i}function Yl(e){return(e=e.current).child?(e.child.tag,e.child.stateNode):null}function Ql(e,t){null!==(e=e.memoizedState)&&null!==e.dehydrated&&e.retryTime<t&&(e.retryTime=t)}function Jl(e,t){Ql(e,t),(e=e.alternate)&&Ql(e,t)}function Xl(e,t,n){var r=new Bl(e,t,n=null!=n&&!0===n.hydrate),a=Nl(3,null,null,2===t?7:1===t?3:0);r.current=a,a.stateNode=r,e[pr]=r.current,n&&0!==t&&function(e){var t=Ln(e);gt.forEach((function(n){Nn(n,e,t)})),bt.forEach((function(n){Nn(n,e,t)}))}(9===e.nodeType?e:e.ownerDocument),this._internalRoot=r}function Zl(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType&&(8!==e.nodeType||" react-mount-point-unstable "!==e.nodeValue))}function eu(e,t,n,r,a){var i=n._reactRootContainer;if(i){var o=i._internalRoot;if("function"===typeof a){var s=a;a=function(){var e=Yl(o);s.call(e)}}Kl(t,o,e,a)}else{if(i=n._reactRootContainer=function(e,t){if(t||(t=!(!(t=e?9===e.nodeType?e.documentElement:e.firstChild:null)||1!==t.nodeType||!t.hasAttribute("data-reactroot"))),!t)for(var n;n=e.lastChild;)e.removeChild(n);return new Xl(e,0,t?{hydrate:!0}:void 0)}(n,r),o=i._internalRoot,"function"===typeof a){var l=a;a=function(){var e=Yl(o);l.call(e)}}fl((function(){Kl(t,o,e,a)}))}return Yl(o)}function tu(e,t,n){var r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:F,key:null==r?null:""+r,children:e,containerInfo:t,implementation:n}}function nu(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!Zl(t))throw Error(o(200));return tu(e,t,null,n)}Xl.prototype.render=function(e,t){Kl(e,this._internalRoot,null,void 0===t?null:t)},Xl.prototype.unmount=function(e){var t=this._internalRoot,n=void 0===e?null:e,r=t.containerInfo;Kl(null,t,null,(function(){r[pr]=null,null!==n&&n()}))},ot=function(e){if(13===e.tag){var t=ei(al(),150,100);ol(e,t),Jl(e,t)}},st=function(e){if(13===e.tag){al();var t=Za++;ol(e,t),Jl(e,t)}},lt=function(e){if(13===e.tag){var t=al();ol(e,t=il(t,e,null)),Jl(e,t)}},ee=function(e,t,n){switch(t){case"input":if(Pe(e,n),t=n.name,"radio"===n.type&&null!=t){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll("input[name="+JSON.stringify(""+t)+'][type="radio"]'),t=0;t<n.length;t++){var r=n[t];if(r!==e&&r.form===e.form){var a=hr(r);if(!a)throw Error(o(90));Se(r),Pe(r,a)}}}break;case"textarea":Ne(e,n);break;case"select":null!=(t=n.value)&&Ie(e,!!n.multiple,t,!1)}},oe=dl,se=function(e,t,n,r){var a=Ls;Ls|=4;try{return Ka(98,e.bind(null,t,n,r))}finally{0===(Ls=a)&&Ja()}},le=function(){0===(49&Ls)&&(function(){if(null!==el){var e=el;el=null,e.forEach((function(e,t){$l(t,e),ul(t)})),Ja()}}(),ql())},ue=function(e,t){var n=Ls;Ls|=2;try{return e(t)}finally{0===(Ls=n)&&Ja()}};var ru={createPortal:nu,findDOMNode:function(e){if(null==e)return null;if(1===e.nodeType)return e;var t=e._reactInternalFiber;if(void 0===t){if("function"===typeof e.render)throw Error(o(188));throw Error(o(268,Object.keys(e)))}return e=null===(e=it(t))?null:e.stateNode}
2,hydrate:function(e,t,n){if(!Zl(t))throw Error(o(200));return eu(null,e,t,!0,n)},render:function(e,t,n){if(!Zl(t))throw Error(o(200));return eu(null,e,t,!1,n)},unstable_renderSubtreeIntoContainer:function(e,t,n,r){if(!Zl(n))throw Error(o(200));if(null==e||void 0===e._reactInternalFiber)throw Error(o(38));return eu(e,t,n,!1,r)},unmountComponentAtNode:function(e){if(!Zl(e))throw Error(o(40));return!!e._reactRootContainer&&(fl((function(){eu(null,null,e,!1,(function(){e._reactRootContainer=null,e[pr]=null}))})),!0)},unstable_createPortal:function(){return nu.apply(void 0,arguments)},unstable_batchedUpdates:dl,flushSync:function(e,t){if(0!==(48&Ls))throw Error(o(187));var n=Ls;Ls|=1;try{return Ka(99,e.bind(null,t))}finally{Ls=n,Ja()}},__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:{Events:[fr,mr,hr,j.injectEventPluginsByName,d,Mt,function(e){q(e,It)},ae,ie,jn,A,ql,{current:!1}]}};!function(e){var t=e.findFiberByHostInstance;(function(e){if("undefined"===typeof __REACT_DEVTOOLS_GLOBAL_HOOK__)return!1;var t=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(t.isDisabled||!t.supportsFiber)return!0;try{var n=t.inject(e);Il=function(e){try{t.onCommitFiberRoot(n,e,void 0,64===(64&e.current.effectTag))}catch(r){}},Ml=function(e){try{t.onCommitFiberUnmount(n,e)}catch(r){}}}catch(r){}})(a({},e,{overrideHookState:null,overrideProps:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:I.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return null===(e=it(e))?null:e.stateNode},findFiberByHostInstance:function(e){return t?t(e):null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null}))}({findFiberByHostInstance:dr,bundleType:0,version:"16.12.0",rendererPackageName:"react-dom"});var au={default:ru},iu=au&&ru||au;e.exports=iu.default||iu},164:function(e,t,n){"use strict";!function e(){if("undefined"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"===typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}(),e.exports=n(463)},372:function(e,t){"use strict";var n="function"===typeof Symbol&&Symbol.for,r=n?Symbol.for("react.element"):60103,a=n?Symbol.for("react.portal"):60106,i=n?Symbol.for("react.fragment"):60107,o=n?Symbol.for("react.strict_mode"):60108,s=n?Symbol.for("react.profiler"):60114,l=n?Symbol.for("react.provider"):60109,u=n?Symbol.for("react.context"):60110,c=n?Symbol.for("react.async_mode"):60111,p=n?Symbol.for("react.concurrent_mode"):60111,d=n?Symbol.for("react.forward_ref"):60112,f=n?Symbol.for("react.suspense"):60113,m=n?Symbol.for("react.suspense_list"):60120,h=n?Symbol.for("react.memo"):60115,v=n?Symbol.for("react.lazy"):60116,g=n?Symbol.for("react.block"):60121,b=n?Symbol.for("react.fundamental"):60117,y=n?Symbol.for("react.responder"):60118,w=n?Symbol.for("react.scope"):60119;function k(e){if("object"===typeof e&&null!==e){var t=e.$$typeof;switch(t){case r:switch(e=e.type){case c:case p:case i:case s:case o:case f:return e;default:switch(e=e&&e.$$typeof){case u:case d:case v:case h:case l:return e;default:return t}}case a:return t}}}function x(e){return k(e)===p}t.AsyncMode=c,t.ConcurrentMode=p,t.ContextConsumer=u,t.ContextProvider=l,t.Element=r,t.ForwardRef=d,t.Fragment=i,t.Lazy=v,t.Memo=h,t.Portal=a,t.Profiler=s,t.StrictMode=o,t.Suspense=f,t.isAsyncMode=function(e){return x(e)||k(e)===c},t.isConcurrentMode=x,t.isContextConsumer=function(e){return k(e)===u},t.isContextProvider=function(e){return k(e)===l},t.isElement=function(e){return"object"===typeof e&&null!==e&&e.$$typeof===r},t.isForwardRef=function(e){return k(e)===d},t.isFragment=function(e){return k(e)===i},t.isLazy=function(e){return k(e)===v},t.isMemo=function(e){return k(e)===h},t.isPortal=function(e){return k(e)===a},t.isProfiler=function(e){return k(e)===s},t.isStrictMode=function(e){return k(e)===o},t.isSuspense=function(e){return k(e)===f},t.isValidElementType=function(e){return"string"===typeof e||"function"===typeof e||e===i||e===p||e===s||e===o||e===f||e===m||"object"===typeof e&&null!==e&&(e.$$typeof===v||e.$$typeof===h||e.$$typeof===l||e.$$typeof===u||e.$$typeof===d||e.$$typeof===b||e.$$typeof===y||e.$$typeof===w||e.$$typeof===g)},t.typeOf=k},441:function(e,t,n){"use strict";e.exports=n(372)},174:function(e,t,n){!function(e,t){"use strict";var r="default"in t?t.default:t;function a(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(){return(o=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function s(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable})))),r.forEach((function(t){i(e,t,n[t])}))}return e}function l(e){return(l=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function u(e,t){return(u=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function c(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}function p(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}var d="undefined"!=typeof window?window:"undefined"!=typeof n.g?n.g:"undefined"!=typeof self?self:{},f="Expected a function",m=NaN,h="[object Symbol]",v=/^\s+|\s+$/g,g=/^[-+]0x[0-9a-f]+$/i,b=/^0b[01]+$/i,y=/^0o[0-7]+$/i,w=parseInt,k="object"==typeof d&&d&&d.Object===Object&&d,x="object"==typeof self&&self&&self.Object===Object&&self,E=k||x||Function("return this")(),T=Object.prototype.toString,S=Math.max,C=Math.min,q=function(){return E.Date.now()};function _(e,t,n){var r,a,i,o,s,l,u=0,c=!1,p=!1,d=!0;if("function"!=typeof e)throw new TypeError(f);function m(t){var n=r,i=a;return r=a=void 0,u=t,o=e.apply(i,n)}function h(e){var n=e-l;return void 0===l||n>=t||n<0||p&&e-u>=i}function v(){var e=q();if(h(e))return g(e);s=setTimeout(v,function(e){var n=t-(e-l);return p?C(n,i-(e-u)):n}(e))}function g(e){return s=void 0,d&&r?m(e):(r=a=void 0,o)}function b(){var e=q(),n=h(e);if(r=arguments,a=this,l=e,n){if(void 0===s)return function(e){return u=e,s=setTimeout(v,t),c?m(e):o}(l);if(p)return s=setTimeout(v,t),m(l)}return void 0===s&&(s=setTimeout(v,t)),o}return t=A(t)||0,P(n)&&(c=!!n.leading,i=(p="maxWait"in n)?S(A(n.maxWait)||0,t):i,d="trailing"in n?!!n.trailing:d),b.cancel=function(){void 0!==s&&clearTimeout(s),u=0,r=l=a=s=void 0},b.flush=function(){return void 0===s?o:g(q())},b}function P(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function A(e){if("number"==typeof e)return e;if(function(e){return"symbol"==typeof e||function(e){return!!e&&"object"==typeof e}
2(e)&&T.call(e)==h}(e))return m;if(P(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=P(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(v,"");var n=b.test(e);return n||y.test(e)?w(e.slice(2),n?2:8):g.test(e)?m:+e}var j=function(e,t,n){var r=!0,a=!0;if("function"!=typeof e)throw new TypeError(f);return P(n)&&(r="leading"in n?!!n.leading:r,a="trailing"in n?!!n.trailing:a),_(e,t,{leading:r,maxWait:t,trailing:a})},O=function(e,t){for(var n in e)if(!(n in t))return!0;for(var r in t)if(e[r]!==t[r])return!0;return!1},I=r.createContext({fallbackWidth:null,fallbackHeight:null,forceFallback:!1,throttle:200});I.displayName="SizesContext";var M=function(e){return e.width<480},L=function(e){return e.width>=1024},N=function(e){return!L(e)},F=Object.freeze({isMobile:M,isTablet:function(e){var t=e.width;return t>=480&&t<1024},isDesktop:L,isGtMobile:function(e){return!M(e)},isGtTablet:function(e){return L(e)},isStTablet:function(e){return M(e)},isStDesktop:N,isTabletAndGreater:function(e){return!M(e)},isTabletAndSmaller:function(e){return!N(e)}}),D=function(e){return function(e){var t=e.fallbackWidth,n=void 0===t?null:t,r=e.fallbackHeight,a=void 0===r?null:r,i=e.forceFallback,o=void 0!==i&&i,s="undefined"!=typeof window;return{width:s&&!o?window.innerWidth:n,height:s&&!o?window.innerHeight:a,canUseDOM:s}}({fallbackHeight:e.fallbackHeight,fallbackWidth:e.fallbackWidth,forceFallback:e.forceFallback})},z=Object.assign((function(){for(var e=arguments.length,n=new Array(e),d=0;d<e;d++)n[d]=arguments[d];return function(e){var d,f=function(e,t){return n.map((function(n){return n(e,t)})).reduce((function(e,t){return s({},e,t)}),{})},m=function(n){function s(e){var t,n,r;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,s),n=this,r=l(s).call(this,e),t=!r||"object"!=typeof r&&"function"!=typeof r?p(n):r,i(p(p(t)),"dispatchSizes",(function(){var e=t.getPropsToPass();O(e,t.state.propsToPass)&&t.setState({propsToPass:e})})),i(p(p(t)),"throttledDispatchSizes",j(t.dispatchSizes,t.props.throttle)),t.getPropsToPass=function(){return f(D(t.props),t.props)},t.state={propsToPass:t.getPropsToPass()},t}var d,m,h;return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&u(e,t)}(s,t.PureComponent),d=s,h=[{key:"getDerivedStateFromProps",value:function(e,t){var n=f(D(e),e);return O(n,t.propsToPass)?{propsToPass:n}:null}}],(m=[{key:"componentDidMount",value:function(){window.addEventListener("resize",this.throttledDispatchSizes),this.dispatchSizes()}},{key:"componentWillUnmount",value:function(){this.throttledDispatchSizes.cancel(),window.removeEventListener("resize",this.throttledDispatchSizes)}},{key:"render",value:function(){var t=this.props,n=(t.fallbackHeight,t.fallbackWidth,t.forceFallback,c(t,["fallbackHeight","fallbackWidth","forceFallback"]));return r.createElement(e,o({},n,this.state.propsToPass))}}])&&a(d.prototype,m),h&&a(d,h),s}();return i(m,"displayName","withSizes(".concat((d=e).displayName||d.name||("string"==typeof d&&d.length>0?d:"Unknown"),")")),function(e){return r.createElement(I.Consumer,null,(function(t){return r.createElement(m,o({},t,e))}))}}}),s({},F)),R=function(e){var t=e.children,n=e.render,r=c(e,["children","render"]),a=t||n;return a?a(r):null};e.withSizes=z,e.SizesProvider=function(e){var t=e.config,n=e.children;return r.createElement(I.Provider,{value:t},n)},e.createSizedComponent=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return z(t)(R)},e.presets=F,e.default=z,Object.defineProperty(e,"__esModule",{value:!0})}(t,n(791))},117:function(e,t,n){"use strict";var r=n(725),a="function"===typeof Symbol&&Symbol.for,i=a?Symbol.for("react.element"):60103,o=a?Symbol.for("react.portal"):60106,s=a?Symbol.for("react.fragment"):60107,l=a?Symbol.for("react.strict_mode"):60108,u=a?Symbol.for("react.profiler"):60114,c=a?Symbol.for("react.provider"):60109,p=a?Symbol.for("react.context"):60110,d=a?Symbol.for("react.forward_ref"):60112,f=a?Symbol.for("react.suspense"):60113;a&&Symbol.for("react.suspense_list");var m=a?Symbol.for("react.memo"):60115,h=a?Symbol.for("react.lazy"):60116;a&&Symbol.for("react.fundamental"),a&&Symbol.for("react.responder"),a&&Symbol.for("react.scope");var v="function"===typeof Symbol&&Symbol.iterator;function g(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var b={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},y={};function w(e,t,n){this.props=e,this.context=t,this.refs=y,this.updater=n||b}function k(){}function x(e,t,n){this.props=e,this.context=t,this.refs=y,this.updater=n||b}w.prototype.isReactComponent={},w.prototype.setState=function(e,t){if("object"!==typeof e&&"function"!==typeof e&&null!=e)throw Error(g(85));this.updater.enqueueSetState(this,e,t,"setState")},w.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},k.prototype=w.prototype;var E=x.prototype=new k;E.constructor=x,r(E,w.prototype),E.isPureReactComponent=!0;var T={current:null},S={current:null},C=Object.prototype.hasOwnProperty,q={key:!0,ref:!0,__self:!0,__source:!0};function _(e,t,n){var r,a={},o=null,s=null;if(null!=t)for(r in void 0!==t.ref&&(s=t.ref),void 0!==t.key&&(o=""+t.key),t)C.call(t,r)&&!q.hasOwnProperty(r)&&(a[r]=t[r]);var l=arguments.length-2;if(1===l)a.children=n;else if(1<l){for(var u=Array(l),c=0;c<l;c++)u[c]=arguments[c+2];a.children=u}if(e&&e.defaultProps)for(r in l=e.defaultProps)void 0===a[r]&&(a[r]=l[r]);return{$$typeof:i,type:e,key:o,ref:s,props:a,_owner:S.current}}function P(e){return"object"===typeof e&&null!==e&&e.$$typeof===i}var A=/\/+/g,j=[];function O(e,t,n,r){if(j.length){var a=j.pop();return a.result=e,a.keyPrefix=t,a.func=n,a.context=r,a.count=0,a}return{result:e,keyPrefix:t,func:n,context:r,count:0}}function I(e){e.result=null,e.keyPrefix=null,e.func=null,e.context=null,e.count=0,10>j.length&&j.push(e)}function M(e,t,n,r){var a=typeof e;"undefined"!==a&&"boolean"!==a||(e=null);var s=!1;if(null===e)s=!0;else switch(a){case"string":case"number":s=!0;break;case"object":switch(e.$$typeof){case i:case o:s=!0}}
2if(s)return n(r,e,""===t?"."+N(e,0):t),1;if(s=0,t=""===t?".":t+":",Array.isArray(e))for(var l=0;l<e.length;l++){var u=t+N(a=e[l],l);s+=M(a,u,n,r)}else if(null===e||"object"!==typeof e?u=null:u="function"===typeof(u=v&&e[v]||e["@@iterator"])?u:null,"function"===typeof u)for(e=u.call(e),l=0;!(a=e.next()).done;)s+=M(a=a.value,u=t+N(a,l++),n,r);else if("object"===a)throw n=""+e,Error(g(31,"[object Object]"===n?"object with keys {"+Object.keys(e).join(", ")+"}":n,""));return s}function L(e,t,n){return null==e?0:M(e,"",t,n)}function N(e,t){return"object"===typeof e&&null!==e&&null!=e.key?function(e){var t={"=":"=0",":":"=2"};return"$"+(""+e).replace(/[=:]/g,(function(e){return t[e]}))}(e.key):t.toString(36)}function F(e,t){e.func.call(e.context,t,e.count++)}function D(e,t,n){var r=e.result,a=e.keyPrefix;e=e.func.call(e.context,t,e.count++),Array.isArray(e)?z(e,r,n,(function(e){return e})):null!=e&&(P(e)&&(e=function(e,t){return{$$typeof:i,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}(e,a+(!e.key||t&&t.key===e.key?"":(""+e.key).replace(A,"$&/")+"/")+n)),r.push(e))}function z(e,t,n,r,a){var i="";null!=n&&(i=(""+n).replace(A,"$&/")+"/"),L(e,D,t=O(t,i,r,a)),I(t)}function R(){var e=T.current;if(null===e)throw Error(g(321));return e}var W={Children:{map:function(e,t,n){if(null==e)return e;var r=[];return z(e,r,null,t,n),r},forEach:function(e,t,n){if(null==e)return e;L(e,F,t=O(null,null,t,n)),I(t)},count:function(e){return L(e,(function(){return null}),null)},toArray:function(e){var t=[];return z(e,t,null,(function(e){return e})),t},only:function(e){if(!P(e))throw Error(g(143));return e}},createRef:function(){return{current:null}},Component:w,PureComponent:x,createContext:function(e,t){return void 0===t&&(t=null),(e={$$typeof:p,_calculateChangedBits:t,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null}).Provider={$$typeof:c,_context:e},e.Consumer=e},forwardRef:function(e){return{$$typeof:d,render:e}},lazy:function(e){return{$$typeof:h,_ctor:e,_status:-1,_result:null}},memo:function(e,t){return{$$typeof:m,type:e,compare:void 0===t?null:t}},useCallback:function(e,t){return R().useCallback(e,t)},useContext:function(e,t){return R().useContext(e,t)},useEffect:function(e,t){return R().useEffect(e,t)},useImperativeHandle:function(e,t,n){return R().useImperativeHandle(e,t,n)},useDebugValue:function(){},useLayoutEffect:function(e,t){return R().useLayoutEffect(e,t)},useMemo:function(e,t){return R().useMemo(e,t)},useReducer:function(e,t,n){return R().useReducer(e,t,n)},useRef:function(e){return R().useRef(e)},useState:function(e){return R().useState(e)},Fragment:s,Profiler:u,StrictMode:l,Suspense:f,createElement:_,cloneElement:function(e,t,n){if(null===e||void 0===e)throw Error(g(267,e));var a=r({},e.props),o=e.key,s=e.ref,l=e._owner;if(null!=t){if(void 0!==t.ref&&(s=t.ref,l=S.current),void 0!==t.key&&(o=""+t.key),e.type&&e.type.defaultProps)var u=e.type.defaultProps;for(c in t)C.call(t,c)&&!q.hasOwnProperty(c)&&(a[c]=void 0===t[c]&&void 0!==u?u[c]:t[c])}var c=arguments.length-2;if(1===c)a.children=n;else if(1<c){u=Array(c);for(var p=0;p<c;p++)u[p]=arguments[p+2];a.children=u}return{$$typeof:i,type:e.type,key:o,ref:s,props:a,_owner:l}},createFactory:function(e){var t=_.bind(null,e);return t.type=e,t},isValidElement:P,version:"16.12.0",__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:{ReactCurrentDispatcher:T,ReactCurrentBatchConfig:{suspense:null},ReactCurrentOwner:S,IsSomeRendererActing:{current:!1},assign:r}},U={default:W},B=U&&W||U;e.exports=B.default||B},791:function(e,t,n){"use strict";e.exports=n(117)},813:function(e,t){"use strict";var n,r,a,i,o;if(Object.defineProperty(t,"__esModule",{value:!0}),"undefined"===typeof window||"function"!==typeof MessageChannel){var s=null,l=null,u=function e(){if(null!==s)try{var n=t.unstable_now();s(!0,n),s=null}catch(r){throw setTimeout(e,0),r}},c=Date.now();t.unstable_now=function(){return Date.now()-c},n=function(e){null!==s?setTimeout(n,0,e):(s=e,setTimeout(u,0))},r=function(e,t){l=setTimeout(e,t)},a=function(){clearTimeout(l)},i=function(){return!1},o=t.unstable_forceFrameRate=function(){}}else{var p=window.performance,d=window.Date,f=window.setTimeout,m=window.clearTimeout;if("undefined"!==typeof console){var h=window.cancelAnimationFrame;"function"!==typeof window.requestAnimationFrame&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills"),"function"!==typeof h&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills")}if("object"===typeof p&&"function"===typeof p.now)t.unstable_now=function(){return p.now()};else{var v=d.now();t.unstable_now=function(){return d.now()-v}}var g=!1,b=null,y=-1,w=5,k=0;i=function(){return t.unstable_now()>=k},o=function(){},t.unstable_forceFrameRate=function(e){0>e||125<e?console.error("forceFrameRate takes a positive int between 0 and 125, forcing framerates higher than 125 fps is not unsupported"):w=0<e?Math.floor(1e3/e):5};var x=new MessageChannel,E=x.port2;x.port1.onmessage=function(){if(null!==b){var e=t.unstable_now();k=e+w;try{b(!0,e)?E.postMessage(null):(g=!1,b=null)}catch(n){throw E.postMessage(null),n}}else g=!1},n=function(e){b=e,g||(g=!0,E.postMessage(null))},r=function(e,n){y=f((function(){e(t.unstable_now())}),n)},a=function(){m(y),y=-1}}function T(e,t){var n=e.length;e.push(t);e:for(;;){var r=Math.floor((n-1)/2),a=e[r];if(!(void 0!==a&&0<q(a,t)))break e;e[r]=t,e[n]=a,n=r}}function S(e){return void 0===(e=e[0])?null:e}function C(e){var t=e[0];if(void 0!==t){var n=e.pop();if(n!==t){e[0]=n;e:for(var r=0,a=e.length;r<a;){var i=2*(r+1)-1,o=e[i],s=i+1,l=e[s];if(void 0!==o&&0>q(o,n))void 0!==l&&0>q(l,o)?(e[r]=l,e[s]=n,r=s):(e[r]=o,e[i]=n,r=i);else{if(!(void 0!==l&&0>q(l,n)))break e;e[r]=l,e[s]=n,r=s}}}return t}return null}function q(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}var _=[],P=[],A=1,j=null,O=3,I=!1,M=!1,L=!1;function N(e){for(var t=S(P);null!==t;){if(null===t.callback)C(P);else{if(!(t.startTime<=e))break;C(P),t.sortIndex=t.expirationTime,T(_,t)}t=S(P)}}function F(e){if(L=!1,N(e),!M)if(null!==S(_))M=!0,n(D);else{var t=S(P);null!==t&&r(F,t.startTime-e)}}function D(e,n){M=!1,L&&(L=!1,a()),I=!0;var o=O;try{for(N(n),j=S(_);null!==j&&(!(j.expirationTime>n)||e&&!i());){var s=j.callback;if(null!==s){j.callback=null,O=j.priorityLevel;var l=s(j.expirationTime<=n);n=t.unstable_now(),"function"===typeof l?j.callback=l:j===S(_)&&C(_),N(n)}else C(_);j=S(_)}if(null!==j)var u=!0;else{var c=S(P);null!==c&&r(F,c.startTime-n),u=!1}return u}finally{j=null,O=o,I=!1}}function z(e){switch(e){case 1:return-1;case 2:return 250;case 5:return 1073741823;case 4:return 1e4;default:return 5e3}}var R=o;t.unstable_ImmediatePriority=1,t.unstable_UserBlockingPriority=2,t.unstable_NormalPriority=3,t.unstable_IdlePriority=5,t.unstable_LowPriority=4,t.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=O;O=e;try{return t()}finally{O=n}},t.unstable_next=function(e){switch(O){case 1:case 2:case 3:var t=3;break;default:t=O}var n=O;O=t;try{return e()}finally{O=n}},t.unstable_scheduleCallback=function(e,i,o){var s=t.unstable_now();if("object"===typeof o&&null!==o){var l=o.delay;l="number"===typeof l&&0<l?s+l:s,o="number"===typeof o.timeout?o.timeout:z(e)}else o=z(e),l=s;return e={id:A++,callback:i,priorityLevel:e,startTime:l,expirationTime:o=l+o,sortIndex:-1},l>s?(e.sortIndex=l,T(P,e),null===S(_)&&e===S(P)&&(L?a():L=!0,r(F,l-s))):(e.sortIndex=o,T(_,e),M||I||(M=!0,n(D))),e},t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_wrapCallback=function(e){var t=O;return function(){var n=O;O=t;try{return e.apply(this,arguments)}finally{O=n}}},t.unstable_getCurrentPriorityLevel=function(){return O},t.unstable_shouldYield=function(){var e=t.unstable_now();N(e);var n=S(_);return n!==j&&null!==j&&null!==n&&null!==n.callback&&n.startTime<=e&&n.expirationTime<j.expirationTime||i()},t.unstable_requestPaint=R,t.unstable_continueExecution=function(){M||I||(M=!0,n(D))},t.unstable_pauseExecution=function(){},t.unstable_getFirstCallbackNode=function(){return S(_)},t.unstable_Profiling=null},296:function(e,t,n){"use strict";e.exports=n(813)}},t={};function n(r){var a=t[r];if(void 0!==a)return a.exports;var i=t[r]={id:r,loaded:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.loaded=!0,i.exports}
2n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,{a:t}),t},n.d=function(e,t){for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}(),n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.nmd=function(e){return e.paths=[],e.children||(e.children=[]),e},function(){"use strict";var e=n(791),t=n.n(e),r=n(164),a=n.n(r);function i(e,t){return i=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},i(e,t)}function o(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,i(e,t)}function s(){return s=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},s.apply(this,arguments)}function l(e){return"/"===e.charAt(0)}function u(e,t){for(var n=t,r=n+1,a=e.length;r<a;n+=1,r+=1)e[n]=e[r];e.pop()}var c=function(e,t){void 0===t&&(t="");var n,r=e&&e.split("/")||[],a=t&&t.split("/")||[],i=e&&l(e),o=t&&l(t),s=i||o;if(e&&l(e)?a=r:r.length&&(a.pop(),a=a.concat(r)),!a.length)return"/";if(a.length){var c=a[a.length-1];n="."===c||".."===c||""===c}else n=!1;for(var p=0,d=a.length;d>=0;d--){var f=a[d];"."===f?u(a,d):".."===f?(u(a,d),p++):p&&(u(a,d),p--)}if(!s)for(;p--;p)a.unshift("..");!s||""===a[0]||a[0]&&l(a[0])||a.unshift("");var m=a.join("/");return n&&"/"!==m.substr(-1)&&(m+="/"),m};function p(e){return e.valueOf?e.valueOf():Object.prototype.valueOf.call(e)}var d=function e(t,n){if(t===n)return!0;if(null==t||null==n)return!1;if(Array.isArray(t))return Array.isArray(n)&&t.length===n.length&&t.every((function(t,r){return e(t,n[r])}));if("object"===typeof t||"object"===typeof n){var r=p(t),a=p(n);return r!==t||a!==n?e(r,a):Object.keys(Object.assign({},t,n)).every((function(r){return e(t[r],n[r])}))}return!1},f="Invariant failed";var m=function(e,t){if(!e)throw new Error(f)};function h(e){return"/"===e.charAt(0)?e:"/"+e}function v(e){return"/"===e.charAt(0)?e.substr(1):e}function g(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function b(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function y(e){var t=e.pathname,n=e.search,r=e.hash,a=t||"/";return n&&"?"!==n&&(a+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(a+="#"===r.charAt(0)?r:"#"+r),a}function w(e,t,n,r){var a;"string"===typeof e?(a=function(e){var t=e||"/",n="",r="",a=t.indexOf("#");-1!==a&&(r=t.substr(a),t=t.substr(0,a));var i=t.indexOf("?");return-1!==i&&(n=t.substr(i),t=t.substr(0,i)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e),a.state=t):(void 0===(a=s({},e)).pathname&&(a.pathname=""),a.search?"?"!==a.search.charAt(0)&&(a.search="?"+a.search):a.search="",a.hash?"#"!==a.hash.charAt(0)&&(a.hash="#"+a.hash):a.hash="",void 0!==t&&void 0===a.state&&(a.state=t));try{a.pathname=decodeURI(a.pathname)}catch(i){throw i instanceof URIError?new URIError('Pathname "'+a.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):i}return n&&(a.key=n),r?a.pathname?"/"!==a.pathname.charAt(0)&&(a.pathname=c(a.pathname,r.pathname)):a.pathname=r.pathname:a.pathname||(a.pathname="/"),a}function k(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,a){if(null!=e){var i="function"===typeof e?e(t,n):e;"string"===typeof i?"function"===typeof r?r(i,a):a(!0):a(!1!==i)}else a(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];t.forEach((function(e){return e.apply(void 0,n)}))}}}var x=!("undefined"===typeof window||!window.document||!window.document.createElement);function E(e,t){t(window.confirm(e))}var T="popstate",S="hashchange";function C(){try{return window.history.state||{}}catch(e){return{}}}function q(e){void 0===e&&(e={}),x||m(!1);var t=window.history,n=function(){var e=window.navigator.userAgent;return(-1===e.indexOf("Android 2.")&&-1===e.indexOf("Android 4.0")||-1===e.indexOf("Mobile Safari")||-1!==e.indexOf("Chrome")||-1!==e.indexOf("Windows Phone"))&&window.history&&"pushState"in window.history}(),r=!(-1===window.navigator.userAgent.indexOf("Trident")),a=e,i=a.forceRefresh,o=void 0!==i&&i,l=a.getUserConfirmation,u=void 0===l?E:l,c=a.keyLength,p=void 0===c?6:c,d=e.basename?b(h(e.basename)):"";function f(e){var t=e||{},n=t.key,r=t.state,a=window.location,i=a.pathname+a.search+a.hash;return d&&(i=g(i,d)),w(i,r,n)}function v(){return Math.random().toString(36).substr(2,p)}var q=k();function _(e){s(R,e),R.length=t.length,q.notifyListeners(R.location,R.action)}function P(e){(function(e){return void 0===e.state&&-1===navigator.userAgent.indexOf("CriOS")})(e)||O(f(e.state))}function A(){O(f(C()))}var j=!1;function O(e){if(j)j=!1,_();else{q.confirmTransitionTo(e,"POP",u,(function(t){t?_({action:"POP",location:e}):function(e){var t=R.location,n=M.indexOf(t.key);-1===n&&(n=0);var r=M.indexOf(e.key);-1===r&&(r=0);var a=n-r;
2a&&(j=!0,N(a))}(e)}))}}var I=f(C()),M=[I.key];function L(e){return d+y(e)}function N(e){t.go(e)}var F=0;function D(e){1===(F+=e)&&1===e?(window.addEventListener(T,P),r&&window.addEventListener(S,A)):0===F&&(window.removeEventListener(T,P),r&&window.removeEventListener(S,A))}var z=!1;var R={length:t.length,action:"POP",location:I,createHref:L,push:function(e,r){var a="PUSH",i=w(e,r,v(),R.location);q.confirmTransitionTo(i,a,u,(function(e){if(e){var r=L(i),s=i.key,l=i.state;if(n)if(t.pushState({key:s,state:l},null,r),o)window.location.href=r;else{var u=M.indexOf(R.location.key),c=M.slice(0,u+1);c.push(i.key),M=c,_({action:a,location:i})}else window.location.href=r}}))},replace:function(e,r){var a="REPLACE",i=w(e,r,v(),R.location);q.confirmTransitionTo(i,a,u,(function(e){if(e){var r=L(i),s=i.key,l=i.state;if(n)if(t.replaceState({key:s,state:l},null,r),o)window.location.replace(r);else{var u=M.indexOf(R.location.key);-1!==u&&(M[u]=i.key),_({action:a,location:i})}else window.location.replace(r)}}))},go:N,goBack:function(){N(-1)},goForward:function(){N(1)},block:function(e){void 0===e&&(e=!1);var t=q.setPrompt(e);return z||(D(1),z=!0),function(){return z&&(z=!1,D(-1)),t()}},listen:function(e){var t=q.appendListener(e);return D(1),function(){D(-1),t()}}};return R}var _="hashchange",P={hashbang:{encodePath:function(e){return"!"===e.charAt(0)?e:"!/"+v(e)},decodePath:function(e){return"!"===e.charAt(0)?e.substr(1):e}},noslash:{encodePath:v,decodePath:h},slash:{encodePath:h,decodePath:h}};function A(e){var t=e.indexOf("#");return-1===t?e:e.slice(0,t)}function j(){var e=window.location.href,t=e.indexOf("#");return-1===t?"":e.substring(t+1)}function O(e){window.location.replace(A(window.location.href)+"#"+e)}function I(e){void 0===e&&{},x||m(!1);var t=window.history,n=(window.navigator.userAgent.indexOf("Firefox"),e),r=n.getUserConfirmation,a=void 0===r?E:r,i=n.hashType,o=void 0===i?"slash":i,l=e.basename?b(h(e.basename)):"",u=P[o],c=u.encodePath,p=u.decodePath;function d(){var e=p(j());return l&&g(e,l),w(e)}var f=k();function v(e){s(R,e),R.length=t.length,f.notifyListeners(R.location,R.action)}var T=!1,S=null;function C(){var e,t,n=j(),r=c(n);if(n!==r)O(r);else{var i=d(),o=R.location;if(!T&&(i,o.pathname===t.pathname&&e.search===t.search&&e.hash===t.hash))return;if(S===y(i))return;null,function(e){if(T)!1,v();else{var t="POP";f.confirmTransitionTo(e,t,a,(function(n){n?v({action:t,location:e}):function(e){var t=R.location,n=L.lastIndexOf(y(t));-1===n&&0;var r=L.lastIndexOf(y(e));-1===r&&0;var a=n-r;a&&(!0,N(a))}(e)}))}}(i)}}var q=j(),I=c(q);q!==I&&O(I);var M=d(),L=[y(M)];function N(e){t.go(e)}var F=0;function D(e){1===(F+=e)&&1===e?window.addEventListener(_,C):0===F&&window.removeEventListener(_,C)}var z=!1;var R={length:t.length,action:"POP",location:M,createHref:function(e){var t=document.querySelector("base"),n="";return t&&t.getAttribute("href")&&A(window.location.href),n+"#"+c(l+y(e))},push:function(e,t){var n="PUSH",r=w(e,void 0,void 0,R.location);f.confirmTransitionTo(r,n,a,(function(e){if(e){var t=y(r),a=c(l+t);if(j()!==a){t,function(e){window.location.hash=e}(a);var i=L.lastIndexOf(y(R.location)),o=L.slice(0,i+1);o.push(t),o,v({action:n,location:r})}else v()}}))},replace:function(e,t){var n="REPLACE",r=w(e,void 0,void 0,R.location);f.confirmTransitionTo(r,n,a,(function(e){if(e){var t=y(r),a=c(l+t);j()!==a&&(t,O(a));var i=L.indexOf(y(R.location));-1!==i&&(L[i]=t),v({action:n,location:r})}}))},go:N,goBack:function(){N(-1)},goForward:function(){N(1)},block:function(e){void 0===e&&!1;var t=f.setPrompt(e);return z||(D(1),!0),function(){return z&&(!1,D(-1)),t()}},listen:function(e){var t=f.appendListener(e);return D(1),function(){D(-1),t()}}};return R}function M(e,t,n){return Math.min(Math.max(e,t),n)}function L(e){void 0===e&&{};var t=e,n=t.getUserConfirmation,r=t.initialEntries,a=void 0===r?["/"]:r,i=t.initialIndex,o=void 0===i?0:i,l=t.keyLength,u=void 0===l?6:l,c=k();function p(e){s(g,e),g.length=g.entries.length,c.notifyListeners(g.location,g.action)}function d(){return Math.random().toString(36).substr(2,u)}var f=M(o,0,a.length-1),m=a.map((function(e){return w(e,void 0,"string"===typeof e?d():e.key||d())})),h=y;function v(e){var t=M(g.index+e,0,g.entries.length-1),r=g.entries[t];c.confirmTransitionTo(r,"POP",n,(function(e){e?p({action:"POP",location:r,index:t}):p()}))}var g={length:m.length,action:"POP",location:m[f],index:f,entries:m,createHref:h,push:function(e,t){var r="PUSH",a=w(e,t,d(),g.location);c.confirmTransitionTo(a,r,n,(function(e){if(e){var t=g.index+1,n=g.entries.slice(0);n.length>t?n.splice(t,n.length-t,a):n.push(a),p({action:r,location:a,index:t,entries:n})}}))},replace:function(e,t){var r="REPLACE",a=w(e,t,d(),g.location);c.confirmTransitionTo(a,r,n,(function(e){e&&(g.entries[g.index]=a,p({action:r,location:a}))}))},go:v,goBack:function(){v(-1)},goForward:function(){v(1)},canGo:function(e){var t=g.index+e;return t>=0&&t<g.entries.length},block:function(e){return void 0===e&&!1,c.setPrompt(e)},listen:function(e){return c.appendListener(e)}};return g}var N=n(7),F=n.n(N),D=n(566),z=n.n(D),R=1073741823;function W(e){var t=[];return{on:function(e){t.push(e)},off:function(e){t=t.filter((function(t){return t!==e}))},get:function(){return e},set:function(n,r){e=n,t.forEach((function(t){return t(e,r)}))}}}var U=t().createContext||function(t,n){var r,a,i="__create-react-context-"+z()()+"__",s=function(e){function t(){var t;return(t=e.apply(this,arguments)||this).emitter=W(t.props.value),t}o(t,e);var r=t.prototype;return r.getChildContext=function(){var e;return(e={})[i]=this.emitter,e},r.componentWillReceiveProps=function(e){if(this.props.value!==e.value){var t,r=this.props.value,a=e.value;((i=r)===(o=a)?0!==i||1/i===1/o:i!==i&&o!==o)?t=0:(t="function"===typeof n?n(r,a):R,0!==(t|=0)&&this.emitter.set(e.value,t))}var i,o},r.render=function(){return this.props.children},t}(e.Component);s.childContextTypes=((r={})[i]=F().object.isRequired,r);var l=function(e){function n(){var t;return(t=e.apply(this,arguments)||this).state={value:t.getValue()},t.onUpdate=function(e,n){0!==((0|t.observedBits)&n)&&t.setState({value:t.getValue()})},t}o(n,e);var r=n.prototype;return r.componentWillReceiveProps=function(e){var t=e.observedBits;this.observedBits=void 0===t||null===t?R:t},r.componentDidMount=function(){this.context[i]&&this.context[i].on(this.onUpdate);var e=this.props.observedBits;this.observedBits=void 0===e||null===e?R:e},r.componentWillUnmount=function(){this.context[i]&&this.context[i].off(this.onUpdate)},r.getValue=function(){return this.context[i]?this.context[i].get():t},r.render=function(){return(e=this.props.children,Array.isArray(e)?e[0]:e)(this.state.value);var e},n}(e.Component);return l.contextTypes=((a={})[i]=F().object,a),{Provider:s,Consumer:l}},B=U,V=n(151),H=n.n(V);n(441);function G(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}n(110);var $=function(e){var t=B();return t.displayName=e,t},K=$("Router"),Y=function(e){function n(t){var n;return(n=e.call(this,t)||this).state={location:t.history.location},n._isMounted=!1,n._pendingLocation=null,t.staticContext||(n.unlisten=t.history.listen((function(e){n._isMounted?n.setState({location:e}):n._pendingLocation=e}))),n}o(n,e),n.computeRootMatch=function(e){return{path:"/",url:"/",params:{},isExact:"/"===e}};var r=n.prototype;return r.componentDidMount=function(){this._isMounted=!0,this._pendingLocation&&this.setState({location:this._pe
2ndingLocation})},r.componentWillUnmount=function(){this.unlisten&&this.unlisten()},r.render=function(){return t().createElement(K.Provider,{children:this.props.children||null,value:{history:this.props.history,location:this.state.location,match:n.computeRootMatch(this.state.location.pathname),staticContext:this.props.staticContext}})},n}(t().Component);t().Component;var Q=function(e){function t(){return e.apply(this,arguments)||this}o(t,e);var n=t.prototype;return n.componentDidMount=function(){this.props.onMount&&this.props.onMount.call(this,this)},n.componentDidUpdate=function(e){this.props.onUpdate&&this.props.onUpdate.call(this,this,e)},n.componentWillUnmount=function(){this.props.onUnmount&&this.props.onUnmount.call(this,this)},n.render=function(){return null},t}(t().Component);var J={},X=0;function Z(e,t){return void 0===e&&(e="/"),void 0===t&&(t={}),"/"===e?e:function(e){if(J[e])return J[e];var t=H().compile(e);return X<1e4&&(J[e]=t,X++),t}(e)(t,{pretty:!0})}function ee(e){var n=e.computedMatch,r=e.to,a=e.push,i=void 0!==a&&a;return t().createElement(K.Consumer,null,(function(e){e||m(!1);var a=e.history,o=e.staticContext,l=i?a.push:a.replace,u=w(n?"string"===typeof r?Z(r,n.params):s({},r,{pathname:Z(r.pathname,n.params)}):r);return o?(l(u),null):t().createElement(Q,{onMount:function(){l(u)},onUpdate:function(e,t){var n,r,a=w(t.to);n=a,r=s({},u,{key:a.key}),n.pathname===r.pathname&&n.search===r.search&&n.hash===r.hash&&n.key===r.key&&d(n.state,r.state)||l(u)},to:r})}))}var te={},ne=0;function re(e,t){void 0===t&&(t={}),("string"===typeof t||Array.isArray(t))&&(t={path:t});var n=t,r=n.path,a=n.exact,i=void 0!==a&&a,o=n.strict,s=void 0!==o&&o,l=n.sensitive,u=void 0!==l&&l;return[].concat(r).reduce((function(t,n){if(!n&&""!==n)return null;if(t)return t;var r=function(e,t){var n=""+t.end+t.strict+t.sensitive,r=te[n]||(te[n]={});if(r[e])return r[e];var a=[],i={regexp:H()(e,a,t),keys:a};return ne<1e4&&(r[e]=i,ne++),i}(n,{end:i,strict:s,sensitive:u}),a=r.regexp,o=r.keys,l=a.exec(e);if(!l)return null;var c=l[0],p=l.slice(1),d=e===c;return i&&!d?null:{path:n,url:"/"===n&&""===c?"/":c,isExact:d,params:o.reduce((function(e,t,n){return e[t.name]=p[n],e}),{})}}),null)}var ae=function(e){function n(){return e.apply(this,arguments)||this}return o(n,e),n.prototype.render=function(){var e=this;return t().createElement(K.Consumer,null,(function(n){n||m(!1);var r=e.props.location||n.location,a=s({},n,{location:r,match:e.props.computedMatch?e.props.computedMatch:e.props.path?re(r.pathname,e.props):n.match}),i=e.props,o=i.children,l=i.component,u=i.render;return Array.isArray(o)&&0===o.length&&(o=null),t().createElement(K.Provider,{value:a},a.match?o?"function"===typeof o?o(a):o:l?t().createElement(l,a):u?u(a):null:"function"===typeof o?o(a):null)}))},n}(t().Component);function ie(e){return"/"===e.charAt(0)?e:"/"+e}function oe(e,t){if(!e)return t;var n=ie(e);return 0!==t.pathname.indexOf(n)?t:s({},t,{pathname:t.pathname.substr(n.length)})}function se(e){return"string"===typeof e?e:y(e)}function le(e){return function(){m(!1)}}function ue(){}t().Component;var ce=function(e){function n(){return e.apply(this,arguments)||this}return o(n,e),n.prototype.render=function(){var e=this;return t().createElement(K.Consumer,null,(function(n){n||m(!1);var r,a,i=e.props.location||n.location;return t().Children.forEach(e.props.children,(function(e){if(null==a&&t().isValidElement(e)){r=e;var o=e.props.path||e.props.from;a=o?re(i.pathname,s({},e.props,{path:o})):n.match}})),a?t().cloneElement(r,{location:i,computedMatch:a}):null}))},n}(t().Component);var pe=t().useContext;function de(){return pe(K).location}var fe=function(e){function n(){for(var t,n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];return(t=e.call.apply(e,[this].concat(r))||this).history=q(t.props),t}return o(n,e),n.prototype.render=function(){return t().createElement(Y,{history:this.history,children:this.props.children})},n}(t().Component);t().Component;var me=function(e,t){return"function"===typeof e?e(t):e},he=function(e,t){return"string"===typeof e?w(e,null,null,t):e},ve=function(e){return e},ge=t().forwardRef;"undefined"===typeof ge&&(ge=ve);var be=ge((function(e,n){var r=e.innerRef,a=e.navigate,i=e.onClick,o=G(e,["innerRef","navigate","onClick"]),l=o.target,u=s({},o,{onClick:function(e){try{i&&i(e)}catch(t){throw e.preventDefault(),t}e.defaultPrevented||0!==e.button||l&&"_self"!==l||function(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}(e)||(e.preventDefault(),a())}});return u.ref=ve!==ge&&n||r,t().createElement("a",u)}));var ye=ge((function(e,n){var r=e.component,a=void 0===r?be:r,i=e.replace,o=e.to,l=e.innerRef,u=G(e,["component","replace","to","innerRef"]);return t().createElement(K.Consumer,null,(function(e){e||m(!1);var r=e.history,c=he(me(o,e.location),e.location),p=c?r.createHref(c):"",d=s({},u,{href:p,navigate:function(){var t=me(o,e.location);(i?r.replace:r.push)(t)}});return ve!==ge?d.ref=n||l:d.innerRef=l,t().createElement(a,d)}))})),we=function(e){return e},ke=t().forwardRef;"undefined"===typeof ke&&(ke=we);ke((function(e,n){var r=e["aria-current"],a=void 0===r?"page":r,i=e.activeClassName,o=void 0===i?"active":i,l=e.activeStyle,u=e.className,c=e.exact,p=e.isActive,d=e.location,f=e.strict,h=e.style,v=e.to,g=e.innerRef,b=G(e,["aria-current","activeClassName","activeStyle","className","exact","isActive","location","strict","style","to","innerRef"]);return t().createElement(K.Consumer,null,(function(e){e||m(!1);var r=d||e.location,i=he(me(v,r),r),y=i.pathname,w=y&&y.replace(/([.+*?=^!:${}()[\]|/\\])/g,"\\$1"),k=w?re(r.pathname,{path:w,exact:c,strict:f}):null,x=!!(p?p(k,r):k),E=x?function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return t.filter((function(e){return e})).join(" ")}(u,o):u,T=x?s({},h,{},l):h,S=s({"aria-current":x&&a||null,className:E,style:T,to:i},b);return we!==ke?S.ref=n||g:S.innerRef=g,t().createElement(ye,S)}))}));var xe=function(){if("undefined"!==typeof Map)return Map;function e(e,t){var n=-1;return e.some((function(e,r){return e[0]===t&&(n=r,!0)})),n}return function(){function t(){this.__entries__=[]}return Object.defineProperty(t.prototype,"size",{get:function(){return this.__entries__.length},enumerable:!0,configurable:!0}),t.prototype.get=function(t){var n=e(this.__entries__,t),r=this.__entries__[n];return r&&r[1]},t.prototype.set=function(t,n){var r=e(this.__entries__,t);~r?this.__entries__[r][1]=n:this.__entries__.push([t,n])},t.prototype.delete=function(t){var n=this.__entries__,r=e(n,t);~r&&n.splice(r,1)},t.prototype.has=function(t){return!!~e(this.__entries__,t)},t.prototype.clear=function(){this.__entries__.splice(0)},t.prototype.forEach=function(e,t){void 0===t&&(t=null);for(var n=0,r=this.__entries__;n<r.length;n++){var a=r[n];e.call(t,a[1],a[0])}},t}()}(),Ee="undefined"!==typeof window&&"undefined"!==typeof document&&window.document===document,Te="undefined"!==typeof n.g&&n.g.Math===Math?n.g:"undefined"!==typeof self&&self.Math===Math?self:"undefined"!==typeof window&&window.Math===Math?window:Function("return this")(),Se="function"===typeof requestAnimationFrame?requestAnimationFrame.bind(Te):function(e){return setTimeout((function(){return e(Date.now())}),1e3/60)};var Ce=["top","right","bottom","left","width","height","size","weight"],qe="undefined"!==typeof MutationObserver,_e=function(){function e(){this.connected_=!1,this.mutationEventsAdded_=!1,this.mutationsObserver_=null,this.observers_=[],this.onTransitionEnd_=this.onTransitionEnd_.bind(this),this.refresh=function(e,t){var n=!1,r=!1,a=0;
vendor: 5,370 bytes, line 2
2function i(){n&&(n=!1,e()),r&&s()}function o(){Se(i)}function s(){var e=Date.now();if(n){if(e-a<2)return;r=!0}else n=!0,r=!1,setTimeout(o,t);a=e}return s}(this.refresh.bind(this),20)}return e.prototype.addObserver=function(e){~this.observers_.indexOf(e)||this.observers_.push(e),this.connected_||this.connect_()},e.prototype.removeObserver=function(e){var t=this.observers_,n=t.indexOf(e);~n&&t.splice(n,1),!t.length&&this.connected_&&this.disconnect_()},e.prototype.refresh=function(){this.updateObservers_()&&this.refresh()},e.prototype.updateObservers_=function(){var e=this.observers_.filter((function(e){return e.gatherActive(),e.hasActive()}));return e.forEach((function(e){return e.broadcastActive()})),e.length>0},e.prototype.connect_=function(){Ee&&!this.connected_&&(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),qe?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},e.prototype.disconnect_=function(){Ee&&this.connected_&&(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},e.prototype.onTransitionEnd_=function(e){var t=e.propertyName,n=void 0===t?"":t,r=Ce.some((function(e){return!!~n.indexOf(e)}));r&&this.refresh()},e.getInstance=function(){return this.instance_||(this.instance_=new e),this.instance_},e.instance_=null,e}(),Pe=function(e,t){for(var n=0,r=Object.keys(t);n<r.length;n++){var a=r[n];Object.defineProperty(e,a,{value:t[a],enumerable:!1,writable:!1,configurable:!0})}return e},Ae=function(e){return e&&e.ownerDocument&&e.ownerDocument.defaultView||Te},je=Fe(0,0,0,0);function Oe(e){return parseFloat(e)||0}function Ie(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];return t.reduce((function(t,n){return t+Oe(e["border-"+n+"-width"])}),0)}function Me(e){var t=e.clientWidth,n=e.clientHeight;if(!t&&!n)return je;var r=Ae(e).getComputedStyle(e),a=function(e){for(var t={},n=0,r=["top","right","bottom","left"];n<r.length;n++){var a=r[n],i=e["padding-"+a];t[a]=Oe(i)}return t}(r),i=a.left+a.right,o=a.top+a.bottom,s=Oe(r.width),l=Oe(r.height);if("border-box"===r.boxSizing&&(Math.round(s+i)!==t&&(s-=Ie(r,"left","right")+i),Math.round(l+o)!==n&&(l-=Ie(r,"top","bottom")+o)),!function(e){return e===Ae(e).document.documentElement}(e)){var u=Math.round(s+i)-t,c=Math.round(l+o)-n;1!==Math.abs(u)&&(s-=u),1!==Math.abs(c)&&(l-=c)}return Fe(a.left,a.top,s,l)}var Le="undefined"!==typeof SVGGraphicsElement?function(e){return e instanceof Ae(e).SVGGraphicsElement}:function(e){return e instanceof Ae(e).SVGElement&&"function"===typeof e.getBBox};function Ne(e){return Ee?Le(e)?function(e){var t=e.getBBox();return Fe(0,0,t.width,t.height)}(e):Me(e):je}function Fe(e,t,n,r){return{x:e,y:t,width:n,height:r}}var De=function(){function e(e){this.broadcastWidth=0,this.broadcastHeight=0,this.contentRect_=Fe(0,0,0,0),this.target=e}return e.prototype.isActive=function(){var e=Ne(this.target);return this.contentRect_=e,e.width!==this.broadcastWidth||e.height!==this.broadcastHeight},e.prototype.broadcastRect=function(){var e=this.contentRect_;return this.broadcastWidth=e.width,this.broadcastHeight=e.height,e},e}(),ze=function(e,t){var n=function(e){var t=e.x,n=e.y,r=e.width,a=e.height,i="undefined"!==typeof DOMRectReadOnly?DOMRectReadOnly:Object,o=Object.create(i.prototype);return Pe(o,{x:t,y:n,width:r,height:a,top:n,right:t+r,bottom:a+n,left:t}),o}(t);Pe(this,{target:e,contentRect:n})},Re=function(){function e(e,t,n){if(this.activeObservations_=[],this.observations_=new xe,"function"!==typeof e)throw new TypeError("The callback provided as parameter 1 is not a function.");this.callback_=e,this.controller_=t,this.callbackCtx_=n}return e.prototype.observe=function(e){if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");if("undefined"!==typeof Element&&Element instanceof Object){if(!(e instanceof Ae(e).Element))throw new TypeError('parameter 1 is not of type "Element".');var t=this.observations_;t.has(e)||(t.set(e,new De(e)),this.controller_.addObserver(this),this.controller_.refresh())}},e.prototype.unobserve=function(e){if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");if("undefined"!==typeof Element&&Element instanceof Object){if(!(e instanceof Ae(e).Element))throw new TypeError('parameter 1 is not of type "Element".');var t=this.observations_;t.has(e)&&(t.delete(e),t.size||this.controller_.removeObserver(this))}},e.prototype.disconnect=function(){this.clearActive(),this.observations_.clear(),this.controller_.removeObserver(this)},e.prototype.gatherActive=function(){var e=this;this.clearActive(),this.observations_.forEach((function(t){t.isActive()&&e.activeObservations_.push(t)}))},e.prototype.broadcastActive=function(){if(this.hasActive()){var e=this.callbackCtx_,t=this.activeObservations_.map((function(e){return new ze(e.target,e.broadcastRect())}
2));this.callback_.call(e,t,e),this.clearActive()}},e.prototype.clearActive=function(){this.activeObservations_.splice(0)},e.prototype.hasActive=function(){return this.activeObservations_.length>0},e}(),We="undefined"!==typeof WeakMap?new WeakMap:new xe,Ue=function e(t){if(!(this instanceof e))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var n=_e.getInstance(),r=new Re(t,n,this);We.set(this,r)};["observe","unobserve","disconnect"].forEach((function(e){Ue.prototype[e]=function(){var t;return(t=We.get(this))[e].apply(t,arguments)}}));var Be="undefined"!==typeof Te.ResizeObserver?Te.ResizeObserver:Ue,Ve=function(e){var t=[],n=null,r=function(){for(var r=arguments.length,a=new Array(r),i=0;i<r;i++)a[i]=arguments[i];t=a,n||(n=requestAnimationFrame((function(){n=null,e.apply(void 0,t)})))};return r.cancel=function(){n&&(cancelAnimationFrame(n),n=null)},r};var He=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)},Ge="object"==typeof global&&global&&global.Object===Object&&global,$e="object"==typeof self&&self&&self.Object===Object&&self,Ke=Ge||$e||Function("return this")(),Ye=function(){return Ke.Date.now()},Qe=/\s/;var Je=function(e){for(var t=e.length;t--&&Qe.test(e.charAt(t)););return t},Xe=/^\s+/;var Ze=function(e){return e?e.slice(0,Je(e)+1).replace(Xe,""):e},et=Ke.Symbol,tt=Object.prototype,nt=tt.hasOwnProperty,rt=tt.toString,at=et?et.toStringTag:void 0;var it=function(e){var t=nt.call(e,at),n=e[at];try{e[at]=void 0;var r=!0}catch(i){}var a=rt.call(e);return r&&(t?e[at]=n:delete e[at]),a},ot=Object.prototype.toString;var st=function(e){return ot.call(e)},lt=et?et.toStringTag:void 0;var ut=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":lt&&lt in Object(e)?it(e):st(e)};var ct=function(e){return null!=e&&"object"==typeof e};var pt=function(e){return"symbol"==typeof e||ct(e)&&"[object Symbol]"==ut(e)},dt=/^[-+]0x[0-9a-f]+$/i,ft=/^0b[01]+$/i,mt=/^0o[0-7]+$/i,ht=parseInt;var vt=function(e){if("number"==typeof e)return e;if(pt(e))return NaN;if(He(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=He(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=Ze(e);var n=ft.test(e);return n||mt.test(e)?ht(e.slice(2),n?2:8):dt.test(e)?NaN:+e}
2,gt=Math.max,bt=Math.min;var yt=function(e,t,n){var r,a,i,o,s,l,u=0,c=!1,p=!1,d=!0;if("function"!=typeof e)throw new TypeError("Expected a function");function f(t){var n=r,i=a;return r=a=void 0,u=t,o=e.apply(i,n)}function m(e){return u=e,s=setTimeout(v,t),c?f(e):o}function h(e){var n=e-l;return void 0===l||n>=t||n<0||p&&e-u>=i}function v(){var e=Ye();if(h(e))return g(e);s=setTimeout(v,function(e){var n=t-(e-l);return p?bt(n,i-(e-u)):n}(e))}function g(e){return s=void 0,d&&r?f(e):(r=a=void 0,o)}function b(){var e=Ye(),n=h(e);if(r=arguments,a=this,l=e,n){if(void 0===s)return m(l);if(p)return clearTimeout(s),s=setTimeout(v,t),f(l)}return void 0===s&&(s=setTimeout(v,t)),o}return t=vt(t)||0,He(n)&&(c=!!n.leading,i=(p="maxWait"in n)?gt(vt(n.maxWait)||0,t):i,d="trailing"in n?!!n.trailing:d),b.cancel=function(){void 0!==s&&clearTimeout(s),u=0,r=l=a=s=void 0},b.flush=function(){return void 0===s?o:g(Ye())},b};var wt=function(e,t,n){var r=!0,a=!0;if("function"!=typeof e)throw new TypeError("Expected a function");return He(n)&&(r="leading"in n?!!n.leading:r,a="trailing"in n?!!n.trailing:a),yt(e,t,{leading:r,maxWait:t,trailing:a})},kt={debounce:yt,throttle:wt},xt=function(e){return"function"===typeof e},Et=function(){return"undefined"===typeof window};function Tt(e){return Tt="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"===typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Tt(e)}function St(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Ct(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function qt(e,t){return!t||"object"!==Tt(t)&&"function"!==typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function _t(e){return _t=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},_t(e)}function Pt(e,t){return Pt=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},Pt(e,t)}var At=function(e){function t(){return St(this,t),qt(this,_t(t).apply(this,arguments))}var n,r,a;return function(e,t){if("function"!==typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Pt(e,t)}(t,e),n=t,(r=[{key:"render",value:function(){return this.props.children}}])&&Ct(n.prototype,r),a&&Ct(n,a),t}(e.PureComponent),jt=At;function Ot(e){return Ot="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"===typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ot(e)}function It(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function Mt(e){return Mt=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},Mt(e)}function Lt(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function Nt(e,t){return Nt=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},Nt(e,t)}function Ft(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Dt=function(n){function a(t){var n;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,a),n=function(e,t){return!t||"object"!==Ot(t)&&"function"!==typeof t?Lt(e):t}(this,Mt(a).call(this,t)),Ft(Lt(n),"cancelHandler",(function(){n.resizeHandler&&n.resizeHandler.cancel&&(n.resizeHandler.cancel(),n.resizeHandler=null)})),Ft(Lt(n),"rafClean",(function(){n.raf&&n.raf.cancel&&(n.raf.cancel(),n.raf=null)})),Ft(Lt(n),"toggleObserver",(function(e){var t=n.getElement();t&&n.resizeObserver[e]&&n.resizeObserver[e](t)})),Ft(Lt(n),"getElement",(function(){var e=n.props,t=e.querySelector,a=e.targetDomEl;if(!Et()){if(t)return document.querySelector(t);
2if(a&&((i=a)instanceof Element||i instanceof HTMLDocument))return a;var i,o=n.element&&(0,r.findDOMNode)(n.element);if(o)return o.parentElement}})),Ft(Lt(n),"createUpdater",(function(){return n.rafClean(),n.raf=Ve((function(e){var t=e.width,r=e.height,a=n.props.onResize;xt(a)&&a(t,r),n.setState({width:t,height:r})})),n.raf})),Ft(Lt(n),"createResizeHandler",(function(e){var t=n.state,r=t.width,a=t.height,i=n.props,o=i.handleWidth,s=i.handleHeight;if(o||s){var l=n.createUpdater();e.forEach((function(e){var t=e&&e.contentRect||{},i=t.width,u=t.height,c=o&&r!==i||s&&a!==u;!n.skipOnMount&&c&&!Et()&&l({width:i,height:u}),n.skipOnMount=!1}))}})),Ft(Lt(n),"onRef",(function(e){n.element=e})),Ft(Lt(n),"getRenderType",(function(){var t=n.props,r=t.render,a=t.children;return xt(r)?"renderProp":xt(a)?"childFunction":(0,e.isValidElement)(a)?"child":Array.isArray(a)?"childArray":"parent"})),Ft(Lt(n),"getTargetComponent",(function(){var t=n.props,r=t.render,a=t.children,i=t.nodeType,o=n.state,s={width:o.width,height:o.height};switch(n.getRenderType()){case"renderProp":return(0,e.cloneElement)(r(s),{key:"resize-detector"});case"childFunction":return(0,e.cloneElement)(a(s));case"child":return(0,e.cloneElement)(a,s);case"childArray":return a.map((function(t){return!!t&&(0,e.cloneElement)(t,s)}));default:return(0,e.createElement)(i)}}));var i=t.skipOnMount,o=t.refreshMode,s=t.refreshRate,l=t.refreshOptions;n.state={width:void 0,height:void 0},n.skipOnMount=i,n.raf=null,n.element=null,n.unmounted=!1;var u=kt[o];return n.resizeHandler=u?u(n.createResizeHandler,s,l):n.createResizeHandler,n.resizeObserver=new Be(n.resizeHandler),n}var i,o,s;return function(e,t){if("function"!==typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Nt(e,t)}(a,n),i=a,(o=[{key:"componentDidMount",value:function(){this.toggleObserver("observe")}},{key:"componentWillUnmount",value:function(){this.toggleObserver("unobserve"),this.rafClean(),this.cancelHandler(),this.unmounted=!0}},{key:"render",value:function(){return t().createElement(jt,{ref:this.onRef},this.getTargetComponent())}}])&&It(i.prototype,o),s&&It(i,s),a}(e.PureComponent);Dt.propTypes={handleWidth:N.bool,handleHeight:N.bool,skipOnMount:N.bool,refreshRate:N.number,refreshMode:N.string,refreshOptions:(0,N.shape)({leading:N.bool,trailing:N.bool}),querySelector:N.string,targetDomEl:N.any,onResize:N.func,render:N.func,children:N.any,nodeType:N.node},Dt.defaultProps={handleWidth:!1,handleHeight:!1,skipOnMount:!1,refreshRate:1e3,refreshMode:void 0,refreshOptions:void 0,querySelector:null,targetDomEl:null,onResize:null,render:void 0,children:null,nodeType:"div"};var zt=Dt;function Rt(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Wt(e){return Wt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Wt(e)}function Ut(e){var t=function(e,t){if("object"!==Wt(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||"default");if("object"!==Wt(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===Wt(t)?t:String(t)}function Bt(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,Ut(r.key),r)}}function Vt(e,t,n){return t&&Bt(e.prototype,t),n&&Bt(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function Ht(e,t){if("function"!==typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&i(e,t)}function Gt(e){return Gt=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},Gt(e)}function $t(e,t){if(t&&("object"===Wt(t)||"function"===typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}function Kt(e){var t=function(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=Gt(e);if(t){var a=Gt(this).constructor;n=Reflect.construct(r,arguments,a)}else n=r.apply(this,arguments);return $t(this,n)}}function Yt(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function Qt(e){return function(e){if(Array.isArray(e))return Yt(e)}(e)||function(e){if("undefined"!==typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"===typeof e)return Yt(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Yt(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}var Jt=[160,8240,8256,8480,8496,8592,8608,8976,8992,9152,9184,9200,9408,9632,9648,9664,9712,9728,9744,9760,9776,9792,9808,9824,9840,9872,9888,9904,9920,9936,9952,9968,9984,1e4,10016,10032,10048,10064,10080,10128,10144,10160,10544,11008,11024,11088,12336,12944,126976,127168,127344,127360,127376,127488,127504,127520,127536,127568,127744,127760,127776,127792,127808,127824,127840,127856,127872,127888,127904,127920,127936,127952,127968,127984,128e3,128016,128032,128048,128064,128080,128096,128112,128128,128144,128160,128176,128192,128208,128224,128240,128256,128272,128288,128304,128320,128336,128352,128368,128384,128400,128416,128432,128448,128464,128480,128496,128512,128528,128544,128560,128576,128640,128656,128672,128688,128704,128720,128736,128752,128992,129280,129296,129312,129328,129344,129360,129376,129392,129408,129424,129440,129456,129472,129488,129504,129520,129648,129664,129680],Xt=function(e){return e.startsWith("https://")||e.startsWith("http://")},Zt=function(e){var t=new Date,n=e.split("/");return t.setFullYear.apply(t,Qt(n.map(parseFloat).reverse())),+t},en=function(e){Ht(r,e);var n=Kt(r);function r(e){var a;
2return Rt(this,r),(a=n.call(this,e))._backgroundOnfirstClick=function(){setTimeout((function(){return a.setState({background:!0})}),100)},a._renderText=function(){if(a.props.width&&a.props.height){var e=function(){var e=Jt[Math.floor(Math.random()*Jt.length)]+Math.floor(16*Math.random());return String.fromCodePoint(e)}();false,a.canvasCtx.fillText(e,Math.round(a.props.width/2),Math.round(a.props.height/2)),setTimeout((function(){for(var e=0;e<7;e++){var t=Math.floor(Math.random()*a.props.width),n=Math.floor(Math.random()*a.props.height),r=.12*a.props.width,i=.12*a.props.height,o=t-r/2,s=n-i/2,l=o+(2*Math.random()-1)*(.09*a.props.width),u=s+(2*Math.random()-1)*(.09*a.props.height),c=a.canvasCtx.getImageData(o,s,r,i),p=a.canvasCtx.getImageData(l,u,r,i);a.canvasCtx.putImageData(c,l,u),a.canvasCtx.putImageData(p,o,s)}}),75)}},a.canvasRef=t().createRef(),a.canvasCtx=null,a.intervalHandle=null,a.state={background:!1},a}return Vt(r,[{key:"componentDidMount",value:function(){this._refsUpdated(),this._propsUpdated(),this.intervalHandle=setInterval(this._renderText,150)}},{key:"componentDidUpdate",value:function(){this._propsUpdated()}},{key:"componentWillUnmount",value:function(){this.intervalHandle&&clearInterval(this.intervalHandle)}},{key:"render",value:function(){var e="BackgroundCanvas"+(this.state.background?" background":"");return t().createElement("canvas",{className:e,width:this.props.width,height:this.props.height,ref:this.canvasRef,onClick:this.state.background?void 0:this._backgroundOnfirstClick,onTouchEnd:this.state.background?void 0:this._backgroundOnfirstClick})}},{key:"_refsUpdated",value:function(){this.canvasCtx=this.canvasRef.current.getContext("2d")}},{key:"_propsUpdated",value:function(){this.canvasCtx.fillStyle="white",this.canvasCtx.font="256px monospace",this.canvasCtx.textAlign="center",this.canvasCtx.textBaseline="middle"}}]),r}(t().Component),tn=n(174),nn=n.n(tn)()((function(e){var t=e.width;return{columnCount:t<800?1:t<=1500?3:4}}))((function(e){var n=e.children,r=e.columnCount,a=e.heroChildren,i=Math.floor(n.length/(r-1)),o=n.length-i*(r-1),s=0,l=Qt(Array(r-1)).map((function(e,r){var a=i+(r<o?1:0),l=n.slice(s,s+a);return s+=a,t().createElement("div",{className:"TileContainer__column",key:r},l)}));return t().createElement("div",{className:"TileContainer"},r>1?t().createElement(t().Fragment,null,t().createElement("div",{className:"TileContainer__hero"},a),l):t().createElement("div",{className:"TileContainer__column"},a,n))}));function rn(e){return e.href?Xt(e.href)?t().createElement("a",Object.assign({target:"_blank",rel:"noopener noreferrer"},e),e.children):t().createElement(ye,{to:e.href},e.children):e.children}function an(n){return t().createElement("div",{className:"Tile"},t().createElement(rn,{href:n.url},function(n){var r=n.url,a=n.header,i=n.date,o=n.activityType,s=n.preview;return t().createElement(e.Fragment,null,t().createElement("div",{key:"header",className:"Tile__header"},t().createElement("span",null,a),Xt(r)?t().createElement("img",{className:"Tile__external-link",src:"/images/external-link.svg",alt:"home"}):null),t().createElement("div",{key:"preview",className:"Tile__body"},s),i&&o?t().createElement("div",{key:"footer",className:"Tile__footer"},t().createElement("div",{key:"date",className:"Tile__date"},i)," | ",t().createElement("div",{key:"activityType",className:"Tile__activityType"},o)):null)}(n)))}function on(e){return t().createElement("div",{className:"Tile TileContact"},t().createElement("div",{className:"Tile__body"},t().createElement("div",{className:"Tile__TileContact__cv"},t().createElement(rn,{href:"/brag"},"Jobs, concerts, lectures ..."),t().createElement(rn,{href:"/webdev-portfolio"},"Freelance portfolio"))),t().createElement("div",{key:"footer",className:"Tile__footer"},t().createElement("div",{className:"TileContact__link"},t().createElement("img",{src:"/images/external-link.svg",alt:"external link"}),t().createElement("a",{href:"https://github.com/sebpiq"},"github")),t().createElement("div",{className:"TileContact__link"},t().createElement("img",{src:"/images/external-link.svg",alt:"external link"}),t().createElement("a",{href:"mailto://[email protected]"},"email")),t().createElement("div",{className:"TileContact__link"},t().createElement("img",{src:"/images/external-link.svg",alt:"external link"}),t().createElement("a",{href:"https://mastodon.social/@sebpiq"},"mastodon"))))}var sn=function(e){Ht(r,e);var n=Kt(r);function r(e){var a;
2return Rt(this,r),(a=n.call(this,e))._scrollToTop=function(){a.pageRef.current.scrollTo(0,0)},a.pageRef=t().createRef(),a}return Vt(r,[{key:"render",value:function(){var e="Page "+(this.props.className||"");return t().createElement("div",{className:e,ref:this.pageRef},this.props.children,t().createElement("button",{className:"Page__scroll_to_top",onClick:this._scrollToTop},"^"))}}]),r}(t().Component),ln=sn;function un(e){var n="/"+de().pathname.split("/").filter((function(e){return e.length})).slice(0,-1).join("/");return t().createElement("h1",{className:"PageTitle"},t().createElement(ye,{to:n,className:"PageTitle__navigate_index"},t().createElement("span",null,"<")),t().createElement("span",{className:"PageTitle__text"},e.text))}function cn(n){var r=n.videoId,a="https://player.vimeo.com/video/".concat(r,"?portrait=0");return t().createElement(e.Fragment,null,t().createElement("div",{style:{padding:"56.25% 0 0 0",position:"relative"}},t().createElement("iframe",{title:"vimeo ".concat(r),src:a,style:{position:"absolute",top:"0",left:"0",width:"100%",height:"100%"},frameBorder:"0",allow:"autoplay; fullscreen",allowFullScreen:!0})),t().createElement("script",{src:"https://player.vimeo.com/api/player.js"}))}function pn(e){return t().createElement("div",{className:"CenteredImage"},t().createElement("img",Object.assign({src:e.src,key:e.src,alt:e.alt||e.src},e)))}function dn(){return t().createElement(ln,null,t().createElement(un,{text:"Freedom Portal"}),t().createElement("p",null,"\u200b The Freedom Portal project was developed in collaboration with ",t().createElement("a",{href:"https://tim-shaw.net/"},"Tim Shaw")," as a platform to organize unauthorized shows in the public space. It was first prototyped in a residency at ",t().createElement("a",{href:"https://www.stereolux.org/"},"Stereolux")),t().createElement("p",null,"The platform works in the following way :"),t().createElement("ul",null,t().createElement("li",null,"We choose a public venue where to organize a show."),t().createElement("li",null,"We create there an official-looking WiFi network, by plugging-in wireless routers to sockets on the wall."),t().createElement("li",null,"We let visitors be tricked into connecting to this network. They will unintentionally experience the installation as it pops-up onto their phones.")),t().createElement("h2",null,"Third Space Helsinki collaboration"),t().createElement(cn,{videoId:"254006804"}),t().createElement("p",null,"Throughout 2017, in collaboration with ",t().createElement("a",{href:"http://www.th1rdspac3.com/"},"Third Space")," and artists Minna Henriksson and Steve Maher, we produced three works targeting the three biggest art museums in Finland : ",t().createElement("b",null,"Kiasma, Ateneum and Kansallismuseo"),". Each work was a rip-off of the museum's official web page, assuming the identity of the institution in order to challenge some of its positions. Together these installations received about 4500 visitors and each lasted for about a month until they were discovered and removed by the museum's staff."),t().createElement("h3",null,"Ateneum | Minna Henriksson | Scientific illustrations to keep silent about"),t().createElement("p",null,"The intervention adds to knowledge about the oeuvre of the widely loved von Wright brothers, whose blockbuster exhibition opened in Ateneum in October 2017. In the WiFi network of Ateneum we could see what the exhibition didn\u2019t show. Such were Wilhelm von Wright\u2019s racial studies of Rufina in 1843. Rufina was a 10 years old girl, shipped from Argentina to Sweden all by herself on request of race scientist Anders Retzius, who needed \u201can indigenous specimen\u201d. After the drawings and measurements, she was given to an upper class family in Gothenburg as servant. ",t().createElement("a",{href:"http://minnahenriksson.com"},"http://minnahenriksson.com")),t().createElement(pn,{src:"/images/projects/freedom-portal-8.png"}),t().createElement("h3",null,"Kansallismuseo | Steve Maher | N\xf3r\xeb Carm\xebcoa"),t().createElement("p",null,"The Finnish National Museum's website Translated to Tolkien's High Elvish, Quenya, which is based on Finnish. The project reflects on the nature of national institutions as venues through which state actors mythpoecise the past in the process of building national identity. ",t().createElement("a",{href:"http://www.stevemaher.net/"},"http://www.stevemaher.net/")),t().createElement(pn,{src:"/images/projects/freedom-portal-9.png"}),t().createElement("h3",null,"Kiasma | Third Space collective | Un-allowed Open Call"),t().createElement("p",null,'Installed during the "ARS17 - Hello World!" exhibition. Each visitor can submit their artworks as a file, and these would be (supposedly) considered for inclusion into Kiasma\'s permanent exhibition. Large parts of the open call text are directly copied from the actual website of Kiasma.'),t().createElement(pn,{src:"/images/projects/freedom-portal-10.png"}),t().createElement("h2",null,"Electropixel"),t().createElement("p",null,"We installed three works as part of ",t().createElement("a",{href:"http://electropixel.org/tim
2-shaw-sebastien-piquemal/"},"electropixel #6")," in Nantes, 2016."),t().createElement("h3",null,"S\xe9bastien Piqumal | wlandalisme"),t().createElement("p",null,"This piece allows participants to vandalize the public Wi-Fi space by posting a small message of less than 32 characters. Once submitted their text will appear as an available network in that area. To submit your own message connect to the network \u201cwlandalisme\u201d, open a web page, write a message and click on the button to post it. If you fail to post, check that you are still connected to the \u201cwlandalisme\u201d Wi-Fi and try one more time. Then open your phone\u2019s settings to display the list of available Wi-Fi networks in the area. Your message might take a little while to appear."),t().createElement(pn,{src:"/images/projects/freedom-portal-2.jpg",style:{width:"50%"}}),t().createElement("h3",null,"Tom Schofield | 192.168.0.1:Where the WiFi comes from"),t().createElement("p",null,"\u2018192.168.0.1:Where the Wi-Fi Comes From\u2019 takes a live image grab of the router at the time of accessing the network. Instead of allowing access to the wider Internet the router remains locked in a self-referential and exhibitionist cycle. The time of access is presented to the user referencing the complex temporal interdependencies of networked technologies."),t().createElement(pn,{src:"/images/projects/freedom-portal-4.jpg",style:{width:"50%"}}),t().createElement("h3",null,"Antonio Roberts \u2013 Freemium Basics"),t().createElement("p",null,"\u201cIf you are not paying for it, you\u2019re not the customer; you\u2019re the product being sold\u201d. This phrase said by Andrew Lewis aka blue_beetle in 2010 should make any user wary of using free services. The promises of corporations offering \u201cexclusive\u201d \u201cpremium\u201d gifts \u2013 loyalty cards, free wifi, vouchers etc \u2013 is that it will make your life better, easier, help you, help others, and ultimately make the world a better place. By accepting these \u201cgifts\u201d we give permission to these corporations to enter our lives, track our social, spending, and general living habits. With this information they can greatly influence the opinion and habits of us and our social circles. These free \u201cgifts\u201d, then, come at a price. Using Free Basics (previously Internet.org) as its target, which is Facebook\u2019s failed attempt to gift \u201cfree internet\u201d to India, Freemium Basics sheds light on the dangers of clicking \u201cI Accept\u201d on free services without considering the costs."),t().createElement(pn,{src:"/images/projects/freedom-portal-3.jpg",style:{width:"50%"}}),t().createElement("h2",null,"Supports"),t().createElement("a",{href:"https://www.taike.fi"},"Taike")," | ",t().createElement("a",{href:"https://tokyo.fi/kipsari"},"Kipsari")," | ",t().createElement("a",{href:"https://www.stereolux.org/"},"Stereolux"),t().createElement("h2",null,"Links"),t().createElement("ul",null,t().createElement("li",null,t().createElement("a",{href:"https://github.com/sebpiq/FreedomPortal"},"Source code and instructions to install the system"))))}function fn(){return t().createElement(ln,null,t().createElement(un,{text:"La Jet\xe9e (movie concert)"}),t().createElement("p",null,"In the aftermath of World War III, survivors live underground in a post-apocalyptic Paris where scientists research time travel to rescue the present."),t().createElement("p",null,"With live narration by David McKechnie, Tim Shaw and S\xe9bastien Piquemal re-score this acclaimed short film by Chris Marker in a performance that explores digital mobile technology and hyperlocal networks for surround sound diffusion."),t().createElement(pn,{src:"/images/projects/la-jetee-1.jpg"}
2),t().createElement(pn,{src:"/images/projects/la-jetee-2.jpg"}),t().createElement("p",null,"Image \xa9 ",t().createElement("a",{href:"http://www.chrisdonia.co.uk/"},"http://www.chrisdonia.co.uk/")),t().createElement("p",null,"This performance was produced by ",t().createElement("a",{href:"http://www.mediascot.org/"},"New Media Scotland"),"."),t().createElement("h2",null,"Links"),t().createElement("ul",null,t().createElement("li",null,t().createElement("a",{href:"http://github.com/sebpiq/fields"},"Source code of the Fields system, used in the performance"))))}function mn(e){var n=e.videoId,r="//www.youtube.com/embed/".concat(n);return t().createElement("iframe",{title:"youtube ".concat(n),width:"100%",height:"50%",src:r,frameBorder:"0",allowFullScreen:!0})}function hn(){return t().createElement(ln,null,t().createElement(un,{text:"Murmurate"}),t().createElement(cn,{videoId:"144312243"}),t().createElement("p",null,t().createElement("strong",null,"Murmurate")," (previously called Fields) is a networked system exploring new areas of musical performance and audience participation through the use of mobile technology as a medium for sound diffusion. This project is realized in collaboration with artist ",t().createElement("a",{href:"http://tim-shaw.net"},"Tim Shaw"),"."),t().createElement(pn,{src:"/images/projects/fields-6.jpg"}),t().createElement(pn,{src:"/images/projects/fields-1-smaller.png"}),t().createElement("p",null,"Image \xa9 ",t().createElement("a",{href:"http://www.chrisdonia.co.uk/"},"http://www.chrisdonia.co.uk/")),t().createElement("p",null,"Murmurate has been performed around Europe and in the USA. Venues include Cafe OTO (UK), FACT Liverpool (UK), Piksel (NOR), Stereolux (FR) Islington Mill (UK), ZDB (PRT), NK Project (DEU), NIME (USA), Talbot Rice Gallery (UK) and Third Space (FIN)."),t().createElement("p",null,"Murmurate has been kindly supported by New Media Scotland, Newcastle Institute for Creative Arts Practice, Culture Lab, Media Lab Helsinki, The Creative Exchange and Sound and Music."),t().createElement("h2",null,"Links"),t().createElement("ul",null,t().createElement("li",null,t().createElement("a",{href:"http://github.com/sebpiq/fields"},"Source code of the Fields system, used in Murmurate")),t().createElement("li",null,t().createElement("a",{href:"https://nime2015.lsu.edu/proceedings/196/index.html"},"Paper in proceedings of NIME 2015"))),t().createElement("h2",null,"Supports"),t().createElement("p",null,t().createElement("a",{href:"https://taike.fi"},"The Finnish Arts Council (Taike)")," | ",t().createElement("a",{href:"https://www.aalto.fi/en/aalto-media-lab"},"Media Lab Helsinki")," | ",t().createElement("a",{href:"http://www.soundandmusic.org/"},"Sound and Music (UK national agency for New Music)")," | ",t().createElement("a",{href:"https://www.ncl.ac.uk/creativearts/"},"NICAP")),t().createElement("h2",null,"More videos"),t().createElement(cn,{videoId:"120524097"}),t().createElement(mn,{videoId:"P1aj6vwFITI"}))}function vn(){return t().createElement(ln,null,t().createElement(un,{text:"New Weave"}),t().createElement(cn,{videoId:"120474851"}),t().createElement("p",null,t().createElement("strong",null,"New Weave")," is an experimental sound performance where the performers improvise with small audio snippets recorded and sent live by audience members with their smartphones."),t().createElement("h2",null,"Supports"),t().createElement("p",null,t().createElement("a",{href:"https://taike.fi"},"The Finnish Arts Council (Taike)")," | ",t().createElement("a",{href:"https://www.aalto.fi/en/aalto-media-lab"},"Media Lab Helsinki"),"."),t().createElement("h2",null,"Links"),t().createElement("ul",null,t().createElement("li",null,t().createElement("a",{href:"http://github.com/sebpiq/rhizome"},"Source code of the rhizome system, used in the performance"))))}function gn(){return t().createElement(ln,null,t().createElement(un,{text:"Pure Data And Raspberry Pi Workshops"}),t().createElement("p",null,"Teaching how to program and design a pocket-sized instrument with Pure Data and Raspberry Pi."),t().createElement(pn,{src:"/images/projects/pd-rpi-workshop-3.jpg"}),t().createElement(cn,{videoId:"98737686"}),t().createElement(cn,{videoId:"76642179"}),t().createElement(cn,{videoId:"76307579"}),t().createElement("p",null,"Produced by ",t().createElement("a",{href:"https://www.cc4av.com/"},"CC4AV")))}function bn(){return t().createElement(ln,null,t().createElement(un,{text:"WebPd"}),t().createElement("p",null,"WebPd is a compiler for the Pure Data audio programming language allowing to run .pd patches in web pages."),t().createElement("p",null,"WebPd is highly modular and takes a white-box approach to audio programming. It converts the audio graph and processing objects from a patch into plain human-readable JavaScript or AssemblyScript. The pure audio generated code can be then integrated directly in any web application without using WebPd or Pure Data ever again \ud83c\udf08."),t().createElement("h2",null,"Links"),t().createElement("ul",null,t().createElement("li",null,t().createElement("a",{href:"http://github.com/sebpiq/WebPd"},"WebPd on github")),t().createElement("li",null,t().createElement("a",{href:"https://sebpiq.github.io/WebPd_website/"},"WebPd online compiler + demo"))))}function yn(){return t().createElement(ln,null,t().createElement(un,{text:"Possessed Rooms"}),t().createElement("p",null,t().createElement("strong",null,"Posse
2ssed rooms")," is a series of parasitic performances happening in public computer rooms. The project is a collaboration with ",t().createElement("a",{href:"http://fernandovisockis.net/"},"Fernando Visockis"),"."),t().createElement(cn,{videoId:"165747866"}),t().createElement("p",null,t().createElement("strong",null,"possessed room #1")," Media Lab Helsinki, computer room 515."),t().createElement("ul",null,t().createElement("li",null,"13 desktop computers, custom made software."),t().createElement("li",null,"Audio : samples extracted from thousands of random SoundCloud tracks."),t().createElement("li",null,"Visuals : Random images of country leaders downloaded from twitter."),t().createElement("li",null,"Live recording, 11/03/2016.")),t().createElement("h2",{id:"links"},"Links"),t().createElement("ul",null,t().createElement("li",null,t().createElement("a",{href:"http://github.com/sebpiq/rhizome"},"Source code of the rhizome system, used in the performance"))))}function wn(e,t,n){return(t=Ut(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function kn(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function xn(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?kn(Object(n),!0).forEach((function(t){wn(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):kn(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var En=n(735),Tn=n.n(En),Sn=JSON.parse('[{"name":"racolage.xxx","description":"A record label that releases experimental music through spam email, porn streaming sites, tinder, and other spammy release channels...","url":"https://racolage.xxx","events":[]},{"name":"Atmosphere | La Jet\xe9e","description":"A re-score of short film La Jet\xe9e by Chris Marker, in a performance that explores digital mobile technology and hyperlocal networks for surround sound diffusion.","url":"/la-jetee","events":[{"type":"concert","date":"19/02/2017","venue":"Glasgow Film Festival, Scotland"},{"type":"concert","date":"19/08/2016","venue":"Assembly Rooms, Edinburgh, Scotland"}]},{"name":"ParaFonoM","url":"http://binauralmedia.org/news/en/arquivo/8954","events":[{"type":"residency","date":"10/10/2016","end_date":"30/10/2016","venue":"Nodar residency (SoCCoS), Vouzela, Portugal"}]},{"name":"Freedom Portal","description":"A captive portal software for OpenWrt which allows to create Wi-Fi hotspots embedding digital artworks in the public space.","url":"/freedom-portal","events":[{"type":"exhibition","date":"01/09/2017","end_date":"31/12/2017","venue":"Ateneum, Helsinki, Finland","subtitle":"Work by Minna Henriksson - Scientific illustrations to keep silent about"},{"type":"exhibition","date":"01/09/2017","end_date":"31/12/2017","venue":"Kansallismuseo, Helsinki, Finland","subtitle":"Work by Steve Maher - N\xf3r\xeb Carm\xebcoa"},{"type":"exhibition","date":"01/09/2017","end_date":"31/12/2017","venue":"Kiasma, Helsinki, Finland","subtitle":"Work by Third Space collective - Un-allowed Open Call"},{"type":"exhibition","date":"19/08/2016","end_date":"21/08/2016","venue":"Electropixel, Nantes, France"},{"type":"residency","date":"11/04/2016","venue":"Stereolux residency, Nantes, France"}]},{"name":"Possessed Rooms","description":"A series of parasitic performances happening in public computer rooms.","url":"/possessed-rooms","events":[{"type":"performance","date":"11/03/2016","venue":"\xc4\xe4niaalto, Helsinki, Finland"}]},{"name":"Murmurate / Fields","description":"A performance using mobile devices of the audience members as a sound system.","url":"/murmurate","events":[{"type":"concert","date":"28/09/2016","venue":"Sight and Sound festival, Montreal, Canada"},{"type":"concert","date":"01/07/2016","venue":"The Wired Lab, Wagga-Wagga, Australia"},{"type":"concert","date":"14/05/2016","venue":"Cumberland Arms, Newcastle, England"}
2,{"type":"concert","date":"13/05/2016","venue":"FACT, Liverpool, England"},{"type":"concert","date":"20/04/2016","venue":"Stereolux, Nantes, France"},{"type":"concert","date":"26/09/2015","venue":"Sanctuary, Galloway, Scotland"},{"type":"workshop","date":"13/04/2016","venue":"Stereolux, Nantes, France"},{"type":"concert","date":"19/11/2015","venue":"Piksel festival, Bergen, Norway"},{"type":"concert","date":"10/10/2015","venue":"Connect the Dots festival, Sheffield, England"},{"type":"concert","date":"02/06/2015","venue":"NIME, Baton Rouge, USA"},{"type":"concert","date":"23/04/2015","venue":"Durham Castle, Durham, England"},{"type":"concert","date":"22/04/2015","venue":"Islington Mill, Manchester, England"},{"type":"concert","date":"19/04/2015","venue":"Ulverston Parish Rooms, Ulverston, England"},{"type":"concert","date":"17/04/2015","venue":"EAVI, Goldsmiths, London, England"},{"type":"concert","date":"16/04/2015","venue":"Music Hack Space, London, England"},{"type":"concert","date":"14/04/2015","venue":"The Louisiana Cellar, Bristol, England"},{"type":"concert","date":"12/04/2015","venue":"Cafe OTO, London, England"},{"type":"concert","date":"11/04/2015","venue":"Other Worlds Festival, Blackpool, England"},{"type":"concert","date":"09/04/2015","venue":"Green Door Store, Brighton, England"},{"type":"concert","date":"09/04/2015","venue":"University of Sussex, Brighton, England"},{"type":"concert","date":"27/01/2015","venue":"WAC, Ircam, Paris, France"},{"type":"concert","date":"24/01/2015","venue":"Gap in the Air, Edinburgh, Scotland"},{"type":"concert","date":"23/11/2014","venue":"ICLI, Z\xe9 Dos Bois, Lisbo, Portugal"},{"type":"concert","date":"27/10/2014","venue":"NordiCHI, Helsinki, Finland"},{"type":"concert","date":"25/10/2014","venue":"Third Space, Helsinki, Finland"},{"type":"concert","date":"10/10/2014","venue":"NK, Berlin, Germany"},{"type":"concert","date":"19/09/2014","venue":"ICMC, Athens, Greece"},{"type":"concert","date":"22/06/2014","venue":"Mining Institute, Newcastle-upon-Tyne, England"},{"type":"concert","date":"08/04/2014","venue":"Arkadia bookstore, Helsinki, Finland"}]},{"name":"New Weave","description":"An experimental sound performance where the performers improvise with small audio snippets recorded and sent live by audience members with their smartphones.","url":"/newweave","events":[{"type":"concert","date":"15/08/2015","venue":"Flow festival, Helsinki, Finland"},{"type":"concert","date":"22/01/2015","venue":"Third Space, Helsinki, Finland"},{"type":"concert","date":"20/05/2015","venue":"Vapaan Taiteen Tila, Helsinki, Finland"}]},{"name":"Rhizome","description":"A web server for realizing interactive performances and installations.","url":"https://github.com/sebpiq/rhizome","events":[]},{"name":"WebPd","description":"A JavaScript version of the popular graphical programming language Pure Data.","url":"/webpd","events":[{"type":"residency","date":"12/2022 - 03/2023","venue":"IRCAM, Centre Pompidou, France"},{"type":"residency","date":"03/2020","venue":"University of Sussex, Brighton, England"},{"type":"workshop","date":"02/2013","venue":"Network Music Festival, Birmingham, UK"}]}]'),Cn=JSON.parse('[{"name":"Ordinateurs, donn\xe9es, codes et r\xe9seaux : ouvrir la \xab\xa0bo\xeete noire\xa0\xbb, comprendre la mati\xe8re num\xe9rique.","url":"https://github.com/sebpiq/cours-son-reseaux/blob/main/digital-library/index.md","description":"Atelier \xe9mancipateur sur la technologie num\xe9rique. Expos\xe9, discussion, exercices : mod\xe9lisation d\'un processeur, exercices de pillage de donn\xe9es, piratage cr\xe9atif d\'applications web, surf sur le darknet, ...","events":[{"date":"04/2023","venue":"\xc9cole des beaux-arts, Paris, France"}]},{"name":"Son et r\xe9seaux","url":"https://github.com/sebpiq/cours-son-reseaux","description":"3-days intensive class presenting a technical and critical perspective on computer networks and online sound.","events":[{"date":"12/2020","venue":"\xc9cole des beaux-arts, Paris, France"}]},{"name":"Distributed Music Workshop","url":"https://github.com/taylorbf/distributed-music-workshop","description":"Workshop with Ben Taylor on designing your own distributed music instrument capable of distributing sound events to audie
2nce mobile devices using NexusUI, Rhizome, and WebPd.","events":[{"date":"05/2017","venue":"NIME 2017, Copenhagen, Denmark"}]},{"name":"Pure Data and Raspberry Pi Workshop","url":"/pure-data-and-raspberry-pi-workshops","description":"Teaching how to program and design a pocket-sized instrument with Pure Data and Raspberry Pi.","events":[{"date":"04/2014","venue":"CC4AV / AAVE, Helsinki, Finland"},{"date":"10/2013","venue":"CC4AV, Riga, Latvia"},{"date":"04/2014","venue":"CC4AV / AAVE, Helsinki, Finland"}]},{"name":"Pure Data Workshop","events":[{"date":"10/2016","venue":"Technical highschool, Vouzela, Portgual"},{"date":"07/2013","venue":"Telegraf, Moscow, Russia"}]}]'),qn=JSON.parse('[{"start":2018,"end":2020,"company":"Kialo","company_description":"An online platform whose mission is to change the way people debate online.","title":"Full stack developer and creative concepter","description":["Architect and programmer as part of one of Kialo\u2019s Agile development teams.","Led ideation and prototyping for entirely new use-cases of the platform."],"tech_stack":["Python","React","Redux","TypeScript","MongoDB","Docker","AWS"]},{"start":2018,"end":2018,"company":"Volkswagen FCE","company_description":"Self-driving cars and urban mobility ecosystems of the future.","title":"Creative programmer and concepter","description":["Worked on self-driving cars and urban mobility ecosystems of the future.","Developed concepts and prototypes to offer new perspectives on how Volkswagen could fit within this new ecosystems."],"tech_stack":["Ionic","React","Redux","Python","Docker","Raspberry Pi"]},{"start":2017,"end":2018,"company":"Solinor","title":"Full stack web developer and backend architect","description":["Backend architect, helped building a full cloud computing platform (similar to AWS).","Worked for clients such as Nokia, VR (national train company of Finland), Helen (energy company of the city of Helsinki) and others ..."],"tech_stack":["Python","React Native","Node.js","React","Kafka","Docker","AWS"]},{"start":2014,"end":"now","company":"Freelance","title":"Media artist and developer","description":["Presented my projects in dozens of art and technology venues around the world.","Recipient of several grants (Finnish Arts Council, British Arts Council, etc ...)."]},{"start":2016,"end":2017,"company":"Moprim","title":"Full stack web developer","description":["Backend and data programmer, developed a transport mode detection SDK using built-in sensors start smartphones."]},{"start":2013,"end":2013,"company":"Dream Industries","title":"Creative programmer","description":["Generative music applications around music streaming service Zvooq, by then number one music streaming service in Russia."]},{"start":2010,"end":2013,"company":"Futurice","title":"Full stack web developer","description":["Developed internal web-based IT services for Futurice.","Futurice was elected best place to work in Europe by the Great place to work institute in 2012 and 2013."],"tech_stack":["Python","Django","Node.js"]},{"start":2011,"end":2014,"company":"Aidbrella","title":"Full stack web developer","description":["Lead developer for Aidbrella/Twines project, a social network for organizations working in the sector of public good."]}]'),_n=[];Sn.forEach((function(e){e.events.forEach((function(t){_n.push({projectName:e.name,projectUrl:e.url,type:t.type,date:t.date,timestamp:Zt(t.date),venue:t.venue})}))})),_n=Tn()(_n,(function(e){return-e.timestamp})),Sn.forEach((function(e){var t=e.events.filter((function(e){return["workshop"].includes(e.type)}));t.length&&Cn.push(xn(xn({},e),{},{name:"".concat(e.name," Workshop"),events:t}))}));var Pn=Cn.map((function(e,t){return xn(xn({},e),{},{events:Tn()(e.events.map((function(e){return xn(xn({},e),{},{timestamp:Zt(e.date)})})),(function(e){return-e.timestamp}))})})),An=Tn()(qn,(function(e){return-e.start}));function jn(){var e=_n.map((function(e,n){return t().createElement("li",{key:n},t().createElement("span",{className:"Brag__date"},e.date),t().createElement(rn,{href:e.projectUrl},t().createElement("span",{className:"Brag__name"},e.projectName)),t().createElement("span",{className:"Brag__venue"},"".concat("residency"===e.type?"residency, ":"").concat(e.venue)))})),n=Pn.map((function(e,n){var r=e.events.map((function(e,n){return t().createElement("li",{key:n},t().createElement("span",{className:"Brag__date"},e.date),t().createElement("span",{className:"Brag__venue"},e.venue))}));return t().createElement("li",{key:e.name},t().createElement(rn,{href:e.url},t().createElement("span",{className:"Brag__name"},e.name)),t().createElement("ul",{className:"Brag__sublist"},r))})),r=An.map((function(e,n){var r=e.description.map((function(e,n){return t().createElement("li",{key:n},e)}));return t().createElement("li",{key:e.company},t().createElement("span",{className:"Brag__date"},e.start," - ",e.end," :"),t().createElement("span",{className:"Brag__name"},e.company," - ",e.title),t().createElement("ul",{className:"Brag__sublist"},r))}));return t().createElement(ln,{className:"Brag"},t().createElement(un,{text:"Present and past activities"}),t().createElement("h2",null,"Work experience"),t().createElement("ul",null,r),t().createElement("h2",null,"Teaching"),t().createElement("ul",null,n),t().createElement("h2",null,"Concerts, Exhibitions, Residencies"),t().createElement("ul",null,e))}var On=JSON.parse('[{"type":"academic","title":"Les IA g\xe9n\xe9ratives : une r\xe9volution des pratiques artistiques ?","abstract":"L\u2019\xe9mergence soudaine d\u2019IA g\xe9n\xe9ratives (GenIA) capables de cr\xe9er textes et images \xe0 partir d\u2019une simple requ\xeate en langage naturel a cr\xe9\xe9 des secousses dans le monde de la culture. De nombreuses anal
2yses ont paru dans les m\xe9dias, relayant l\u2019inqui\xe9tude des artistes et allant parfois jusqu\u2019\xe0 proph\xe9tiser leur remplacement par des machines. La trajectoire des GenIA pr\xe9sente de nombreuses similarit\xe9s avec celle des technologies musicales : leur d\xe9mocratisation, du laboratoire au grand public ; le d\xe9veloppement d\u2019outils de cr\xe9ation qui encapsulent ou mod\xe9lisent des connaissances ; la naissance de communaut\xe9s de cr\xe9ation qui inventent de nouvelles pratiques et brouillent la fronti\xe8re entre professionnels et amateurs. Enfin, ces ph\xe9nom\xe8nes s\u2019inscrivent tous deux dans un contexte de culture de masse caract\xe9ris\xe9 par une m\xe9diation de la consommation contr\xf4l\xe9e par les g\xe9ants du num\xe9rique et soumise au r\xe9gime de l\u2019\xe9conomie de l\u2019attention. En prenant la trajectoire des technologies musicales et de leurs effets esth\xe9tiques et sociaux pour mod\xe8le, cet article d\xe9fend la position selon laquelle l\u2019av\xe8nement des GenIA pour la cr\xe9ativit\xe9 n\u2019est qu\u2019une instanciation suppl\xe9mentaire d\u2019un processus d\u2019automatisation de la production amorc\xe9 de longue date. Sans pour autant nier la possibilit\xe9 que les GenIA soient bel et bien les premiers soubresauts d\u2019un futur changement de paradigme, il semblerait que leur d\xe9veloppement s\u2019inscrive jusqu\u2019ici dans un continuum technologique initi\xe9 par la reproductibilit\xe9 m\xe9canique et prolong\xe9 par l\u2019introduction des outils num\xe9riques pour la production artistique.","url":"https://www.astasa.org/2024/06/20/les-ia-generatives-une-revolution-des-pratiques-artistiques/","date":"20/06/2024"},{"type":"blog-post","title":"IA g\xe9n\xe9ratives : mort de l\u2019art ou renouveau de la culture ?","abstract":"La mort de l\'art serait-elle imminente ? L\u2019\xe9mergence d\u2019IA g\xe9n\xe9ratives capables de cr\xe9er textes, images ou sons \xe0 partir d\u2019une simple requ\xeate a profond\xe9ment choqu\xe9 le monde de la culture. Pourtant, \xe0 rebours des r\xe9cits alarmistes, ces outils pourraient en fait amorcer un mouvement radical de d\xe9mocratisation de la production artistique... \xe0 condition d\'emp\xeacher l\'industrie de se les approprier.","url":"/articles/2023-09-04-ia-generatives-mort-de-lart","date":"03/11/2023"},{"type":"blog-post","title":"L\'art nous emp\xeache de construire un monde meilleur","abstract":"L\'art peut-il \xeatre un outil politique pour surmonter les crises environnementales et sociales que nos soci\xe9t\xe9s traversent ? A-t-il vraiment le pouvoir de cr\xe9er de nouveaux r\xe9cits pour amener une mutation profonde et n\xe9cessaire ? Non. Car dans un monde profond\xe9ment individualiste, l\'art est fondamentalement du c\xf4t\xe9 des forces r\xe9actionnaires.","url":"/articles/2022-12-05-art-nous-empeche-de-construire","date":"05/12/2022"},{"type":"blog-post","title":"D\xe9tournements politiques des espaces virtuels","abstract":"More than 30 years after the launch of the Internet, the democratic utopia defended by its creators seems to have been corrupted by big tech companies. At the same time, at virtual spaces\u2019 margins, activists and mere users employ a range of tactics to carry out political hijacks of these companies\u2019 platforms. Through spam, hoaxes, or by organizing as online communities, they temporarily manage to visibilize themselves and to reclaim a form of agency. Here is a review of their tactics, presenting them at the same time as a source of inspiration and a source of concern for the state of the network utopia.","url":"/articles/2022-12-01-hijacking-virtual-sp
2aces","date":"01/12/2022"},{"type":"academic","title":"Hyperexistence - a web essay on individualism in late capitalist society","abstract":"Environmental destruction, absurd levels of inequality, growing cynicism and a feeling of powerlessness characterize the state of late capitalism we are living in today. Individualism is a component of the hardware which late capitalism operates on. It is a moral stance which emphasizes the agency of the individual over that of the social group. It has infused the public sphere and manifests itself through the ubiquity of self-expression, through the careful self-branding of public persona, and through the ruthless instrumentalization of others for the acquisition of reputation. The arts, the academia, social media, ... there is no public platform that isn\'t underlied by it. For anyone to weigh in the public debate against individualism, they first need to gain personal visibility, and thus enact the very individualistic behavior they mean to criticize. It\'s a paradox which fates the culture of individualism to reproduce endlessly.","url":"https://aaltodoc.aalto.fi/items/8fd161bc-8d71-4189-b937-4a624575ed96","date":"01/06/2020"},{"type":"academic","title":"Fields: An Exploration into the Use of Mobile Devices as a Medium for Sound Diffusion","abstract":"In this paper we present Fields, a sound diffusion performance implemented with web technologies that run on the mobile devices of audience members. Both a technical system and bespoke composition, Fields allows for a range of sonic diffusions to occur, and therefore has the potential to open up new paradigms for spatialised music and media performances. The project introduces how handheld technology used as a collective array of speakers controlled live by a centralized performer can create alternative types of participation within musical performance. Fields not only offers a new technological approach to sound diffusion, it also provides an alternative way for audiences to participate in live events, and opens up unique forms of engagement within sonic media contexts.","url":"https://dl.acm.org/doi/abs/10.5555/2993778.2993848","date":"01/05/2015"},{"type":"blog-post","title":"Brewing tea at the right temperature without a special kettle","url":"/articles/2014-09-22-brewing-tea-water-temperature-calculator","externalUrl":"/articles/2014-09-22-brewing-tea-water-temperature-calculator/article.html","date":"22/09/2014"},{"type":"blog-post","title":"Paulstretch algorithm with Web Audio API, and how to delegate audio processing to web workers","url":"/articles/2014-11-17-delegating-audio-processing-to-web-worker","date":"17/11/2014"},{"type":"blog-post","title":"Rhizome, interactive performances and network topologies","url":"/articles/2015-08-25-network-topologies-for-live-performances","date":"25/08/2015"},{"type":"blog-post","title":"Audio glitches with a linux terminal","url":"/articles/2016-01-15-audio-glitches-with-linux-terminal","date":"15/01/2016"},{"type":"blog-post","title":"Using Web Audio API in production","url":"/articles/2017-02-23-using-web-audio-api-in-production","date":"23/02/2017"}]'),In=On.filter((function(e){return"blog-post"===e.type})).map((function(e){return xn(xn({},e),{},{htmlStr:{"/articles/2014-09-22-brewing-tea-water-temperature-calculator":'<!DOCTYPE html>\n<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">\n<head>\n  <meta charset="utf-8" />\n  <meta name="generator" content="pandoc" />\n  <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />\n  <title>article</title>\n  <style>\n    code{white-space: pre-wrap;}\n    span.smallcaps{font-variant: small-caps;}\n    span.underline{text-decoration: underline;}\n    div.column{display: inline-block; vertical-align: top; width: 50%;}\n    div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}\n    ul.task-list{list-style: none;}\n  </style>\n  \x3c!--[if lt IE 9]>\n    <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"><\/script>\n  <![endif]--\x3e\n</head>\n<body>\n<p>With this simple calculator, you can finally brew your fancy tea at the proper temperature!</p>\n\x3c!--more--\x3e\n<p>Usage is very simple. Just input all the infos in the boxes below, and mix your <strong>V_boiled</strong> of boiled water with <strong>V_tap</strong> of tap water to get the desired <strong>T_brew</strong> temperature.</p>\n<p><input name="T_tap" class="water-temperature-tea" type="text" value="20" /> <strong>T_tap</strong> <em>temperature of the water coming out your tap (Celsius)</em></p>\n<p><input name="T_brew" class="water-temperature-tea" type="text" value="70" /> <strong>T_brew</strong> <em>temperature desired for the brew (Celsius)</em></p>\n<p><input name="V_boiled" class="water-temperature-tea" type="text" value="1"/> <strong>V_boiled</strong> <em>volume of boiled water (Liters)</em></p>\n<p><span id="V_tap" style="font-weight:bold;padding:0.5em;background-color:#aaa"></span> <strong>V_tap</strong> <em>volume of tap water to add to the boiled water (Liters)</em></p>\n<p>Of course this is a bit approximative, as you most likely don\u2019t know the exact temperature of your tap water, and volumes are approximated as well, and mass volumique of water is not temperature-constant, \u2026 blablabla</p>\n<script type="text/javascript">\nconsole.log(\'BLABLAB\')\n  // T_tap : temperature of tap water\n  // T_brew : final temperature desired\n  // V_boiled : volume of boiled water\n  var calculate = function(T_tap, T_brew, V_boiled) {\
2n    return V_boiled *  (100 - T_brew) / (T_brew - T_tap)\n  }\n\n  var refresh = function() {\n    var T_tap = parseFloat(document.querySelector(\'input[name="T_tap"]\').value)\n      , T_brew = parseFloat(document.querySelector(\'input[name="T_brew"]\').value)\n      , V_boiled = parseFloat(document.querySelector(\'input[name="V_boiled"]\').value)\n      , V_tap = calculate(T_tap, T_brew, V_boiled)\n\n    document.querySelector(\'#V_tap\').innerHTML = \'\' + Math.round(V_tap * 1000) / 1000\n  }\n\n  refresh()\n  document.querySelector(\'input.water-temperature-tea\').onkeyup = refresh\n\n<\/script>\n</body>\n</html>\n',"/articles/2014-11-17-delegating-audio-processing-to-web-worker":'<!DOCTYPE html>\n<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">\n<head>\n  <meta charset="utf-8" />\n  <meta name="generator" content="pandoc" />\n  <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />\n  <title>article</title>\n  <style>\n    code{white-space: pre-wrap;}\n    span.smallcaps{font-variant: small-caps;}\n    span.underline{text-decoration: underline;}\n    div.column{display: inline-block; vertical-align: top; width: 50%;}\n    div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}\n    ul.task-list{list-style: none;}\n    pre > code.sourceCode { white-space: pre; position: relative; }\n    pre > code.sourceCode > span { display: inline-block; line-height: 1.25; }\n    pre > code.sourceCode > span:empty { height: 1.2em; }\n    code.sourceCode > span { color: inherit; text-decoration: inherit; }\n    div.sourceCode { margin: 1em 0; }\n    pre.sourceCode { margin: 0; }\n    @media screen {\n    div.sourceCode { overflow: auto; }\n    }\n    @media print {\n    pre > code.sourceCode { white-space: pre-wrap; }\n    pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; }\n    }\n    pre.numberSource code\n      { counter-reset: source-line 0; }\n    pre.numberSource code > span\n      { position: relative; left: -4em; counter-increment: source-line; }\n    pre.numberSource code > span > a:first-child::before\n      { content: counter(source-line);\n        position: relative; left: -1em; text-align: right; vertical-align: baseline;\n        border: none; display: inline-block;\n        -webkit-touch-callout: none; -webkit-user-select: none;\n        -khtml-user-select: none; -moz-user-select: none;\n        -ms-user-select: none; user-select: none;\n        padding: 0 4px; width: 4em;\n        background-color: #2a211c;\n        color: #bdae9d;\n      }\n    pre.numberSource { margin-left: 3em; border-left: 1px solid #bdae9d;  padding-left: 4px; }\n    div.sourceCode\n      { color: #bdae9d; background-color: #2a211c; }\n    @media screen {\n    pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; }\n    }\n    code span.al { color: #ffff00; } /* Alert */\n    code span.an { color: #0066ff; font-weight: bold; font-style: italic; } /* Annotation */\n    code span.at { } /* Attribute */\n    code span.bn { color: #44aa43; } /* BaseN */\n    code span.bu { } /* BuiltIn */\n    code span.cf { color: #43a8ed; font-weight: bold; } /* ControlFlow */\n    code span.ch { color: #049b0a; } /* Char */\n    code span.cn { } /* Constant */\n    code span.co { color: #0066ff; font-weight: bold; font-style: italic; } /* Comment */\n    code span.do { color: #0066ff; font-style: italic; } /* Documentation */\n    code span.dt { text-decoration: underline; } /* DataType */\n    code span.dv { color: #44aa43; } /* DecVal */\n    code span.er { color: #ffff00; font-weight: bold; } /* Error */\n    code span.ex { } /* Extension */\n    code span.fl { color: #44aa43; } /* Float */\n    code span.fu { color: #ff9358; font-weight: bold; } /* Function */\n    code span.im { } /* Import */\n    code span.in { color: #0066ff; font-weight: bold; font-style: italic; } /* Information */\n    code span.kw { color: #43a8ed; font-weight: bold; } /* Keyword */\n    code span.op { } /* Operator */\n    code span.pp { font-weight: bold; } /* Preprocessor */\n    code span.sc { color: #049b0a; } /* SpecialChar */\n    code span.ss { color: #049b0a; } /* SpecialString */\n    code span.st { color: #049b0a; } /* String */\n    code span.va { } /* Variable */\n    code span.vs { color: #049b0a; } /* VerbatimString */\n    code span.wa { color: #ffff00; font-weight: bold; } /* Warning */\n  </style>\n  \x3c!--[if lt IE 9]>\n    <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"><\/script>\n  <![endif]--\x3e\n</head>\n<body>\n<p>Just published an implementation of PaulStretch in JavaScript which I made about a year ago. The <a href="https://github.com/sebpiq/paulstretch.js">repository is here</a> and in addition there is a demo <a href="http://sebpiq.github.io/paulstretch.js/examples/stretched-and-droned/dist/index.html">which allows you to create nice drones from SoundCloud tracks</a>. The following post is a more general tutorial on how to process audio live with web workers, and it uses <strong>paulstretch.js</strong> as an example.</p>\n\x3c!--more--\x3e\n<p><strong>
2paulstretch.js</strong> can be used in Node.js and in the browser. Unlike the original PaulStretch implementations, it is designed for allowing the user to change the stretch ratio at any time.</p>\n<p>Let\u2019s go over its API, in order to make the following example clearer.</p>\n<p>Note that in the following, <code>blockOut</code> and <code>blockIn</code> are just arrays representing channels data. For example a stereo block of 10 frames is represented by <code>[new Float32Array(10), new Float32Array(10)]</code>.</p>\n<div class="sourceCode" id="cb1"><pre class="sourceCode javascript"><code class="sourceCode javascript"><span id="cb1-1"><a href="#cb1-1"></a><span class="co">// Creates a PaulStretch instance. Typical `winSize` is 4096.</span></span>\n<span id="cb1-2"><a href="#cb1-2"></a><span class="co">// The created instance has 2 queues. One &#39;write queue&#39; with raw input frames,</span></span>\n<span id="cb1-3"><a href="#cb1-3"></a><span class="co">// one &#39;read queue&#39; with processed frames.</span></span>\n<span id="cb1-4"><a href="#cb1-4"></a><span class="kw">var</span> paulstretch <span class="op">=</span> <span class="kw">new</span> PaulStretch(numberOfChannels<span class="op">,</span> initialStretchRatio<span class="op">,</span> winSize)</span>\n<span id="cb1-5"><a href="#cb1-5"></a></span>\n<span id="cb1-6"><a href="#cb1-6"></a><span class="co">// Writes a block to the &#39;write queue&#39;.</span></span>\n<span id="cb1-7"><a href="#cb1-7"></a>paulstretch<span class="op">.</span><span class="fu">write</span>(blockIn)</span>\n<span id="cb1-8"><a href="#cb1-8"></a></span>\n<span id="cb1-9"><a href="#cb1-9"></a><span class="co">// Processes the data from the &#39;write queue&#39; and add it to the &#39;read queue&#39;.</span></span>\n<span id="cb1-10"><a href="#cb1-10"></a><span class="co">// It also returns the number of frames that were processed.</span></span>\n<span id="cb1-11"><a href="#cb1-11"></a><span class="co">// If there is not enough data to process, 0 is returned.</span></span>\n<span id="cb1-12"><a href="#cb1-12"></a>paulstretch<span class="op">.</span><span class="fu">process</span>() </span>\n<span id="cb1-13"><a href="#cb1-13"></a></span>\n<span id="cb1-14"><a href="#cb1-14"></a><span class="co">// Reads the processed data from the &#39;read queue&#39; to `blockOut`.</span></span>\n<span id="cb1-15"><a href="#cb1-15"></a><span class="co">// The amount of frames read depends on the length of `blockOut`.</span></span>\n<span id="cb1-16"><a href="#cb1-16"></a><span class="co">// If there is not enough frames to fill `blockOut`, `null` is returned.</span></span>\n<span id="cb1-17"><a href="#cb1-17"></a>paulstretch<span class="op">.</span><span class="fu">read</span>(blockOut)</span>\n<span id="cb1-18"><a href="#cb1-18"></a></span>\n<span id="cb1-19"><a href="#cb1-19"></a><span class="co">// Returns the number of processed frames in the &#39;read queue&#39;.</span></span>\n<span id="cb1-20"><a href="#cb1-20"></a>paulstretch<span class="op">.</span><span class="fu">readQueueLength</span>()</span>\n<span id="cb1-21"><a href="#cb1-21"></a></span>\n<span id="cb1-22"><a href="#cb1-22"></a><span class="co">// Set the time stretch ratio. Note that frames in the `readQueue` won&#39;t be affected.</span></span>\n<span id="cb1-23"><a href="#cb1-23"></a>paulstretch<span class="op">.</span><span class="fu">setRatio</span>(newRatio)</span></code></pre></div>\n<h1 id="the-web-audio-api-code">The web audio API code</h1>\n<p>As all the processing will happen in a worker, the only thing we want from web audio API is to read incoming blocks of audio and send them for processing to our worker.</p>\n<p>So we create a <code>ScriptProcessorNode</code>, with an <code>onaudioprocess</code> method that :</p>\n<ol type="1">\n<li>reads incoming blocks of audio, writes them to a queue <code>blocksIn</code> which will be sent to the worker.</li>\n<li>plays back audio from another queue <code>blocksOut</code> which contains processed audio blocks received from the worker.</li>\n</ol>\n<div class="sourceCode" id="cb2"><pre class="sourceCode javascript"><code class="sourceCode javascript"><span id="cb2-1"><a href="#cb2-1"></a><span class="kw">var</span> blocksIn <span class="op">=</span> []</span>\n<span id="cb2-2"><a href="#cb2-2"></a>  <span class="op">,</span> blocksOut <span class="op">=</span> []</span>\n<span id="cb2-3"><a href="#cb2-3"></a></span>\n<span id="cb2-4"><a href="#cb2-4"></a>paulstretchNode<span class="op">.</span><span class="at">onaudioprocess</span> <span class="op">=</span> <span class="kw">function</span>(<span class="bu">event</span>) {</span>\n<span id="cb2-5"><a href="#cb2-5"></a>  <span class="kw">var</span> ch<span class="op">,</span> block <span class="op">=</span> []</span>\n<span id="cb2-6"><a href="#cb2-6"></a></span>\n<span id="cb2-7"><a href="#cb2-7"></a>  <span class="cf">for</span> (ch <span class="op">=</span> <span class="dv">0</span><span class="op">;</span> ch <span class="op">&lt;</span> numberOfChannels<span class="op">;</span> ch<span class="op">++</span>)</span>\n<span id="cb2-8"><a href="#cb2-8"></a>    block<span class="op">.</span><span class="fu">push</span>(<span class="bu">event</span><span class="op">.</span><span class="at">inputBuffer</span><span class="op">.</span><span class="fu">getChannelData</span>(ch))</span>\n<span id="cb2-9"><a href="#cb2-9"></a>  blocksIn<span class="op">.</span><span class="fu">push</span>(block)</span>\n<span id="cb2-10"><a href="#cb2-10"></a>  </span>\n<span id="cb2-11"><a href="#cb2-11"></a>  <span class="cf">if</span> (blocksOut<span class="op">.</span><span class="at">length</span>) {</span>\n<span id="cb2-12"><a href="#cb2-12"></a>    block <span class="op">=</span> blocksOut<span class="op">.</span><span class="fu">shift</span>()</span>\n<span id="cb2-13"><a href="#cb2-13"></a>    <span class="cf">for</span> (ch <span class="op">=</span> <span class="dv">0</span><span class="op">;</span> ch <span class="op">&lt;</span> numberOfChannels<span class="op">;</span> ch<span class="op">++</span>)</span>\n<span id="cb2-14"><a href="#cb2-14"></a>
2      <span class="bu">event</span><span class="op">.</span><span class="at">outputBuffer</span><span class="op">.</span><span class="fu">getChannelData</span>(ch)<span class="op">.</span><span class="fu">set</span>(block[ch])</span>\n<span id="cb2-15"><a href="#cb2-15"></a>  }</span>\n<span id="cb2-16"><a href="#cb2-16"></a>}</span></code></pre></div>\n<h1 id="the-worker-file">The worker file</h1>\n<p>Here is a template of our worker file with a message handler for receiving commands from the main thread.</p>\n<div class="sourceCode" id="cb3"><pre class="sourceCode javascript"><code class="sourceCode javascript"><span id="cb3-1"><a href="#cb3-1"></a>onmessage <span class="op">=</span> <span class="kw">function</span> (<span class="bu">event</span>) {</span>\n<span id="cb3-2"><a href="#cb3-2"></a>  <span class="cf">switch</span> ( <span class="bu">event</span><span class="op">.</span><span class="at">data</span><span class="op">.</span><span class="at">type</span> ) {</span>\n<span id="cb3-3"><a href="#cb3-3"></a>    <span class="cf">case</span> <span class="st">&#39;read&#39;</span><span class="op">:</span></span>\n<span id="cb3-4"><a href="#cb3-4"></a>
2      <span class="cf">break</span></span>\n<span id="cb3-5"><a href="#cb3-5"></a>    <span class="cf">case</span> <span class="st">&#39;write&#39;</span><span class="op">:</span></span>\n<span id="cb3-6"><a href="#cb3-6"></a>      <span class="cf">break</span></span>\n<span id="cb3-7"><a href="#cb3-7"></a>  }</span>\n<span id="cb3-8"><a href="#cb3-8"></a>}</span></code></pre></div>\n<p>In order to keep the audio responsive, and be able to change the stretch ratio live, we need to process audio only at the last moment. This will be handled in the <code>\'read\'</code> case.</p>\n<p>Writing is trivial \u2026 we just take the audio as it comes :</p>\n<div class="sourceCode" id="cb4"><pre class="sourceCode javascript"><code class="sourceCode javascript"><span id="cb4-1"><a href="#cb4-1"></a>  <span class="cf">case</span> <span class="st">&#39;write&#39;</span><span class="op">:</span></span>\n<span id="cb4-2"><a href="#cb4-2"></a>    paulStretch<span class="op">.</span><span class="fu">write</span>(<span class="bu">event</span><span class="op">.</span><span class="at">data</span><span class="op">.</span><span class="at">data</span>)</span>\n<span id="cb4-3"><a href="#cb4-3"></a>    <span class="cf">break</span></span>\n<span id="cb4-4"><a href="#cb4-4"></a>  }</span></code></pre></div>\n<p>Reading is more tricky. We need to make sure that we have enough processed audio to meet the demand. and not starve the <code>ScriptProcessorNode</code>, which would result in ugly glitches of agony. For this, we will simply buffer the processed audio, making sure that we always have a batch of <code>batchSize</code> blocks ready to be sent. Of course, the bigger the buffer (i.e.\xa0the bigger batch size), the less likely you are to get glitches. Unfortunately, the bigger the buffer, the bigger the latency between a change of stretch ratio and an audible result.</p>\n<div class="sourceCode" id="cb5"><pre class="sourceCode javascript"><code class="sourceCode javascript"><span id="cb5-1"><a href="#cb5-1"></a>  <span class="cf">case</span> <span class="st">&#39;read&#39;</span><span class="op">:</span></span>\n<span id="cb5-2"><a href="#cb5-2"></a>    <span class="kw">var</span> i</span>\n<span id="cb5-3"><a href="#cb5-3"></a></span>\n<span id="cb5-4"><a href="#cb5-4"></a>    <span class="co">// If there is at least `batchSize` blocks of audio ready to be sent in the &#39;read queue&#39;,</span></span>\n<span id="cb5-5"><a href="#cb5-5"></a>    <span class="co">// we send the whole batch block by block.</span></span>\n<span id="cb5-6"><a href="#cb5-6"></a>    <span class="cf">if</span> (<span class="bu">Math</span><span class="op">.</span><span class="fu">floor</span>(paulStretch<span class="op">.</span><span class="fu">readQueueLength</span>() <span class="op">/</span> blockSize) <span class="op">&gt;=</span> batchSize) {</span>\n<span id="cb5-7"><a href="#cb5-7"></a>
2      <span class="cf">for</span> (i <span class="op">=</span> <span class="dv">0</span><span class="op">;</span> i <span class="op">&lt;</span> batchSize<span class="op">;</span> i<span class="op">++</span>) paulStretch<span class="op">.</span><span class="fu">read</span>(blocksOut[i])</span>\n<span id="cb5-8"><a href="#cb5-8"></a>      postMessage({ <span class="dt">type</span><span class="op">:</span> <span class="st">&#39;read&#39;</span><span class="op">,</span> <span class="dt">data</span><span class="op">:</span> blocksOut })</span>\n<span id="cb5-9"><a href="#cb5-9"></a>    }</span>\n<span id="cb5-10"><a href="#cb5-10"></a> </span>\n<span id="cb5-11"><a href="#cb5-11"></a>    <span class="co">// Fill-up the &#39;read queue&#39; to at least `batchSize` blocks</span></span>\n<span id="cb5-12"><a href="#cb5-12"></a>    <span class="cf">while</span> ((paulStretch<span class="op">.</span><span class="fu">readQueueLength</span>() <span class="op">&lt;</span> (batchSize <span class="op">*</span> blockSize)) </span>\n<span id="cb5-13"><a href="#cb5-13"></a>
2      <span class="op">&amp;&amp;</span> (paulStretch<span class="op">.</span><span class="fu">process</span>() <span class="op">!==</span> <span class="dv">0</span>)) paulStretch<span class="op">.</span><span class="fu">readQueueLength</span>()</span>\n<span id="cb5-14"><a href="#cb5-14"></a></span>\n<span id="cb5-15"><a href="#cb5-15"></a>    <span class="cf">break</span></span></code></pre></div>\n<p>Complete worker code can be found <a href="https://github.com/sebpiq/paulstretch.js/blob/master/examples/simple/js/paulstretch-worker.js">here</a>.</p>\n<h1 id="communication-with-the-worker">Communication with the worker</h1>\n<p>Now that all the parts are there, we will need to wire them up.</p>\n<p>For this we will run in the main thread a function with <code>setInterval</code> that will periodically communicate with the worker : sending raw audio, and receiving processed audio.</p>\n<p>Once again, for raw audio there is no problem, as we will send the blocks as they comes \u2026 but for processed audio we will apply a similar technique as in the worker and use a buffer that should always contain at least <code>batchSize</code> blocks. Therefore, we check the state of our buffer <code>blocksOut</code> at each interval, and request new data from the worker only when the buffer runs low.</p>\n<div class="sourceCode" id="cb6"><pre class="sourceCode javascript"><code class="sourceCode javascript"><span id="cb6-1"><a href="#cb6-1"></a><span class="pp">setInterval</span>(<span class="kw">function</span>() {</span>\n<span id="cb6-2"><a href="#cb6-2"></a>  <span class="cf">if</span> (blocksIn<span class="op">.</span><span class="at">length</span>)</span>\n<span id="cb6-3"><a href="#cb6-3"></a>    paulstretchWorker<span class="op">.</span><span class="fu">postMessage</span>({ <span class="dt">type</span><span class="op">:</span> <span class="st">&#39;write&#39;</span><span class="op">,</span> <span class="dt">data</span><span class="op">:</span> blocksIn<span class="op">.</span><span class="fu">shift</span>() })</span>\n<span id="cb6-4"><a href="#cb6-4"></a></span>\n<span id="cb6-5"><a href="#cb6-5"></a>  <span class="cf">if</span> (blocksOut<span class="op">.</span><span class="at">length</span> <span class="op">&lt;</span> batchSize) </span>\n<span id="cb6-6"><a href="#cb6-6"></a>    paulstretchWorker<span class="op">.</span><span class="fu">postMessage</span>({ <span class="dt">type</span><span class="op">:</span> <span class="st">&#39;read&#39;</span> })</span>\n<span id="cb6-7"><a href="#cb6-7"></a>}<span class="op">,</span> <span class="dv">100</span>)</span></code></pre></div>\n<p>That\u2019s all there is to it! With this simple technique, you can use in web audio API processes that are too heavy to run in the main thread.</p>\n<p>Let\u2019s recap :</p>\n<p><strong>In the main thread</strong></p>\n<div class="sourceCode" id="cb7"><pre class="sourceCode javascript"><code class="sourceCode javascript"><span id="cb7-1"><a href="#cb7-1"></a></span>\n<span id="cb7-2"><a href="#cb7-2"></a><span class="kw">var</span> blocksIn <span class="op">=</span> []</span>\n<span id="cb7-3"><a href="#cb7-3"></a>  <span class="op">,</span> blocksOut <span class="op">=</span> []</span>\n<span id="cb7-4"><a href="#cb7-4"></a></span>\n<span id="cb7-5"><a href="#cb7-5"></a>paulstretchNode<span class="op">.</span><span class="at">onaudioprocess</span> <span class="op">=</span> <span class="kw">function</span>(<span class="bu">event</span>) {</span>\n<span id="cb7-6"><a href="#cb7-6"></a>  <span class="kw">var</span> ch<span class="op">,</span> block <span class="op">=</span> []</span>\n<span id="cb7-7"><a href="#cb7-7"></a></span>\n<span id="cb7-8"><a href="#cb7-8"></a>  <span class="cf">for</span> (ch <span class="op">=</span> <span class="dv">0</span><span class="op">;</span> ch <span class="op">&lt;</span> numberOfChannels<span class="op">;</span> ch<span class="op">++</span>)</span>\n<span id="cb7-9"><a href="#cb7-9"></a>    block<span class="op">.</span><span class="fu">push</span>(<span class="bu">event</span><span class="op">.</span><span class="at">inputBuffer</span><span class="op">.</span><span class="fu">getChannelData</span>(ch))</span>\n<span id="cb7-10"><a href="#cb7-10"></a>  blocksIn<span class="op">.</span><span class="fu">push</span>(block)</span>\n<span id="cb7-11"><a href="#cb7-11"></a>  </span>\n<span id="cb7-12"><a href="#cb7-12"></a>  <span class="cf">if</span> (blocksOut<span class="op">.</span><span class="at">length</span>) {</span>\n<span id="cb7-13"><a href="#cb7-13"></a>    block <span class="op">=</span> blocksOut<span class="op">.</span><span class="fu">shift</span>()</span>\n<span id="cb7-14"><a href="#cb7-14"></a>    <span class="cf">for</span> (ch <span class="op">=</span> <span class="dv">0</span><span class="op">;</span> ch <span class="op">&lt;</span> numberOfChannels<span class="op">;</span> ch<span class="op">++</span>)</span>\n<span id="cb7-15"><a href="#cb7-15"></a>
2      <span class="bu">event</span><span class="op">.</span><span class="at">outputBuffer</span><span class="op">.</span><span class="fu">getChannelData</span>(ch)<span class="op">.</span><span class="fu">set</span>(block[ch])</span>\n<span id="cb7-16"><a href="#cb7-16"></a>  }</span>\n<span id="cb7-17"><a href="#cb7-17"></a>}</span>\n<span id="cb7-18"><a href="#cb7-18"></a></span>\n<span id="cb7-19"><a href="#cb7-19"></a><span class="pp">setInterval</span>(<span class="kw">function</span>() {</span>\n<span id="cb7-20"><a href="#cb7-20"></a>  <span class="cf">if</span> (blocksIn<span class="op">.</span><span class="at">length</span>)</span>\n<span id="cb7-21"><a href="#cb7-21"></a>    paulstretchWorker<span class="op">.</span><span class="fu">postMessage</span>({ <span class="dt">type</span><span class="op">:</span> <span class="st">&#39;write&#39;</span><span class="op">,</span> <span class="dt">data</span><span class="op">:</span> blocksIn<span class="op">.</span><span class="fu">shift</span>() })</span>\n<span id="cb7-22"><a href="#cb7-22"></a></span>\n<span id="cb7-23"><a href="#cb7-23"></a>  <span class="cf">if</span> (blocksOut<span class="op">.</span><span class="at">length</span> <span class="op">&lt;</span> batchSize) </span>\n<span id="cb7-24"><a href="#cb7-24"></a>    paulstretchWorker<span class="op">.</span><span class="fu">postMessage</span>({ <span class="dt">type</span><span class="op">:</span> <span class="st">&#39;read&#39;</span> })</span>\n<span id="cb7-25"><a href="#cb7-25"></a>}<span class="op">,</span> <span class="dv">100</span>)</span></code></pre></div>\n<p><strong>In the web worker</strong></p>\n<div class="sourceCode" id="cb8"><pre class="sourceCode javascript"><code class="sourceCode javascript"><span id="cb8-1"><a href="#cb8-1"></a>onmessage <span class="op">=</span> <span class="kw">function</span> (<span class="bu">event</span>) {</span>\n<span id="cb8-2"><a href="#cb8-2"></a>  <span class="cf">switch</span> ( <span class="bu">event</span><span class="op">.</span><span class="at">data</span><span class="op">.</span><span class="at">type</span> ) {</span>\n<span id="cb8-3"><a href="#cb8-3"></a>    <span class="cf">case</span> <span class="st">&#39;read&#39;</span><span class="op">:</span></span>\n<span id="cb8-4"><a href="#cb8-4"></a>
2      <span class="kw">var</span> i</span>\n<span id="cb8-5"><a href="#cb8-5"></a></span>\n<span id="cb8-6"><a href="#cb8-6"></a>      <span class="co">// Send audio from the buffer if there is at least `batchSize` blocks</span></span>\n<span id="cb8-7"><a href="#cb8-7"></a>      <span class="cf">if</span> (<span class="bu">Math</span><span class="op">.</span><span class="fu">floor</span>(paulStretch<span class="op">.</span><span class="fu">readQueueLength</span>() <span class="op">/</span> blockSize) <span class="op">&gt;=</span> batchSize) {</span>\n<span id="cb8-8"><a href="#cb8-8"></a>        <span class="cf">for</span> (i <span class="op">=</span> <span class="dv">0</span><span class="op">;</span> i <span class="op">&lt;</span> batchSize<span class="op">;</span> i<span class="op">++</span>) paulStretch<span class="op">.</span><span class="fu">read</span>(blocksOut[i])</span>\n<span id="cb8-9"><a href="#cb8-9"></a>        postMessage({ <span class="dt">type</span><span class="op">:</span> <span class="st">&#39;read&#39;</span><span class="op">,</span> <span class="dt">data</span><span class="op">:</span> blocksOut })</span>\n<span id="cb8-10"><a href="#cb8-10"></a>      }</span>\n<span id="cb8-11"><a href="#cb8-11"></a>   </span>\n<span id="cb8-12"><a href="#cb8-12"></a>
2      <span class="co">// Fill-up the buffers to at least `batchSize` blocks</span></span>\n<span id="cb8-13"><a href="#cb8-13"></a>      <span class="cf">while</span> ((paulStretch<span class="op">.</span><span class="fu">readQueueLength</span>() <span class="op">&lt;</span> (batchSize <span class="op">*</span> blockSize)) </span>\n<span id="cb8-14"><a href="#cb8-14"></a>        <span class="op">&amp;&amp;</span> (paulStretch<span class="op">.</span><span class="fu">process</span>() <span class="op">!==</span> <span class="dv">0</span>)) paulStretch<span class="op">.</span><span class="fu">readQueueLength</span>()</span>\n<span id="cb8-15"><a href="#cb8-15"></a>      <span class="cf">break</span></span>\n<span id="cb8-16"><a href="#cb8-16"></a></span>\n<span id="cb8-17"><a href="#cb8-17"></a>    <span class="cf">case</span> <span class="st">&#39;write&#39;</span><span class="op">:</span></span>\n<span id="cb8-18"><a href="#cb8-18"></a>      paulStretch<span class="op">.</span><span class="fu">write</span>(<span class="bu">event</span><span class="op">.</span><span class="at">data</span><span class="op">.</span><span class="at">data</span>)</span>\n<span id="cb8-19"><a href="#cb8-19"></a>
2      <span class="cf">break</span></span>\n<span id="cb8-20"><a href="#cb8-20"></a>    }</span>\n<span id="cb8-21"><a href="#cb8-21"></a>  }</span>\n<span id="cb8-22"><a href="#cb8-22"></a>}</span></code></pre></div>\n<p><a href="https://github.com/sebpiq/paulstretch.js/tree/master/examples/simple">The complete code of the example can be found here</a>.</p>\n</body>\n</html>\n',"/articles/2015-08-25-network-topologies-for-live-performances":'<!DOCTYPE html>\n<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">\n<head>\n  <meta charset="utf-8" />\n  <meta name="generator" content="pandoc" />\n  <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />\n  <title>article</title>\n  <style>\n    code{white-space: pre-wrap;}\n    span.smallcaps{font-variant: small-caps;}\n    span.underline{text-decoration: underline;}\n    div.column{display: inline-block; vertical-align: top; width: 50%;}\n    div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}\n    ul.task-list{list-style: none;}\n  </style>\n  \x3c!--[if lt IE 9]>\n    <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"><\/script>\n  <![endif]--\x3e\n</head>\n<body>\n<p><a href="http://second-hander.com/projects/murmurate">Fields</a> and <a href="http://second-hander.com/projects/newweave">New weave</a> are two interactive performances which allow audience members to participate by using their mobile phone. They use a tool which I have released about one and a half years ago, and which is called <a href="http://github.com/sebpiq/rhizome">rhizome</a>.</p>\n<p>In this post, I will quickly introduce <strong>rhizome</strong>, and explain what kind of network setup, equipment and configuration I use for these live performances.</p>\n\x3c!--more--\x3e\n<h1 id="about-rhizome">About rhizome</h1>\n<p><a href="http://github.com/sebpiq/rhizome">rhizome</a> is a web server which allows to build participative performances by connecting audience\u2019s and performers\u2019 devices via <strong>OSC and websockets</strong>. It is packaged so that you should be able to install it and set-it up, even if you have no experience in programming. However, more advanced users can also configure everything, or program their own server from scratch by using rhizome base classes and functions (API not documented yet).</p>\n<p>rhizome is built with the following aspects in mind, critical for a live performance situation :</p>\n<ul>\n<li><strong>reliability</strong> : it shouldn\u2019t crash, and if it does it should be able to restore all the connections</li>\n<li><strong>speed</strong> : it should be optimized so that many messages can be sent</li>\n<li><strong>scalability</strong> : it should support 10 connections or 10000</li>\n<li><strong>inter-operability</strong> : it should be able to work with Pure Data, Max, Processing \u2026</li>\n</ul>\n<p>Making rhizome easy enough to use for non-programmers, while keeping it neat, flexible, fast, reliable, scalable \u2026 is not an easy task. And though there is still a lot of work, <a href="https://github.com/sebpiq/rhizome/issues">things to fix and things to implement</a>, it is slowly getting there. I am happy to see that a few people have used it successfully <a href="https://github.com/sebpiq/rhizome/wiki/Gallery">for their own performances</a>, and I hope more people will use it in the future, for the more it is used, the better it will become.</p>\n<p>Now, one recurrent question I get is,</p>\n<p><strong>\u201cHow do you setup a wireless network and what equipment do you use?\u201d</strong></p>\n<p>And so here are a few pointers \u2026</p>\n<h1 id="network-topology-and-equipment">Network topology and equipment</h1>\n<h2 id="small-performances-15-connections">Small performances &lt; 15 connections</h2>\n<p>For very small performances, you don\u2019t really need any fancy network equipment :</p>\n<p><img src="https://raw.githubusercontent.com/sebpiq/rhizome/master/images/network-diagram1.png" style="max-width:100%;width:25em;background-color:white;"/></p>\n<ul>\n<li><p><strong>WIFI router</strong> : can be any home WIFI router. Typically, those cost between 15 and 50 euros. personnally I have this cheap <a href="http://www.tp-link.fi/products/details/cat-9_TL-WR841ND.html">TP-link router</a>
2 which worked alright for performances with 10-12 connections (more than that it starts to choke a bit). I just happened to have this one at home for my own WIFI network, but any cheap home router will do.</p></li>\n<li><p><strong>rhizome server</strong> : is basically a computer that runs rhizome. I usually use my own Ubuntu laptop, which I optimize for the occasion (I\u2019ll talk about deployment in a next blog post). You can use any computer as long as you can install <strong>node.js</strong> on it. I have even performed with rhizome running from a Raspberry Pi (quite slow).</p></li>\n</ul>\n<h2 id="the-apple-airport-express-option">The Apple Airport Express option</h2>\n<p>This is an option that is worth mentioning. The <a href="https://www.apple.com/airport-extreme/">Apple Airport Extreme</a> supports up to 50 wireless connections. So if that is enough for your use, you should consider using this (overpriced but quite powerful router) instead of the more complex solution I will detail below.</p>\n<h2 id="middle-sized-performances-250-connections">Middle-sized performances &lt; 250 connections</h2>\n<p>A home WIFI router is typically a combination of a router, a switch and a WIFI access point, all integrated into a single device. If you expect up to 250 connections, you will need a network that can scale. For this you have to buy and install all router, switch and access points separately.</p>\n<p>This is the setup I have been using :</p>\n<p><img src="https://raw.githubusercontent.com/sebpiq/rhizome/master/images/network-diagram2.png" style="max-width:100%;width:30em;background-color:white;"/></p>\n<ul>\n<li><p><strong>Router</strong> : this is a <strong>wired</strong> router. Its role is to attribute IP addresses to devices on the network and route messages from one device to another. The router is the reason for the 250 limit. On a single network, there is only 255 IP addresses available. Some are reserved, and you will need a couple more for the rhizome server, access points, \u2026 which brings us down to 250, probably less in most cases.</p></li>\n<li><p><strong>Switch</strong> : the role of a switch is to connect several devices to the same network. It is <strong>a bit</strong> like a multi-socket but for ethernet cables \u2026</p></li>\n<li><p><strong>WIFI access point</strong> : the name is pretty self-explanatory. These devices provide wireless access to phones, tablets, computers \u2026 Check carefully before buying those because they typically support only a small number of connections. Therefore you will most likely need to buy several of them. The access points I use for example support up to 50 people. Therefore to support 250 people, I would need 5 of them. Also, make sure that you have enough space on your switch!!!</p></li>\n</ul>\n<p>Such network equipment is usually quite expensive and can be complicated to configure. Not every router is compatible with every access point. I recommend the brand <strong>Ubiquiti</strong> which has very affordable products and is very easy to set-up. I\u2019ve used <a href="https://www.ubnt.com/edgemax/edgerouter-lite/">this router</a> from them, with several of <a href="https://www.ubnt.com/unifi/unifi-ap/">these access points</a>.</p>\n<h2 id="i-am-planning-to-perform-in-a-stadium">250++, I am planning to perform in a stadium!</h2>\n<p>Rhizome is not ready for that. The bottleneck here is how many concurrent connections the websocket server can handle. Answers to that question vary wildly (from 100 to 1 million!), it depends on your computer, your OS, on how many messages you send, if you send big files, etc, etc \u2026</p>\n<p>Anyways, in order to scale up, you should be able to run several rhizome servers, and have them communicate with each other in order to share messages and reach all the connections. This is something that is planned, but probably not before version 0.9.0.</p>\n<h1 id="configuring-tips">Configuring tips</h1>\n<p>Ok \u2026 now you have all the gear, how do you configure it? Well \u2026 that completely depends on what brand it is, but here are a few general advices and things to keep in mind.</p>\n<h2 id="accessing-the-configuration-interface-of-your-router-wired-or-wireless">Accessing the configuration interface of your router (wired or wireless)</h2>\n<p>Most routers can be configured via a web interface. You just need to connect a computer to that router (via cable or wireless), figure out what is the IP of the router (<code>XXX.YYY.ZZZ.1</code>, where <code>XXX</code>, <code>YYY</code> and <code>ZZZ</code> are the 3 first numbers of your computer\u2019s IP address), open a web browser and go to that router\u2019s IP address. The login and password for the configuration interface are usually given in the user guide of the router.</p>\n<h2 id="attributing-fixed-ip-addresses-to-the-rhizome-server-and-access-points">Attributing fixed IP addresses to the rhizome server and access points</h2>\n<p>When a device connects, your router\u2019s DHCP server will attribute a free IP address to that device. However, you might want the rhizome server and some other key devices - like your access points - to always get the same IP address from the DHCP server. This can usually be configured via your router\u2019s configuration interface. Look for the DHCP section, then look for something like \u201cstatic IP mapping\u201d.</p>\n<h2 id="limiting-the-number-of-connections">Limiting the number of connections</h2>\n<p>If for any reason you want to limit the number of people that can connect to your network, you can configure the DHCP server of your router to attribute IP addresses only within a certain range. For example if you want to limit to 30 connections, you can have the DHCP attribute only IPs within <code>XXX.YYY.ZZZ.100</code> and <code>XXX.YYY.ZZZ.130</code>. If you do this though, make sure that you have a short DHCP lease time. Otherwise if somebody connects and then leaves, its IP address will be blocked.</p>\n<h2 id="wifi-network-protection">
2WIFI network protection</h2>\n<p>In most cases, it is fine to not have a password on your WIFI network. It is faster for people to connect. However, if you play in a venue will a lot of people passing near-by (for example a festival or a public space), phones from passerbys might automatically connect to your network, taking space for nothing. In that case it might be a good idea to protect the network with a simple password, so that only participants can connect.</p>\n<p><a href="http://twitter.com/sebpiq/status/636197123587969024">comments</a></p>\n</body>\n</html>\n',"/articles/2016-01-15-audio-glitches-with-linux-terminal":'<!DOCTYPE html>\n<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">\n<head>\n  <meta charset="utf-8" />\n  <meta name="generator" content="pandoc" />\n  <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />\n  <title>article</title>\n  <style>\n    code{white-space: pre-wrap;}\n    span.smallcaps{font-variant: small-caps;}\n    span.underline{text-decoration: underline;}\n    div.column{display: inline-block; vertical-align: top; width: 50%;}\n    div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}\n    ul.task-list{list-style: none;}\n    pre > code.sourceCode { white-space: pre; position: relative; }\n    pre > code.sourceCode > span { display: inline-block; line-height: 1.25; }\n    pre > code.sourceCode > span:empty { height: 1.2em; }\n    code.sourceCode > span { color: inherit; text-decoration: inherit; }\n    div.sourceCode { margin: 1em 0; }\n    pre.sourceCode { margin: 0; }\n    @media screen {\n    div.sourceCode { overflow: auto; }\n    }\n    @media print {\n    pre > code.sourceCode { white-space: pre-wrap; }\n    pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; }\n    }\n    pre.numberSource code\n      { counter-reset: source-line 0; }\n    pre.numberSource code > span\n      { position: relative; left: -4em; counter-increment: source-line; }\n    pre.numberSource code > span > a:first-child::before\n      { content: counter(source-line);\n        position: relative; left: -1em; text-align: right; vertical-align: baseline;\n        border: none; display: inline-block;\n        -webkit-touch-callout: none; -webkit-user-select: none;\n        -khtml-user-select: none; -moz-user-select: none;\n        -ms-user-select: none; user-select: none;\n        padding: 0 4px; width: 4em;\n        background-color: #2a211c;\n        color: #bdae9d;\n      }\n    pre.numberSource { margin-left: 3em; border-left: 1px solid #bdae9d;  padding-left: 4px; }\n    div.sourceCode\n      { color: #bdae9d; background-color: #2a211c; }\n    @media screen {\n    pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; }\n    }\n    code span.al { color: #ffff00; } /* Alert */\n    code span.an { color: #0066ff; font-weight: bold; font-style: italic; } /* Annotation */\n    code span.at { } /* Attribute */\n    code span.bn { color: #44aa43; } /* BaseN */\n    code span.bu { } /* BuiltIn */\n    code span.cf { color: #43a8ed; font-weight: bold; } /* ControlFlow */\n    code span.ch { color: #049b0a; } /* Char */\n    code span.cn { } /* Constant */\n    code span.co { color: #0066ff; font-weight: bold; font-style: italic; } /* Comment */\n    code span.do { color: #0066ff; font-style: italic; } /* Documentation */\n    code span.dt { text-decoration: underline; } /* DataType */\n    code span.dv { color: #44aa43; } /* DecVal */\n    code span.er { color: #ffff00; font-weight: bold; } /* Error */\n    code span.ex { } /* Extension */\n    code span.fl { color: #44aa43; } /* Float */\n    code span.fu { color: #ff9358; font-weight: bold; } /* Function */\n    code span.im { } /* Import */\n    code span.in { color: #0066ff; font-weight: bold; font-style: italic; } /* Information */\n    code span.kw { color: #43a8ed; font-weight: bold; } /* Keyword */\n    code span.op { } /* Operator */\n    code span.pp { font-weight: bold; } /* Preprocessor */\n    code span.sc { color: #049b0a; } /* SpecialChar */\n    code span.ss { color: #049b0a; } /* SpecialString */\n    code span.st { color: #049b0a; } /* String */\n    code span.va { } /* Variable */\n    code span.vs { color: #049b0a; } /* VerbatimString */\n    code span.wa { color: #ffff00; font-weight: bold; } /* Warning */\n  </style>\n  \x3c!--[if lt IE 9]>\n    <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"><\/script>\n  <![endif]--\x3e\n</head>\n<body>\n<p>Here is an old hack with a terminal to listen to the guts of your computer.</p>\n<p>Before starting, here are a couple of tracks by <a href="https://bitsnibblesbytes.wordpress.com/">Stephen Stamper</a>, which were partly produced with this technique :</p>\n<iframe width="100%" height="166" scrolling="no" frameborder="no" src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/34843548&amp;color=0066cc&amp;auto_play=false&amp;hide_related=false&amp;show_comments=true&amp;show_user=true&amp;show_reposts=false">\n</iframe>\n<iframe width="100%" height="166" scrolling="no" frameborder="no" src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/90038560&amp;color=0066cc&amp;auto_play=false&amp;hide_related=false&amp;show_comments=true&amp;show_user=true&amp;show_reposts=false">\n</iframe>\n<p><code>aplay</code> is a great tool available on most linux distributions which allows you to read raw data, and interpret it as audio. You just give it the data source, tell it how to interpret it (sample rate, sample format, number of channels) and it will play it back.</p>\n<p><strong>note1</strong> : on OSX you can achieve the same results with <a href="http://sox.sourceforge.net/">sox</a>.</p>\n<p><strong>note2</strong> : be careful with the volume of your speakers or headphones. All these audio examples are quite loud.</p>\n<p>Let\u2019s start by sending <code>aplay</code> an mp3 file to see how it sounds :</p>\n<p><img src="/articles/2016-01-15-audio-glitches-with-linux-terminal/images/wf1.svg" width="100%" height="auto" /><audio controls="" style="width:100%;"> <source src="/articles/2016-01-15-audio-glitches-with-linux-terminal/audio/1.ogg" type="audio/ogg"> <source src="/articles/2016-01-15-audio-glitches-with-linux-terminal/audio/1.mp3" type="audio/mp3"> </audio></p>\n<div class="sourceCode" id="cb1"><pre class="sourceCode bash"><code class="sourceCode bash"><span id="cb1-1"><a href="#cb1-1"></a><span class="fu">cat</span> ~/Music/Cameosis/03-Cameo-PleaseYou.mp3 <span class="kw">|</span> <span class="fu">aplay</span> -r 8000 -c2</span></code></pre></div>\n<p>Here you can see the basic technique. <code>cat</code> will just read a file, and send it to its output, then you use the pipe character <strong>|</strong> to send that output to <code>aplay</code> which will interepret the bytes as audio and play that audio back. <code>-r 8000</code> means that we interpret the sound with sample rate of <em>8000hz</em>, <code>-c2</code> means stereo.</p>\n<p>I don\u2019t have a mac to test, but according to Stephen, on OSX the equivalent command would be :</p>\n<div class="sourceCode" id="cb2"><pre class="sourceCode bash"><code class="sourceCode bash"><span id="cb2-1"><a href="#cb2-1"></a><span class="fu">cat</span> ~/Music/Cameosis/03-Cameo-PleaseYou.mp3 <span class="kw">|</span> <span class="fu">sox</span> -q -t raw -r 8000 -b 8 -e unsigned-integer - -t coreaudio vol 0.5</span></code></pre></div>\n<p>With this particular file, as with most files, the result is not very exciting \u2026 mostly white noise. This is because the raw data in a mp3 file is not periodical. There is however a lot of files in your computer that have a repetitive structure, and can make very interesting sounds. For example :</p>\n<p><img src="/articles/2016-01-15-audio-glitches-with-linux-terminal/images/wf2.svg" width="100%" height="auto" /><audio controls="" style="width:100%;"> <source src="/articles/2016-01-15-audio-glitches-with-linux-terminal/audio/2.ogg" type="audio/ogg"> <source src="/articles/2016-01-15-audio-glitches-with-linux-terminal/audio/2.mp3" type="audio/mp3"> </audio></p>\n<div class="sourceCode" id="cb3"><pre class="sourceCode bash"><code class="sourceCode bash"><span id="cb3-1"><a href="#cb3-1"></a><span class="fu">sudo</span> cat /var/log/mongodb/mongodb.log <span class="kw">|</span> <span class="fu">aplay</span>
2 -c2 -f MU_LAW</span></code></pre></div>\n<p><img src="/articles/2016-01-15-audio-glitches-with-linux-terminal/images/wf3.svg" width="100%" height="auto" /><audio controls="" style="width:100%;"> <source src="/articles/2016-01-15-audio-glitches-with-linux-terminal/audio/3.ogg" type="audio/ogg"> <source src="/articles/2016-01-15-audio-glitches-with-linux-terminal/audio/3.mp3" type="audio/mp3"> </audio></p>\n<div class="sourceCode" id="cb4"><pre class="sourceCode bash"><code class="sourceCode bash"><span id="cb4-1"><a href="#cb4-1"></a><span class="fu">sudo</span> cat /var/log/mongodb/mongodb.log <span class="kw">|</span> <span class="fu">aplay</span> -c2 -r 4000 -f MU_LAW</span></code></pre></div>\n<p><img src="/articles/2016-01-15-audio-glitches-with-linux-terminal/images/wf4.svg" width="100%" height="auto" /><audio controls="" style="width:100%;"> <source src="/articles/2016-01-15-audio-glitches-with-linux-terminal/audio/4.ogg" type="audio/ogg"> <source src="/articles/2016-01-15-audio-glitches-with-linux-terminal/audio/4.mp3" type="audio/mp3"> </audio></p>\n<div class="sourceCode" id="cb5"><pre class="sourceCode bash"><code class="sourceCode bash"><span id="cb5-1"><a href="#cb5-1"></a><span class="fu">sudo</span> cat /var/lib/mongodb/overwhelmed.0 <span class="kw">|</span> <span class="fu">aplay</span> -c2 -f MU_LAW</span></code></pre></div>\n<p><code>-f MU_LAW</code> here specifies the format of the sound. There is several different formats you can use, and choosing a different format will have a big impact on the sound. Available formats are listed in <code>aplay</code> documentation (which you can read by typing <code>man aplay</code>).</p>\n<p>Above I used a database as input, and log files. These all have a periodical structure, and you can hear it reflected in the sounds generated.</p>\n<p>You can also use live data as input to <code>aplay</code>. For example devices from your system :</p>\n<p><img src="/articles/2016-01-15-audio-glitches-with-linux-terminal/images/wf5.svg" width="100%" height="auto" /><audio controls="" style="width:100%;"> <source src="/articles/2016-01-15-audio-glitches-with-linux-terminal/audio/5.ogg" type="audio/ogg"> <source src="/articles/2016-01-15-audio-glitches-with-linux-terminal/audio/5.mp3" type="audio/mp3"> </audio></p>\n<pre><code>sudo cat /dev/vga_arbiter | aplay -r 2000 -c2 -f MU_LAW</code></pre>\n<p>The result here is quite boring as the data is not changing. However we can get more interesting sounds with data from <code>tcpdump</code> - which captures the traffic from your network connection :</p>\n<p><img src="/articles/2016-01-15-audio-glitches-with-linux-terminal/images/wf6.svg" width="100%" height="auto" /><audio controls="" style="width:100%;"> <source src="/articles/2016-01-15-audio-glitches-with-linux-terminal/audio/6.ogg" type="audio/ogg"> <source src="/articles/2016-01-15-audio-glitches-with-linux-terminal/audio/6.mp3" type="audio/mp3"> </audio></p>\n<pre><code>sudo tcpdump -vvv -i wlan0 | aplay -c2 -r 2000 -f FLOAT_LE</code></pre>\n<p>And finally - one that I quite like - you can listen to your webcam by using a software called <code>ffmpeg</code> to capture input from the cam and piping it to <code>aplay</code> as we did before. The sonic results are surprising deep and complex, though the sound doesn\u2019t really change :</p>\n<p><img src="/articles/2016-01-15-audio-glitches-with-linux-terminal/images/wf7.svg" width="100%" height="auto" /><audio controls="" style="width:100%;"> <source src="/articles/2016-01-15-audio-glitches-with-linux-terminal/audio/7.ogg" type="audio/ogg"> <source src="/articles/2016-01-15-audio-glitches-with-linux-terminal/audio/7.mp3" type="audio/mp3"> </audio></p>\n<pre><code>ffmpeg -f v4l2 -i /dev/video0 -vf scale=100:100 -f rawvideo pipe: | aplay -r 2000 -c2</code></pre>\n<p><img src="/articles/2016-01-15-audio-glitches-with-linux-terminal/images/wf8.svg" width="100%" height="auto" /><audio controls="" style="width:100%;"> <source src="/articles/2016-01-15-audio-glitches-with-linux-terminal/audio/8.ogg" type="audio/ogg"> <source src="/articles/2016-01-15-audio-glitches-with-linux-terminal/audio/8.mp3" type="audio/mp3"> </audio></p>\n<pre><code>ffmpeg -f v4l2 -i /dev/video0 -vf scale=6000:6000 -f rawvideo pipe: | aplay -r 2000 -c2</code></pre>\n<p>So yes \u2026 you can try to pipe <strong>|</strong> pretty much anything to your <code>aplay</code> \u2026 hours of procrastination lie ahead.</p>\n<p>And if nothing of these work for you, you can always run this command in your terminal to get some colorfull glitches :</p>\n<div class="sourceCode" id="cb10"><pre class="sourceCode bash"><code class="sourceCode bash"><span id="cb10-1"><a href="#cb10-1"></a><span class="bu">echo</span> -e <span class="st">&quot;#coding=utf8\\nimport sys,random as r;c=0;p=&#39; &#39;*6\\nwhile 1:p,c=(&#39; &#39;*r.randint(3,200),r.randint(20,99)) if r.random()&gt;0.999 else (p,c);sys.stdout.write(&#39;\\033[%sm&#39;%c+(&#39;\u259a&#39;*15 if r.random()&gt;0.995 else &#39;\u259a&#39;*16)+p)&quot;</span> <span class="kw">|</span> <span class="ex">python</span></span></code></pre></div>\n</body>\n</html>\n',"/articles/2017-02-23-using-web-audio-api-in-production":'<!DOCTYPE html>\n<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">\n<head>\n  <meta charset="utf-8" />\n  <meta name="generator" content="pandoc" />\n  <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />\n  <title>article</title>\n  <style>\n    code{white-space: pre-wrap;}\n    span.smallcaps{font-variant: small-caps;}\n    span.underline{text-decoration: underline;}\n    div.column{display: inline-block; vertical-align: top; width: 50%;}\n    div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}\n    ul.task-list{list-style: none;}\n    pre > code.sourceCode { white-space: pre; position: relative; }\n    pre > code.sourceCode > span { display: inline-block; line-height: 1.25; }\n    pre > code.sourceCode > span:empty { height: 1.2em; }\n    code.sourceCode > span { color: inherit; text-decoration: inherit; }\n    div.sourceCode { margin: 1em 0; }\n    pre.sourceCode { margin: 0; }\n    @media screen {\n    div.sourceCode { overflow: auto; }\n    }\n    @media print {\n    pre > code.sourceCode { white-space: pre-wrap; }\n    pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; }\n    }\n    pre.numberSource code\n      { counter-reset: source-line 0; }\n    pre.numberSource code > span\n      { position: relative; left: -4em; counter-increment: source-line; }\n    pre.numberSource code > span > a:first-child::before\n      { content: counter(source-line);\n        position: relative; left: -1em; text-align: right; vertical-align: baseline;\n        border: none; display: inline-block;\n        -webkit-touch-callout: none; -webkit-user-select: none;\n        -khtml-user-select: none; -moz-user-select: none;
2\n        -ms-user-select: none; user-select: none;\n        padding: 0 4px; width: 4em;\n        background-color: #2a211c;\n        color: #bdae9d;\n      }\n    pre.numberSource { margin-left: 3em; border-left: 1px solid #bdae9d;  padding-left: 4px; }\n    div.sourceCode\n      { color: #bdae9d; background-color: #2a211c; }\n    @media screen {\n    pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; }\n    }\n    code span.al { color: #ffff00; } /* Alert */\n    code span.an { color: #0066ff; font-weight: bold; font-style: italic; } /* Annotation */\n    code span.at { } /* Attribute */\n    code span.bn { color: #44aa43; } /* BaseN */\n    code span.bu { } /* BuiltIn */\n    code span.cf { color: #43a8ed; font-weight: bold; } /* ControlFlow */\n    code span.ch { color: #049b0a; } /* Char */\n    code span.cn { } /* Constant */\n    code span.co { color: #0066ff; font-weight: bold; font-style: italic; } /* Comment */\n    code span.do { color: #0066ff; font-style: italic; } /* Documentation */\n    code span.dt { text-decoration: underline; } /* DataType */\n    code span.dv { color: #44aa43; } /* DecVal */\n    code span.er { color: #ffff00; font-weight: bold; } /* Error */\n    code span.ex { } /* Extension */\n    code span.fl { color: #44aa43; } /* Float */\n    code span.fu { color: #ff9358; font-weight: bold; } /* Function */\n    code span.im { } /* Import */\n    code span.in { color: #0066ff; font-weight: bold; font-style: italic; } /* Information */\n    code span.kw { color: #43a8ed; font-weight: bold; } /* Keyword */\n    code span.op { } /* Operator */\n    code span.pp { font-weight: bold; } /* Preprocessor */\n    code span.sc { color: #049b0a; } /* SpecialChar */\n    code span.ss { color: #049b0a; } /* SpecialString */\n    code span.st { color: #049b0a; } /* String */\n    code span.va { } /* Variable */\n    code span.vs { color: #049b0a; } /* VerbatimString */\n    code span.wa { color: #ffff00; font-weight: bold; } /* Warning */\n  </style>\n  \x3c!--[if lt IE 9]>\n    <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"><\/script>\n  <![endif]--\x3e\n</head>\n<body>\n<p><a href="https://webaudio.github.io/web-audio-api/">Web Audio API</a> allows to synthesize sound in the web browser with JavaScript. However, as with anything on the web, it can be very challenging to write code that works on all browsers, mobile and desktop. Web Audio API is no exception and here is a little checklist of things to know \u2026</p>\n<h1 id="normalizing-the-api">Normalizing the API</h1>\n<p>Web Audio API is a moving target. As of February 2017, the API, method names, functionalities have changed many times and are still not stable. Also, on webkit, the <code>AudioContext</code> object, entry point to Web Audio API, is still prefixed and called <code>webkitAudioContext</code>. A simple way to normalize all the names is to use Chris Wilson\u2019s <a href="https://github.com/cwilso/AudioContext-MonkeyPatch">AudioContext-MonkeyPatch</a>. It is a small script that monkey-patches the functions of Web Audio API in the calling browser and makes sure that names comply with the latest version of the specification, so you don\u2019t need to think about that when writing your code.</p>\n<h1 id="audio-formats-supported">Audio formats supported</h1>\n<p>If you want to use the Web Audio API, chance is you will want to load some sound files. Problem is, different browsers on different platforms support different audio formats. However if you encode your sound in both <strong>mp3</strong> and <strong>ogg</strong> (and <strong>wav</strong> as a nearly universal fallback), you can cover all the browsers supporting Web Audio API. Firefox supports ogg but not always mp3 (depending on the codecs installed on the user\u2019s system), Safari mp3 but not ogg, Chrome supports all, etc \u2026 Your app must therefore load a different file depending on what formats the current browser supports. For that, I recommend to use <a href="https://github.com/sebpiq/web-audio-boilerplate">web-audio-boilerplate</a>, a small library I wrote :</p>\n<div class="sourceCode" id="cb1"><pre class="sourceCode html"><code class="sourceCode html"><span id="cb1-1"><a href="#cb1-1"></a><span class="dt">&lt;!DOCTYPE </span>
2html<span class="dt">&gt;</span></span>\n<span id="cb1-2"><a href="#cb1-2"></a><span class="kw">&lt;html&gt;</span></span>\n<span id="cb1-3"><a href="#cb1-3"></a><span class="kw">&lt;head&gt;</span></span>\n<span id="cb1-4"><a href="#cb1-4"></a>  <span class="kw">&lt;script</span><span class="ot"> type=</span><span class="st">&quot;text/javascript&quot;</span><span class="ot"> src=</span><span class="st">&quot;https://sebpiq.github.io/web-audio-boilerplate/dist/web-audio-boilerplate-min.js&quot;</span><span class="kw">&gt;&lt;/script&gt;</span></span>\n<span id="cb1-5"><a href="#cb1-5"></a>  <span class="kw">&lt;script</span><span class="ot"> type=</span><span class="st">&quot;text/javascript&quot;</span><span class="kw">&gt;</span></span>\n<span id="cb1-6"><a href="#cb1-6"></a>    webAudioBoilerplate<span class="op">.</span><span class="fu">getSupportedFormats</span>(<span class="kw">new</span> <span class="bu">AudioContext</span><span class="op">,</span> <span class="kw">function</span>(err<span class="op">,</span> formats) {</span>\n<span id="cb1-7"><a href="#cb1-7"></a>
2      <span class="cf">if</span> (formats<span class="op">.</span><span class="at">ogg</span>)</span>\n<span id="cb1-8"><a href="#cb1-8"></a>        loadOggFile()</span>\n<span id="cb1-9"><a href="#cb1-9"></a>      <span class="cf">else</span> <span class="cf">if</span> (formats<span class="op">.</span><span class="at">mp3</span>)</span>\n<span id="cb1-10"><a href="#cb1-10"></a>        loadMp3File()</span>\n<span id="cb1-11"><a href="#cb1-11"></a>      <span class="cf">else</span> <span class="cf">if</span> (formats<span class="op">.</span><span class="at">wav</span>)</span>\n<span id="cb1-12"><a href="#cb1-12"></a>        loadWavFile()</span>\n<span id="cb1-13"><a href="#cb1-13"></a>      <span class="cf">else</span></span>\n<span id="cb1-14"><a href="#cb1-14"></a>        <span class="bu">console</span><span class="op">.</span><span class="fu">error</span>(<span class="st">&#39;no format is supported&#39;</span>)</span>\n<span id="cb1-15"><a href="#cb1-15"></a>    })</span>\n<span id="cb1-16"><a href="#cb1-16"></a>  <span class="kw">&lt;/script&gt;</span></span>\n<span id="cb1-17"><a href="#cb1-17"></a><span class="kw">&lt;/head&gt;</span></span>\n<span id="cb1-18"><a href="#cb1-18"></a><span class="kw">&lt;/html&gt;</span></span></code></pre></div>\n<p><strong>note</strong> : note that for convenience, the built version of <strong>web-audio-boilerplate</strong> also includes the <strong>AudioContextMonkeyPatch.js</strong> mentioned above \u2026</p>\n<p><strong>note2</strong> : you can also encode to other formats tested by <strong>web-audio-boilerplate</strong>. However, be careful as some encoders (mp3, aac, \u2026) sometimes add silence at the beginning or end of the file, which will cause a glitch when looping your audio.</p>\n<h1 id="ios-sounds-need-to-be-triggered-from-an-explicit-user-action">iOS \u201csounds need to be triggered from an explicit user action\u201d</h1>\n<p>On iOS, <code>AudioContext</code> instances are <a href="https://developer.apple.com/library/content/documentation/AudioVideo/Conceptual/Using_HTML5_Audio_Video/PlayingandSynthesizingSounds/PlayingandSynthesizingSounds.html">created muted</a>. The only place you can unmute an instance of <code>AudioContext</code> and make sound with Web Audio API is in the callback of a user action. This means that on iOS, your audio application must have some sort of \u201cstart\u201d button. Before <strong>iOS 8</strong>, listening to <code>click</code> on that button would work, but with <strong>iOS 9</strong> and later, we need to listen for a <code>touch</code> event. So, if you create your <code>AudioContext</code> directly in the handler of a <code>touch</code> event everything will work fine. Again, you can use <a href="https://github.com/sebpiq/web-audio-boilerplate">web-audio-boilerplate</a> for a cross-browser start button for your web audio app :</p>\n<div class="sourceCode" id="cb2"><pre class="sourceCode html"><code class="sourceCode html"><span id="cb2-1"><a href="#cb2-1"></a><span class="dt">&lt;!DOCTYPE </span>html<span class="dt">&gt;</span></span>\n<span id="cb2-2"><a href="#cb2-2"></a><span class="kw">&lt;html&gt;</span></span>\n<span id="cb2-3"><a href="#cb2-3"></a><span class="kw">&lt;head&gt;</span></span>\n<span id="cb2-4"><a href="#cb2-4"></a>  <span class="kw">&lt;script</span><span class="ot"> type=</span><span class="st">&quot;text/javascript&quot;</span><span class="ot"> src=</span><span class="st">&quot;https://sebpiq.github.io/web-audio-boilerplate/dist/web-audio-boilerplate-min.js&quot;</span><span class="kw">&gt;&lt;/script&gt;</span></span>\n<span id="cb2-5"><a href="#cb2-5"></a><span class="kw">&lt;/head&gt;</span></span>\n<span id="cb2-6"><a href="#cb2-6"></a><span class="kw">&lt;body&gt;</span></span>\n<span id="cb2-7"><a href="#cb2-7"></a>  <span class="kw">&lt;button</span><span class="ot"> id=</span><span class="st">&quot;startButton&quot;</span><span class="kw">&gt;</span>START<span class="kw">&lt;/button&gt;</span></span>\n<span id="cb2-8"><a href="#cb2-8"></a>  <span class="kw">&lt;script</span><span class="ot"> type=</span><span class="st">&quot;text/javascript&quot;</span><span class="kw">&gt;</span></span>\n<span id="cb2-9"><a href="#cb2-9"></a>    <span class="kw">var</span> startButton <span class="op">=</span> <span class="bu">document</span><span class="op">.</span><span class="fu">getElementById</span>(<span class="st">&#39;startButton&#39;</span>)</span>\n<span id="cb2-10"><a href="#cb2-10"></a>    webAudioBoilerplate<span class="op">.</span><span class="fu">getAudioContextOnClick</span>(startButton<span class="op">,</span> <span class="kw">function</span>(err<span class="op">,</span> audioContext) {</span>\n<span id="cb2-11"><a href="#cb2-11"></a>
2      <span class="co">// `audioContext` is an instance of `AudioContext` that is unmuted!</span></span>\n<span id="cb2-12"><a href="#cb2-12"></a>      playSoundWith(audioContext)</span>\n<span id="cb2-13"><a href="#cb2-13"></a>    })</span>\n<span id="cb2-14"><a href="#cb2-14"></a>  <span class="kw">&lt;/script&gt;</span></span>\n<span id="cb2-15"><a href="#cb2-15"></a><span class="kw">&lt;/body&gt;</span></span>\n<span id="cb2-16"><a href="#cb2-16"></a><span class="kw">&lt;/html&gt;</span></span></code></pre></div>\n<p><strong>note</strong> : if you implement this technique yourself form scratch, be careful of creating your AudioContext <strong>directly</strong> in the event handler, and not in a callback within that event handler \u2026</p>\n<p><strong>note2</strong> : There are other methods fo unmuting audio on iOS. They all require a \u201cstart\u201d button. For example creating a silent node to kickstart a previously created AudioContext, etc \u2026 but the method describe above is the simplest in my opinion.</p>\n<h1 id="a-cross-browser-sound-player">A cross-browser sound player</h1>\n<p>To summarize all of this, here is a full, working, <a href="/audio/web-audio-in-production/looper.html">cross-browser app that just loops a sound</a>.</p>\n<h1 id="debugging-tips">Debugging tips</h1>\n<p>A couple of silly errors that I have made countless times :</p>\n<ul>\n<li>If testing on iOS and you have no sound \u2026 check that your <strong>mute switch</strong> is off!</li>\n<li>On any device \u2026 also check that your volume is not at zero!</li>\n</ul>\n<h1 id="despite-all-this">Despite all this \u2026</h1>\n<p>You <strong>WILL</strong> suffer developping with Web Audio API. There are a lot of inconsistencies between browsers. Functionalities not being implemented, etc \u2026 Also, Web Audio API not being a priority, some bugs that are introduced take ages to be fixed. For example <a href="https://bugs.chromium.org/p/chromium/issues/detail?id=647974">Chrome introduced a bad Web Audio bug</a> in version 53 and it was not fixed before version 57. It broke my production code and caused me to pull my hair off for several months.</p>\n</body>\n</html>\n',"/articles/2023-09-04-ia-generatives-mort-de-lart":'<p><em>La mort de l\u2019art serait-elle imminente ? L\u2019\xe9mergence d\u2019IA g\xe9n\xe9ratives capables de cr\xe9er textes, images ou sons \xe0 partir d\u2019une simple requ\xeate a profond\xe9ment choqu\xe9 le monde de la culture. Pourtant, \xe0 rebours des r\xe9cits alarmistes, ces outils pourraient en fait amorcer un mouvement radical de d\xe9mocratisation de la production artistique\u2026 \xe0 condition d\u2019emp\xeacher l\u2019industrie de se les approprier.</em></p>\n<hr />\n<p>Publi\xe9 sur :</p>\n<ul>\n<li><a href="https://lvsl.fr/ia-generatives-mort-de-lart-ou-renouveau-de-la-culture/">Le vent se l\xe8ve</a></li>\n<li><a href="https://blogs.mediapart.fr/sebastien-piquemal/blog/071123/ia-generatives-mort-de-l-art-ou-renouveau-de-la-culture">Une du club m\xe9diapart</a></li>\n</ul>\n<hr />\n<p>Vent de panique international dans le monde de la culture ! De nombreux artistes et organisations prennent publiquement position contre les intelligences artificielles dites \u201cg\xe9n\xe9ratives\u201d (abr\xe9g\xe9 GenIA), des nouvelles technologies qui permettent de composer textes, images ou audio gr\xe2ce \xe0 une simple requ\xeate formul\xe9e en langage naturel<a href="#fn1" class="footnote-ref" id="fnref1" role="doc-noteref"><sup>1</sup></a>.</p>\n<p>Certains craignent d\u2019\xeatre mis de c\xf4t\xe9 par les industries culturelles et de perdre leur emploi, remplac\xe9s par des machines. C\u2019est notamment l\u2019un des objets d\u2019une gr\xe8ve exceptionnelle qui a bloqu\xe9 pendant plusieurs mois l\u2019industrie du cin\xe9ma am\xe9ricain. Deux importants syndicats, la SAG - AFTRA (guilde des acteurs) et la WGA (guilde des sc\xe9naristes) se sont battus pour obtenir des studios une plus grande s\xe9curit\xe9 de l\u2019emploi face \xe0 la menace grandissante de l\u2019IA qui pourrait, dans un futur tr\xe8s proche, \xe9crire ou mettre en sc\xe8ne des acteurs fictifs pour une fraction du prix de leurs \xe9quivalents humains. Les gr\xe9vistes ont re\xe7u le soutien de nombreuses superstars hollywoodiennes, telles que Meryl Streep ou Leonardo DiCaprio<a href="#fn2" class="footnote-ref" id="fnref2" role="doc-noteref"><sup>2</sup></a>.</p>\n<div style="display:flex;flex-direction:column;align-items:center;padding:1em 0;">\n<img src="/articles/2023-09-04-ia-generatives-mort-de-lart/chatgpt-childhoodtrauma.jpeg" alt="Pancarte d\'une gr\xe8viste \xe0 Hollywood" width="100%"></img>\n<div style="width:100%">\n\u201cChatGPT n\u2019a pas de trauma d\u2019enfance\u201d - pancarte pendant la gr\xe8ve \xe0 Hollywood.\u201d \xa9 Taylor\n</div>\n</div>\n<p>D\u2019autres critiques s\u2019indignent de ce que l\u2019activiste et \xe9crivaine Naomi Klein qualifie du \u201cvol le plus important de l\u2019histoire de l\u2019humanit\xe9\u201d<a href="#fn3" class="footnote-ref" id="fnref3" role="doc-noteref"><sup>3</sup></a> : l\u2019utilisation par les entreprises d\u2019IA de milliards d\u2019\u0153uvres, sans r\xe9tribution ni consentement de leurs auteurs. Les bots de ces entreprises arpentent Internet pour amasser images, textes, et tout ce qui leur tombe sous la main. 
2Cette r\xe9colte est ensuite utilis\xe9e comme mati\xe8re brute pour entra\xeener leurs applications de GenIA<a href="#fn4" class="footnote-ref" id="fnref4" role="doc-noteref"><sup>4</sup></a>, qui requi\xe8rent d\u2019immenses quantit\xe9s d\u2019exemples afin de pouvoir apprendre \xe0 cr\xe9er \xe0 leur tour.</p>\n<p>Enfin, \xe0 en croire certaines pr\xe9dictions aux accents de films post-apocalyptiques, on s\u2019appr\xeaterait \xe0 vivre la mort de l\u2019art, le \u201cgrand remplacement\u201d des artistes par les robots<a href="#fn5" class="footnote-ref" id="fnref5" role="doc-noteref"><sup>5</sup></a>, les GenIA seraient \xe0 la culture ce que Skynet dans le film Terminator est \xe0 l\u2019humanit\xe9. \u201cL\u2019art est mort, mec. C\u2019est fini. L\u2019IA a gagn\xe9. Les humains ont perdu\u201d<a href="#fn6" class="footnote-ref" id="fnref6" role="doc-noteref"><sup>6</sup></a>, d\xe9clarait en 2022 au New York Times l\u2019artiste Jason Allen, l\u2019un des premiers \xe0 avoir remport\xe9 un prix d\u2019art avec une image g\xe9n\xe9r\xe9e par IA.</p>\n<p>Comme souvent dans le capitalisme, nous nous retrouvons assujettis \xe0 un processus de mutation \xe9conomique et sociale qui semble impossible \xe0 stopper, g\xe9n\xe9rant fantasmes, col\xe8re et confusion quant \xe0 la meilleure posture \xe0 adopter face au tsunami du changement.</p>\n<p>Pourtant, le monde de la culture et ses industries ne sont pas \xe9trangers aux bouleversements li\xe9s \xe0 l\u2019introduction de nouvelles technologies. Un cas pr\xe9sentant justement des similitudes avec l\u2019arriv\xe9e des GenIA est celui de l\u2019introduction d\u2019outils num\xe9riques dans la production musicale \xe0 partir des ann\xe9es 1980. Ce qu\u2019il s\u2019est alors jou\xe9 entre les artistes, le public, l\u2019industrie musicale et l\u2019industrie de la tech pourrait pr\xe9figurer ce qu\u2019il va se jouer dans un futur proche avec les GenIA.</p>\n<h2 id="le-pr\xe9c\xe9dent-de-lindustrie-musicale">Le pr\xe9c\xe9dent de l\u2019industrie musicale</h2>\n<p>Avant les ann\xe9es 1980, produire un disque \xe9tait cher et n\xe9cessitait un studio, un tas d\u2019\xe9quipements con\xe7us sur mesure et des ing\xe9nieurs du son pour faire tout fonctionner. \xc0 quelques exceptions pr\xe8s, seules de grandes multinationales surnomm\xe9es les \xab majors \xbb (EMI, Sony, Warner\u2026) pouvaient prendre en charge de tels frais<a href="#fn7" class="footnote-ref" id="fnref7" role="doc-noteref"><sup>7</sup></a>. Ces entreprises \xe9taient alors les gardiennes de la cr\xe9ation musicale mondiale, et contr\xf4laient ce qui \xe9tait produit, diffus\xe9 et distribu\xe9 dans les magasins de disques, \xe0 la radio ou dans les clubs.</p>\n<p>Entre les ann\xe9es 1980 et 2010, le num\xe9rique fit graduellement son entr\xe9e dans la conception d\u2019\xe9quipements de production musicale, entra\xeenant une baisse drastique du prix de r\xe9alisation des albums. Cette tendance connut son point d\u2019orgue avec l\u2019arriv\xe9e de logiciels appel\xe9s \u201cDigital Audio Workstations\u201d (DAW) qui incluent le studio d\u2019enregistrement dans son enti\xe8ret\xe9, instruments de musique compris.</p>\n<p>Un grand nombre de musiciens, amateurs et professionnels, se virent alors donner les moyens de produire des enregistrements de qualit\xe9 depuis chez eux. Cette d\xe9mocratisation de l\u2019acc\xe8s aux outils de production entraina une v\xe9ritable r\xe9volution \u201cdo-it-yourself\u201d (DIY) dans le monde de la musique<a href="#fn8" class="footnote-ref" id="fnref8" role="doc-noteref"><sup>8</sup></a>. Elle provoqua un boom de cr\xe9ativit\xe9 collective et eut un impact culturel immense en permettant l\u2019\xe9mergence de nouvelles formes comme le hip-hop et la musique \xe9lectronique.</p>\n<div style="display:flex;flex-direction:column;align-items:center;padding:1em 0;">\n<img src="/articles/2023-09-04-ia-generatives-mort-de-lart/Fruityloops-version1.png" alt="Interface utilisateur de fruity loops version 1" width="100%"></img>\n<div style="width:100%">\nFruityLoops version 1.0, un DAW de premi\xe8re g\xe9n\xe9ration ayant acquis un statut culte aupr\xe8s des producteurs de hip-hop.\n</div>\n</div>\n<p>Dans la foul\xe9e de ces mutations, l\u2019industrie musicale fut d\xe9stabilis\xe9e pendant plusieurs d\xe9cennies. Les studios d\u2019enregistrement perdirent leur place privil\xe9gi\xe9e dans le processus de production des disques, ce qui causa une crise dans ce secteur ainsi qu\u2019une d\xe9gradation des conditions de travail<a href="#fn9" class="footnote-ref" id="fnref9" role="doc-noteref"><sup>9</sup></a>. Finalement, l\u2019industrie musicale r\xe9ussit \xe0 se restructurer autour de nouveaux acteur
2s de la tech tels que les plateformes de streaming et les r\xe9seaux sociaux. Beaucoup des nouveaux genres et artistes qui avaient \xe9merg\xe9 de mani\xe8re organique et contre-culturelle furent r\xe9absorb\xe9s par le circuit commercial. Face \xe0 la saturation d\u2019un march\xe9 du divertissement dans lequel il est difficile d\u2019\xeatre audible, l\u2019industrie musicale r\xe9ussit \xe0 sauver sa position en se transformant en une machine \xe0 pub, optimis\xe9e pour faire des \u201cvues\u201d sur YouTube ou des \u201cplays\u201d sur Spotify.</p>\n<h2 id="le-fantasme-de-la-mort-de-lart">Le fantasme de la mort de l\u2019art</h2>\n<p>Pour en revenir aux GenIA, la crainte qu\u2019elles ne signeraient la mort de l\u2019art est un fantasme. L\u2019art est avant tout un acte de communication entre des \xeatres dou\xe9s de conscience. Les syst\xe8mes de GenIA n\u2019ont pas de libre arbitre, contrairement \xe0 ce que le mot \u201cintelligence\u201d dans leur nom sugg\xe8re. Tout l\u2019enjeu de la cr\xe9ation avec une IA est justement pour l\u2019artiste humain de parvenir \xe0 traduire son intention, afin que l\u2019IA produise une \u0153uvre qui s\u2019en rapproche au maximum.</p>\n<p>Le photographe Boris Eldagsen qui en 2023 a cr\xe9\xe9 le scandale en remportant le prestigieux prix Sony World Photography Awards avec une image g\xe9n\xe9r\xe9e par IA d\xe9crit son travail ainsi : \u201c[c\u2019est] une interaction complexe [\u2026] qui puise dans la richesse de [mes] connaissances en photographie. [\u2026] [Travailler avec l\u2019IA] \xe7a n\u2019est pas juste appuyer sur un bouton - et c\u2019est fini. Il s\u2019agit d\u2019explorer la complexit\xe9 du processus, en commen\xe7ant par affiner des prompts, puis en d\xe9veloppant un workflow complexe, et m\xe9langeant des plateformes et des techniques vari\xe9es. Plus vous cr\xe9ez un tel workflow et d\xe9finissez des param\xe8tres, plus votre apport cr\xe9atif devient d\xe9terminant\u201d<a href="#fn10" class="footnote-ref" id="fnref10" role="doc-noteref"><sup>10</sup></a>. Un journaliste du magazine WIRED, quant \xe0 lui, explique qu\u2019il n\u2019est \u201cpas rare pour une image marquante de n\xe9cessiter 50 \xe9tapes\u201d<a href="#fn11" class="footnote-ref" id="fnref11" role="doc-noteref"><sup>11</sup></a>.</p>\n<div style="display:flex;flex-direction:column;align-items:center;padding:1em 0;">\n<img src="/articles/2023-09-04-ia-generatives-mort-de-lart/eldagsen-theelectrician.jpg" alt="\u201cThe Electrician\u201d, photographie ayant remport\xe9 le Sony World Photography Awards" width="100%"></img>\n<div style="width:100%">\n\u201cThe Electrician\u201d, photographie ayant remport\xe9 le Sony World Photography Awards. \xa9 Boris Eldagsen\n</div>\n</div>\n<p>Pas la mort de l\u2019art donc, mais il est possible que, de mani\xe8re similaire \xe0 ce qu\u2019il s\u2019est produit pour l\u2019industrie musicale, nous nous trouvions \xe0 l\u2019aube d\u2019une nouvelle r\xe9volution DIY qui affecterait cette fois-ci tous les champs de la cr\xe9ation culturelle. Le fondateur de l\u2019entreprise qui distribue le DAW FruityLoops explique le succ\xe8s de ce logiciel par le fait qu\u2019un utilisateur peut \xeatre \u201cop\xe9rationnel en quelques secondes\u201d et qu\u2019il est \u201cpresque impossible de cr\xe9er quelque chose qui ne sonne pas\u201d<a href="#fn12" class="footnote-ref" id="fnref12" role="doc-noteref"><sup>12</sup></a>. De la m\xeame mani\xe8re, les GenIA sont des outils d\u2019une incroyable accessibilit\xe9. Elles permettent \xe0 n\u2019importe qui de cr\xe9er des \u0153uvres d\u2019art, sans avoir \xe0 poss\xe9der toute une infrastructure de production, sans avoir les comp\xe9tences techniques pour l\u2019op\xe9rer, sans m\xeame avoir de comp\xe9tences artistiques. De plus, il suffit pour les utiliser de poss\xe9der un simple t\xe9l\xe9phone ou ordinateur<a href="#fn13" class="footnote-ref" id="fnref13" role="doc-noteref"><sup>13</sup></a>.</p>\n<p>C\u2019est justement dans les domaines artistiques qui requi\xe8rent des infrastructures de production tr\xe8s lourdes, avec des budgets \xe9normes, comme le cin\xe9ma et le jeu vid\xe9o, que le changement pourrait \xeatre le plus profond. Des startups imaginent d\xe9j\xe0 comment les GenIA pourraient radicalement d\xe9mocratiser la production de films en automatisant certaines op\xe9rations tr\xe8s co\xfbteuses, et en permettant de tester rapidement diff\xe9rents choix artistiques<a href="#fn14" class="footnote-ref" id="fnref14" role="doc-noteref"><sup>14</sup></a>. Ironiquement, les studios hollywoodiens auraient donc peut-\xeatre autant de raisons de craindre pour leur futur que les gr\xe9vistes. En r\xe9duisant drastiquement le co\xfbt d\u2019entr\xe9e dans l\u2019industrie du cin\xe9ma, les GenIA pourraient permettre \xe0 de nombreux studios ind\xe9pendants de se constituer. \xc0 terme, elles pourraient m\xeame permettre \xe0 des amateurs de produire des films entiers, avec acteurs, d\xe9cors, mouvements de cam\xe9ras et effets sp\xe9ciaux, seuls et depuis leur chambre.</p>\n<h2 id="le-potentiel-radical-des-genia">Le potentiel radical des GenIA</h2>\n<p>Les GenIA, tout comme les DAW, repr\xe9sentent en r\xe9alit\xe9 l\u2019objectification d\u2019une partie des comp\xe9tences du monde de la culture, sous la forme de machines immat\xe9rielles qui peuvent produire plus rapidement, en quantit\xe9 infinie et pour un co\xfbt bien moindre<a href="#fn15" class="footnote-ref" id="fnref15" role="doc-noteref"><sup>15</sup></a>. C\u2019est une nouvelle occurrence de l\u2019automatisation de la production industrielle, un ph\xe9nom\xe8ne ancien et intrins\xe8que au capitalisme qui a d\xe9j\xe0 touch\xe9 de nombreux autres secteurs de l\u2019\xe9c
2onomie. Marx dans le c\xe9l\xe8bre \u201cFragment sur les machines\u201d d\xe9crivait en 1857 comment la qu\xeate incessante de productivit\xe9 menait logiquement \xe0 la conception de machines qui int\xe8grent le savoir-faire des travailleurs afin de d\xe9placer ces derniers en p\xe9riph\xe9rie du processus de production, rempla\xe7ant ainsi le travail par le capital.</p>\n<p>\xc0 l\u2019aune de la r\xe9volution du num\xe9rique, cette th\xe9orie a connu un regain d\u2019int\xe9r\xeat gr\xe2ce \xe0 des intellectuels comme Mark Fisher, Jeremy Rifkin, ou encore Paul Mason. Ces derniers postulent g\xe9n\xe9ralement que le ch\xf4mage syst\xe9mique et la surabondance des biens pourraient cr\xe9er les conditions d\u2019une \xe9mancipation du capitalisme, \xe0 condition de d\xe9coupler le salaire du travail et de transformer les rapports de propri\xe9t\xe9<a href="#fn16" class="footnote-ref" id="fnref16" role="doc-noteref"><sup>16</sup></a>. Cette ligne de pens\xe9e, encore largement ignor\xe9e par la gauche contemporaine, avait d\u2019ailleurs inspir\xe9 la campagne pr\xe9sidentielle, spectaculairement rat\xe9e, de Beno\xeet Hamon avec le PS en 2017. Le candidat avait donn\xe9 une position centrale aux enjeux de l\u2019automatisation, et propos\xe9 d\u2019y r\xe9pondre avec des mesures comme le salaire universel ou la \xab taxe sur les robots \xbb.</p>\n<p>En appliquant cette th\xe9orie au domaine de la culture, on peut envisager que les GenIA soient en r\xe9alit\xe9 porteuses d\u2019un potentiel radical : celui d\u2019extraire la production culturelle des relations d\u2019\xe9change capitalistes. La posture \xe0 adopter face \xe0 ces nouvelles technologies serait alors de prendre une part active dans leur d\xe9veloppement, afin de s\u2019assurer qu\u2019elles deviennent un bien commun, et profitent ainsi \xe0 l\u2019ensemble de la soci\xe9t\xe9 et non aux seules industries.</p>\n<p>C\u2019est d\u2019ailleurs le projet de fondations telles qu\u2019EleutherAI ou Mozilla.ai qui d\xe9veloppent des GenIA libres, c\u2019est-\xe0-dire qui puissent \xeatre inspect\xe9es, utilis\xe9es, modifi\xe9es et re-distribu\xe9es gratuitement et par n\u2019importe qui. Mozilla, la fondation derri\xe8re Firefox, a ainsi annonc\xe9 sur son blog la cr\xe9ation de Mozilla.ai en d\xe9but 2023 en d\xe9clarant : \xab Nous croyons que [les gens qui d\xe9sirent faire les choses autrement], s\u2019ils travaillent collectivement, peuvent cr\xe9er un \xe9cosyst\xe8me d\u2019IA ind\xe9pendant, d\xe9centralis\xe9 et fiable \u2013 v\xe9ritable contrepoids au status quo [des g\xe9ants de la tech] \xbb<a href="#fn17" class="footnote-ref" id="fnref17" role="doc-noteref"><sup>17</sup></a>. Ces projets doivent cependant relever des d\xe9fis \xe9normes, et pour l\u2019instant, toutes les GenIA disponibles, y compris certaines pr\xe9sent\xe9s comme \xab libres \xbb, restent sous le contr\xf4le d\u2019entreprises telles que Facebook, Microsoft ou Google<a href="#fn18" class="footnote-ref" id="fnref18" role="doc-noteref"><sup>18</sup></a>.</p>\n<p>Les g\xe9ants de la tech ont une longue histoire d\u2019appropriation des utopies imagin\xe9es par les pionniers de la contre-culture du num\xe9rique. Leurs d\xe9clarations de mission sont r\xe9v\xe9latrices d\u2019une strat\xe9gie de communication consistant \xe0 faire croire au grand public qu\u2019elles sont une force \xe9mancipatrice pour l\u2019humanit\xe9. Meta (maison m\xe8re de Facebook) d\xe9clare sur son site web que sa raison d\u2019\xeatre est de \xab donner \xe0 chacun et chacune la possibilit\xe9 de construire une communaut\xe9 et de rapprocher le monde \xbb. De son c\xf4t\xe9, au cours des ann\xe9es 2000, Google clamait haut et fort son slogan \xab Don\u2019t be evil \xbb, alors m\xeame qu\u2019elle d\xe9ployait une gigantesque infrastructure d\u2019extraction des donn\xe9es priv\xe9es. Le danger du r\xe9cit des GenIA comme outils r\xe9volutionnaires capables de d\xe9mocratiser la cr\xe9ation est donc qu\u2019il ne renforce l\u2019image de disrupteurs bienveillants dont se parent ces entreprises. Il est alors important de faire le tri entre v\xe9ritable projet r\xe9volutionnaire et strat\xe9gie de communication. Car le danger ne provient pas de la technologie elle-m\xeame, mais du contexte dans lequel elle sera d\xe9ploy\xe9e et par qui.</p>\n<h2 id="pour-une-culture-post-capitaliste">Pour une culture post-capitaliste</h2>\n<p>S\u2018il est vrai que les technologies ont le pouvoir de transformer la soci\xe9t\xe9, c\u2019est surtout notre soci\xe9t\xe9 qui r\xe9ciproquement imprime ses valeurs et ses relations de domination sur les technologies, leur donnant ainsi leur forme finale. Le d\xe9bat sur l\u2019impact des GenIA fait souvent l\u2019impasse sur cette r\xe9ciproque, se contentant de tirer un fil depuis le pr\xe9sent, mais ne questionnant que rarement ce pr\xe9sent, les acteurs qui le dominent et les rapports de force \xe9conomiques, sociaux et politiques qu\u2019ils entretiennent. En l\u2019occurrence, pour saisir dans leur enti\xe8ret\xe9 les enjeux li\xe9s aux GenIA, il faut donc interroger les positions des industries culturelles, de l\u2019industrie de la tech et des artistes vis-\xe0-vis de ces nouvelles technologies.</p>\n<p>Le business model des g\xe9ants de la tech est complexe et insidieux. Dans un contexte de profusion du contenu et de saturation de la capacit\xe9 d\u2019attention du public, il consiste \xe0 capter cette attention, devenue ressource rare, afin de la vendre au plus offrant sous la forme d\u2019emplacements publicitaires ultra-cibl\xe9s<a href="#fn19" class="footnote-ref" id="fnref19" role="doc-noteref"><sup>19</sup></a>. Dans ces conditions, m\xeame si les GenIA provoquaient une explosion de productions ind\xe9pendantes, sous le r\xe9gime des g\xe9ants de la tech ces productions seraient oblit\xe9r\xe9es par celles des industries culturelles qui b\xe9n\xe9ficient d\u2019importants budgets leur permettant d\u2019acheter l\u2019attention du public. C\u2019est d\u2019ailleurs ce qu\u2019il s\u2019\xe9tait pass\xe9 avec l\u2019industrie musicale : alors que son monopole sur la production des albums avait \xe9t\xe9 renvers\xe9, elle conserva quand m\xeame sa domination en payant pour la visibilit\xe9 de ses produits.</p>\n<p>Gr\xe2ce \xe0 une d\xe9mocratisation radicale de la production d\u2019\u0153uvres, les GenIA nous feront tr\xe8s probablement entrer dans une nouvelle \xe8re d\u2019hyper-abondance de la culture. Si dans le m\xeame temps nous parvenions aussi \xe0 nous lib\xe9rer des r\xe9seaux sociaux publicitaires et de leur logique toxique de comp\xe9tition pour la visibilit\xe9<a href="#fn20" class="footnote-ref" id="fnref20" role="doc-noteref"><sup>20</sup></a>, un nouveau r\xf4le pourrait alors \xe9merger pour les artistes. Puisque le nombre d\u2019\u0153uvres de qualit\xe9 \xe9quivalente cr\xe9\xe9es gr\xe2ce aux GenIA serait infini, aucun cr\xe9ateur ne pourrait se d\xe9marquer. Il ne s\u2019agirait donc plus de cr\xe9er, pour \xeatre c\xe9l\xe8bre, vu, lu ou entendu par le plus grand nombre. Il s\u2019agirait avant tout de cr\xe9er pour sa communaut\xe9 ou pour son plaisir personnel. Ce pourrait \xeatre le d\xe9but d\u2019une r\xe9appropriation de la culture comme instrument de soin et de structuration du collectif au lieu d\u2019\xeatre, comme elle l\u2019est souvent aujourd\u2019hui, le r\xe9sultat d\u2019une comp\xe9tition f\xe9roce dans un march\xe9 mondial de l\u2019attention qui vante le g\xe9nie et le m\xe9rite individuel.</p>\n<p>Comme le remarque David Holz, le cr\xe9ateur de l\u2019application de g\xe9n\xe9ration d\u2019images Midjourney, cette vision est d\xe9j\xe0 partiellement en train de se r\xe9aliser. D\u2019apr\xe8s lui, \u201cune immense portion de l\u2019usage [de Midjourney] consiste essentiellement en de l\u2019art-th\xe9rapie\u201d<a href="#fn21" class="footnote-ref" id="fnref21" role="doc-noteref"><sup>21</sup></a>. De nombreux utilisateurs se servent de la plateforme \xe0 des fins de divertissement comme on peindrait en amateur pendant son temps libre. D\u2019autres s\u2019en servent pour cr\xe9er des images \xe0 usage personnel permettant de mat\xe9rialiser une pens\xe9e profonde, un r\xeave ou un questionnement, et fonctionnant ainsi comme une forme de soin. Un journaliste rapporte, par exemple, avoir vu des images g\xe9n\xe9r\xe9es pour repr\xe9senter le \u201cparadis des animaux\u201d, en r\xe9ponse \xe0 la mort d\u2019un animal domestique<a href="#fn22" class="footnote-ref" id="fnref22" role="doc-noteref"><sup>22</sup></a>.</p>\n<div style="display:flex;flex-direction:column;align-items:center;padding:1em 0;">\n<img src="/articles/2023-09-04-ia-generatives-mort-de-lart/midjourney-art-dying.jpg" alt="Image g\xe9n\xe9r\xe9e par l\'application de GenIA Midjourney pour illustrer cet article" width="100%"></img>\n<div style="width:100%">\n\u201cl\u2019art en train de mourir alors qu\u2019il est remplac\xe9 par l\u2019IA\u201d (prompt exact : \u201cart dying as it is about to be replaced by AI, contemporary photography\u201d). Image g\xe9n\xe9r\xe9e par l\u2019application de GenIA Midjourney pour illustrer cet article.\n</div>\n</div>\n<p>Les industries culturelles, quant \xe0 elles, s\u2019accrochent \xe0 leurs parts de march\xe9 en menant des batailles r\xe9actionnaires qui sont souvent soutenues par les artistes eux-m\xeames. L\u2019arriv\xe9e des GenIA a ainsi d\xe9marr\xe9 un nouveau mouvement pour la d\xe9fense des \u201cdroits d\u2019auteurs\u201d<a href="#fn23" class="footnote-ref" id="fnref23" role="doc-noteref"><sup>23</sup></a>, un outil l\xe9gal dont le nom sugg\xe8re qu\u2019il a \xe9t\xe9 invent\xe9 dans un esprit de protection des cr\xe9ateurs, attirant donc une sympathie imm\xe9diate pour ce qui appara\xeet comme un instrument au service de la culture. La r\xe9alit\xe9 est en fait bien diff\xe9rente, pu
2isque les droits d\u2019auteur ont \xe9t\xe9 invent\xe9s au XVIII et XIX\xe8 si\xe8cles par de riches \xe9diteurs de l\u2019industrie du livre, afin de criminaliser l\u2019impression de copies moins ch\xe8res par des maisons d\u2019\xe9dition plus petites<a href="#fn24" class="footnote-ref" id="fnref24" role="doc-noteref"><sup>24</sup></a>. Ils sont aussi r\xe9guli\xe8rement utilis\xe9s pour tyranniser des organisations qui \u0153uvrent pour la pr\xe9servation et la diss\xe9mination de la culture, comme aux \xc9tats-Unis, o\xf9 l\u2019industrie du livre attaque des biblioth\xe8ques en justice pour tenter de les emp\xeacher de pr\xeater des copies de livres num\xe9riques<a href="#fn25" class="footnote-ref" id="fnref25" role="doc-noteref"><sup>25</sup></a> ; ou encore par l\u2019industrie du disque, pour stopper l\u2019effort de l\u2019ONG \u201cThe Internet Archive\u201d d\u2019archiver des disques 78 tours du d\xe9but du XX\xe8 si\xe8cle qui sont autrement vou\xe9s \xe0 dispara\xeetre<a href="#fn26" class="footnote-ref" id="fnref26" role="doc-noteref"><sup>26</sup></a>.</p>\n<p>Produire de l\u2019art est aujourd\u2019hui encore un privil\xe8ge. Les artistes professionnels sont en \xe9crasante majorit\xe9 issus des classes sup\xe9rieures qui seules poss\xe8dent un capital culturel, social et \xe9conomique suffisant pour soutenir la pr\xe9carit\xe9 choisie de la vie d\u2019artiste<a href="#fn27" class="footnote-ref" id="fnref27" role="doc-noteref"><sup>27</sup></a>. Les GenIA ont au contraire la capacit\xe9 de rendre le mode d\u2019expression artistique accessible \xe0 tous, permettant \xe0 chacun de raconter son histoire ou son v\xe9cu sans avoir \xe0 passer par la m\xe9diation d\u2019un artiste ou des industries culturelles, souffrant au passage de leurs biais. Elles permettraient ainsi de faire passer notre soci\xe9t\xe9 d\u2019un mod\xe8le de culture commodifi\xe9e et verticale, dans lequel artistes et industries culturelles produisent des r\xe9cits que le public consomme passivement, \xe0 un mod\xe8le horizontal, plus \xe9galitaire, r\xe8gne du DIY, et dans lequel la distinction artiste / public serait devenue obsol\xe8te.</p>\n<p>L\u2019activiste Noam Chomsky disait dans un entretien en 2003 : \u201cun marteau peut \xeatre utilis\xe9 [pour torturer quelqu\u2019un] mais le [m\xeame] marteau peut \xeatre aussi utilis\xe9 pour construire une maison\u201d<a href="#fn28" class="footnote-ref" id="fnref28" role="doc-noteref"><sup>28</sup></a>. \xc0 contre courant des sujets \xe0 frisson ressass\xe9s par la presse sur le th\xe8me des GenIA : \u201cexplosion de fake news\u201d, \u201cch\xf4mage des artistes\u201d, \u201cpiratage des oeuvres\u201d, etc., interroger la position des industries et des artistes rend plausible une vision sur la mani\xe8re dont les GenIA pourraient \xeatre utilis\xe9es dans le difficile processus de construction d\u2019une soci\xe9t\xe9 plus juste. Mais la poursuite de cette vision invite en premier lieu \xe0 mener de nouveaux combats et \xe0 en r\xe9investir d\u2019anciens : pour l\u2019impl\xe9mentation de GenIA libres et g\xe9r\xe9es comme des communs, pour la libert\xe9 de la culture et pour la libert\xe9 des moyens de communication qui permettent de la partager.</p>\n<hr />\n<h2 id="notes">Notes</h2>\n<section class="footnotes" role="doc-endnotes">\n<hr />\n<ol>\n<li id="fn1" role="doc-endnote"><p>Exemples de ces outils : Midjourney ou ChatGPT.<a href="#fnref1" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn2" role="doc-endnote"><p>Gbadamassi, Falila. \u201cMeryl Streep, George Clooney Et Leonardo DiCaprio\u202f: Les Superstars Ne Sont Pas Sur Les Piquets De Gr\xe8ve \xc0 Holl.\u201d Franceinfo, 4 Aug.\xa02023, www.francetvinfo.fr/culture/cinema/meryl-streep-george-clooney-et-leonardo-dicaprio-les-superstars-ne-sont-pas-sur-les-piquets-de-greve-a-hollywood-mais-mettent-la-main-a-la-poche_5982314.html.<a href="#fnref2" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn3" role="doc-endnote"><p>Klein, Naomi. \u201cAI Machines Aren\u2019t \u2018Hallucinating\u2019. But Their Makers Are.\u201d The Guardian, 21 Aug.\xa02023, www.theguardian.com/commentisfree/2023/may/08/ai-machines-hallucinating-naomi-klein.<a href="#fnref3" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn4" role="doc-endnote"><p>Ces applications sont constitu\xe9es de plusieurs parties qui jouent des r\xf4les diff\xe9rents : le code informatique, les donn\xe9es, les mod\xe8les, \u2026 Tout au long de cet article nous utiliserons n\xe9anmoins le terme \xab GenIA \xbb pour qual
2ifier l\u2018ensemble de ces parties comme un syst\xe8me en bo\xeete noire que nous n\u2019avons pas besoin d\u2019ouvrir pour notre propos.<a href="#fnref4" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn5" role="doc-endnote"><p>Guerrin, Michel. \u201c\xab Avec L\u2019intelligence Artificielle, La Peur Du Grand Remplacement Agite La Musique Et Les Arts Visuels \xbb.\u201d Le Monde.fr, 21 Apr.\xa02023, www.lemonde.fr/idees/article/2023/04/21/avec-l-intelligence-artificielle-la-peur-du-grand-remplacement-agite-la-musique-et-les-arts-visuels_6170394_3232.html.<a href="#fnref5" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn6" role="doc-endnote"><p>Roose, Kevin. \u201cAI-Generated Art Won a Prize. Artists Aren\u2019t Happy.\u201d The New York Times, 2 Sept.\xa02022, www.nytimes.com/2022/09/02/technology/ai-artificial-intelligence-artists.html.<a href="#fnref6" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn7" role="doc-endnote"><p>Leyshon, Andrew. \u201cThe Software Slump?: Digital Music, the Democratisation of Technology, and the Decline of the Recording Studio Sector Within the Musical Economy.\u201d Environment and Planning A, vol.\xa041, no. 6, SAGE Publishing, June 2009, pp.\xa01309\u201331. https://doi.org/10.1068/a40352.<a href="#fnref7" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn8" role="doc-endnote"><p>Prior, Nick. \u201cNew Amateurs Revisited.\u201d Routledge Handbook of Cultural Sociology, 2018, https://doi.org/10.4324/9781315267784-37.<a href="#fnref8" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn9" role="doc-endnote"><p>Leyshon, Andrew. \u201cThe Software Slump?: Digital Music, the Democratisation of Technology, and the Decline of the Recording Studio Sector Within the Musical Economy.\u201d Environment and Planning A, vol.\xa041, no. 6, SAGE Publishing, June 2009, pp.\xa01309\u201331. https://doi.org/10.1068/a40352.<a href="#fnref9" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn10" role="doc-endnote"><p>Boris, and Boris. \u201cSony World Photography Awards 2023 | Boris Eldagsen.\u201d Boris Eldagsen, Apr.\xa02023, www.eldagsen.com/sony-world-photography-awards-2023.<a href="#fnref10" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn11" role="doc-endnote"><p>Kelly, Kevin. \u201cWhat AI-Generated Art Really Means for Human Creativity.\u201d WIRED, 17 Nov.\xa02022, www.wired.com/story/picture-limitless-creativity-ai-image-generators.<a href="#fnref11" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn12" role="doc-endnote"><p>Weiss, Dan. \u201cThe Unlikely Rise of FL Studio, the Internet\u2019s Favorite Production Software.\u201d VICE, 12 Oct.\xa02016, www.vice.com/en/article/3de5a9/fl-studio-soulja-boy-porter-robinson-madeon-feature.<a href="#fnref12" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn13" role="doc-endnote"><p>Pour l\u2019instant pour g\xe9n\xe9rer des \u0153uvres enti\xe8rement localement (sans utiliser de serveur) il faut aussi un GPU.<a href="#fnref13" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn14" role="doc-endnote"><p>Beckett, Lois. \u201c\u2018Those Who Hate AI Are Insecure\u2019: Inside Hollywood\u2019s Battle Over Artificial Intelligence.\u201d The Guardian, 26 May 2023, www.theguardian.com/us-news/2023/may/26/hollywood-writers-strike-artificial-intelligence.<a href="#fnref14" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn15" role="doc-endnote"><p>D\u2019apr\xe8s cette \xe9tude, il semblerait m\xeame que les \xe9missions de CO2 d\u2019une GenIA soient de 130 \xe0 1500 fois plus faibles que celles d\u2019un humain pour l\u2019\xe9criture d\u2019un texte, et de 310 \xe0 2900 fois plus faible pour la cr\xe9ation d\u2019une image. Tomlinson, Bill. \u201cThe Carbon Emissions of Writing and Illustrating Are Lower for AI than for Humans.\u201d arXiv.org, March 8, 2023. https://arxiv.org/abs/2303.06219.<a href="#fnref15" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn16" role="doc-endnote"><p>\xc0 condition aussi et bien s\xfbr d\u2019\xe9viter un effondrement \xe9cologique.<a href="#fnref16" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn17" role="doc-endnote"><p>Surman, Mark. \u201cIntroducing Mozilla.Ai: Investing in Trustworthy AI.\u201d The Mozilla Blog, August 1, 2023. https://blog.mozilla.org/en/mozilla/introducing-mozilla-ai-investing-in-trustworthy-ai/.<a href="#fnref17" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn18" role="doc-endnote"><p>Widder, David Gray, Sarah Myers West, and Meredith Whittaker. \u201cOpen (For Business): Big Tech, Concentrated Power, and the Political Economy of Open AI.\u201d Social Science Research Network, January 1, 2023. https://doi.org/10.2139/ssrn.4543807.<a href="#fnref18" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn19" role="doc-endnote"><p>En r\xe9alit\xe9, le business model des g\xe9ants de la tech d\xe9passe bien largement la seule publicit\xe9, comme expliqu\xe9 par Shoshana Zuboff dans son incontournable livre sur le capitalisme de surveillance. Zuboff, Shoshana. \u201cThe Age of Surveillance Capitalism.\u201d Routledge eBooks, 2023, pp.\xa0203\u201313. https://doi.org/10.4324/9781003320609-27.<a href="#fnref19" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn20" role="doc-endnote"><p>Suite \xe0 de nombreux scandales, notamment des cas d\u2019ing\xe9rence lors d\u2019\xe9lections d\xe9mocratiques (comme dans l\u2019affaire Cambridge Analytica), les \xc9tats commencent enfin \xe0 r\xe9guler \xe0 grande \xe9chelle ces acteurs. En tant qu\u2019utilisateurs, pas besoin d\u2019attendre pour d\xe9serter les r\xe9seaux sociaux publicitaires, puisque des alternatives solides existent d\xe9j\xe0. On pourrait citer par exemple Mastodon (https://joinmastodon.org/fr), un r\xe9seau social non publicitaire, ouvert et d\xe9centralis\xe9. Quant \xe0 tous ces outils gratuits de Google et Microsoft qui extraient nos donn\xe9es, il existe de nombreuses alternatives libres (https://degooglisons-internet.org/fr/).<a href="#fnref20" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn21" role="doc-endnote"><p>Kelly, Kevin. \u201cWhat AI-Generated Art Really Means for Human Creativity.\u201d WIRED, 17 Nov.\xa02022, www.wired.com/story/picture-limitless-creativity-ai-image-generators.<a href="#fnref21" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn22" role="doc-endnote"><p>Ibid.<a href="#fnref22" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn23" role="doc-endnote"><p>Frenkel, Sheera, and Stuart A. Thompson. \u201cData Revolts Break Out Against A.I.\u201d The New York Times, 15 July 2023, www.nytimes.c
2om/2023/07/15/technology/artificial-intelligence-models-chat-data.html. Voir aussi: Belanger, Ashley. \u201cSarah Silverman Sues OpenAI, Meta for Being \u2018Industrial-strength Plagiarists.\u2019\u201d Ars Technica, 10 July 2023, arstechnica.com/information-technology/2023/07/book-authors-sue-openai-and-meta-over-text-used-to-train-ai<a href="#fnref23" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn24" role="doc-endnote"><p>Rose, Mark. \u201cThe Author as Proprietor: Donaldson V. Becket and the Genealogy of Modern Authorship.\u201d Representations, vol.\xa023, University of California Press, Jan.\xa01988, pp.\xa051\u201385. https://doi.org/10.2307/2928566. Voir aussi : Waldron, Jeremy. \u201cFrom authors to copiers: individual rights and social values in intellectual property.\u201d Chi.-Kent L. Rev.\xa068 (1992): 841.<a href="#fnref24" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn25" role="doc-endnote"><p>Masnick, Mike. \u201cBook Publishers Won\u2019t Stop Until Libraries Are Dead.\u201d Techdirt, 22 Mar.\xa02023, www.techdirt.com/2023/03/22/book-publishers-wont-stop-until-libraries-are-dead.<a href="#fnref25" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn26" role="doc-endnote"><p>Masnick, Mike. \u201cRIAA Piles on in the Effort to Kill the World\u2019s Greatest Library: Sues Internet Archive for Making It Possible to Hear Old 78s.\u201d Techdirt, 14 Aug.\xa02023, www.techdirt.com/2023/08/14/riaa-piles-on-in-the-effort-to-kill-the-worlds-greatest-library-sues-internet-archive-for-making-it-possible-to-hear-old-78s.<a href="#fnref26" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn27" role="doc-endnote"><p>Piquemal, S\xe9bastien. \u201cL\u2019art Nous Emp\xeache De Construire Un Monde Meilleur.\u201d Mediapart, 7 Dec.\xa02022, https://blogs.mediapart.fr/sebastien-piquemal/blog/051222/l-art-nous-empeche-de-construire-un-monde-meilleur.<a href="#fnref27" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn28" role="doc-endnote"><p>The Dominion and the Intellectuals, Noam Chomsky Interviewed by Antosofia. https://chomsky.info/2003____.<a href="#fnref28" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n</ol>\n</section>
2\n',"/articles/2022-12-01-hijacking-virtual-spaces":'<p><em>FR : Plus de trente ans apr\xe8s le lancement d\u2019Internet, l\u2019utopie d\xe9mocratique que d\xe9fendaient ses cr\xe9ateurs semble bien mise \xe0 mal par les grandes entreprises du num\xe9rique. Pourtant, aux marges des espaces virtuels, activistes et simples utilisateurs d\xe9ploient tout un r\xe9pertoire de tactiques pour op\xe9rer des d\xe9tournements politiques des plateformes de ces entreprises. \xc0 travers spams, canulars, ou en s\u2019organisant en communaut\xe9s en ligne, ils parviennent temporairement a\u0300 se visibiliser et \xe0 se r\xe9approprier une capacit\xe9 d\u2019action. Voici une revue de leurs tactiques, pos\xe9e \xe0 la fois comme source d\u2019inspiration et comme source de questionnement sur l\u2019\xe9tat de l\u2019utopie des r\xe9seaux.</em></p>\n<hr />\n<p><em>EN : More than 30 years after the launch of the Internet, the democratic utopia defended by its creators seems to have been corrupted by big tech companies. At the same time, at virtual spaces\u2019 margins, activists and mere users employ a range of tactics to carry out political hijacks of these companies\u2019 platforms. Through spam, hoaxes, or by organizing as online communities, they temporarily manage to visibilize themselves and to reclaim a form of agency. Here is a review of their tactics, presenting them at the same time as a source of inspiration and a source of concern for the state of the network utopia.</em></p>\n<hr />\n<p>Publi\xe9 sur :</p>\n<ul>\n<li><a href="https://www.multitudes.net/detournements-politiques-des-espaces-virtuels/">Multitudes</a></li>\n</ul>\n<hr />\n<p>Dans les ann\xe9es 1970 et 1980, alors que l\u2019Internet \xe9tait encore en gestation, les premi\xe8res communaut\xe9s en r\xe9seau commenc\xe8rent \xe0 appara\xeetre. Celle<span id="anchor"></span>s-ci \xe9taient constitu\xe9es de passionn\xe9s qui, bien souvent, avaient une foi \xe9norme en le potentiel \xe9mancipateur des technologies de la communication. Ils pensaient que les espaces virtuels vastes et chaotiques qui \xe9taient en train de na\xeetre permettraient l\u2019\xe9mergence d\u2019une soci\xe9t\xe9 v\xe9ritablement d\xe9mocratique. Une soci\xe9t\xe9 bas\xe9e sur une libert\xe9 d\u2019expression radicale, dans laquelle chaque personne aurait les moyens technologiques de parler \xe0 chaque autre personne, maximisant ainsi l\u2019intelligence individuelle et collective.</p>\n<p>Puis l\u2019Internet fut mis en place et adopt\xe9 par les masses, chacun eut \xe0 sa disposition les moyens technologiques de s\u2019exprimer, et la quantit\xe9 d\u2019information disponible explosa. Tr\xe8s vite, une nouvelle limite s\u2019imposa : le cerveau humain et la quantit\xe9 limit\xe9e d\u2019information qu\u2019il est capable de traiter. Ceci marqua l\u2019\xe9mergence de \xab\xa0l\u2019\xe9conomie de l\u2019attention\xa0\xbb, une nouvelle condition dans laquelle l\u2019attention humaine est une ressource rare, que des entreprises telles que Facebook et Google commenc\xe8rent \xe0 extraire et \xe0 vendre \xe0 travers des strat\xe9gies publicitaires.</p>\n<p>Bien s\xfbr, le renouveau de la d\xe9mocratie qui \xe9tait proph\xe9tis\xe9 n\u2019eut pas lieu, ou du moins pas comme il avait \xe9t\xe9 annonc\xe9. \xc0 sa place advint un accaparement de ces espaces virtuels par l\u2019industrie qui produisit la marchandisation du comportement humain \xe0 grande \xe9chelle et une polarisation toxique du d\xe9bat public <a href="#fn1" class="footnote-ref" id="fnref1" role="doc-noteref"><sup>1</sup></a>. Les m\xe9caniques implacables de l\u2019\xe9conomie de l\u2019attention r\xe9duisent au silence les voix dissidentes, et neutralisent progressivement la capacit\xe9 d\u2019action des populations.</p>\n<p>Pourtant, alors m\xeame que les entreprises de la tech tentent d\u2019\xe9touffer l\u2019expression de certaines opinions politiques <a href="#fn2" class="footnote-ref" id="fnref2" role="doc-noteref"><sup>2</sup></a>, celles-ci fourmillent aux marges. Certains utilisateurs parviennent \xe0 pi\xe9ger ou contourner les r\xe8gles des plateformes en employant tous les moyens \xe0 leur disposition, ou se structurent en communaut\xe9s virtuelles suffisamment puissantes pour manipuler les algorithmes des r\xe9seaux sociaux.</p>\n<p>La suite de cet article est une compilation choisie de ces d\xe9tournements. Elle documente les m\xe9thodes cr\xe9atives et inattendues utilis\xe9es par des individus ou des groupes pour tenter de se r\xe9approprier leur capacit\xe9 d\u2019action \xe0 travers l\u2019utilisation des technologies de la communication. Que nous disent ces exemples ? Sont-ils la preuve de la bonne sant\xe9 de l\u2019utopie des r\xe9seaux ? Ou sont-ils, au contraire, un sympt\xf4me de la profonde corruption de ces utopies par des int\xe9r\xeats priv\xe9s ? On verra que les r\xe9ponses \xe0 de telles questions sont loin d\u2019\xeatre univoques.</p>\n<h2 id="spam-et-autres-contenus-incongrus">Spam et autres contenus incongrus</h2>\n<p>D\u2019apr\xe8s le chercheur en nouveaux m\xe9dias Finn Brunton, le spam est \xab\xa0l\u2019utilisation des technologies de l\u2019information dans le but d\u2019exploiter des filons d\u2019attention existants\xa0\xbb. Contrairement \xe0 l\u2019acception commune qui restreint le spam \xe0 des courriels envoy\xe9s \xe0 l\u2019aveugle \xe0 des millions de destinataires, avec des finalit\xe9s de publicit\xe9 ou d\u2019arnaque, une telle d\xe9finition \xe9largit le champ du spam \xe0 tout ce qui s\u2019insinue dans un r\xe9seau de diffusion, pour le d\xe9tourner vers des usages que ce r\xe9seau \xe9tait cens\xe9 exclure. Il correspond donc \xe0 ce qu\u2019Alexander Galloway et Eugene Thacker appelaient un <em>exploit</em> dans leur livre \xe9ponyme de 2007, d\xe9fini par le fait de profiter d\u2019une faille d\u2019un syst\xe8me informatique<a href="#fn3" class="footnote-ref" id="fnref3" role="doc-noteref"><sup>3</sup></a>. Parler de spam, plut\xf4t que d\u2019exploit, a toutefois l\u2019avantage d\u2019\xe9luder la saveur d\u2019h\xe9ro\xefsme v\xe9hicul\xe9e par ce dernier terme et, surtout, de questionner le geste m\xeame (de r\xe9glementation) qui d\xe9cr\xe8te ce qui est acceptable comme l\xe9gitime et ce qui est censur\xe9 comme spam.</p>\n<p>Le spam, ainsi d\xe9fini, s\u2019infiltre dans les espaces virtuels par chacune de leurs fissures. On s\u2019y trouve expos\xe9, par surprise, sur des plateformes o\xf9 la cr\xe9ation de contenu est par ailleurs strictement contr\xf4l\xe9e. Tr\xe8s souvent, ce sont des tentatives d\u2019arnaques, dont certaines peuvent m\xeame para\xeetre amusantes. Mais l\u2019expression de messages politiques peut parfois aussi prendre la forme de spam.</p>\n<p>En cherchant sur Google Maps \xab\xa0BNP, Paris Saint Paul\xa0\xbb et en allant voir la liste des photos, on peut par exemple trouver une image de l\u2019antenne rue de Rivoli de la banque BNP, d\xe9cor\xe9e d\u2019un \xe9norme graffiti BR\xdbLONS LES BANQUES.</p>\n<div style="display:flex;flex-direction:column;align-items:center;padding:1em 0;">\n<p>
2<img src="/articles/2022-12-01-hijacking-virtual-spaces/assets/brulons-les-banques.png" style="width:100%;" /></p>\n</div>\n<p>Google Maps contient des tonnes de contenus qui pourraient \xeatre censur\xe9s/class\xe9s dans la cat\xe9gorie spam. On y trouve, entre autres, des coups de gueule politiques, bien que ceux-ci soient explicitement interdits par le r\xe8glement relatif aux contenus : \xab\xa0Maps n\u2019a pas vocation \xe0 devenir une tribune propageant des attaques personnelles, ou des commentaires politiques ou sociaux. Les contenus qui ne respectent pas cette r\xe8gle seront supprim\xe9s.\xa0\xbb <a href="#fn4" class="footnote-ref" id="fnref4" role="doc-noteref"><sup>4</sup></a> Voici pourtant comment en trouver facilement :</p>\n<ul>\n<li>Chercher une institution politique majeure dans n\u2019importe quel pays (par exemple <a href="https://www.google.com/maps/place/%C3%89lys%C3%A9e+Palace/@48.8697906,2.3142833,17z/data=!3m1!4b1!4m5!3m4!1s0x47e66fce8ca6e347:0x2e38f4467a582f22!8m2!3d48.8697906!4d2.3164773">Le Palais de L\u2019\xc9lys\xe9e</a>)</li>\n<li>Ouvrir la section \u201cavis\u201d</li>\n<li>Trier par \u201cavis les moins favorables\u201d</li>\n</ul>\n<div style="display:flex;flex-direction:column;align-items:center;padding:1em 0;">\n<p>
2<img src="/articles/2022-12-01-hijacking-virtual-spaces/assets/elysee-reviews.png" style="width:100%;" /></p>\n</div>\n<p>Les commentaires pour le palais de l\u2019\xc9lys\xe9e sont un bon exemple de ce qu\u2019on peut trouver pour \xe0 peu pr\xe8s tous les si\xe8ges de pouvoir politique (les graphies originales ont \xe9t\xe9 conserv\xe9es) :</p>\n<ul>\n<li>\xab\xa0Les h\xf4tes de ce g\xeetes sont d\xe9sagr\xe9ables. L\u2019ambiance est terne. Une odeur d\u2019argent suffocante. A fuir\xa0\xbb</li>\n<li>\xab\xa0Je met une \xe9toile \xe0 cause du Macron.. bien que j\u2019adore ce monument mais lui je ne peux plus me le voir\xa0\xbb</li>\n<li>\xab\xa0Splendide architecture. C\u2019est un lieu tr\xe8s franchement magnifique. Dommage que les propri\xe9taires soient aussi ha\xefssables.\xa0\xbb</li>\n</ul>\n<h2 id="manifestations-virtuelles-dans-des-jeux-vid\xe9os">Manifestations virtuelles dans des jeux vid\xe9os</h2>\n<p>L\u2019omnipr\xe9sence du spam montre que toute technologie, si elle a un certain degr\xe9 d\u2019ouverture, sera forc\xe9ment utilis\xe9e pour un autre but que celui pour lequel elle a \xe9t\xe9 con\xe7ue. Il y a, par exemple, de nombreux cas de d\xe9tournements de jeux vid\xe9o pour y diffuser un message politique.</p>\n<p><em>dead-in-iraq</em> <a href="#fn5" class="footnote-ref" id="fnref5" role="doc-noteref"><sup>5</sup></a> est une performance live r\xe9alis\xe9e par l\u2019artiste Joseph DeLappe en 2006, qui constitue un exemple pr\xe9coce de spam politique dans un jeu vid\xe9o en ligne. Cette performance se d\xe9roule dans <em>America\u2019s Army</em>, le \xab\xa0jeu vid\xe9o officiel de l\u2019arm\xe9e des \xc9tats-Unis\xa0\xbb, qui est en fait une plateforme pour recruter de nouveaux soldats. DeLappe se connecte au jeu et entame une longue \xe9num\xe9ration des noms des soldats am\xe9ricains morts durant la guerre en Irak. Pour ce faire, il utilise le clavardage du jeu, inondant ainsi la conversation et exasp\xe9rant par la m\xeame occasion les autres joueurs.</p>\n<p>Le message de DeLappe fonctionne comme \xab\xa0un m\xe9morial en ligne au personnel militaire qui a \xe9t\xe9 tu\xe9\xa0\xbb, ainsi qu\u2019une \xab\xa0mise en guarde\xa0\xbb aux potentielles nouvelles recrues.</p>\n<iframe width="100%" height="500" src="https://www.youtube.com/embed/VTnuUMM7frk" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>\n</iframe>\n<p>Dans certains cas, la platefome de jeu n\u2019est pas utilis\xe9e directement pour spammer, mais plut\xf4t comme lieu de rassemblement pour une manifestation virtuelle, qui sera film\xe9e, puis publi\xe9e sur d\u2019autres m\xe9dias (en particulier sur les r\xe9seaux sociaux). Ce type d\u2019\xe9v\xe8nements rencontra un certain succ\xe8s au d\xe9but de la pand\xe9mie de Covid, quand de nombreux activistes furent forc\xe9s d\u2019inventer de nouveaux modes d\u2019action compatibles avec le confinement.Durant les mobilisations du mouvement Black Lives Matter (BLM) en 2020, des rassemblements virtuels furent par exemple organis\xe9s dans plusieurs jeux vid\xe9o, tels que les <em>Sims</em> ou <em>Animal Crossing</em>. Ces jeux offrent tous deux des outils de cr\xe9ation qui permirent la confection d\u2019accessoires virtuels (v\xeatements, banderoles) sur le th\xe8me de BLM <a href="#fn6" class="footnote-ref" id="fnref6" role="doc-noteref"><sup>6</sup></a>. Des activistes \xe9quip\xe8rent alors leurs avatars avec ces accessoires, et se rassembl\xe8rent dans une partie en ligne ou locale pour y d\xe9filer et y scander des slogans. Des captures d\u2019\xe9cran furent ensuite prises et partag\xe9es sur les r\xe9seaux sociaux pour sensibiliser le public ou pour lever des fonds pour le mouvement BLM.</p>\n<blockquote class="twitter-tweet">\n<p lang="en" dir="ltr">\ntonight\u2019s vigil in south newcrest <a href="https://twitter.com/hashtag/BLMSimsRally?src=hash&amp;ref_src=twsrc%5Etfw">#BLMSimsRally</a> <a href="https://t.co/iQKhQnkrjS">pic.twitter.com/iQKhQnkrjS</a>\n</p>\n\u2014 \ud835\udd8d\ud835\udd9a\ud835\udd8a \ud835\udd98\ud835\udd99\ud835\udd9a\ud835\udd89\ud835\udd8e\ud835\udd94\ud835\udd98 (<span class="citation" data-cites="HUESTUDlOS">@HUESTUDlOS</span>) <a href="https://twitter.com/HUESTUDlOS/status/1269819139364962307?ref_src=twsrc%5Etfw">June 8, 2020</a>\n</blockquote>\n<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"><\/script>\n<blockquote class="twitter-tweet">\n<p lang="en" dir="ltr">\nThank you for the overwhelming support towards our animal crossing <a href="https://twitter.com/hashtag/BlackLivesMatter?src=hash&amp;ref_src=twsrc%5Etfw">#BlackLivesMatter</a> march and fundraiser. Big \ud83d\udda4\ud83d\udda4\ud83d\udda4 to ALL who turned out so passionately and especially <a href="https://twitter.com/pingguino?ref_src=twsrc%5Etfw"><span class="citation" data-cites="pingguino">@pingguino</span></a> and <a href="https://twitter.com/mpinner?ref_src=twsrc%5Etfw"><span class="citation" data-cites="mpinner">@mpinner</span></a> for creative support. <a href="https://twitter.com/hashtag/acnh?src=hash&amp;ref_src=twsrc%5Etfw">#acnh</a> <a href="https://t.co/U0IvnZb6ZP">pic.twitter.com/U0IvnZb6ZP</a>\n</p>\n\u2014 Adelle @ happy juneteenth! (<span class="citation" data-cites="Adellelin">@Adellelin</span>) <a href="https://twitter.com/Adellelin/status/1274886969927983108?ref_src=twsrc%5Etfw">June 22, 2020</a>\n</blockquote>\n<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"><\/script>\n<h2 id="contourner-la-censure">Contourner la censure</h2>\n<p>De nombreuses plateformes virtuelles n\u2019\xe9tant pas con\xe7ues pour \xeatre des lieux de discussion, on ne s\u2019attend pas \xe0 y trouver de contenu politique. Ainsi, ces plateformes \xe9chappent parfois au contr\xf4le d\u2019\xc9tats autoritaires, qui appliquent par ailleurs une politique de censure stricte au moindre discours dissident.</p>\n<p>Au d\xe9but de l\u2019ann\xe9e 2019, le gouvernement de Hong Kong introduisit une proposition de loi facilitant les arrestations d\u2019opposants politiques par le gouvernement chinois <a href="#fn7" class="footnote-ref" id="fnref7" role="doc-noteref"><sup>7</sup></a>. Cet \xe9v\xe8nement marqua le d\xe9but de deux ann\xe9es de lutte pour la d\xe9fense de la d\xe9mocratie, durant lesquelles des millions de personnes manifest\xe8rent dans les rues de Hong Kong. Il marqua en parall\xe8le le d\xe9but d\u2019une forte r\xe9pression du gouvernement hongkongais contre son peuple. Les manifestants durent alors innover afin de rester mobilis\xe9s tout en \xe9chappant \xe0 la surveillance polici\xe8re. Des articles rapportent par exemple l\u2019utilisation de l\u2019application de rencontre Tinder ou d\u2019Apple AirDrop pour partager des informations sur les prochains \xe9v\xe8nements et manifestations <a href="#fn8" class="footnote-ref" id="fnref8" role="doc-noteref"><sup>8</sup></a>.</p>\n<blockquote class="twitter-tweet">\n<p lang="en" dir="ltr">\nSo it\u2019s come to this\u2014I\u2019m getting protest info on Tinder <a href="https://t.co/bMfRYCJv1T">pic.twitter.com/bMfRYCJv1T</a>\n</p>\n\u2014 Gavin Huang \u9ec4\u85f9\u79a7 (<span class="citation" data-cites="GavinHuang">@GavinHuang</span>) <a href="https://twitter.com/GavinHuang/status/1156988179678785536?ref_src=twsrc%5Etfw">August 1, 2019</a>\n</blockquote>\n<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"><\/script>\n<blockquote class="twitter-tweet">\n<p lang="en" dir="ltr">\nFinally got airdropped stuff on the train. Posters calling for a general strike next Monday <a href="https://twitter.com/hashtag/FreedomHK?src=hash&amp;ref_src=twsrc%5Etfw">#FreedomHK</a> <a href="https://t.co/UPTjSLITUY">pic.twitter.com/UPTjSLITUY</a>\n</p>\n\u2014 Zoe Low (<span class="citation" data-cites="ziqinglow">@ziqinglow</span>) <a href="https://twitter.com/ziqinglow/status/1157293482383253504?ref_src=twsrc%5Etfw">August 2, 2019</a>\n</blockquote>\n<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"><\/script>\n<p>En 2020, quand la pand\xe9mie de Covid mit un frein aux mobilisations, les activistes hongkongais investirent alors le jeu <em>Animal Crossing</em> \u2013 comme l\u2019avaient fait les activistes BLM. Le jeu vid\xe9o leur assura un \xab\xa0safe space\xa0\xbb virtuel, o\xf9 ils purent se rassembler tout en restant confin\xe9s <a href="#fn9" class="footnote-ref" id="fnref9" role="doc-noteref"><sup>9</sup></a>.</p>\n<blockquote class="twitter-tweet">\n<p lang="en" dir="ltr">\nAnimal Crossing is Fast Becoming a New Way for Hong Kong Protesters to Fight for Democracy! The <a href="https://twitter.com/hashtag/Covid_19?src=hash&amp;ref_src=twsrc%5Etfw">#Covid_19</a> pandemic has halted public demonstrations, so protesters are taking their cause to <a href="https://twitter.com/hashtag/AnimalCrossing?src=hash&amp;ref_src=twsrc%5Etfw">#AnimalCrossing</a>.<a href="https://t.co/A599kjlYsV">https://t.co/A599kjlYsV</a> <br><br>(This is my island!) <a href="https://t.co/vjBhzw1nUa">pic.twitter.com/vjBhzw1nUa</a>\n</p>\n\u2014 Joshua Wong \u9ec3\u4e4b\u92d2 \ud83d\ude37 (<span class="citation" data-cites="joshuawongcf">@joshuawongcf</span>) <a href="https://twitter.com/joshuawongcf/status/1245639425331056640?ref_src=twsrc%5Etfw">April 2, 2020</a>\n</blockquote>\n<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"><\/script>\n<p>En 2020, l\u2019organisation de d\xe9fense de la libert\xe9 de la presse Reporters Sans Fronti\xe8res (RSF) d\xe9montra un autre exemple d\u2019utilisation d\u2019un jeu vid\xe9o pour contourner la censure d\u2019\xe9tat. Un serveur du jeu vid\xe9o Minecraft fut mis en place pour permettre \xe0 des joueurs n\u2019importe o\xf9 dans le monde de se connecter. Dans le monde virtuel h\xe9berg\xe9 sur ce serveur, les joueurs pouvaient visiter une biblioth\xe8que monumentale au style n\xe9o-classique, assemblage m\xe9ticuleux de 12,5 millions de petits blocs. Celle-ci h\xe9bergait plus de 200 livres et articles censur\xe9s dans leurs pays d\u2019origine, mais qui \xe9taient offerts ici en consultation libre <a href="#fn10" class="footnote-ref" id="fnref10" role="doc-noteref"><sup>10</sup></a>.</p>\n<p>Bien que le projet ait plut\xf4t eu une port\xe9e symbolique (en plus d\u2019\xeatre un beau coup de com), il permit \xe0 RSF de r\xe9introduire clandestinement ces ouvrages dans les pays desquels ils avaient \xe9t\xe9 bannis.</p>\n<iframe width="100%" height="500" src="https://www.youtube.com/embed/EBI7-pL52GY" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>\n</iframe>\n<h2 id="fake-news-et-canulars">Fake news et canulars</h2>\n<p>Le sujet des <em>fake news</em> a \xe9t\xe9 largement discut\xe9 ces derni\xe8res ann\xe9es, posant notamment la question de leur impact sur le d\xe9bat public et sur la d\xe9mocratie. Des recherches ont par exemple montr\xe9 que les <em>fake news</em> se r\xe9pandent plus vite et vont plus loin que les \xab\xa0vraies\xa0\xbb news sur les r\xe9seaux sociaux. La condamnation universelle des fake news occulte toutefois des pratiques que l\u2019\xe9poque pr\xe9c\xe9dente attribuait aux activistes des media tactiques<a href="#fn11" class="footnote-ref" id="fnref11" role="doc-noteref"><sup>11</sup></a>.</p>\n<p>Lorsque vraisemblance et scandale sont correctement dos\xe9s, canulars et <em>fake news</em> partagent une m\xeame facult\xe9 \xe0 capter l\u2019attention du public. Farceurs et activistes utilisent d\u2019ailleurs depuis longtemps le canular comme forme d\u2019action pour visibiliser 
2certaines causes. Le propre d\u2019un canular est cependant d\u2019\xeatre r\xe9v\xe9l\xe9 une fois ses objectifs remplis, alors que la <em>fake news</em> reste comme une pollution permanente du paysage des r\xe9seaux sociaux.</p>\n<p>S\u2019agissant de canulars et de farces en ligne, il est difficile de ne pas mentionner les Yes Men, un projet lanc\xe9 dans la fin des ann\xe9es 1990 par deux artistes, et qui ont depuis quasiment industrialis\xe9 la production de faux sites web<a href="#fn12" class="footnote-ref" id="fnref12" role="doc-noteref"><sup>12</sup></a>. En 1999, les Yes Men r\xe9alis\xe8rent leur premier canular en mettant en ligne un faux site web de l\u2019Organisation Mondiale du Commerce (OMC). Cette page copiait l\u2019identit\xe9 visuelle de l\u2019OMC tout en \xe9tant remplie de titres ironiques et d\u2019articles anti-capitalistes. Contre toute attente, de nombreuses personnes crurent avoir affaire au vrai site de l\u2019OMC, et plusieurs conf\xe9rences invit\xe8rent par inadvertance les Yes Men \xe0 donner une pr\xe9sentation en qualit\xe9 de repr\xe9sentants officiels de l\u2019organisation.</p>\n<p>Les Yes Men consid\xe8rent que les (faux) sites qu\u2019ils produisent pr\xe9sentent leurs cibles \xab\xa0avec plus de transparence qu\u2019elles ne se pr\xe9senteront jamais elles-m\xeames\xa0\xbb, ce qui rend \xab\xa0ces sites v\xe9ridiques, et non fake\xa0\xbb. Ces sites visent en g\xe9n\xe9ral \xe0 d\xe9noncer une organisation et ses crimes, souvent dans le cadre d\u2019une campagne plus large.</p>\n<div style="display:flex;flex-direction:column;align-items:center;padding:1em 0;">\n<p>
2<img src="/articles/2022-12-01-hijacking-virtual-spaces/assets/yesmen.png" style="width:100%;" /></p>\n</div>\n<iframe width="100%" height="500" src="https://www.youtube.com/embed/40q4cPNXfF0" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>\n</iframe>\n<p><strong><em>Pooper</em></strong>. Dans d\u2019autres cas, un canular peut aussi \xeatre une forme de commentaire social, une \u0153uvre satyrique qui r\xe9v\xe8le certaines des absurdit\xe9s de notre soci\xe9t\xe9. En 2016, deux start-uppers annonc\xe8rent le lancement d\u2019une nouvelle application nomm\xe9e Pooper (litt\xe9ralement \xab\xa0crotteur\xa0\xbb en fran\xe7ais), qui \xe9tait pr\xe9sent\xe9e comme le \xab\xa0Uber pour crottes de chien\xa0\xbb <a href="#fn13" class="footnote-ref" id="fnref13" role="doc-noteref"><sup>13</sup></a>. En gros, votre chien fait une crotte, vous lancez l\u2019appli, prenez une photo g\xe9olocalis\xe9e de la crotte, et un sous-traitant ind\xe9pendant appel\xe9 un <em>scooper</em> arrivera alors pour tout nettoyer \u2013 conform\xe9ment \xe0 l\u2019expression \xe9tats-unienne <em>pooper-scooper</em> (\xab\xa0ramasse-crotte\xa0\xbb).</p>\n<p>La nouvelle fut rapidement relay\xe9e par la presse aux \xc9tats-Unis et \xe0 l\u2019international, alors m\xeame que certains journalistes suspectaient d\xe9j\xe0 un canular. En d\xe9pit des soup\xe7ons, de nombreuses personnes manifest\xe8rent leur int\xe9r\xeat. L\u2019application re\xe7ut des centaines d\u2019inscriptions et des investisseurs contact\xe8rent les entrepreneurs pour leur proposer de financer leur projet.</p>\n<p>Quelques jours plus tard, les deux farceurs r\xe9v\xe9l\xe8rent le canular. Ils annonc\xe8rent alors que l\u2019application n\u2019\xe9tait autre qu\u2019un \xab\xa0projet artistique satirisant notre monde obs\xe9d\xe9 par les applis\xa0\xbb, ainsi qu\u2019un commentaire sur l\u2019exploitation et l\u2019inanit\xe9 de nombreuses entreprises qui se positionnent comme actrices de la <em>sharing economy</em> (\xab\xa0l\u2019\xe9conomie de partage\xa0\xbb) <a href="#fn14" class="footnote-ref" id="fnref14" role="doc-noteref"><sup>14</sup></a>.</p>\n<div style="display:flex;flex-direction:column;align-items:center;padding:1em 0;">\n<p>
2<img src="/articles/2022-12-01-hijacking-virtual-spaces/assets/pooper2.png" style="width:100%;" /></p>\n</div>\n<iframe width="100%" height="500" src="https://www.youtube.com/embed/eC14Ohz5h4Q" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>\n</iframe>\n<p><strong><em>The Shed At Dulwich</em></strong>. Avant de devenir journaliste pour VICE, Oobah Butler \xe9tait pay\xe9 pour \xe9crire de faux avis en ligne pour des restaurants. En 2017, il utilisa les connaissances qu\u2019il avait acquises dans son ancien travail pour tenter une petite exp\xe9rience. Il cr\xe9a une page sur le site de conseils touristiques Trip Advisor (tr\xe8s populaire \xe0 l\u2019\xe9poque) pour un restaurant enti\xe8rement fictif qu\u2019il nomma <em>The Shed At Dulwich</em>. Son objectif \xe9tait de le faire grimper \xe0 la premi\xe8re place des restaurants pour Londres <a href="#fn15" class="footnote-ref" id="fnref15" role="doc-noteref"><sup>15</sup></a>.</p>\n<p>Apr\xe8s six mois durant lesquels il recruta ses amis pour \xe9crire et publier de faux avis \xe9logieux, tout en \xe9vitant les hordes de clients qui essayaient d\xe9sesp\xe9r\xe9ment de r\xe9server une table, le restaurant parvint \xe0 atteindre la t\xeate du classement sur la plateforme.</p>\n<p>Son exp\xe9rience, une critique de l\u2019\xe9conomie de la r\xe9putation en ligne (\xe9toiles, likes, follows, \u2026), prouva que Trip Advisor \xe9tait, selon les dires d\u2019Oobah, une \xab\xa0fausse r\xe9alit\xe9\xa0\xbb. Dans ce cas, le faux g\xe9n\xe8re des effets de v\xe9rit\xe9 en r\xe9v\xe9lant le faux. En l\u2019occurrence, le canular illustre les effets pervers de la comp\xe9tition pour l\u2019attention et le classement, qui am\xe8ne de nombreuses personnes et entreprises \xe0 falsifier leurs profils virtuels, transformant ainsi l\u2019Internet en un endroit o\xf9 tout menace d\u2019\xeatre fictif <a href="#fn16" class="footnote-ref" id="fnref16" role="doc-noteref"><sup>16</sup></a>.</p>\n<iframe width="100%" height="500" src="https://www.youtube.com/embed/bqPARIKHbN8" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>\n</iframe>\n<h2 id="la-force-du-nombre">La force du nombre</h2>\n<p>Gr\xe2ce au web participatif, les vingt derni\xe8res ann\xe9es ont vu l\u2019\xe9mergence de communaut\xe9s d\xe9centralis\xe9es, dont certaines comptent des millions de membres r\xe9partis sur l\u2019ensemble de la plan\xe8te. Elles sont en g\xe9n\xe9ral structur\xe9es autour d\u2019un repaire virtuel et/ou d\u2019int\xe9r\xeats communs, et d\xe9veloppent une culture complexe, constitu\xe9e de jargons uniques, de <em>private jokes</em> et de m\xe8mes.</p>\n<p>La force de ces communaut\xe9s r\xe9side dans leur grande taille ainsi que dans leur horizontalit\xe9 (absence de leaders), encourageant le foisonnement des id\xe9es, et permettant alors l\u2019\xe9mergence d\u2019une forme d\u2019intelligence collective. En revanche, ces m\xeames caract\xe9ristiques les rendent aussi chaotiques, et emp\xeachent la formation d\u2019une strat\xe9gie sur le long terme, ou m\xeame d\u2019une ligne politique claire.</p>\n<p>Pour leurs membres, l\u2019appartenance \xe0 ces communaut\xe9s peut devenir une part importante de leur identit\xe9 personnelle, menant parfois jusqu\u2019\xe0 une forme de narcissisme collectif. \xc0 travers la force du nombre, ces gens se r\xe9approprient leur capacit\xe9 d\u2019action et affirment leur existence dans un paysage m\xe9diatique et num\xe9rique satur\xe9. Passons en revue quelques exemples plus ou moins c\xe9l\xe8bres de telles pratiques.</p>\n<p><strong><em>Anonymous</em></strong> est probablement la plus c\xe9l\xe8bre de ces communaut\xe9s en ligne<a href="#fn17" class="footnote-ref" id="fnref17" role="doc-noteref"><sup>17</sup></a>. C\u2019est un mouvement d\u2019hacktivistes, d\xe9centralis\xe9 et horizontal, connu principalement pour ses cyberattaques. C\u2019est aussi un mouvement dont les membres ont des sensibilit\xe9s tr\xe8s vari\xe9es, mais qui partagent n\xe9anmoins un go\xfbt certain pour les joies du <em>trolling</em>, ainsi qu\u2019une position commune envers la d\xe9fense d\u2019une vision radicale de la libert\xe9 d\u2019expression.</p>\n<p>Anonymous est n\xe9 des <em>private jokes</em> de l\u2019imageboard (un type de forum en ligne) 4chan au d\xe9but des ann\xe9es 2000. Ce site web permettait aux utilisateurs de poster de mani\xe8re anonyme, ce qui les faisait appara\xeetre sous le pseudo Anonymous. Le nom du mouvement fut alors adopt\xe9 comme une blague : et si tous ces utilisateurs Anynomous, voire le site 4chan dans son enti\xe8ret\xe9, n\u2019\xe9taient en r\xe9alit\xe9 qu\u2019une seule et m\xeame personne ?</p>\n<p>Il est difficile de pr\xe9senter Anonymous de mani\xe8re simple et concise, tant c\u2019est une communaut\xe9 complexe, souvent incoh\xe9rente. Bien que de nombreux posts sur 4chan soient par exemple terriblement racistes et/ou mysogynes, les activistes d\u2019Anonymous se sont souvent mobilis\xe9s pour combattre l\u2019homophobie, le racisme et diverses autres formes d\u2019oppression.</p>\n<p>Parmi ses nombreuses interventions, Anonymous lan\xe7a en 2010 <em>Operation Payback</em>, une s\xe9rie de cyberattaques ciblant des organisations financi\xe8res et organisations de d\xe9fense du copyright. Anonymous r\xe9ussit alors \xe0 faire crasher plusieurs gros sites web, dont Visa, Mastercard et PayPal, qui r\xe9clam\xe8rent plus tard 3,5 millions de livres sterling en dommages et int\xe9r\xeats <a href="#fn18" class="footnote-ref" id="fnref18" role="doc-noteref"><sup>18</sup></a>.</p>\n<p><strong><em>K-pop Stans</em></strong>. Les fans de musique pop cor\xe9enne (appel\xe9s aussi les <em>K-pop Stans</em>) constituent une autre communaut\xe9 en ligne qui, de par sa pluralit\xe9, son amour des m\xe8mes, et ses probl\xe8mes de racisme, a souvent \xe9t\xe9 compar\xe9e \xe0 Anonymous <a href="#fn19" class="footnote-ref" id="fnref19" role="doc-noteref"><sup>19</sup></a>. Les Stans sont tr\xe8s actifs sur des plateformes comme TikTok et Twitter, o\xf9 ils partagent sans rel\xe2che du contenu sur leurs groupes favoris. Gr\xe2ce \xe0 leur nombre et \xe0 leur grande coordination, les K-pop Stans ont collectivement appris \xe0 manipuler les algorithmes des r\xe9seaux sociaux. Ils utilisent d\u2019ordinaire cette c
2omp\xe9tence pour promouvoir les artistes qu\u2019ils admirent et les faire appara\xeetre en haut des feeds (fils d\u2019actualit\xe9 des r\xe9seaux sociaux).</p>\n<p>En 2020, au plus fort de la mobilisation du mouvement des Black Lives Matter (BLM) aux \xc9tats-Unis, les K-pop Stans firent une apparition soudaine dans la presse occidentale. Tout commen\xe7a par leurs efforts pour invisibiliser les tweets et discussions racistes en inondant les hashtags anti-BLM sur Twitter. Puis, les Stans continu\xe8rent en spammant l\u2019application de la police de Dallas avec des fancams (des vid\xe9os en gros plan de leurs idoles), provoquant ainsi son crash et sa mise hors service temporaire. Enfin, ils parvinrent \xe0 saboter le premier meeting de campagne de Trump post-covid <a href="#fn20" class="footnote-ref" id="fnref20" role="doc-noteref"><sup>20</sup></a>. Les Stans avaient organis\xe9 une action de boycott en r\xe9servant discr\xe8tement autant de tickets gratuits qu\u2019ils le pouvaient, puis en ne venant tout simplement pas le jour de l\u2019\xe9v\xe8nement. Ainsi, environ deux tiers des si\xe8ges rest\xe8rent vides dans la salle de 19 000 places que l\u2019\xe9quipe de Trump avait r\xe9serv\xe9e \u2013 entra\xeenant la col\xe8re de Trump contre TikTok.</p>\n<blockquote class="twitter-tweet">\n<p lang="en" dir="ltr">\nhope y\u2019all burn in hell :)) <a href="https://twitter.com/hashtag/BlueLivesMatter?src=hash&amp;ref_src=twsrc%5Etfw">#BlueLivesMatter</a> <a href="https://twitter.com/hashtag/WhiteLivesMatter?src=hash&amp;ref_src=twsrc%5Etfw">#WhiteLivesMatter</a> <a href="https://t.co/J92Gy5P2gO">pic.twitter.com/J92Gy5P2gO</a>\n</p>\n\u2014 jun \u2615\ufe0f SUNOO MONTH (<span class="citation" data-cites="Iuv4enha">@Iuv4enha</span>) <a href="https://twitter.com/Iuv4enha/status/1268329931236347905?ref_src=twsrc%5Etfw">June 3, 2020</a>\n</blockquote>\n<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"><\/script>\n<blockquote class="twitter-tweet">\n<p lang="en" dir="ltr">\nInstead of being a racist asshole you should Stan BLACKPINK <a href="https://twitter.com/hashtag/WhiteLivesMatter?src=hash&amp;ref_src=twsrc%5Etfw">#WhiteLivesMatter</a> <a href="https://t.co/JE3Bz60RO9">pic.twitter.com/JE3Bz60RO9</a>\n</p>\n\u2014 Samantha \u2077 (<span class="citation" data-cites="dreamy_pjm">@dreamy_pjm</span>) <a href="https://twitter.com/dreamy_pjm/status/1268330081577054208?ref_src=twsrc%5Etfw">June 3, 2020</a>\n</blockquote>\n<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"><\/script>\n<blockquote class="twitter-tweet">\n<p lang="en" dir="ltr">\nDue to technical difficulties iWatch Dallas app will be down temporarily. <a href="https://t.co/zksA1hkVhV">pic.twitter.com/zksA1hkVhV</a>\n</p>\n\u2014 Dallas Police Dept (<span class="citation" data-cites="DallasPD">@DallasPD</span>) <a href="https://twitter.com/DallasPD/status/1267236088755695618?ref_src=twsrc%5Etfw">May 31, 2020</a>\n</blockquote>\n<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"><\/script>\n<p><strong><em>r/wallstreetbets</em></strong>. En Janvier 2021, un subreddit nomm\xe9 <a href="https://new.reddit.com/r/wallstreetbets/top/?t=all">wallstreetbets</a> (WSB) fit soudain la une de l\u2019info lorsque ses membres parvinrent \xe0 provoquer des pertes de plusieurs milliards de dollars \xe0 des fonds sp\xe9culatifs de Wall Street. WSB est une communaut\xe9 qui existe depuis 2012, comprend aujourd\u2019hui plus de 10 millions de membres et se pr\xe9sente \xab\xa0comme si 4chan avait trouv\xe9 un terminal Bloomberg\xa0\xbb. Ses membres aiment \xe0 se qualifier de \xab\xa0d\xe9g\xe9n\xe9r\xe9s\xa0\xbb, \xab\xa0autistes\xa0\xbb, \xab\xa0gorilles\xa0\xbb ou de \xab\xa0d\xe9biles\xa0\xbb <a href="#fn21" class="footnote-ref" id="fnref21" role="doc-noteref"><sup>21</sup></a>, car leur principale activit\xe9 (outre le partage de m\xe8mes) consiste \xe0 investir en bourse, en d\xe9pit de tout bon sens, sur des entreprises en lesquelles personne ne croit. Ils choisissent une cible, publient des m\xe8mes et des blagues \xe0 son sujet, encourageant ainsi la communaut\xe9 \xe0 suivre le mouvement et \xe0 acheter des actions en grande quantit\xe9 afin de gonfler les prix de mani\xe8re artificielle. La valeur de l\u2019entreprise partant alors \xe0 la hausse, les fonds sp\xe9culatifs qui avaient pari\xe9 sur leur chute peuvent soudain perdre de grandes quantit\xe9s d\u2019argent <a href="#fn22" class="footnote-ref" id="fnref22" role="doc-noteref"><sup>22</sup></a>.</p>\n<p>WSB est n\xe9 de la culture du trolling d\u2019Anonymous, ainsi que d\u2019une envie des petits porteurs d\u2019actions de se venger de la finance. Bien s\xfbr, comme dans d\u2019autres grandes communaut\xe9s, les membres ont des profils et des motivations tr\xe8s vari\xe9es. Ici encore, on peut lire de nombreuses blagues misogynes. Alors que certains sont en qu\xeate d\u2019une forme de justice contre Wall Street, d\u2019autres ne cherchent clairement que des gains financiers.</p>\n<iframe id="reddit-embed" src="https://www.redditmedia.com/r/wallstreetbets/comments/l6omry/an_open_letter_to_melvin_capital_cnbc_boomers_and/?ref_source=embed&amp;ref=share&amp;embed=true" sandbox="allow-scripts allow-same-origin allow-popups" style="border: none;display:block;margin:auto;" scrolling="no" width="100%" height="316">\n</iframe>\n<iframe id="reddit-embed" src="https://www.redditmedia.com/r/wallstreetbets/comments/l7feld/its_power_to_the_traders_now/?ref_source=embed&amp;ref=share&amp;embed=true" sandbox="allow-scripts allow-same-origin allow-popups" style="border: none;display:block;margin:auto;" scrolling="no" width="100%" height="610">\n</iframe>\n<iframe id="reddit-embed" src="https://www.redditmedia.com/r/wallstreetbets/comments/l79jko/im_so_proud_of_you_all/?ref_source=embed&amp;ref=share&amp;embed=true" sandbox="allow-scripts allow-same-origin allow-popups" style="border: none;display:block;margin:auto;" scrolling="no" width="100%" height="685">\n</iframe>\n<p>Bien que WSB puisse sembler subversif, le monde de la finance trouva rapidement le moyen de capitaliser sur cette c
2ommunaut\xe9. Alors qu\u2019un fond d\u2019investissement de Wall Street examinait la possibilit\xe9 d\u2019embaucher des utilisateurs de reddit <a href="#fn23" class="footnote-ref" id="fnref23" role="doc-noteref"><sup>23</sup></a>, le site officiel du NASDAQ commen\xe7a \xe0 publier des conseils d\u2019investissement <a href="#fn24" class="footnote-ref" id="fnref24" role="doc-noteref"><sup>24</sup></a> pour ce qu\u2019ils se mirent \xe0 appeler des <em>meme stocks</em> (ou \xab\xa0actions m\xe8mes\xa0\xbb).</p>\n<h2 id="tactiques-et-strat\xe9gies">Tactiques et strat\xe9gies</h2>\n<p>Lorsqu\u2019il \xe9crivait \xab\xa0le message, c\u2019est le m\xe9dium\xa0\xbb, Marshall McLuhan signalait que le dispositif utilis\xe9 pour d\xe9livrer un message pourrait avoir plus de sens que le contenu de ce message, appelant ainsi \xe0 analyser le contexte culturel qui les a tous deux produits. De quel sens sont aujourd\u2019hui porteurs la ruse, le d\xe9tournement, le spam, les <em>fake news</em>, comme dispositifs pour diffuser des messages politiques ?</p>\n<p>En observant les ph\xe9nom\xe8nes sociaux li\xe9s aux technologies num\xe9riques, on ressent souvent une forme d\u2019ambivalence \xe0 leur \xe9gard. Une fascination, d\u2019une part, au regard des possibles, de la cr\xe9ativit\xe9 individuelle et sociale qui s\u2019\xe9panouit dans ce domaine. Du pessimisme, d\u2019autre part, face au constat que cette cr\xe9ativit\xe9 finit invariablement par nourrir les m\xe9canismes n\xe9fastes du capitalisme tardif.</p>\n<p>On peut ressentir cette m\xeame ambivalence face \xe0 l\u2019analyse des d\xe9tournements list\xe9s dans cet article. D\u2019un c\xf4t\xe9, on peut \xeatre admiratif et captiv\xe9 par l\u2019ing\xe9niosit\xe9 mise en \u0153uvre pour tenter de se r\xe9approprier une capacit\xe9 d\u2019agir. D\u2019un autre c\xf4t\xe9, cette ing\xe9niosit\xe9 semble souvent relever d\u2019un r\xe9flexe de survie, face \xe0 un environnement violemment comp\xe9titif et qui tend \xe0 \xe9craser les individus.</p>\n<p>Il n\u2019y a pas forc\xe9ment \xe0 choisir entre un soutien ou une condamnation envers ce type de pratiques. Le plus important est peut-\xeatre de prendre acte de leur ambivalence constitutive, pour rep\xe9rer \xe0 la fois ce qu\u2019elles rendent possible, ce qu\u2019elles cautionnent et ce \xe0 quoi elles font obstacle. Une trentaine d\u2019ann\xe9es apr\xe8s l\u2019\xe9mergence des th\xe9ories et des actions des media tactiques, leur tradition reste vivante \u2013 de m\xeame que le besoin d\u2019int\xe9grer leurs interventions ponctuelles au sein de strat\xe9gies collectives mieux organis\xe9es<a href="#fn25" class="footnote-ref" id="fnref25" role="doc-noteref"><sup>25</sup></a>.</p>\n<section class="footnotes" role="doc-endnotes">\n<hr />\n<ol>\n<li id="fn1" role="doc-endnote"><p>Voir <em>l\u2019\xc2ge du Capitalisme de Surveillance</em>, Shoshana Zuboff, 2019.<a href="#fnref1" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn2" role="doc-endnote"><p>Voir <em>Reducing Political Content in News Feed</em> <a href="https://about.fb.com/news/2021/02/reducing-political-content-in-news-feed/">sur le blog officiel de Meta</a>. Dans ce post de blog de 2021, Facebook annonce r\xe9duire le contenu politique sur sa plateforme.<a href="#fnref2" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn3" role="doc-endnote"><p>Voir Alicia Amilec, \xab\xa0De l\'exploitation \xe0 l\'exploit\xa0\xbb, <em>Multitudes</em>, n\xb0\xa054, 2013, p.\xa0214-220.<a href="#fnref3" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn4" role="doc-endnote"><p>Voir les <a href="https://support.google.com/contributionpolicy/answer/7400114?hl=en&amp;ref_topic=7422769#zippy=%2Coff-topic">r\xe8gles d\u2019utilisation de Google Maps</a>.<a href="#fnref4" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn5" role="doc-endnote"><p>Voir http://www.delappe.net/project/dead-in-iraq/<a href="#fnref5" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn6" role="doc-endnote"><p>Pour des exemples d\u2019accessoires voir les sites https://www.ebonix.com/ et https://nooksisland.com/designs?search=black+lives+matter<a href="#fnref6" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn7" role="doc-endnote"><p>
2Voir https://www.nytimes.com/2019/06/10/world/asia/hong-kong-extradition-bill.html<a href="#fnref7" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn8" role="doc-endnote"><p>Voir https://www.scmp.com/abacus/culture/article/3021560/how-hong-kong-protesters-are-using-tinder-and-pokemon-go<a href="#fnref8" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn9" role="doc-endnote"><p>Voir https://www.wired.co.uk/article/animal-crossing-hong-kong-protests-coronavirus et https://www.scmp.com/lifestyle/entertainment/article/3079128/how-nintendos-animal-crossing-became-home-hong-kong<a href="#fnref9" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn10" role="doc-endnote"><p>Voir https://uncensoredlibrary.com/en<a href="#fnref10" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn11" role="doc-endnote"><p>Voir Geert Lovink &amp; David Garcia, \xab\xa0ABC des m\xe9dias tactiques\xa0\xbb in Annick Bureau &amp; Nathalie Magnan, <em>Art, r\xe9seaux, media</em>, Paris, ENSBA, 2003, p.\xa072-77.<a href="#fnref11" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn12" role="doc-endnote"><p>Sur les Yes Men et sur les canulars politiques, voir la mineure \xab\xa0Activistes du hoax\xa0\xbb, <em>Multitudes</em>, n\xb0\xa025, 2006, p.\xa0149-198.<a href="#fnref12" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn13" role="doc-endnote"><p>Voir http://pooperapp.com/<a href="#fnref13" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn14" role="doc-endnote"><p>Voir https://www.newsweek.com/how-media-got-fooled-completely-satirical-dog-poop-app-485598<a href="#fnref14" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn15" role="doc-endnote"><p>Voir https://www.vice.com/en/article/434gqw/i-made-my-shed-the-top-rated-restaurant-on-tripadvisor<a href="#fnref15" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn16" role="doc-endnote"><p>Voir https://nymag.com/intelligencer/2018/12/how-much-of-the-internet-is-fake.html<a href="#fnref16" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn17" role="doc-endnote"><p>Voir le livre de r\xe9f\xe9rence de Gabriella Coleman, <em>Anonymous. Hacker, activiste, faussaire, mouchard, lanceur d\u2019alerte</em>, Montr\xe9al, Lux, 2016.<a href="#fnref17" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn18" role="doc-endnote"><p>Voir https://www.bbc.com/news/uk-20449474<a href="#fnref18" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn19" role="doc-endnote"><p>Voir https://www.vox.com/2020/6/22/21295700/k-pop-fan-activism-black-lives-matter-trump-rally-racism-cultural-appropriation-reset-podcast and https://www.technologyreview.com/2020/06/23/1004336/tiktok-teens-kpop-stans-trump-resistance-its-complicated<a href="#fnref19" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn20" role="doc-endnote"><p>Voir https://www.nytimes.com/2020/06/21/style/tiktok-trump-rally-tulsa.html<a href="#fnref20" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn21" role="doc-endnote"><p>Voir https://www.gizmodo.com.au/2021/03/wallstreetsbets-is-sending-gorilla-conservation-to-the-moon/<a href="#fnref21" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn22" role="doc-endnote"><p>Voir https://www.ft.com/content/3f6b47f9-70c7-4839-8bb4-6a62f1bd39e0<a href="#fnref22" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn23" role="doc-endnote"><p>Voir https://www.gizmodo.com.au/2021/02/wall-street-fund-wants-to-hire-r-wallstreetbets-users-to-help-pick-meme-stocks/<a href="#fnref23" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn24" role="doc-endnote"><p>Voir https://www.nasdaq.com/articles/meme-stocks-list%3A-the-top-10-reddit-stocks-seeing-chatter-in-the-june-2021-rally-2021-06<a href="#fnref24" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn25" role="doc-endnote"><p>Voir \xe0 ce propos Geert Lovink &amp; Ned Rossiter, <em>Organization After Social Media</em>, Wivenhoe, Minor Compositions, 2018.<a href="#fnref25" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n</ol>\n</section>\n',"/articles/2022-12-05-art-nous-empeche-de-construire":'<p><em>L\u2019art peut-il \xeatre un outil politique pour surmonter les crises environnementales et sociales que nos soci\xe9t\xe9s traversent ? A-t-il vraiment le pouvoir de cr\xe9er de nouveaux r\xe9cits pour amener une mutation profonde et n\xe9cessaire ? Non. Car dans un monde profond\xe9ment individualiste, l\u2019art est fondamentalement du c\xf4t\xe9 des forces r\xe9actionnaires.</em></p>\n<hr />\n<p>Publi\xe9 sur :</p>\n<ul>\n<li><a href="http://www.revuedeparis.fr/l-art-nous-empeche-de-construire-un-monde-meilleur/">Revue de Paris</a></li>\n<li><a href="https://blogs.mediapart.fr/sebastien-piquemal/blog/051222/l-art-nous-empeche-de-construire-un-monde-meilleur">Une du club m\xe9diapart</a></li>\n<li><a href="https://notrecondition.fr/2023/01/20/lart-nous-empeche-de-construire-un-monde-meilleur/">Notre Condition</a></li>\n</ul>\n<hr />\n<p>Entre injustices sociales et d\xe9sastres environnementaux, notre monde sombre lentement vers les profondeurs de l\u2019anthropoc\xe8ne<a href="#fn1" class="footnote-ref" id="fnref1" role="doc-noteref"><sup>1</sup></a>. Depuis le premier rapport du club de Rome \u201cles limites \xe0 la croissance\u201d publi\xe9 en 1972, scientifiques, \xe9conomistes et activistes ne cessent d\u2019avertir la population occidentale de l\u2019imminence du danger. Mais malgr\xe9 l\u2019angoisse croissante g\xe9n\xe9r\xe9e par ces alertes<a href="#fn2" class="footnote-ref" id="fnref2" role="doc-noteref"><sup>2</sup></a>, c\u2019est le d\xe9ni qui pr\xe9domine. Le paradoxe est criant entre d\u2019une part la conscience de plus en plus aigu\xeb que notre soci\xe9t\xe9 n\u2019est pas ce qu\u2019elle devrait \xeatre, et d\u2019autre part notre manque de volont\xe9 d\'amorcer sa transformation.</p>\n<div style="display:flex;flex-direction:column;align-items:center;padding:1em 0;">\n<img src="/articles/2022-12-05-art-nous-empeche-de-construire/patrick-perkins-ratadolvcos-unsplash.jpg" width="100%" />\n<div style="width:100%">\nSan Francisco, apr\xe8s les incendies de Californie en 2020. \xa9 Photo de Patrick Perkins sur Unsplash\n</div>\n</div>\n<h2 id="lart-comme-moteur-de-transformation-sociale">L\u2019art comme moteur de transformation sociale</h2>\n<p>Selon un lieu commun, l\u2019art serait moteur de changement. \xc0 travers films, images, histoires, musiques et autres artefacts culturels, l\u2019art aurait le pouvoir de cr\xe9er des r\xe9cits qui transporteraient nos aspirations individuelles et collectives. Pourtant, en d\xe9pit d\u2019une production foisonnante, en d\xe9pit de nombreuses propositions politiques et pr\xe9tendument radicales, la paralysie de notre soci\xe9t\xe9 persiste.</p>\n<p>C\u2019est que l\u2019art, en r\xe9alit\xe9, n\u2019est pas moteur de changement. C\u2019est au contraire l\u2019un des multiples ressorts de notre immobilit\xe9.</p>\n<p>Lorsqu\u2019il \xe9crivait \u201cle m\xe9dium est le message\u201d, le th\xe9oricien des m\xe9dias Marshall McLuhan signifiait que le contexte qui produit un message pourrait \xeatre plus riche de sens que le message m\xeame. Dans le cas de l\u2019art, le v\xe9ritable message, celui qui a la plus profonde influence sur nos imaginaires, \xe7a n\u2019est pas <em>les \u0153uvres</em>, c\u2019est l\u2019appareil de production lui-m\xeame. Ce sont les institutions, leurs prix et leurs comp\xe9titions, leur mode de financement et leurs discours. Ce sont les artistes et le concept m\xeame d\u2019art, la mystique et le prestige qui les entourent. Ce sont les valeurs artistiques, qui s\u2019articulent de la mani\xe8re suivante<a href="#fn3" class="footnote-ref" id="fnref3" role="doc-noteref"><sup>3</sup></a> :</p>\n<ul>\n<li><em>L\u2019art serait l\u2019une des expressions privil\xe9gi\xe9es du g\xe9nie humain, et l\u2019artiste un g\xe9nie</em>. Cela signifie d\u2019une part que ce serait un \xeatre hors normes, dou\xe9 d\u2019un talent inn\xe9 qui lui insufflerait sa vocation. D\u2019autre part, et d\u2019apr\xe8s le sens assign\xe9 au mot \u201cg\xe9nie\u201d dans la mythologie antique, l\u2019artiste serait un guide, \u201cune divinit\xe9 influant sur la destin\xe9e d\u2019une collectivit\xe9\u201d<a href="#fn4" class="footnote-ref" id="fnref4" role="doc-noteref"><sup>4</sup></a>.</li>\n<li><em>L\u2019art serait un geste de cr\xe9ation</em>. Ce serait \xe0 la fois l\u2019innovation pure et l\u2019expression d\u2019une subjectivit\xe9 singuli\xe8re. \xc0 travers son \u0153uvre, pass\xe9e \xe0 la post\xe9rit\xe9, l\u2019artiste-auteur pourrait pr\xe9tendre \xe0 une forme d\u2019immortalit\xe9.</li>\n<li><em>L\u2019art serait subversif, se dressant contre le syst\xe8me et ses normes</em>. Il \xe9chapperait \xe0 la logique bourgeoise et utilitariste du capitalisme. L\u2019artiste serait un pionnier r\xe9volt\xe9 par la soci\xe9t\xe9. Ce serait un fou, un anticonformiste, un r\xe9volutionnaire investissant les marges aux c\xf4t\xe9s de minorit\xe9s et exclus en tout genre.</li>\n</ul>\n<p>Ces mythes, h\xe9rit\xe9s de l\u2019\xe9poque romantique, constituent le regard dominant de la soci\xe9t\xe9 contemporaine sur l\u2019art et les artistes. Ils sont, aujourd\u2019hui encore, ce qui motive de plus en plus d\u2019\xe9tudiants \xe0 s\u2019engager dans de
2s carri\xe8res artistiques<a href="#fn5" class="footnote-ref" id="fnref5" role="doc-noteref"><sup>5</sup></a>. Artiste repenti moi-m\xeame, j\u2019ai pu ressentir leur profonde influence et l\u2019observer dans mon entourage professionnel. Mais en m\u2019engageant dans le militantisme, il m\'est peu \xe0 peu devenu impossible de ne pas ressentir aussi les profondes dissonances entre ce que la soci\xe9t\xe9 professe du r\xf4le de l\u2019art et les r\xe9sultantes de sa pratique.</p>\n<h2 id="les-mythes-de-lart-\xe0-l\xe9preuve-de-la-r\xe9alit\xe9">Les mythes de l\u2019art \xe0 l\u2019\xe9preuve de la r\xe9alit\xe9</h2>\n<p>En r\xe9alit\xe9, c\u2019est d\'abord la taille du r\xe9seau social d\u2019un artiste et non son talent qui fait sa r\xe9putation.</p>\n<p>Ce que beaucoup d\u2019artistes savent de v\xe9cu personnel, \xe0 savoir que le talent n\u2019est pas le d\xe9terminant principal du succ\xe8s d\u2019une carri\xe8re artistique, a \xe9t\xe9 d\xe9montr\xe9 par des recherches en sciences sociales. Il semblerait que ce soit le positionnement d\u2019un artiste au sein d\u2019un r\xe9seau social comprenant des personnes importantes qui d\xe9terminerait son succ\xe8s \xe0 travers le favoritisme, le pistonnage et l\u2019acc\xe8s \xe0 plus d\u2019information et d\u2019opportunit\xe9s<a href="#fn6" class="footnote-ref" id="fnref6" role="doc-noteref"><sup>6</sup></a>.</p>\n<p>En r\xe9alit\xe9, c\u2019est la r\xe9putation de l\u2019auteur et non la qualit\xe9 d\u2019une \u0153uvre qui d\xe9termine sa valeur.</p>\n<p>L\'\u0153uvre (objet ou performance) est la seule chose qu\u2019une tierce personne puisse \xe9prouver et devrait donc en toute logique \xeatre le seul \xe9talon de sa propre valeur. Autrement dit, une \u0153uvre devrait parler d\u2019elle-m\xeame, et le cas \xe9ch\xe9ant refl\xe9ter le g\xe9nie de la personne qui l\u2019a produite.</p>\n<p>Dans le monde de l\u2019art, c\u2019est l\u2019inverse qui se produit. C\u2019est le cr\xe9ateur, l\u2019artiste, sa biographie, son identit\xe9 et son prestige qui sont les d\xe9terminants principaux de la valeur d\u2019une \u0153uvre<a href="#fn7" class="footnote-ref" id="fnref7" role="doc-noteref"><sup>7</sup></a>.</p>\n<p>En 2011, il fut par exemple r\xe9v\xe9l\xe9 que la galerie new-yorkaise Knoedler vendait des tableaux pr\xe9cieux attribu\xe9s \xe0 des peintres c\xe9l\xe8bres (Rothko, Pollock\u2026), alors que ceux-ci \xe9taient en r\xe9alit\xe9 des \u201cfaux\u201d, peints par un immigrant chinois du nom de Pei-Shen Qian. Lors du proc\xe8s qui s\'ensuivit, ces peintures jusqu\'alors gard\xe9es sous vitres blind\xe9es furent manipul\xe9es sans soin, comme de vulgaires pi\xe8ces de carton<a href="#fn8" class="footnote-ref" id="fnref8" role="doc-noteref"><sup>8</sup></a>. Si la d\xe9couverte de leur v\xe9ritable auteur comme \xe9tant un anonyme n\u2019avait en rien chang\xe9 leur qualit\xe9, elle avait en revanche d\xe9truit toute valeur financi\xe8re et symbolique que ces \u0153uvres poss\xe9daient.</p>\n<p>En r\xe9alit\xe9, le monde de la culture use et abuse de strat\xe9gies de marketing.</p>\n<p>Le march\xe9 des arts visuels a \xe9t\xe9 qualifi\xe9 de march\xe9 le plus manipul\xe9 au monde<a href="#fn9" class="footnote-ref" id="fnref9" role="doc-noteref"><sup>9</sup></a>. Bien que soumis \xe0 la loi \xe9conomique de l\u2019offre et de la demande, la valeur des produits culturels est en grande partie arbitraire, et d\xe9pend directement de la r\xe9putation de leur auteur.</p>\n<p>Des strat\xe9gies marketing sont donc d\xe9ploy\xe9es par les labels, galeries, ou m\xeame par les artistes eux-m\xeames, afin de prendre soin de cette r\xe9putation. Un artiste, tout comme une marque, doit avoir un positionnement sur le march\xe9 : il doit se cr\xe9er une identit\xe9, se construire une histoire, et revendiquer des th\xe8mes de pr\xe9dilection. Ces derniers peuvent d\u2019ailleurs fluctuer de mani\xe8re opportuniste en fonction d\u2019\xe9v\xe8nements g\xe9opolitiques : crise des r\xe9fugi\xe9s syriens, guerre en Ukraine, etc.</p>\n<p>En r\xe9alit\xe9, les billets d\u2019entr\xe9e, livres, et autres objets que les artistes produisent en abondance peinent \xe0 se vendre.</p>\n<p>Le march\xe9 des produits culturels est totalement satur\xe9. Il y a par exemple aujourd\u2019hui plus de 80 millions de morceaux sur Spotify<a href="#fn10" class="footnote-ref" id="fnref10" role="doc-noteref"><sup>10</sup></a>, \xe9quivalent \xe0 plus de 450 ann\xe9es de contenu audio mis bout \xe0 bout. Chaque ann\xe9e, des millions de morceaux suppl\xe9mentaires sont publi\xe9s sur la plateforme, qui est bien loin de proposer l\u2019int\xe9gralit\xe9 du contenu audio disponible dans le monde (il y a aussi Apple Music, Bandcamp, ou encore des disques et des cassettes, etc.).</p>\n<p>Produire de l\u2019art n\u2019est pas difficile et de plus en plus de gens le font. Pire encore, la production artistique subit un ph\xe9nom\xe8ne croissant, et en pleine acc\xe9l\xe9ration, d\u2019automatisation gr\xe2ce aux technologies du num\xe9rique. Ce ph\xe9nom\xe8ne peut \xeatre observ\xe9 dans l\u2019essor des logiciels d\u2019assistance \xe0 la production artistique (par exemple les produits d\u2019Adobe ou d\u2019Ableton). De mani\xe8re plus dramatique, il peut \xeatre observ\xe9 dans l\u2019utilisation croissante de l\u2019intelligence artificielle, qui permet de d\xe9l\xe9guer des choix cr\xe9atifs \xe0 la machine, ou m\xeame de lui faire g\xe9n\xe9rer des \u0153uvres enti\xe8res \xe0 la cha\xeene sans aucune assistance humaine. Au cours de l\u2019ann\xe9e 2022 on a par exemple vu se multiplier des images g\xe9n\xe9r\xe9es par diverses intelligences artificielles, <em>Dall-E</em> de l\'entreprise OpenAI ou encore <em>Imagen</em> de Google. Certaines de ces images ont m\xeame gagn\xe9 des prix d\u2019art contre des artistes humains<a href="#fn11" class="footnote-ref" id="fnref11" role="doc-noteref"><sup>11</sup></a>.</p>\n<div style="display:flex;flex-direction:column;align-items:center;padding:1em 0;">\n<img src="/articles/2022-12-05-art-nous-empeche-de-construire/ai-loutres.jpg" width="100%" />\n<div style="width:100%">\nImages de loutres g\xe9n\xe9r\xe9es par l\u2019intelligence artificielle DALL\xb7E 2 de OpenAI. \xa9 OpenAI\n</div>\n</div>\n<p>En r\xe9alit\xe9, les arts visuels sont un placement financier qui ne profite qu\u2019aux ultra-riches.</p>\n<p>Le montant total des ventes d\u2019arts visuels pour la seule ann\xe9e 2021 est estim\xe9 \xe0 65,1 milliards de dollars<a href="#fn12" class="footnote-ref" id="fnref12" role="doc-noteref"><sup>12</sup></a>. Une part importante de ces oeuvres est achet\xe9e par de riches collectionneurs priv\xe9s, dont on estime la totalit\xe9 des actifs en \u201cobjets de collection\u201d \xe0 1448 milliards de dollars<a href="#fn13" class="footnote-ref" id="fnref13" role="doc-noteref"><sup>13</sup></a>. Les artistes contemporains qui vendent leurs \u0153uvres sur le march\xe9 de l\u2019art sont donc en r\xe9alit\xe9 producteurs d\u2019actifs financiers pour les ultra-riches qui cherchent \xe0 diversifier leurs portfolios d\u2019investissement.</p>\n<p>Beaucoup des \u0153uvres vendues ne sont jamais montr\xe9es au public ni m\xeame \xe0 l\u2019acheteur. Elles sont directement exp\xe9di\xe9es par les galeries vers des espaces de stockage hyper-s\xe9curis\xe9s qu\u2019on appelle \u201cports francs\u201d, et qui garantissent \xe0 leurs clients une parfaite opacit\xe9 vis-\xe0-vis des pouvoirs publics, facilitant ainsi l\u2019\xe9vasion fiscale. Un audit de l\'\xc9tat suisse en 2012 avait par exemple r\xe9v\xe9l\xe9 que le port franc de Gen\xe8ve, \xe0 lui seul, renfermait 1,2 million d\'\u0153uvres d\u2019art<a href="#fn14" class="footnote-ref" id="fnref14" role="doc-noteref"><sup>14</sup></a>.</p>\n<p>En r\xe9alit\xe9, le monde de la culture est soumis \xe0 l\u2019\xe9c
2onomie capitaliste et \xe0 la marchandisation des produits culturels.</p>\n<p>La vente d\'\u0153uvres ou de billets de spectacle est l\u2019un des mod\xe8les \xe9conomiques principaux des artistes aujourd\u2019hui<a href="#fn15" class="footnote-ref" id="fnref15" role="doc-noteref"><sup>15</sup></a>. Sans parler des industries culturelles qui en profitent grassement, la subsistance des artistes est li\xe9e \xe0 l\u2019existence du libre march\xe9 et de l\u2019\xe9conomie capitaliste. Lorsque ces int\xe9r\xeats \xe9conomiques entrent en conflit avec le bien commun, c\u2019est souvent ce dernier qui est mis en \xe9chec.\xa0</p>\n<p>Depuis l\u2019arriv\xe9e du num\xe9rique par exemple, la commercialisation de vid\xe9os, images et musique pr\xe9sente un dilemme. Puisqu\u2019en effet ces \u0153uvres ne sont rien d\u2019autre que de simples fichiers et peuvent \xeatre copi\xe9es ind\xe9finiment et gratuitement, elles n\u2019ont aucune valeur p\xe9cuniaire (pas plus que l\u2019oxyg\xe8ne pr\xe9sent en abondance dans l\u2019air). Le monde de l\u2019art aurait pu applaudir la perspective r\xe9volutionnaire de voir des millions d\'\u0153uvres circuler librement et en dehors de toute relation marchande<a href="#fn16" class="footnote-ref" id="fnref16" role="doc-noteref"><sup>16</sup></a>. \xc0 minima, il aurait pu se battre pour r\xe9duire la port\xe9e des droits d\u2019auteur, et permettre au public, par exemple, de profiter gratuitement des \u0153uvres d\u2019artistes d\xe9c\xe9d\xe9s<a href="#fn17" class="footnote-ref" id="fnref17" role="doc-noteref"><sup>17</sup></a>.</p>\n<p>Au lieu de cela, l\u2019industrie et les institutions, soutenues par de nombreux artistes, ont cherch\xe9 \xe0 prot\xe9ger leurs int\xe9r\xeats \xe9conomiques en attaquant les libert\xe9s num\xe9riques. Cette mobilisation a donn\xe9 des outils l\xe9gaux comme Hadopi et des outils techniques comme les DRM qui permettent d\u2019encrypter des fichiers multim\xe9dias tout en criminalisant leur d\xe9cryptage par des tiers.</p>\n<p>En r\xe9alit\xe9, le concept d\u2019auteur est un mythe port\xe9 par les industries culturelles pour s\u2019assurer le monopole sur la vente des \u0153uvres.</p>\n<p>Le droit d\u2019auteur s\u2019est d\xe9velopp\xe9 aux 18\xe8 et 19\xe8 si\xe8cles, en plein essor du capitalisme dans les pays occidentaux. Il eut \xe0 l\u2019origine la fonction de d\xe9fendre non pas les auteurs, mais de riches \xe9diteurs de livres contre l\u2019impression de copies moins ch\xe8res. La cr\xe9ation du droit d\u2019auteur fut alors justifi\xe9e id\xe9ologiquement par une autre notion qui apparaissait au m\xeame moment : celle de l\u2019artiste comme <em>cr\xe9ateur solitaire d\u2019une \u0153uvre originale et subjective</em><a href="#fn18" class="footnote-ref" id="fnref18" role="doc-noteref"><sup>18</sup></a>.\xa0</p>\n<p>Il est difficile de le concevoir aujourd\u2019hui, mais \xe0 l\u2019\xe8re m\xe9di\xe9vale, avant l\u2019essor du capitalisme et de la propri\xe9t\xe9 priv\xe9e, la plupart des r\xe9cits circulaient de mani\xe8re anonyme. Ils \xe9taient copi\xe9s, modifi\xe9s et \xe0 nouveau remis en circulation. Leur transmission se faisait en grande partie \xe0 l\u2019oral, et dans ce contexte les notions \u201cd\u2019auteur\u201d, \u201cd\u2019originalit\xe9\u201d, de \u201cplagiat\u201d ne faisaient pas sens<a href="#fn19" class="footnote-ref" id="fnref19" role="doc-noteref"><sup>19</sup></a>.</p>\n<p>La cr\xe9ation artistique (comme toute activit\xe9 cr\xe9ative humaine) est un travail combinatoire, bien plus qu\u2019elle n\u2019est un travail de cr\xe9ation pure. Elle s\u2019inspire des oeuvres de ceux qui nous pr\xe9c\xe8dent, et s\u2019appuie sur un \xe9difice culturel, des mots, des techniques, des formes d\u2019expression que des millions de personnes ont particip\xe9 \xe0 construire<a href="#fn20" class="footnote-ref" id="fnref20" role="doc-noteref"><sup>20</sup></a>, des communs qui n\u2019appartiennent \xe0 personne, et dont nous devrions refuser la privatisation.</p>\n<p>En r\xe9alit\xe9, l\u2019art c\u2019est une id\xe9ologie.</p>\n<p>On pourrait temp\xe9rer ces br\xe8ves sur la r\xe9alit\xe9 du monde de l\u2019art et de la culture par des exemples d\u2019artistes qui tentent de faire les choses diff\xe9remment. Cependant, la question n\u2019est pas ici de consid\xe9rer les pratiques artistiques dans leur diversit\xe9, mais au contraire de questionner ce qui, dans la pens\xe9e occidentale, les relie. Comment en sommes-nous, en effet, arriv\xe9s \xe0 ranger dans une m\xeame cat\xe9gorie, \xe0 d\xe9signer par un m\xeame mot, des choses en apparence aussi diff\xe9rentes que : l\u2019action de <em>bouger son corps en rythme</em>, l\u2019action d\u2019<em>\xe9taler des pigments sur une surface</em>, l\u2019action de <em>souffler dans une fl\xfbte</em>\u2026?</p>\n<p>Un autre des mythes constitutifs de l\u2019art est justement qu\u2019il serait une composante universelle de l\u2019humain, qui lierait toutes les pratiques cr\xe9atives, de toutes les civilisations et de toutes les \xe9poques. L\'art serait une pulsion commune, partag\xe9e aussi bien par les hommes des cavernes que par les avant-gardes du 20\xe8 si\xe8cle, poussant les uns \xe0 peindre sur les parois de grottes, les autres \xe0 exposer un urinoir dans un mus\xe9e[^36].</p>\n<p>En r\xe9alit\xe9, nul besoin d\u2019aller chercher tr\xe8s loin pour remettre en question la pr\xe9tendue universalit\xe9 de l\u2019art. Par exemple, certaines pratiques cr\xe9atives contemporaines comme la cuisine ne sont pas consid\xe9r\xe9es comme de l\u2019art. Pourquoi ? \xc0 l\u2019inverse, certaines pratiques autochtones (danse, musique, cr\xe9ation d\u2019objets notamment) consid\xe9r\xe9es par l\'Occident comme de l\u2019art ne le sont pas par les peuples qui les pratiquent, notamment lorsque ces derniers n\u2019ont pas d\u2019\xe9quivalent au concept d\u2019<em>art</em>. Pourquoi alors utilisons-nous ce terme dans ce contexte si ces peuples ne le poss\xe8dent pas ? Serions-nous mieux \xe0 m\xeame qu\u2019eux de d\xe9finir ce qu\u2019ils font lorsqu\u2019ils dansent ou jouent de la musique ?</p>\n<p>En r\xe9alit\xe9, Il faut bien dissocier le concept d\u2019<em>art</em> d\u2019un c\xf4t\xe9, de l\u2019ensemble des pratiques sonores, textuelles, picturales ou corporelles de l\u2019autre. Ces derni\xe8res sont effectivement un fait universel et sont exerc\xe9es dans toutes les cultures. L\u2019art en revanche est un fait exclusif de la soci\xe9t\xe9 occidentale post-romantique.\xa0</p>\n<p>Ce qu\u2019on nomme dans ce texte \u201cart\u201d ne d\xe9signe pas les pratiques elles-m\xeames, mais bien le regard de notre soci\xe9t\xe9 sur l\u2019ensemble de ces pratiques et sur leurs praticiens. Le terme \u201cart\u201d d\xe9signe donc une mani\xe8re d\'interpr\xe9ter le monde, qui est aux pratiques cr\xe9atives ce que \u201clib\xe9ralisme\u201d ou \u201csocialisme\u201d sont \xe0 l\u2019\xe9c
2onomie. Il d\xe9signe une id\xe9ologie qui pourrait \xeatre combattue par une autre id\xe9ologie <em>post-art</em>, plus apte \xe0 cr\xe9er une soci\xe9t\xe9 d\xe9sirable<a href="#fn21" class="footnote-ref" id="fnref21" role="doc-noteref"><sup>21</sup></a>.</p>\n<h2 id="lart-comme-instrument-de-l\xe9gitimation-des-classes-sociales">L\u2019art comme instrument de l\xe9gitimation des classes sociales</h2>\n<p>Pour comprendre les fonctions de l\u2019art comme id\xe9ologie, il est utile de re-contextualiser l\u2019apparition aux 18\xe8 et 19\xe8 si\xe8cles des concepts d\u2019<em>art</em> et d\u2019<em>artiste </em>tels qu\u2019on les conna\xeet aujourd\u2019hui.</p>\n<p>Une vague de r\xe9volutions avait fini par instaurer le principe d\u2019\xe9galit\xe9 comme l\u2019un des fondements des soci\xe9t\xe9s europ\xe9ennes<a href="#fn22" class="footnote-ref" id="fnref22" role="doc-noteref"><sup>22</sup></a>. Ces r\xe9volutions avaient en revanche \xe9chou\xe9 \xe0 renverser l\u2019ordre social, et les aristocrates demeuraient, aux c\xf4t\xe9s des bourgeois, en possession d\u2019immenses privil\xe8ges : argent, prestige et pouvoir. Face \xe0 la contestation, il s\u2019agissait donc pour cette classe dominante d\u2019inventer des r\xe9cits qui justifiaient le maintien de sa position de domination.</p>\n<p>C\u2019est ainsi que le mythe de <em>l\u2019art comme expression du g\xe9nie</em> est apparu. Il ass\xe8ne que la gr\xe2ce ne discrimine pas, et que le don d\u2019un talent artistique peut se manifester chez les pauvres comme chez les riches. Il ass\xe8ne ensuite que ce talent, lorsqu\u2019il est pr\xe9sent chez une personne, justifie un plus grand prestige social. Voici donc un r\xe9cit qui, \xe0 l\u2019\xe9poque, \xe9tait bien pratique car il r\xe9solvait la contradiction entre l\u2019aspiration d\u2019un monde post-r\xe9volutionnaire \xe0 plus d\u2019\xe9galit\xe9 et les in\xe9galit\xe9s que ce monde vivait encore au quotidien. C\u2019est l\u2019essor d\u2019une id\xe9e devenue centrale dans la soci\xe9t\xe9 occidentale contemporaine, \xe0 savoir que <em>nous vivons en m\xe9ritocratie</em>, soit dans un syst\xe8me o\xf9 <em>la position sociale d\u2019un individu est la cons\xe9quence directe de son talent</em>.\xa0</p>\n<p>Cette id\xe9e \xe9tait particuli\xe8rement fallacieuse au 19\xe8 si\xe8cle, dans un monde qui ignorait largement le concept d\u2019\xe9galit\xe9 des chances \xe0 la naissance. Pourtant, elle se d\xe9veloppa pour servir aux privil\xe9gi\xe9s d\u2019explication a posteriori de leurs privil\xe8ges. La peinture, la sculpture et l\u2019\xe9criture, qui relevaient auparavant du domaine du savoir-faire technique, devinrent l\u2019expression du g\xe9nie et activit\xe9s m\xe9ritocratiques par excellence. Bien s\xfbr les g\xe9nies \xe9taient ceux qui avaient le loisir de s\u2019adonner \xe0 ces activit\xe9s sans besoin d\u2019y gagner leur vie, c\u2019est-\xe0-dire aristocrates et bourgeois<a href="#fn23" class="footnote-ref" id="fnref23" role="doc-noteref"><sup>23</sup></a>.</p>\n<p>Aujourd\u2019hui encore, l\u2019art a pour fonction principale la l\xe9gitimation des classes et des in\xe9galit\xe9s sociales. Il agit comme un m\xe9canisme de contr\xf4le invisible car il hi\xe9rarchise les gens selon leurs go\xfbts, leur capacit\xe9 \xe0 appr\xe9cier telle ou telle \u0153uvre, tout en affirmant que cette hi\xe9rarchie est fond\xe9e sur des diff\xe9rences de qualit\xe9 objectives. Il permet ainsi de s\xe9parer les <em>gens simples</em> des <em>\xe9lites</em>, convainquant les uns et les autres que leur position est juste et m\xe9rit\xe9e. Pourtant, il est \xe9vident que l\u2019appr\xe9ciation et la production d\u2019art requi\xe8rent l\u2019accumulation d\u2019un grand nombre de connaissances et de codes qui rel\xe8vent de l\u2019arbitraire. Il se trouve que ces codes sont disponibles en abondance dans les familles des classes sup\xe9rieures et rares dans les familles des classes populaires. L\u2019appr\xe9ciation de l\u2019art est donc en r\xe9alit\xe9 presque exclusivement transmise par l\u2019\xe9ducation, et l\u2019art assure ainsi une forme d\u2019\xe9tanch\xe9it\xe9 entre les classes sociales<a href="#fn24" class="footnote-ref" id="fnref24" role="doc-noteref"><sup>24</sup></a>.</p>\n<p>Cette fonction de l\u2019art comme <em>\xe9tanch\xe9ificateur</em> est manifeste dans la mani\xe8re dont les lieux de la haute culture sont con\xe7us et dans la mani\xe8re dont les produits artistiques y sont pr\xe9sent\xe9s. Le mus\xe9e, l\u2019op\xe9ra, l\u2019auditorium,\u2026 sont tous pens\xe9s pour intimider les classes populaires. Tout d\u2019abord par une architecture qui signifie au visiteur sa petitesse face \xe0 ces \u0153uvres qui souvent le mystifient. Ensuite, par la distance qui est impos\xe9e avec les artefacts culturels ou performeurs. Ces derniers, objets de r\xe9v\xe9rence, sont mis en sc\xe8ne, \xe9lev\xe9s, et le public n\u2019a pas le droit de les approcher<a href="#fn25" class="footnote-ref" id="fnref25" role="doc-noteref"><sup>25</sup></a>. Puis par l\u2019omnipr\xe9sence de \u201cdispositifs d\'\xe9nigmatisation\u201d<a href="#fn26" class="footnote-ref" id="fnref26" role="doc-noteref"><sup>26</sup></a>, la r\xe9ticence des artistes ou mus\xe9es \xe0 \xeatre didactiques ou explicites. En emp\xeachant ainsi les \u0153uvres d\u2019\xeatre claires ou de parler par elles-m\xeames, on exclut celles et ceux qui n\u2019ont pas les connaissances pour les d\xe9chiffrer. Enfin par la codification des interactions \xe0 l\u2019int\xe9rieur du mus\xe9e ou de la salle de concert, qui peuvent rendre malaisante une visite pour quiconque ignore \xe0 quel moment applaudir ou garder le silence, ce qu\u2019on peut toucher et ce qu\u2019on ne peut pas. Sans surprise, la fr\xe9quentation des mus\xe9es ou des op\xe9ras est le fait quasiment exclusif des classes sup\xe9rieures.</p>\n<p>La production d\u2019art est tout aussi exclusive que sa consommation. Le capital social est le facteur d\xe9terminant de la r\xe9ussite d\u2019une carri\xe8re artistique. Les classes ais\xe9es sont ainsi favoris\xe9es, car davantage connect\xe9es, et avec des personnes ayant des positions plus \xe9lev\xe9es dans la soci\xe9t\xe9. Ensuite, devenir artiste n\xe9cessite la capacit\xe9 \xe0 diff\xe9rer l\u2019obtention d\u2019un salaire (parfois ind\xe9finiment), ce qui implique d\u2019avoir \xe0 sa disposition un capital financier personnel ou familial. Dans certains cas, les artistes paient m\xeame pour avoir le privil\xe8ge d\u2019exercer leur art, dans une curieuse inversion de la logique du travail : location de salles, auto-financement de r\xe9sidences, achat de mat\xe9riel pour la production\u2026 Sans surprise, la composition socio-\xe9conomique des \xe9c
2oles d\u2019art pr\xe9sente donc une forte sous-repr\xe9sentation des classes populaires qui ne poss\xe8dent ni le capital social, ni le capital financier n\xe9cessaires pour entreprendre cette profession<a href="#fn27" class="footnote-ref" id="fnref27" role="doc-noteref"><sup>27</sup></a>.</p>\n<h2 id="lartiste-comme-template-pour-le-travailleur-n\xe9o-liberal">L\u2019artiste comme <em>template</em> pour le travailleur n\xe9o-liberal</h2>\n<p>Les 19\xe8 et 20\xe8 si\xe8cles ont \xe9t\xe9 le terrain d\u2019une grande bataille id\xe9ologique entre collectivisme et individualisme. La chute des r\xe9gimes communistes, ainsi que la mont\xe9e du n\xe9o-lib\xe9ralisme partout dans le monde, ont act\xe9 la fin de cette bataille et plac\xe9 l\u2019individualisme en position d\u2019h\xe9g\xe9monie culturelle<a href="#fn28" class="footnote-ref" id="fnref28" role="doc-noteref"><sup>28</sup></a>. L\u2019<em>artiste</em>, figure individualiste par excellence, dont la vie enti\xe8re tend vers l\u2019accomplissement de soi par la cr\xe9ativit\xe9, s\u2019impose alors comme l\u2019arch\xe9type du monde occidental victorieux.</p>\n<p>Tel un m\xe8me Internet, les valeurs artistiques se r\xe9pandent pour r\xe9-\xe9merger partout, dans la soci\xe9t\xe9 du capitalisme tardif, sous des configurations nouvelles<a href="#fn29" class="footnote-ref" id="fnref29" role="doc-noteref"><sup>29</sup></a>. Elles apparaissent dans les mouvements de contre-culture (de mai 1968 jusqu\u2019aux hipsters), sous la forme d\u2019\xe9loges de l\u2019anticonformisme et de l\u2019originalit\xe9. Elles sont glorifi\xe9es en permanence par une soci\xe9t\xe9 de consommation qui c\xe9l\xe8bre la singularit\xe9 et la diff\xe9rence. Elles sont exalt\xe9es par des m\xe9dias de masse qui mettent en sc\xe8ne l\u2019artiste-c\xe9l\xe9brit\xe9 de mani\xe8re obsessionnelle. Elles sont incarn\xe9es par les \u201ccr\xe9ateurs\u201d sur les plateformes du num\xe9riques telles YouTube, Instagram ou TikTok. On les retrouve enfin, \xe0 peine d\xe9guis\xe9es, dans une autre figure, celle de l\u2019entrepreneur, un g\xe9nie qui, tel un Steve Jobs ou un Elon Musk, subvertit (ou \u201cdisrupte\u201d dans la parlance start-up) audacieusement l\u2019ordre \xe9tabli gr\xe2ce \xe0 de nouvelles id\xe9es de business. En fait, et de mani\xe8re assez paradoxale, l\u2019art est devenu un nouveau r\xe9gime de conformit\xe9 ; <em>singularit\xe9, expression de soi et r\xe9bellion</em> une nouvelle norme<a href="#fn30" class="footnote-ref" id="fnref30" role="doc-noteref"><sup>30</sup></a>.</p>\n<div style="display:flex;flex-direction:column;align-items:center;padding:1em 0;">\n<img src="/articles/2022-12-05-art-nous-empeche-de-construire/no-authority.jpg" width="100%" />\n<div style="width:100%">\nTag photographi\xe9 \xe0 Berlin\n</div>\n</div>\n<p>Pour le n\xe9olib\xe9ralisme, et comme le disait caricaturalement Margaret Thatcher, \u201cla soci\xe9t\xe9 n\u2019existe pas\u201d<a href="#fn31" class="footnote-ref" id="fnref31" role="doc-noteref"><sup>31</sup></a>. Cette doctrine \xe9conomique et politique, adopt\xe9e aujourd\u2019hui par la plupart des gouvernements occidentaux, s\u2019applique depuis les ann\xe9es 1970 \xe0 d\xe9construire m\xe9thodiquement l\u2019h\xe9ritage des grandes mobilisations collectives des deux si\xe8cles pass\xe9s. Dans cette entreprise, l\u2019id\xe9ologie de l\u2019art est un alli\xe9 particuli\xe8rement efficace. Elle reconfigure les aspirations de la population pour les orienter int\xe9gralement vers le soi, \xe9rodant ainsi la notion m\xeame de soci\xe9t\xe9. Elle est une arme politique, permettant d\u2019insensibiliser (et m\xeame d\u2019associer) le peuple \xe0 la destruction des syst\xe8mes d\u2019aide sociale (sant\xe9, retraites, \xe9ducation\u2026), \xe0 la privatisation de tous les services publics (transport, \xe9nergie\u2026), et \xe0 la neutralisation des contre-pouvoirs collectifs (notamment les syndicats). Les citoyens, en effet, n\u2019ont nul besoin d\u2019\xeatre veill\xe9s par un \u201c\xc9tat nounou\u201d, quand ce qu\u2019ils d\xe9sirent le plus est de vivre une vie singuli\xe8re, d\xe9sentrav\xe9e des conventions.</p>\n<p>L\u2019alliance entre l\u2019id\xe9ologie de l\u2019art et le n\xe9olib\xe9ralisme est particuli\xe8rement visible et efficace dans le champ de la politique du travail, fief traditionnel des luttes socialistes. Dans l\u2019imaginaire populaire, <em>travail</em> n\u2019est pas couramment associ\xe9 avec <em>plaisir</em>. On travaille parce qu\u2019on y est forc\xe9, pour subvenir \xe0 ses besoins essentiels, mettre un toit au-dessus de sa t\xeate ou nourrir sa famille. L\u2019artiste, au contraire, travaille par vocation : parce que g\xe9nie il a re\xe7u un don et a \xe9t\xe9 \u201cappel\xe9\u201d \xe0 faire ce qu\u2019il fait. La motivation de l\u2019artiste lui vient de son moi, elle est une forme d\u2019amour et non une contrainte. Le tour de force du n\xe9olib\xe9ralisme a \xe9t\xe9 de g\xe9n\xe9raliser cette id\xe9e et qu\u2019au lieu d\u2019\xeatre stable, bien r\xe9mun\xe9r\xe9 ou de donner s\xe9curit\xe9 et temps libre, un bon travail doit na\xeetre d\u2019une vocation<a href="#fn32" class="footnote-ref" id="fnref32" role="doc-noteref"><sup>32</sup></a>.</p>\n<p>Cette relation \u201cartistique\u201d au travail est consid\xe9r\xe9e par les gouvernements des pays occidentaux comme le futur de l\u2019emploi. Ces derniers l\xe9gif\xe8rent depuis des d\xe9cennies pour tendre vers un march\xe9 du travail o\xf9 chaque travailleur est sa propre entreprise, et s\u2019associe avec d\u2019autres le temps d\u2019un projet avant de repartir vers de nouveaux horizons. Mu par l\u2019amour, le travailleur n\xe9olib\xe9ral s\u2019exploite tout seul. Il est freelancer ou stagiaire en s\xe9rie, ne compte pas ses heures, ne fait la distinction ni entre week-end et semaine, ni entre bureau et maison. En plus du c\u0153ur de son activit\xe9, il doit en permanence travailler \xe0 travailler en \xe9tendant son r\xe9seau social et en se cultivant une r\xe9putation et \u201csa marque\u201d (son \u201cself-branding\u201d), pour se diff\xe9rencier de ses concurrents<a href="#fn33" class="footnote-ref" id="fnref33" role="doc-noteref"><sup>33</sup></a>.</p>\n<p>Les classes populaires, n\u2019ayant rien de suffisamment \u201ccool\u201d \xe0 inscrire sur leurs profils LinkedIn ou leurs biographies Twitter, sont en revanche enti\xe8rement exclues de ces nouvelles modalit\xe9s. La d\xe9r\xe9gulation du travail est la cause au contraire de l\u2019essor de ce qu\u2019on a nomm\xe9 la \u201cgig economy\u201d ou encore \u201cub\xe9risation\u201d de l\u2019\xe9c
2onomie, et de l\u2019explosion du travail pr\xe9caire.</p>\n<p>La souffrance sociale caus\xe9e par cette nouvelle politique du travail touche aussi les classes sup\xe9rieures. Pour les nouvelles g\xe9n\xe9rations, l\u2019injonction \xe0 trouver sa vocation est si forte que de nombreuses personnes se sentent coupables et souffrent de d\xe9pression lorsqu\u2019elles n\u2019y arrivent pas. De plus, le travail \u201cflexible\u201d (m\xeame lorsque cette flexibilit\xe9 est choisie) est source d\u2019anxi\xe9t\xe9, d\u2019ins\xe9curit\xe9 et d\u2019isolement. Au lieu de tisser des solidarit\xe9s avec ses pairs, le travailleur flexible est encourag\xe9 \xe0 les consid\xe9rer tous comme de potentiels comp\xe9titeurs.</p>\n<p>Alors intervient la promesse n\xe9olib\xe9rale d\u2019expression de soi, \xe0 travers l\u2019auto-d\xe9termination par chacun de sa carri\xe8re, l\u2019auto-d\xe9finition de son identit\xe9, le sentiment d\u2019\xeatre unique et singulier. Cette promesse rend toutes ces souffrances tol\xe9rables. L\u2019art est ainsi un outil de pacification de la population<a href="#fn34" class="footnote-ref" id="fnref34" role="doc-noteref"><sup>34</sup></a> (et en particulier des classes moyennes et sup\xe9rieures). C\u2019est un outil redoutablement efficace car il est invisible, oeuvrant au plus profond de chacun de nous, en d\xe9terminant nos aspirations les plus intimes, et ainsi tout ce qui nous met en mouvement ; un mouvement enti\xe8rement orient\xe9 vers le soi et absolument en phase avec les forces \xe9conomiques n\xe9olib\xe9rales qui contr\xf4lent nos soci\xe9t\xe9s et d\xe9truisent notre environnement.</p>\n<h2 id="faire-notre-deuil-puis-reconstruire">Faire notre deuil, puis reconstruire</h2>\n<p><em>L\u2019art n\u2019est pas moteur de changement, il est au contraire l\u2019un des ressorts de notre immobilit\xe9.</em> Si nous voulons d\xe9passer les crises dans lesquelles nous sommes embourb\xe9s, pour un monde plus solidaire, plus juste et respectueux du vivant, il nous faut de nouveaux r\xe9cits. Et pour cr\xe9er de nouveaux r\xe9cits, il nous faut tout d\u2019abord remplacer la principale matrice id\xe9ologique de ces r\xe9cits, c\u2019est-\xe0-dire l\u2019art.</p>\n<p>Musiciens, peintres, \xe9crivains, \u2026 nous devons d\xe9serter l\u2019art et inventer des mani\xe8res d\u2019inscrire nos pratiques cr\xe9atives dans un cadre <em>post-artistique</em>. Nous devons nous rallier autour de nouvelles valeurs : le collectif, le soin, la protection du bien commun. Nous devons \u201cbifurquer\u201d, comme le font progressivement les travailleurs d\u2019autres professions[^35]. Il n\'est pas question de ne plus produire de sons, d\'images, de performances... Il est question en revanche de changer radicalement la mani\xe8re dont la soci\xe9t\xe9 (nous compris) consid\xe8re ces activit\xe9s de production ainsi que celles et ceux qui les entreprennent.</p>\n<p>Ce travail ne peut \xeatre une qu\xeate unilat\xe9rale des artistes, mais doit aussi \xeatre engag\xe9 par les institutions du monde de la culture. Ces derni\xe8res doivent r\xe9fl\xe9chir \xe0 comment accompagner une transition, comment cr\xe9er de nouveaux mod\xe8les \xe9conomiques qui permettraient de sortir du r\xe9gime de visibilit\xe9, de comp\xe9tition, d\u2019hyper-personnalisation qui est impos\xe9 aux artistes aujourd\u2019hui. Nous pouvons nous inspirer des exp\xe9riences radicales de cr\xe9ativit\xe9 pass\xe9es, comme le Proletkult (projet r\xe9volutionnaire sovi\xe9tique), le mouvement du logiciel libre, ou encore la cr\xe9ativit\xe9 collective des mouvements d\xe9centralis\xe9s comme Extinction Rebellion ou Occupy.</p>\n<p>Mais pour nous, artistes, c\u2019est tout d\'abord le deuil de nos privil\xe8ges qu\u2019il nous faut engager :\xa0\xa0</p>\n<p><strong>Faire le deuil du g\xe9nie</strong>. Nous devons accepter d\u2019\xeatre de simples membres de la communaut\xe9 et non d\u2019illustres guides ; combattre activement les privil\xe8ges et le prestige social attribu\xe9s aux artistes ; d\xe9construire la r\xe9v\xe9rence mystique et religieuse pour les \u0153uvres d\u2019art.</p>\n<p><strong>Faire le deuil de l\u2019auteur</strong>. Nous devons aller bien plus loin que la simple cr\xe9ation de collectifs artistiques ; trouver les moyens de travailler et d\u2019exister sans nous approprier des pans entiers de la culture humaine ; repenser notre relation au temps et \xe0 l\'espace, accepter d\'\xeatre de simples acteurs locaux et \xe9ph\xe9m\xe8res, d\u2019\xeatre des anonymes.</p>\n<p><strong>Faire le deuil des pr\xe9tentions de l\u2019art \xe0 la subversivit\xe9</strong>. Nous devons accepter que nous ne sommes pas de grands r\xe9volutionnaires, et accueillir les questions l\xe9gitimes sur notre utilit\xe9 dans la soci\xe9t\xe9, ainsi que la possibilit\xe9 que nous soyons en r\xe9alit\xe9 parfaitement inutiles.</p>\n<p>Pass\xe9 ce deuil, viendra alors le moment grisant de la reconstruction, o\xf9 nous pourrons mettre nos \xe9nergies au service de la r\xe9invention de nos pratiques, et 
2ces pratiques, enfin, au service du bien commun.</p>\n<h2 id="notes">Notes</h2>\n<p>[^35] Entre autres vid\xe9os et discours on peut notamment citer celui des \xe9tudiants d\'AgroParisTech, des \xe9tudiants de Centrale ou encore de HEC .</p>\n<p>[^36] Voir les livres <em>The invention of art</em> de Larry Shiner et <em>Against Art and Culture</em> de Liam Dee.</p>\n<h2 id="r\xe9f\xe9rences">R\xe9f\xe9rences</h2>\n<ul>\n<li>Arvidsson, Adam, Giannino Malossi, and Serpica Naro. <em>"Passionate work? Labour conditions in the Milan fashion industry."</em> Journal for cultural research 14.3 (2010): 295-309.</li>\n<li>Barthes, Roland. "<em>The death of the author.</em>" Contributions in Philosophy 83 (2001): 3-8.</li>\n<li>Bourdieu, Pierre, Alain Darbel, and Dominique Schnapper. <em>L\'amour de l\'art: les mus\xe9es d\'art europ\xe9ens et leur public.</em> Paris: Les editions de minuit, 1969.</li>\n<li>Bowley, Graham, and Doreen Carvajal. <em>"One of the world\u2019s greatest art collections hides behind this fence."</em> The New York Times 28 (2016).</li>\n<li>Colbert, Fran\xe7ois. <em>"Beyond branding: Contemporary marketing challenges for arts organizations."</em> International Journal of Arts Management (2009): 14-20.</li>\n<li>Cour des comptes, <em>"L\u2019enseignement sup\xe9rieur en arts plastiques"</em>, Communication \xe0 la commission des finances du S\xe9nat, Dec.\xa02020, <a href="https://www.ccomptes.fr/sites/default/files/2021-01/20210120-58-2-enseignement-superieur-arts-plastiques.pdf" class="uri">https://www.ccomptes.fr/sites/default/files/2021-01/20210120-58-2-enseignement-superieur-arts-plastiques.pdf</a></li>\n<li>Curtis, Adam. "<em>Adam Curtis on the Dangers of Self-Expression.</em>" Interview by Vancey Strickler. The Creative Independent, March 14 (2017).</li>\n<li>Daniel, Ryan, and Robert Johnstone. "<em>Becoming an artist: exploring the motivations of undergraduate students at a regional Australian University.</em>" Studies in Higher Education 42.6 (2017): 1015-1032.</li>\n<li>Dee, Liam. <em>Against Art and Culture</em>. Palgrave Macmillan, 2018.</li>\n<li>Des agros qui bifurquent. "<em>A call out to branch off, 2022 AgroParisTech Graduation ceremony</em>", Youtube, 10 May 2022, <a href="https://www.youtube.com/watch?v=SUOVOC2Kd50" class="uri">https://www.youtube.com/watch?v=SUOVOC2Kd50</a></li>\n<li>Ede, Lisa. "<em>The Concept of Authorship: An Historical Perspective.</em>" (1985).</li>\n<li>Florida, Richard. <em>The rise of the creative class--revisited: Revised and expanded</em>. Basic Books (AZ), 2014.</li>\n<li>Foucault, Michel. "<em>Qu\'est-ce qu\'un auteur?.</em>" Soci\xe9t\xe9 Fran\xe7aise de Philosophie, Bulletin 63.3 (1969).</li>\n<li>Gault, Matthew. \u201c<em>An Ai-Generated Artwork Won First Place at a State Fair Fine Arts Competition, and Artists Are Pissed.</em>\u201d VICE, 31 Aug. 2022, <a href="https://www.vice.com/en/article/bvmvqm/an-ai-generated-artwork-won-first-place-at-a-state-fair-fine-arts-competition-and-artists-are-pissed" class="uri">https://www.vice.com/en/article/bvmvqm/an-ai-generated-artwork-won-first-place-at-a-state-fair-fine-arts-competition-and-artists-are-pissed</a>.</li>\n<li>Gill, Rosalind, and Andy Pratt. "<em>In the social factory? Immaterial labour, precariousness and cultural work.</em>" Theory, culture &amp; society 25.7-8 (2008): 1-30.</li>\n<li>Graeber, David, and Nika Dubrovsky. "<em>Another Art World</em>" part 1, 2 &amp; 3, e-flux journal, 2019, <a href="https://www.e-flux.com/journal/102/284624/another-art-world-part-1-art-communism-and-artificial-scarcity/" class="uri">https://www.e-flux.com/journal/102/284624/another-art-world-part-1-art-communism-and-artificial-scarcity/</a>.</li>\n<li>Hardt, Michael, and Antonio Negri. "<em>Empire.</em>" Empire. Harvard University Press, 2001.</li>\n<li>Hearn, Alison. "<em>Meat, Mask, Burden: Probing the contours of the brandedself.</em>" Journal of consumer culture 8.2 (2008): 197-217.</li>\n<li>Heinich, Nathalie. <em>L\'\xc9lite artiste. Excellence et singularit\xe9 en r\xe9gime d\xe9mocratique.</em> \xc9ditions Gallimard, 2018.</li>\n<li>Home, Stewart. "<em>The Assault on Culture: Utopian Currents From Lettrisme to Class.</em>" (1988).</li>\n<li>de Lagasnerie, Geoffroy. <em>L\'art impossible</em>. Presses Universitaires de France, 2020.</li>\n<li>Lefevre, Mathieu, and Ana\xefz Parfait. "<em>R\xe9concilier les Fran\xe7ais gr\xe2ce \xe0 l\u2019environnement.</em>" (2020).</li>\n<li>L\xe9gifrance, "<em>Code de la propri\xe9t\xe9 intellectuelle - Chapitre III : Dur\xe9e de la protection (Articles L123-1 \xe0 L123-12)</em>", Accessed 3 Oct. 2022, <a href="https://www.legifrance.gouv.fr/codes/section_lc/LEGITEXT000006069414/LEGISCTA000006161638/#LEGISCTA000006161638" class="uri">https://www.legifrance.gouv.fr/codes/section_lc/LEGITEXT000006069414/LEGISCTA000006161638/#LEGISCTA000006161638</a>.</li>\n<li>Macel, Christine. "<em>Venice Biennale Arte 2017 | Introduction by Christine Macel</em>
2", 2017, <a href="https://www.labiennale.org/en/art/2017/introduction-christine-macel" class="uri">https://www.labiennale.org/en/art/2017/introduction-christine-macel</a>.</li>\n<li>Mayyasi, Alex. "<em>Why is art expensive?</em>" priceonomics, 2015, https://priceonomics.com/why-is-art-expensive/.</li>\n<li>McAndrew, Clare, "<em>A Survey of Global Collecting in 2022</em>" The Art Basel and UBS Global Art Market Report, Accessed 10 Aug.\xa02022, <a href="https://www.artbasel.com/about/initiatives/the-art-market" class="uri">https://www.artbasel.com/about/initiatives/the-art-market</a></li>\n<li>McRobbie, Angela. <em>Be creative: Making a living in the new culture industries</em>. John Wiley &amp; Sons, 2018.</li>\n<li>Miller, M. H. "<em>The big fake: behind the scenes of Knoedler Gallery\u2019s downfall.</em>" Artnews 25 (2016): 2016.</li>\n<li>Minist\xe8re de la culture, "<em>Financement de la culture</em>", Accessed 10 Sept.\xa02022, <a href="https://www.culture.gouv.fr/themes/Financement-de-la-culture" class="uri">https://www.culture.gouv.fr/themes/Financement-de-la-culture</a>.</li>\n<li>Mitali, Banerjee, and Paul L. Ingram. "<em>Fame as an illusion of creativity: Evidence from the pioneers of abstract art.</em>" HEC Paris Research Paper No.\xa0SPE-2018-1305, Columbia Business School Research Paper 18-74 (2018).</li>\n<li>Nead, Lynda. "<em>
2Seductive canvases: Visual mythologies of the artist and artistic creativity.</em>" Oxford Art Journal 18.2 (1995): 59-69.</li>\n<li>Oakley, Kate. "<em>From Bohemia to Britart\u2013art students over 50 years.</em>" Cultural Trends 18.4 (2009): 281-294.</li>\n<li>Petterson, Anders, "<em>Deloitte &amp; ArtTactic | Art &amp; Finance Report 2021</em>" ArtTactic, Accessed 10 Aug.\xa02022, https://arttactic.com/product/deloitte-arttactic-art-finance-report-2021/</li>\n<li>Rose, Mark. "<em>The author as proprietor: Donaldson v. Becket and the genealogy of modern authorship.</em>" Representations 23 (1988): 51-85.</li>\n<li>R\xf8yseng, Sigrid, Per Mangset, and Jorunn Spord Borgen. "<em>Young artists and the charismatic myth.</em>" International journal of cultural policy 13.1 (2007): 1-16.</li>\n<li>Schrager, Allison. "<em>High-end art is one of the most manipulated markets in the world.</em>" Quartz (2013).</li>\n<li>Shapiro, Roberta, and Nathalie Heinich. "<em>When is artification?.</em>" Contemporary Aesthetics (Journal Archive) 4 (2012): 9.</li>\n<li>Shiner, Larry. <em>The invention of art: A cultural history</em>. University of Chicago press, 2003.</li>\n<li>Steffen, Will, et al.\xa0"<em>Trajectories of the Earth System in the Anthropocene.</em>" Proceedings of the National Academy of Sciences 115.33 (2018): 8252-8259.</li>\n<li>Taylor, Roger. "<em>Art, an Enemy of the People.</em>" (1978).</li>\n<li>Tokumitsu, Miya. <em>Do what you love: And other lies about success &amp; happiness.</em> Simon and Schuster, 2015.</li>\n<li>UCLA, DataRes at. \u201c<em>Spotify Trends Analysis.</em>\u201d, Medium, 22 Dec.\xa02020, https://ucladatares.medium.com/spotify-trends-analysis-129c8a31cf04.</li>\n<li>Waldron, Jeremy. "<em>From authors to copiers: individual rights and social values in intellectual property.</em>
2" Chi.-Kent L. Rev.\xa068 (1992):</li>\n</ul>\n<ol start="841" type="1">\n<li></li>\n</ol>\n<ul>\n<li>Wesner, Simone. "<em>The Artist and the Artistic Myth.</em>" Artists\u2019 Voices in Cultural Policy. Palgrave Macmillan, Cham, 2018. 17-40.</li>\n</ul>\n<section class="footnotes" role="doc-endnotes">\n<hr />\n<ol>\n<li id="fn1" role="doc-endnote"><p>Voir l\'article <em>Trajectories of the Earth System in the Anthropocene </em>publi\xe9 dans PNAS en 2018.<a href="#fnref1" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn2" role="doc-endnote"><p>Voir le rapport <em>R\xe9concilier les Fran\xe7ais gr\xe2ce \xe0 l\u2019environnement </em>de l\'organistion Destin Commun.<a href="#fnref2" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn3" role="doc-endnote"><p>Pour une \xe9tude plus pouss\xe9e de ces mythes, voir les livres <em>L\'\xc9lite artiste</em> de Nathalie Heinich et <em>L\'art impossible</em> de Geoffroy de Lagasnerie, ou encore l\'article <em>Seductive canvase
2s: Visual mythologies of the artist and artistic creativity</em> de Lynda Nead. On pourra lire aussi l\'introduction \xe0 la biennale de Venise 2017 de la curatrice Christine Macel pour une parfaite synth\xe8se exalt\xe9e de ces valeurs.<a href="#fnref3" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn4" role="doc-endnote"><p>D\xe9finition de "g\xe9nie", CNRTL, https://www.cnrtl.fr/definition/g\xe9nie. Acc\xe9d\xe9 le 05 December 2022.<a href="#fnref4" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn5" role="doc-endnote"><p>Sur le sujet des motivations des artistes (et \xe9tudiants en art), voir les articles list\xe9s dans les r\xe9f\xe9rences : <em>From Bohemia to Britart\u2013art students over 50 years </em>; <em>Becoming an artist: exploring the motivations of undergraduate students at a regional Australian University</em> ; <em>The Artist and the Artistic Myth</em> ; <em>Young artists and the charismatic myth</em>.<a href="#fnref5" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn6" role="doc-endnote"><p>Voir l\'article <em>Fame as an illusion of creativity</em> de Banerjee Mitali et Paul L. Ingram.<a href="#fnref6" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn7" role="doc-endnote"><p>Voir le livre <em>L\'\xc9lite artiste </em>de Nathalie Heinich.<a href="#fnref7" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn8" role="doc-endnote"><p>Voir l\'article <em>The big fake</em> paru dans la revue artnews.<a href="#fnref8" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn9" role="doc-endnote"><p>Voir l\'article <em>High-end art is one of the most manipulated markets in the world</em> paru dans Quartz.<a href="#fnref9" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn10" role="doc-endnote"><p>Voir le post de blog <em>Spotify Trends Analysis </em>pour retrouver ces chiffres.<a href="#fnref10" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn11" role="doc-endnote"><p>Voir l\'article <em>An Ai-Generated Artwork Won First Place at a State Fair Fine Arts Competition, and Artists Are Pissed</em> paru dans VICE.<a href="#fnref11" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn12" role="doc-endnote"><p>Pour retrouver ces chiffres, voir le rapport <em>A Survey of Global Collecting in 2022 </em>publi\xe9 par Art Basel.<a href="#fnref12" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn13" role="doc-endnote"><p>Ces chiffres sont tir\xe9s du rapport <em>Art &amp; Finance Report 2021</em> publi\xe9 par Deloitte &amp; ArtTactic. Seules les personnes poss\xe9dant 30 millions de dollars ou plus sont compt\xe9es. "objets de collection" contient d\'autres objets que de l\'art: pierres pr\xe9cieuses, voitures de collection, alcools, etc ...<a href="#fnref13" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn14" role="doc-endnote"><p>Voir l\'article <em>One of the world\u2019s greatest art collections hides behind this fence</em> paru dans The New York Times.<a href="#fnref14" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn15" role="doc-endnote"><p>Voir la page <em>Financement de la culture</em> sur le site du minist\xe8re de la culture. Un autre mod\xe8le \xe9conomique repose sur le financement public : 17 milliards de financements publics pour 49,2 milliards de chiffre d\'affaires.<a href="#fnref15" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn16" role="doc-endnote"><p>De nombreux artistes ont d\'ailleurs fait des exp\xe9riences dans ce sens. On pourrait notamment citer l\u2019album In Rainbows de Radiohead publi\xe9 en 2007 en t\xe9l\xe9chargement libre (et \xe0 prix libre) sur leur site web.<a href="#fnref16" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn17" role="doc-endnote"><p>L\u2019argument du <em>droit d\u2019auteur comme un moyen d\u2019apporter un revenu aux artistes</em> a souvent \xe9t\xe9 mis en avant dans la \u201clutte contre le piratage des \u0153uvres\u201d. Mais aujourd\'hui, les droits sur les \u0153uvres d\u2019un auteur durent 70 ans apr\xe8s sa mort (voir <em>Code de la propri\xe9t\xe9 intellectuelle </em>disponible dans les r\xe9f\xe9rences), ce qui ne profite \xe9videmment pas aux artistes, mais \xe0 leurs descendants et aux industries culturelles.<a href="#fnref17" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn18" role="doc-endnote"><p>Voir les articles <em>The author as proprietor</em> de Mark Rose et <em>From authors to copiers </em>de Jeremy Waldron.<a href="#fnref18" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn19" role="doc-endnote"><p>\u201cAuthorship\u201d, un mot anglais courant qui n\u2019a pas de traduction exacte en fran\xe7ais, mais signifie \u201cpaternit\xe9\u201d d\u2019une \u0153uvre, est apparu pour la premi\xe8re fois en 1710 dans l\u2019Oxford English Dictionary, illustrant que ce concept est tr\xe8s r\xe9cent. Voir l\'article <em>The Concept of Authorship</em> de Lisa Ede.<a href="#fnref19" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn20" role="doc-endnote"><p>Pour deux critiques du concept d\'auteur lire la conf\xe9rence <em>Qu\'est-ce qu\'un auteur?</em> de Michel Foucault et l\'article <em>The death of the author</em> de Roland Barthes.<a href="#fnref20" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn21" role="doc-endnote"><p>C\u2019est ce qu\u2019avaient notamment tent\xe9 les r\xe9volutionnaires Russes au d\xe9but du 20\xe8 si\xe8cle \xe0 travers la cr\xe9ation du Proletkult.<a href="#fnref21" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn22" role="doc-endnote"><p>Les femmes, bien s\xfbr, devraient encore attendre.<a href="#fnref22" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn23" role="doc-endnote"><p>Voir <em>L\'\xc9lite artiste</em> de Nathalie Heinich.<a href="#fnref23" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn24" role="doc-endnote"><p>Voir le livre <em>L\'amour de l\'art</em>. de Pierre Bourdieu, Alain Darbel, et Dominique Schnapper.<a href="#fnref24" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn25" role="doc-endnote"><p>Depuis les ann\xe9es 60, avec notamment l\u2019influence du mouvement Fluxus, il existe de nombreuses \u0153uvres d\u2019art \u201cparticipatives\u201d qui tentent justement de r\xe9duire cette distance avec le public. Premi\xe8rement, on pourrait souligner le fait que si ces \u0153uvres incluent les spectateurs c\u2019est souvent sous une forme autoritaire, dans le cadre d\u2019interactions rigides r\xe9gies par l\u2019artiste. Deuxi\xe8mement, la mise \xe0 distance entre les \u0153uvres et le public reste aujourd\u2019hui la norme.<a href="#fnref25" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn26" role="doc-endnote"><p>Voir <em>L\'art impossible</em> de Geoffroy de Lagasnerie<em>.</em><br />\n<a href="#fnref26" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn27" role="doc-endnote"><p>Dans un rapport titr\xe9 <em>L\u2019enseignement sup\xe9rieur en arts plastiques</em> (lien dans les r\xe9f\xe9rences), la cour des comptes \xe9pingle le manque de diversit\xe9 sociale des \xe9c
2oles d\'art fran\xe7aises.<a href="#fnref27" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn28" role="doc-endnote"><p>Le livre <em>Empire </em>Michael Hardt and Antonio Negri fournit une analyse de la mont\xe9e en puissance de l\'id\xe9ologie individualiste caract\xe9ristique du r\xe9gime post-fordiste de la deuxi\xe8me moiti\xe9 du 20\xe8 si\xe8cle.<a href="#fnref28" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn29" role="doc-endnote"><p>Voir <em>The rise of the creative class</em> de Richard Florida pour une analyse (non-critique) de l\'\xe9conomie cr\xe9ative et de son influence sur la l\xe9gislation du travail et la politique des villes<em>.</em><br />\n<a href="#fnref29" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn30" role="doc-endnote"><p>Voir <em>Adam Curtis on the Dangers of Self-Expression</em>, une interview du r\xe9alisateur Adam Curtis dans the Creative Independent, dans laquelle il d\xe9clare provocativement que le monde de l\'art est responsable de l\'\xe9l\xe9ction de Donald Trump en 2016.<a href="#fnref30" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn31" role="doc-endnote"><p>\u201cthere\'s no such thing as society\u201d, citation c\xe9l\xe8bre de Margaret Thatcher, dans un interview donn\xe9e en 1987.<a href="#fnref31" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn32" role="doc-endnote"><p>Voir les livres <em>Do what you love</em> de Miya Tokumitsu ou <em>Be creative: Making a living in the new culture industries</em> de Angela McRobbie.<a href="#fnref32" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn33" role="doc-endnote"><p>Voir les articles <em>Meat, Mask, Burden: Probing the contours of the brandedself</em> de Alison Hearn ; <em>Passionate work? Labour conditions in the Milan fashion industry</em> de Adam Arvidsson ou <em>In the social factory?</em> de Rosalind Gill et Andy Pratt.<a href="#fnref33" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n<li id="fn34" role="doc-endnote"><p>Un outil parmi d\u2019autres, et on pourrait notamment citer le r\xf4le similaire de la psychologie occidentale dans l\u2019individuation des maux sociaux.<a href="#fnref34" class="footnote-back" role="doc-backlink">\u21a9\ufe0e</a></p></li>\n</ol>\n</section>\n'}[e.url]})}));function Mn(){var e=function(){var e=pe(K).match;return e?e.params:{}}().slug,n=In.filter((function(t){return t.url.split("/").slice(-1)[0]===e}));if(n.length<1)return"Blog post not found";var r=n[0];return t().createElement(ln,{className:"BlogPost"},t().createElement(un,{text:r.title}),t().createElement("div",{className:"BlogPost__publish_date"},"Publication date : ",r.date),t().createElement("div",{className:"BlogPost__content",dangerouslySetInnerHTML:{__html:r.htmlStr}}))}function Ln(){return t().createElement(ln,null,t().createElement(un,{text:"racolage.xxx"}),t().createElement("p",null,t().createElement("a",{href:"http://racolage.xxx"},"racolage.xxx")," is a record label that releases experimental music through spam."),t().createElement("p",null,"During its more than 2 years of existence, racolage.xxx has so far released 26 singles and produced 4 live shows. It has diffused music using different spamming techniques such as email, tinder, porn streaming, Chaturbate, YouTube phishing, gig economy platforms, academia.edu and porn ad networks."),t().createElement("p",null,"racolage.xxx represents the culture of blatant self-promotion prevalent in music and the arts. It is the parody (except it is real) of a small cultural organization that desperately fights online, in an increasingly tense attention economy, where visibility is getting scarcer."),t().createElement("p",null,"Anything goes to steal a small audience share."),t().createElement("h2",null,"Press"),t().createElement("ul",null,t().createElement("li",null,t().createElement("a",{href:"https://www.letagparfait.com/fr/2018/06/19/porno-noise-et-branlr-room-racolage-xxx-le-label-qui-vous-spam/"},'Interview (in French) in "Le Tag Parfait", a French magazine about porn culture.')),t().createElement("li",null,t().createElement("a",{href:"https://medium.com/@jamesthornhill_80725/shadow-sounds-eba5bbc589cd"},"Article about racolage.xxx by James Thornhill, originally published in Notion Magazine.")),t().createElement("li",null,t().createElement("a",{href:"https://www.traxmag.com/ce-label-a-eu-une-idee-geniale-et-incongrue-promouvoir-sa-musique-sur-des-sites-porno-et-sur-tinder/"},"Interview (in French) in Trax Magazine."))),t().createElement("h2",null,"Gallery"),t().createElement(pn,{src:"/images/projects/racolagexxx-5.png"}),t().createElement(pn,{src:"/images/projects/racolagexxx-6.jpg"}),t().createElement(pn,{src:"/images/projects/racolagexxx-7.jpg"}),t().createElement(pn,{src:"/images/projects/racolagexxx-8.jpg"}),t().createElement(pn,{src:"/images/projects/racolagexxx-9.jpg"}),t().createElement(pn,{src:"/images/projects/racolagexxx-10.jpg"}),t().createElement("h2",null,"Links"),t().createElement("ul",null,t().createElement("li",null,t().createElement("a",{href:"https://racolage.xxx"},"racolage.xxx website")),t().createElement("li",null,t().createElement("a",{href:"https://www.facebook.com/racolage"},"Facebook page")),t().createElement("li",null,t().createElement("a",{href:"https://www.facebook.com/jane.racolage.1"},"Jane Racolage, the fictitious founder of the label"))))}function Nn(){return t().createElement(ln,null,t().createElement(un,{text:"HYPEREXISTENCE (work in progress)"}),t().createElement("p",null,"Environmental destruction, absurd levels of inequality, growing cynicism and a feeling of powerlessness characterize the state of \u201clate c
2apitalism\u201d we are living in today. The very possibility of collective action is asphyxiatied by the dominant globalized culture of the West, which holds an entrenched belief in the omnipotence of the individual."),t().createElement("p",null,"HYPEREXISTENCE is a web essay about this impasse. It articulates the impossibility of participating in contemporary society without taking part in the prevailing culture of individualism. It documents this culture, which manifests itself through the ubiquity of self-expression, through the careful self-branding of public persona, and through the ruthless instrumentalization of others for the acquisition of reputation."),t().createElement("h2",null,"Links"),t().createElement("ul",null,t().createElement("li",null,t().createElement("a",{href:"https://hyperexistence.me"},"HYPEREXISTENCE Website"))))}var Fn=JSON.parse('[{"name":"Six Years In The Third Space","description":"An online publication made in 3D (with WebGL) for the Third Space art collective","url":"https://6yearsinthe3rdspace.com/","video":"screencast.webm","bgColor":"#aaa","role":"Design and frontend development","technologies":["JavaScript","WebGL","Three.js","Shaders","Web Components"]},{"name":"ORE Installations \xc9lectriques","description":"An interactive map for the French organisation of energy networks","url":"https://dataviz.agenceore.fr/production-elec-par-territoire/","video":"screencast.webm","bgColor":"#aaa","role":"Frontend development","technologies":["TypeScript","React","D3.js"]},{"name":"Barometre Un\xe9dic","description":"An interactive data visualization for the French unemployment agency.","url":"https://www.unedic.org/publications/barometre-unedic-quel-regard-les-francais-portent-ils-sur-le-chomage-et-les-chomeurs","video":"screencast.webm","bgColor":"#aaa","role":"Frontend development","technologies":["TypeScript","React","D3.js"]},{"name":"Whojam","description":"A website that enabled musicians around the world to create songs collaboratively.","bgColor":"#aaa","role":"Web audio development","technologies":["Angular.js","Web Audio"]},{"name":"Issy Je Trie","description":"A web app to help citizens of the French city of Issy-les-Moulineaux to recycle.","url":"https://trier.issy.com/","video":"screencast.webm","bgColor":"#ddd","role":"Frontend development","technologies":["React","leaflet"]},{"name":"Totem","description":"A brand generator for a promotion campaign of Finnish marketing agency Hasan & Partners.","bgColor":"#eee","role":"Frontend development","technologies":["React","canvas"]},{"name":"Passio Musicae","description":"A sound installation at Ateneum, Finnish national museum. The web page reacts live to visitors\' actions in the museum.","bgColor":"white","role":"Frontend development","technologies":["JavaScript","canvas"]},{"name":"AFD / Karama","description":"An online photo exhibition funded by the French Development Agency.","url":"https://expo-minka-moyen-orient.afd.fr/","video":"screencast.webm","bgColor":"white","role":"Frontend development","technologies":["JavaScript"]}]');function Dn(){var e=Fn.filter((function(e){return e.video})).map((function(e){return t().createElement("div",{className:"WebdevPortfolio__container",key:e.name},t().createElement("h2",null,e.name),t().createElement("div",{className:"WebdevPortfolio__info"},t().createElement("div",{className:"WebdevPortfolio__role"},e.role),t().createElement("div",null,e.technologies.map((function(e){return t().createElement("span",{className:"WebdevPortfolio__tech"},e)}))),t().createElement("div",{className:"WebdevPortfolio__description"},e.description)),t().createElement("video",{src:"".concat((n=e.name,n=n.replace("/","_"),"media/".concat(n)),"/").concat(e.video),autoPlay:!0,loop:!0}));var n}));return t().createElement(ln,{className:"WebdevPortfolio"},t().createElement(un,{text:"Freelance web dev portfolio"}),t().createElement("div",null,e))}var zn=On.map((function(e,t){return xn(xn({},e),{},{timestamp:Zt(e.date),type:{"blog-post":"blog post",academic:"academic article",essay:"essay"}[e.type]})}));function Rn(){var e=zn.map((function(e,n){return t().createElement("li",{key:n},t().createElement("span",{className:"Articles__date"},e.date),e.externalUrl?t().createElement("a",{href:e.externalUrl,target:"_blank",rel:"noreferrer noopener"},t().createElement("span",{className:"Articles__name"},e.title)):t().createElement(rn,{href:e.url},t().createElement("span",{className:"Articles__name"},e.title)),t().createElement("div",{className:"Articles__info"},e.type))}));return t().createElement(ln,{className:"Articles"},t().createElement(un,{text:"Publications"}),t().createElement("ul",null,e))}zn=Tn()(zn,(function(e){return-e.timestamp}));function Wn(e){return t().createElement("div",{className:"Tile TileArticles"},t().createElement("div",{className:"Tile__header"},t().createElement("span",null,"Publications")),t().createElement("div",{className:"Tile__body"},zn.slice(0,4).map((function(e,n){var r=e.abstract?t().createElement("span",{className:"TileArticles__abstract"},function(e,t){var n=t;if(e.length<t)return e;for(;" "!==e[n]&&n>0;)n--;return e.slice(0,n)+(n>0?" ...":"")}(e.abstract,130)):null;return t().createElement("div",{className:"TileArticles__entry",key:e.title},e.externalUrl?t().createElement("a",{href:e.externalUrl,target:"_blank",rel:"noreferrer noopener"},t().createElement("span",null,e.title),r):t().createElement(rn,{href:e.url},t().createElement("span",null,e.title),r))}))),t().createElement("div",{key:"footer",className:"Tile__footer"},t().createElement(rn,{href:"/articles/"},t().createElement("span",null,"+ MORE"))))}function Un(){var e=t().createElement(t().Fragment,null,t().createElement(Wn,null),t().createElement(on,null));return t().createElement(nn,{heroChildren:e},t().createElement(an,{header:"WebPd",activityType:"code",date:"2012-now",url:"/webpd",preview:"A compiler for the Pure Data audio programming language allowing to run .pd patches in web pages."}),t().createElement(an,{header:"racolage.xxx",activityType:"project",date:"2017-2020",url:"/racolagexxx",preview:"A record label that releases experimental music through spam email, porn streaming sites, tinder, and other spammy release channels..."}),t().createElement(an,{header:"Freedom Portal",activityType:"project",date:"2016-2017",url:"/freedom-portal",preview:"A platform to organize unauthorized shows in the public space, hosted on Wi-Fi networks."}),t().createElement(an,{header:"Murmurate",activityType:"project",date:"2014-2016",url:"/murmurate",preview:"A networked system exploring new areas of musical performance and audience participation through the use of mobile technology as a medium for sound diffusion."}),t().createElement(an,{header:"hyperexistence",activityType:"project",date:"2020-now",url:"/hyperexistence",preview:"(Work In Progress). A web essay on individualism in late capitalist society."}),t().createElement(an,{header:"La Jet\xe9e (movie-concert)",activityType:"project",date:"2016",url:"/la-jetee",preview:"A re-score of short film La Jet\xe9e by Chris Marker, in a performance that explores digital mobile technology and hyperlocal networks for surround sound diffusion."}),t().createElement(an,{header:"Possessed Rooms",activityType:"project",date:"2016",url:"/possessed-rooms",preview:"A series of parasitic performances happening in public computer rooms."}),t().createElement(an,{header:"New Weave",activityType:"project",date:"2015",url:"/new-weave",preview:"An experimental sound performance where the performers improvise with small audio snippets recorded and sent live by audience members with their smartphones."}))}var Bn=function(){return t().createElement("div",{className:"App"},t().createElement(zt,{handleWidth:!0,handleHeight:!0},t().createElement(en,null)),t().createElement(fe,null,t().createElement(ce,null,t().createElement(ae,{path:"/",exact:!0,component:Un}),t().createElement(ae,{path:"/freedom-portal/",component:dn}),t().createElement(ae,{path:"/racolagexxx/",component:Ln}
2),t().createElement(ae,{path:"/hyperexistence/",component:Nn}),t().createElement(ae,{path:"/la-jetee/",component:fn}),t().createElement(ae,{path:"/murmurate/",component:hn}),t().createElement(ae,{path:"/new-weave/",component:vn}),t().createElement(ae,{path:"/pure-data-and-raspberry-pi-workshops/",component:gn}),t().createElement(ae,{path:"/webpd/",component:bn}),t().createElement(ae,{path:"/possessed-rooms/",component:yn}),t().createElement(ae,{path:"/brag/",component:jn}),t().createElement(ae,{path:"/webdev-portfolio",component:Dn}),t().createElement(ae,{path:"/articles/:slug",component:Mn}),t().createElement(ae,{path:"/articles/",component:Rn}),t().createElement(ee,{from:"/*",to:"/"}),t().createElement(ae,{component:Un}))))};Boolean("localhost"===window.location.hostname||"[::1]"===window.location.hostname||window.location.hostname.match(/^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/));a().render(t().createElement(Bn,null),document.getElementById("root")),"serviceWorker"in navigator&&navigator.serviceWorker.ready.then((function(e){e.unregister()}))}()}();
3//# sourceMappingURL=main.791c6ce3.js.map

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.