/* CindyJS - (C) 2014-2016 The CindyJS Project * Mostly licensed under the Apache License 2.0, but subprojects may use different licensing. * See https://github.com/CindyJS/CindyJS/tree/8c01b8d1d336e92934ad80c44aafc5510a1aea36 * for corresponding sources and their respective licensing conditions. */ var enableInlineVideo=function(){function p(f,k,p,E){function F(p){ia=k(F,E);f(p-(N||p));N=p}var ia,N;return{start:function(){ia||F(0)},stop:function(){p(ia);ia=null;N=0}}}function F(f,k,p,E){function F(k){!!f[p]===!!E&&k.stopImmediatePropagation();delete f[p]}return f.addEventListener(k,F,!1),F}function ha(f,k,p,E){function F(f){p[k]=f}E&&F(f[k]);Object.defineProperty(f,k,{get:function(){return p[k]},set:F})}function Ga(f,k,p){p.addEventListener(k,function(){return f.dispatchEvent(new Event(k))})} function pa(f,k){Promise.resolve().then(function(){f.dispatchEvent(new Event(k))})}function Ha(f){var k=new Audio;return Ga(f,"play",k),Ga(f,"playing",k),Ga(f,"pause",k),k.crossOrigin=f.crossOrigin,k.src=f.src||f.currentSrc||"data:",k}function ea(k,p,E){(N||0)+200=this.video.HAVE_FUTURE_DATA?(this.hasAudio||(this.driver.currentTime=this.video.currentTime+f*this.video.playbackRate/1E3,this.video.loop&& this.driver.currentTime>=this.video.duration&&(this.driver.currentTime=0)),ea(this.video,this.driver.currentTime)):this.video.networkState===this.video.NETWORK_IDLE&&0===this.video.buffered.length&&this.video.load();this.video.ended&&(delete this.video[fa],this.video.pause(!0))}function Qa(){var f=this[S];return this.webkitDisplayingFullscreen?void this[ub]():("data:"!==f.driver.src&&f.driver.src!==this.src&&(ea(this,0,!0),f.driver.src=this.src),void(this.paused&&(f.paused=!1,0===this.buffered.length&& this.load(),f.driver.play(),f.updater.start(),f.hasAudio||(pa(this,"play"),f.video.readyState>=f.video.HAVE_ENOUGH_DATA&&pa(this,"playing")))))}function E(f){var k=this[S];k.driver.pause();k.updater.stop();this.webkitDisplayingFullscreen&&this[$a]();k.paused&&!f||(k.paused=!0,k.hasAudio||pa(this,"pause"),this.ended&&(this[fa]=!0,pa(this,"ended")))}function ia(E,F){var M=E[S]={};M.paused=!0;M.hasAudio=F;M.video=E;M.updater=p(k.bind(M),requestAnimationFrame,cancelAnimationFrame);F?M.driver=Ha(E):(E.addEventListener("canplay", function(){E.paused||pa(E,"playing")}),M.driver={src:E.src||E.currentSrc||"data:",muted:!0,paused:!0,pause:function(){M.driver.paused=!0},play:function(){M.driver.paused=!1;M.driver.currentTime>=M.video.duration&&ea(E,0)},get ended(){return M.driver.currentTime>=M.video.duration}});E.addEventListener("emptied",function(){var f=!M.driver.src||"data:"===M.driver.src;M.driver.src&&M.driver.src!==E.src&&(ea(E,0,!0),M.driver.src=E.src,f?M.driver.play():M.updater.stop())},!1);E.addEventListener("webkitbeginfullscreen", function(){E.paused?F&&0===M.driver.buffered.length&&M.driver.load():(E.pause(),E[ub]())});F&&(E.addEventListener("webkitendfullscreen",function(){M.driver.currentTime=E.currentTime}),E.addEventListener("seeking",function(){0>f.indexOf(100*E.currentTime|0)&&(M.driver.currentTime=E.currentTime)}))}var N,V="object"==typeof document&&"object-fit"in document.head.style&&!matchMedia("(-webkit-video-playable-inline)").matches,S="bfred-it:iphone-inline-video",fa="bfred-it:iphone-inline-video:event",ub="bfred-it:iphone-inline-video:nativeplay", $a="bfred-it:iphone-inline-video:nativepause",f=[],tb=0;return function(f,k){if(void 0===k&&(k={}),!f[S])if(k.everywhere||V&&(k.iPad||k.ipad?/iPhone|iPod|iPad/:/iPhone|iPod/).test(navigator.userAgent)){!f.paused&&f.webkitDisplayingFullscreen&&f.pause();ia(f,!f.muted);var p=f[S];f[ub]=f.play;f[$a]=f.pause;f.play=Qa;f.pause=E;ha(f,"paused",p.driver);ha(f,"muted",p.driver,!0);ha(f,"playbackRate",p.driver,!0);ha(f,"ended",p.driver);ha(f,"loop",p.driver,!0);F(f,"seeking");F(f,"seeked");F(f,"timeupdate", fa,!1);F(f,"ended",fa,!1);f.classList.add("IIV");f.muted&&f.autoplay&&f.play();/iPhone|iPod|iPad/.test(navigator.platform)||console.warn("iphone-inline-video is not guaranteed to work in emulated environments")}}}(); (function(){function p(b,d,e){f.biginteger_used=1;null!=b&&("number"==typeof b&&"undefined"==typeof d?this.fromInt(b):"number"==typeof b?this.fromNumber(b,d,e):null==d&&"string"!=typeof b?this.fromString(b,256):this.fromString(b,d))}function F(){return new p(null,void 0,void 0)}function ha(b,d,e,r,f,k){for(;0<=--k;){var u=d*this[b++]+e[r]+f;f=Math.floor(u/67108864);e[r++]=u&67108863}return f}function Ga(b,d,e,r,f,k){var u=d&32767;for(d>>=15;0<=--k;){var C=this[b]&32767,p=this[b++]>>15,E=d*C+p*u,C= u*C+((E&32767)<<15)+e[r]+(f&1073741823);f=(C>>>30)+(E>>>15)+d*p+(f>>>30);e[r++]=C&1073741823}return f}function pa(b,d,e,r,f,k){var u=d&16383;for(d>>=14;0<=--k;){var C=this[b]&16383,p=this[b++]>>14,E=d*C+p*u,C=u*C+((E&16383)<<14)+e[r]+f;f=(C>>28)+(E>>14)+d*p;e[r++]=C&268435455}return f}function Ha(b,d){var e=gb[b.charCodeAt(d)];return null==e?-1:e}function ea(b){var d=F();d.fromInt(b);return d}function k(b){var d=1,e;0!=(e=b>>>16)&&(b=e,d+=16);0!=(e=b>>8)&&(b=e,d+=8);0!=(e=b>>4)&&(b=e,d+=4);0!=(e= b>>2)&&(b=e,d+=2);0!=b>>1&&(d+=1);return d}function Qa(b){this.m=b}function E(b){this.m=b;this.mp=b.invDigit();this.mpl=this.mp&32767;this.mph=this.mp>>15;this.um=(1<= ua;++ua)gb[Y++]=ua;Y=97;for(ua=10;36>ua;++ua)gb[Y++]=ua;Y=65;for(ua=10;36>ua;++ua)gb[Y++]=ua;Qa.prototype.convert=function(b){return 0>b.s||0<=b.compareTo(this.m)?b.mod(this.m):b};Qa.prototype.revert=function(b){return b};Qa.prototype.reduce=function(b){b.divRemTo(this.m,null,b)};Qa.prototype.mulTo=function(b,d,e){b.multiplyTo(d,e);this.reduce(e)};Qa.prototype.sqrTo=function(b,d){b.squareTo(d);this.reduce(d)};E.prototype.convert=function(b){var d=F();b.abs().dlShiftTo(this.m.t,d);d.divRemTo(this.m, null,d);0>b.s&&0>15)*this.mpl&this.um)<<15)&b.DM,e=d+this.m.t;for(b[e]+=this.m.am(0,r,b,d,0,this.m.t);b[e]>=b.DV;)b[e]-=b.DV,b[++e]++}b.clamp();b.drShiftTo(this.m.t,b);0<=b.compareTo(this.m)&&b.subTo(this.m,b)};E.prototype.mulTo=function(b, d,e){b.multiplyTo(d,e);this.reduce(e)};E.prototype.sqrTo=function(b,d){b.squareTo(d);this.reduce(d)};p.prototype.copyTo=function(b){for(var d=this.t-1;0<=d;--d)b[d]=this[d];b.t=this.t;b.s=this.s};p.prototype.fromInt=function(b){this.t=1;this.s=0>b?-1:0;0b?this[0]=b+this.DV:this.t=0};p.prototype.fromString=function(b,d){var e;if(16==d)e=4;else if(8==d)e=3;else if(256==d)e=8;else if(2==d)e=1;else if(32==d)e=5;else if(4==d)e=2;else{this.fromRadix(b,d);return}this.s=this.t=0;for(var r= b.length,f=!1,k=0;0<=--r;){var u=8==e?b[r]&255:Ha(b,r);0>u?"-"==b.charAt(r)&&(f=!0):(f=!1,0==k?this[this.t++]=u:k+e>this.DB?(this[this.t-1]|=(u&(1<>this.DB-k):this[this.t-1]|=u<=this.DB&&(k-=this.DB))}8==e&&0!=(b[0]&128)&&(this.s=-1,0>r|u,u=(this[C]&f)<=this.t)d.t=0;else{var r=b%this.DB,f=this.DB-r,k=(1<>r;for(var u=e+1;u>r;0>=this.DB;if(b.t>=this.DB;f+=this.s}else{for(f+=this.s;e>=this.DB; f-=b.s}d.s=0>f?-1:0;-1>f?d[e++]=this.DV+f:0=d.DV&&(b[e+d.t]-=d.DV,b[e+d.t+1]=1)}0=f.t)){var n=this.abs();if(n.t>this.F2:0),ab=this.FV/E,E=(1<u&&p.ZERO.subTo(e,e)}}}};p.prototype.invDigit=function(){if(1>this.t)return 0;var b=this[0];if(0==(b&1))return 0;var d=b&3,d=d*(2-(b&15)*d)&15,d=d*(2-(b&255)*d)&255,d=d*(2-((b& 65535)*d&65535))&65535,d=d*(2-b*d%this.DV)%this.DV;return 0b)return p.ONE;var e=F(),f=F(),n=d.convert(this),I=k(b)-1;for(n.copyTo(e);0<=--I;)if(d.sqrTo(e,f),0<(b&1<this.s)return"-"+this.negate().toString(b);if(16==b)b=4;else if(8==b)b=3;else if(2==b)b=1;else if(32==b)b= 5;else if(4==b)b=2;else return this.toRadix(b);var d=(1<>u)&&(f=!0,n="0123456789abcdefghijklmnopqrstuvwxyz".charAt(e));0<=k;)u>(u+=this.DB-b)):(e=this[k]>>(u-=b)&d,0>=u&&(u+=this.DB,--k)),0 this.s?this.negate():this};p.prototype.compareTo=function(b){var d=this.s-b.s;if(0!=d)return d;var e=this.t,d=e-b.t;if(0!=d)return 0>this.s?-d:d;for(;0<=--e;)if(0!=(d=this[e]-b[e]))return d;return 0};p.prototype.bitLength=function(){return 0>=this.t?0:this.DB*(this.t-1)+k(this[this.t-1]^this.s&this.DM)};p.prototype.mod=function(b){var d=F();this.abs().divRemTo(b,null,d);0>this.s&&0b||d.isEven()?new Qa(d): new E(d);return this.exp(b,e)};p.ZERO=ea(0);p.ONE=ea(1);fa.prototype.convert=ub;fa.prototype.revert=ub;fa.prototype.mulTo=function(b,d,e){b.multiplyTo(d,e)};fa.prototype.sqrTo=function(b,d){b.squareTo(d)};$a.prototype.convert=function(b){if(0>b.s||b.t>2*this.m.t)return b.mod(this.m);if(0>b.compareTo(this.m))return b;var d=F();b.copyTo(d);this.reduce(d);return d};$a.prototype.revert=function(b){return b};$a.prototype.reduce=function(b){b.drShiftTo(this.m.t-1,this.r2);b.t>this.m.t+1&&(b.t=this.m.t+ 1,b.clamp());this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3);for(this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);0>b.compareTo(this.r2);)b.dAddOffset(1,this.m.t+1);for(b.subTo(this.r2,b);0<=b.compareTo(this.m);)b.subTo(this.m,b)};$a.prototype.mulTo=function(b,d,e){b.multiplyTo(d,e);this.reduce(e)};$a.prototype.sqrTo=function(b,d){b.squareTo(d);this.reduce(d)};var H=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167, 173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977, 983,991,997],ic=67108864/H[H.length-1];p.prototype.chunkSize=function(b){return Math.floor(Math.LN2*this.DB/Math.log(b))};p.prototype.toRadix=function(b){null==b&&(b=10);if(0==this.signum()||2>b||36E?"-"==b.charAt(C)&&0==this.signum()&&(n=!0):(u=d*u+E,++k>=e&&(this.dMultiply(f),this.dAddOffset(u,0),u=k=0))}0b)this.fromInt(1);else for(this.fromNumber(b,e),this.testBit(b-1)||this.bitwiseTo(p.ONE.shiftLeft(b-1),N,this),this.isEven()&&this.dAddOffset(1,0);!this.isProbablePrime(d);)this.dAddOffset(2, 0),this.bitLength()>b&&this.subTo(p.ONE.shiftLeft(b-1),this);else{e=[];var f=b&7;e.length=(b>>3)+1;d.nextBytes(e);e[0]=0>=this.DB;if(b.t>=this.DB;f+=this.s}else{for(f+=this.s;e>=this.DB;f+=b.s}d.s=0>f?-1:0;0f&&(d[e++]=this.DV+f);d.t=e;d.clamp()};p.prototype.dMultiply=function(b){this[this.t]=this.am(0,b-1,this,0,0,this.t);++this.t;this.clamp()};p.prototype.dAddOffset= function(b,d){if(0!=b){for(;this.t<=d;)this[this.t++]=0;for(this[d]+=b;this[d]>=this.DV;)this[d]-=this.DV,++d>=this.t&&(this[this.t++]=0),++this[d]}};p.prototype.multiplyLowerTo=function(b,d,e){var f=Math.min(this.t+b.t,d);e.s=0;for(e.t=f;0=b)return 0;var d=this.DV%b,e=0>this.s?b-1:0;if(0=e)return!1;var f=d.shiftRight(e);b=b+1>>1;b>H.length&&(b=H.length);for(var n=F(),k=0;kthis.s){if(1==this.t)return this[0]-this.DV;if(0==this.t)return-1}else{if(1==this.t)return this[0];if(0==this.t)return 0}return(this[1]&(1<<32-this.DB)-1)<>24};p.prototype.shortValue=function(){return 0==this.t?this.s:this[0]<<16>>16};p.prototype.signum=function(){return 0>this.s?-1:0>=this.t||1==this.t&&0>=this[0]?0:1};p.prototype.toByteArray=function(){var b=this.t,d=[];d[0]=this.s;var e=this.DB-b*this.DB%8,f,n=0;if(0>e)!=(this.s&this.DM)>>e&&(d[n++]=f|this.s<e?(f=(this[b]&(1<>(e+=this.DB-8)):(f=this[b]>>(e-=8)&255,0>=e&&(e+=this.DB,--b)),0!=(f& 128)&&(f|=-256),0==n&&(this.s&128)!=(f&128)&&++n,0this.compareTo(b)?this:b};p.prototype.max=function(b){return 0b?this.rShiftTo(-b,d):this.lShiftTo(b,d);return d};p.prototype.shiftRight=function(b){var d=F();0>b?this.lShiftTo(-b,d):this.rShiftTo(b,d);return d};p.prototype.getLowestSetBit=function(){for(var b=0;b>=16,e+=16); 0==(b&255)&&(b>>=8,e+=8);0==(b&15)&&(b>>=4,e+=4);0==(b&3)&&(b>>=2,e+=2);0==(b&1)&&++e;b=e}return d+b}return 0>this.s?this.t*this.DB:-1};p.prototype.bitCount=function(){for(var b=0,d=this.s&this.DM,e=0;e=this.t?0!=this.s:0!=(this[d]&1<=e)return n;f=18>e?1:48>e?3:144>e?4:768>e?5:6;I=8>e?new Qa(d):d.isEven()?new $a(d):new E(d);var u=[],C=3,p=f-1,ab=(1<=p?N=b[H]>>e-p&ab:(N=(b[H]&(1<>this.DB+e-p));for(C=f;0==(N&1);)N>>=1,--C;0>(e-=C)&&(e+=this.DB,--H);if(ia)u[N].copyTo(n), ia=!1;else{for(;1--e&&(e=this.DB-1,--H)}return I.revert(n)};p.prototype.modInverse=function(b){var d=b.isEven();if(this.isEven()&&d||0==b.signum())return p.ZERO;for(var e=b.clone(),f=this.clone(),n=ea(1),k=ea(0),u=ea(0),C=ea(1);0!=e.signum();){for(;e.isEven();)e.rShiftTo(1,e),d?(n.isEven()&&k.isEven()||(n.addTo(this,n),k.subTo(b,k)),n.rShiftTo(1,n)):k.isEven()|| k.subTo(b,k),k.rShiftTo(1,k);for(;f.isEven();)f.rShiftTo(1,f),d?(u.isEven()&&C.isEven()||(u.addTo(this,u),C.subTo(b,C)),u.rShiftTo(1,u)):C.isEven()||C.subTo(b,C),C.rShiftTo(1,C);0<=e.compareTo(f)?(e.subTo(f,e),d&&n.subTo(u,n),k.subTo(C,k)):(f.subTo(e,f),d&&u.subTo(n,u),C.subTo(k,C))}if(0!=f.compareTo(p.ONE))return p.ZERO;if(0<=C.compareTo(b))return C.subtract(b);if(0>C.signum())C.addTo(b,C);else return C;return 0>C.signum()?C.add(b):C};p.prototype.pow=function(b){return this.exp(b,new fa)};p.prototype.gcd= function(b){var d=0>this.s?this.negate():this.clone();b=0>b.s?b.negate():b.clone();if(0>d.compareTo(b)){var e=d,d=b;b=e}var e=d.getLowestSetBit(),f=b.getLowestSetBit();if(0>f)return d;eb.compareTo(d)?!0:!1};p.op_Addition=function(b,d){return(new p(b)).add(new p(d))};p.op_Subtraction=function(b,d){return(new p(b)).subtract(new p(d))};p.Int128Mul=function(b,d){return(new p(b)).multiply(new p(d))};p.op_Division=function(b,d){return b.divide(d)};p.prototype.ToDouble=function(){return parseFloat(this.toString())};Y=function(b,d){var e;if("undefined"==typeof Object.getOwnPropertyNames)for(e in d.prototype){if("undefined"== typeof b.prototype[e]||b.prototype[e]==Object.prototype[e])b.prototype[e]=d.prototype[e]}else for(var f=Object.getOwnPropertyNames(d.prototype),n=0;nb||2147483647b?Math.ceil(b):Math.floor(b):~~b}:Sb&&"function"==typeof Number.toInteger?function(b){return Number.toInteger(b)}: Cb||fb?function(b){return parseInt(b,10)}:ba?function(b){return-2147483648>b||2147483647b?Math.ceil(b):Math.floor(b):b|0}:function(b){return 0>b?Math.ceil(b):Math.floor(b)};f.Clear=function(b){b.length=0};f.PI=3.141592653589793;f.PI2=6.283185307179586;f.IntPoint=function(){var b=arguments,d=b.length;this.Y=this.X=0;f.use_xyz?(this.Z=0,3==d?(this.X=b[0],this.Y=b[1],this.Z=b[2]):2==d?(this.X=b[0],this.Y=b[1],this.Z=0):1==d?b[0]instanceof f.DoublePoint?(b=b[0],this.X=f.Clipper.Round(b.X),this.Y= f.Clipper.Round(b.Y),this.Z=0):(b=b[0],"undefined"==typeof b.Z&&(b.Z=0),this.X=b.X,this.Y=b.Y,this.Z=b.Z):this.Z=this.Y=this.X=0):2==d?(this.X=b[0],this.Y=b[1]):1==d?b[0]instanceof f.DoublePoint?(b=b[0],this.X=f.Clipper.Round(b.X),this.Y=f.Clipper.Round(b.Y)):(b=b[0],this.X=b.X,this.Y=b.Y):this.Y=this.X=0};f.IntPoint.op_Equality=function(b,d){return b.X==d.X&&b.Y==d.Y};f.IntPoint.op_Inequality=function(b,d){return b.X!=d.X||b.Y!=d.Y};f.use_xyz?(f.IntPoint0=function(){this.Z=this.Y=this.X=0},f.IntPoint1= function(b){this.X=b.X;this.Y=b.Y;this.Z=b.Z},f.IntPoint1dp=function(b){this.X=f.Clipper.Round(b.X);this.Y=f.Clipper.Round(b.Y);this.Z=0},f.IntPoint2=function(b,d){this.X=b;this.Y=d;this.Z=0},f.IntPoint3=function(b,d,e){this.X=b;this.Y=d;this.Z=e}):(f.IntPoint0=function(){this.Y=this.X=0},f.IntPoint1=function(b){this.X=b.X;this.Y=b.Y},f.IntPoint1dp=function(b){this.X=f.Clipper.Round(b.X);this.Y=f.Clipper.Round(b.Y)},f.IntPoint2=function(b,d){this.X=b;this.Y=d});f.IntRect=function(){var b=arguments, d=b.length;4==d?(this.left=b[0],this.top=b[1],this.right=b[2],this.bottom=b[3]):1==d?(this.left=b[0].left,this.top=b[0].top,this.right=b[0].right,this.bottom=b[0].bottom):this.bottom=this.right=this.top=this.left=0};f.IntRect0=function(){this.bottom=this.right=this.top=this.left=0};f.IntRect1=function(b){this.left=b.left;this.top=b.top;this.right=b.right;this.bottom=b.bottom};f.IntRect4=function(b,d,e,f){this.left=b;this.top=d;this.right=e;this.bottom=f};f.ClipType={ctIntersection:0,ctUnion:1,ctDifference:2, ctXor:3};f.PolyType={ptSubject:0,ptClip:1};f.PolyFillType={pftEvenOdd:0,pftNonZero:1,pftPositive:2,pftNegative:3};f.JoinType={jtSquare:0,jtRound:1,jtMiter:2};f.EndType={etOpenSquare:0,etOpenRound:1,etOpenButt:2,etClosedLine:3,etClosedPolygon:4};f.EdgeSide={esLeft:0,esRight:1};f.Direction={dRightToLeft:0,dLeftToRight:1};f.TEdge=function(){this.Bot=new f.IntPoint;this.Curr=new f.IntPoint;this.Top=new f.IntPoint;this.Delta=new f.IntPoint;this.Dx=0;this.PolyTyp=f.PolyType.ptSubject;this.Side=f.EdgeSide.esLeft; this.OutIdx=this.WindCnt2=this.WindCnt=this.WindDelta=0;this.PrevInSEL=this.NextInSEL=this.PrevInAEL=this.NextInAEL=this.NextInLML=this.Prev=this.Next=null};f.IntersectNode=function(){this.Edge2=this.Edge1=null;this.Pt=new f.IntPoint};f.MyIntersectNodeSort=function(){};f.MyIntersectNodeSort.Compare=function(b,d){var e=d.Pt.Y-b.Pt.Y;return 0e?-1:0};f.LocalMinima=function(){this.Y=0;this.Next=this.RightBound=this.LeftBound=null};f.Scanbeam=function(){this.Y=0;this.Next=null};f.OutRec=function(){this.Idx= 0;this.IsOpen=this.IsHole=!1;this.PolyNode=this.BottomPt=this.Pts=this.FirstLeft=null};f.OutPt=function(){this.Idx=0;this.Pt=new f.IntPoint;this.Prev=this.Next=null};f.Join=function(){this.OutPt2=this.OutPt1=null;this.OffPt=new f.IntPoint};f.ClipperBase=function(){this.m_CurrentLM=this.m_MinimaList=null;this.m_edges=[];this.PreserveCollinear=this.m_HasOpenPaths=this.m_UseFullRange=!1;this.m_CurrentLM=this.m_MinimaList=null;this.m_HasOpenPaths=this.m_UseFullRange=!1};f.ClipperBase.horizontal=-9007199254740992; f.ClipperBase.Skip=-2;f.ClipperBase.Unassigned=-1;f.ClipperBase.tolerance=1E-20;f.ClipperBase.loRange=47453132;f.ClipperBase.hiRange=0xfffffffffffff;f.ClipperBase.near_zero=function(b){return b>-f.ClipperBase.tolerance&&bd.X==b.Xd.Y==b.Yd.X==b.Xd.Y==b.Yf.ClipperBase.hiRange||b.Y>f.ClipperBase.hiRange||-b.X>f.ClipperBase.hiRange||-b.Y>f.ClipperBase.hiRange)&&f.Error("Coordinate outside allowed range in RangeTest().");else if(b.X>f.ClipperBase.loRange||b.Y>f.ClipperBase.loRange||-b.X>f.ClipperBase.loRange||-b.Y>f.ClipperBase.loRange)d.Value=!0,this.RangeTest(b,d)};f.ClipperBase.prototype.InitEdge= function(b,d,e,r){b.Next=d;b.Prev=e;b.Curr.X=r.X;b.Curr.Y=r.Y;f.use_xyz&&(b.Curr.Z=r.Z);b.OutIdx=-1};f.ClipperBase.prototype.InitEdge2=function(b,d){b.Curr.Y>=b.Next.Curr.Y?(b.Bot.X=b.Curr.X,b.Bot.Y=b.Curr.Y,f.use_xyz&&(b.Bot.Z=b.Curr.Z),b.Top.X=b.Next.Curr.X,b.Top.Y=b.Next.Curr.Y,f.use_xyz&&(b.Top.Z=b.Next.Curr.Z)):(b.Top.X=b.Curr.X,b.Top.Y=b.Curr.Y,f.use_xyz&&(b.Top.Z=b.Curr.Z),b.Bot.X=b.Next.Curr.X,b.Bot.Y=b.Next.Curr.Y,f.use_xyz&&(b.Bot.Z=b.Next.Curr.Z));this.SetDx(b);b.PolyTyp=d};f.ClipperBase.prototype.FindNextLocMin= function(b){for(var d;;){for(;f.IntPoint.op_Inequality(b.Bot,b.Prev.Bot)||f.IntPoint.op_Equality(b.Curr,b.Top);)b=b.Next;if(b.Dx!=f.ClipperBase.horizontal&&b.Prev.Dx!=f.ClipperBase.horizontal)break;for(;b.Prev.Dx==f.ClipperBase.horizontal;)b=b.Prev;for(d=b;b.Dx==f.ClipperBase.horizontal;)b=b.Next;if(b.Top.Y!=b.Prev.Bot.Y){d.Prev.Bot.Xr.Next.Top.X&&(r=n.Prev)}for(;b!=r;)b.NextInLML=b.Next,b.Dx==f.ClipperBase.horizontal&&b!=e&&b.Bot.X!=b.Prev.Top.X&&this.ReverseHorizontal(b),b=b.Next;b.Dx==f.ClipperBase.horizontal&&b!=e&&b.Bot.X!= b.Prev.Top.X&&this.ReverseHorizontal(b);r=r.Next}else{for(;r.Top.Y==r.Prev.Bot.Y&&r.Prev.OutIdx!=f.ClipperBase.Skip;)r=r.Prev;if(r.Dx==f.ClipperBase.horizontal&&r.Prev.OutIdx!=f.ClipperBase.Skip){for(n=r;n.Next.Dx==f.ClipperBase.horizontal;)n=n.Next;n.Next.Top.X==r.Prev.Top.X?d||(r=n.Next):n.Next.Top.X>r.Prev.Top.X&&(r=n.Next)}for(;b!=r;)b.NextInLML=b.Prev,b.Dx==f.ClipperBase.horizontal&&b!=e&&b.Bot.X!=b.Next.Top.X&&this.ReverseHorizontal(b),b=b.Prev;b.Dx==f.ClipperBase.horizontal&&b!=e&&b.Bot.X!= b.Next.Top.X&&this.ReverseHorizontal(b);r=r.Prev}return r};f.ClipperBase.prototype.AddPath=function(b,d,e){f.use_lines?e||d!=f.PolyType.ptClip||f.Error("AddPath: Open paths must be subject."):e||f.Error("AddPath: Open paths have been disabled.");var r=b.length-1;if(e)for(;0r||!e&&1>r)return!1;for(var n=[],k=0;k<=r;k++)n.push(new f.TEdge);var u=!0;n[1].Curr.X=b[1].X;n[1].Curr.Y=b[1].Y;f.use_xyz&&(n[1].Curr.Z= b[1].Z);var C={Value:this.m_UseFullRange};this.RangeTest(b[0],C);this.m_UseFullRange=C.Value;C.Value=this.m_UseFullRange;this.RangeTest(b[r],C);this.m_UseFullRange=C.Value;this.InitEdge(n[0],n[1],n[r],b[0]);this.InitEdge(n[r],n[0],n[r-1],b[r]);for(k=r-1;1<=k;--k)C.Value=this.m_UseFullRange,this.RangeTest(b[k],C),this.m_UseFullRange=C.Value,this.InitEdge(n[k],n[k+1],n[k-1],b[k]);for(k=b=r=n[0];;)if(b.Curr!=b.Next.Curr||!e&&b.Next==r){if(b.Prev==b.Next)break;else if(e&&f.ClipperBase.SlopesEqual(b.Prev.Curr, b.Curr,b.Next.Curr,this.m_UseFullRange)&&(!this.PreserveCollinear||!this.Pt2IsBetweenPt1AndPt3(b.Prev.Curr,b.Curr,b.Next.Curr))){b==r&&(r=b.Next);b=this.RemoveEdge(b);k=b=b.Prev;continue}b=b.Next;if(b==k||!e&&b.Next==r)break}else{if(b==b.Next)break;b==r&&(r=b.Next);k=b=this.RemoveEdge(b)}if(!e&&b==b.Next||e&&b.Prev==b.Next)return!1;e||(this.m_HasOpenPaths=!0,r.Prev.OutIdx=f.ClipperBase.Skip);b=r;do this.InitEdge2(b,d),b=b.Next,u&&b.Curr.Y!=r.Curr.Y&&(u=!1);while(b!=r);if(u){if(e)return!1;b.Prev.OutIdx= f.ClipperBase.Skip;b.Prev.Bot.Xb.X==d.X b.Y==d.Y=this.m_MinimaList.Y)b.Next=this.m_MinimaList,this.m_MinimaList=b;else{for(var d=this.m_MinimaList;null!== d.Next&&b.Ythis.m_Scanbeam.Y){var d=new f.Scanbeam;d.Y=b;d.Next=this.m_Scanbeam;this.m_Scanbeam=d}else{for(var e=this.m_Scanbeam;null!==e.Next&&b<=e.Next.Y;)e=e.Next;b!=e.Y&&(d=new f.Scanbeam,d.Y=b,d.Next=e.Next,e.Next=d)}};f.Clipper.prototype.Execute= function(){var b=arguments,d=b.length,e=b[1]instanceof f.PolyTree;if(4!=d||e){if(4==d&&e){var d=b[0],r=b[1],e=b[2],b=b[3];if(this.m_ExecuteLocked)return!1;this.m_ExecuteLocked=!0;this.m_SubjFillType=e;this.m_ClipFillType=b;this.m_ClipType=d;this.m_UsingPolyTree=!0;try{(n=this.ExecuteInternal())&&this.BuildResult2(r)}finally{this.DisposeAllPolyPts(),this.m_ExecuteLocked=!1}return n}if(2==d&&!e||2==d&&e)return d=b[0],r=b[1],this.Execute(d,r,f.PolyFillType.pftEvenOdd,f.PolyFillType.pftEvenOdd)}else{d= b[0];r=b[1];e=b[2];b=b[3];if(this.m_ExecuteLocked)return!1;this.m_HasOpenPaths&&f.Error("Error: PolyTree struct is need for open path clipping.");this.m_ExecuteLocked=!0;f.Clear(r);this.m_SubjFillType=e;this.m_ClipFillType=b;this.m_ClipType=d;this.m_UsingPolyTree=!1;try{var n=this.ExecuteInternal();n&&this.BuildResult(r)}finally{this.DisposeAllPolyPts(),this.m_ExecuteLocked=!1}return n}};f.Clipper.prototype.FixHoleLinkage=function(b){if(null!==b.FirstLeft&&(b.IsHole==b.FirstLeft.IsHole||null===b.FirstLeft.Pts)){for(var d= b.FirstLeft;null!==d&&(d.IsHole==b.IsHole||null===d.Pts);)d=d.FirstLeft;b.FirstLeft=d}};f.Clipper.prototype.ExecuteInternal=function(){try{this.Reset();if(null===this.m_CurrentLM)return!1;var b=this.PopScanbeam();do{this.InsertLocalMinimaIntoAEL(b);f.Clear(this.m_GhostJoins);this.ProcessHorizontals(!1);if(null===this.m_Scanbeam)break;var d=this.PopScanbeam();if(!this.ProcessIntersections(d))return!1;this.ProcessEdgesAtTopOfScanbeam(d);b=d}while(null!==this.m_Scanbeam||null!==this.m_CurrentLM);for(var b= 0,e=this.m_PolyOuts.length;bb.Top.Y?d.Top.Xf.Clipper.TopX(d,b.Top.Y):d.Curr.Xb.WindCnt2}case f.ClipType.ctUnion:switch(e){case f.PolyFillType.pftEvenOdd:case f.PolyFillType.pftNonZero:return 0===b.WindCnt2;case f.PolyFillType.pftPositive:return 0>=b.WindCnt2;default:return 0<=b.WindCnt2}case f.ClipType.ctDifference:if(b.PolyTyp==f.PolyType.ptSubject)switch(e){case f.PolyFillType.pftEvenOdd:case f.PolyFillType.pftNonZero:return 0===b.WindCnt2;case f.PolyFillType.pftPositive:return 0>=b.WindCnt2; default:return 0<=b.WindCnt2}else switch(e){case f.PolyFillType.pftEvenOdd:case f.PolyFillType.pftNonZero:return 0!==b.WindCnt2;case f.PolyFillType.pftPositive:return 0b.WindCnt2}case f.ClipType.ctXor:if(0===b.WindDelta)switch(e){case f.PolyFillType.pftEvenOdd:case f.PolyFillType.pftNonZero:return 0===b.WindCnt2;case f.PolyFillType.pftPositive:return 0>=b.WindCnt2;default:return 0<=b.WindCnt2}}return!0};f.Clipper.prototype.SetWindingCount=function(b){for(var d=b.PrevInAEL;null!== d&&(d.PolyTyp!=b.PolyTyp||0===d.WindDelta);)d=d.PrevInAEL;if(null===d)b.WindCnt=0===b.WindDelta?1:b.WindDelta,b.WindCnt2=0,d=this.m_ActiveEdges;else{if(0===b.WindDelta&&this.m_ClipType!=f.ClipType.ctUnion)b.WindCnt=1;else if(this.IsEvenOddFillType(b))if(0===b.WindDelta){for(var e=!0,r=d.PrevInAEL;null!==r;)r.PolyTyp==d.PolyTyp&&0!==r.WindDelta&&(e=!e),r=r.PrevInAEL;b.WindCnt=e?0:1}else b.WindCnt=b.WindDelta;else b.WindCnt=0>d.WindCnt*d.WindDelta?1d.WindDelta*b.WindDelta?d.WindCnt: d.WindCnt+b.WindDelta:0===b.WindDelta?1:b.WindDelta:0===b.WindDelta?0>d.WindCnt?d.WindCnt-1:d.WindCnt+1:0>d.WindDelta*b.WindDelta?d.WindCnt:d.WindCnt+b.WindDelta;b.WindCnt2=d.WindCnt2;d=d.NextInAEL}if(this.IsEvenOddAltFillType(b))for(;d!=b;)0!==d.WindDelta&&(b.WindCnt2=0===b.WindCnt2?1:0),d=d.NextInAEL;else for(;d!=b;)b.WindCnt2+=d.WindDelta,d=d.NextInAEL};f.Clipper.prototype.AddEdgeToSEL=function(b){null===this.m_SortedEdges?(this.m_SortedEdges=b,b.PrevInSEL=null,b.NextInSEL=null):(b.NextInSEL=this.m_SortedEdges, b.PrevInSEL=null,this.m_SortedEdges=this.m_SortedEdges.PrevInSEL=b)};f.Clipper.prototype.CopyAELToSEL=function(){var b=this.m_ActiveEdges;for(this.m_SortedEdges=b;null!==b;)b.PrevInSEL=b.PrevInAEL,b=b.NextInSEL=b.NextInAEL};f.Clipper.prototype.SwapPositionsInAEL=function(b,d){if(b.NextInAEL!=b.PrevInAEL&&d.NextInAEL!=d.PrevInAEL){if(b.NextInAEL==d){var e=d.NextInAEL;null!==e&&(e.PrevInAEL=b);var f=b.PrevInAEL;null!==f&&(f.NextInAEL=d);d.PrevInAEL=f;d.NextInAEL=b;b.PrevInAEL=d;b.NextInAEL=e}else d.NextInAEL== b?(e=b.NextInAEL,null!==e&&(e.PrevInAEL=d),f=d.PrevInAEL,null!==f&&(f.NextInAEL=b),b.PrevInAEL=f,b.NextInAEL=d,d.PrevInAEL=b,d.NextInAEL=e):(e=b.NextInAEL,f=b.PrevInAEL,b.NextInAEL=d.NextInAEL,null!==b.NextInAEL&&(b.NextInAEL.PrevInAEL=b),b.PrevInAEL=d.PrevInAEL,null!==b.PrevInAEL&&(b.PrevInAEL.NextInAEL=b),d.NextInAEL=e,null!==d.NextInAEL&&(d.NextInAEL.PrevInAEL=d),d.PrevInAEL=f,null!==d.PrevInAEL&&(d.PrevInAEL.NextInAEL=d));null===b.PrevInAEL?this.m_ActiveEdges=b:null===d.PrevInAEL&&(this.m_ActiveEdges= d)}};f.Clipper.prototype.SwapPositionsInSEL=function(b,d){if(null!==b.NextInSEL||null!==b.PrevInSEL)if(null!==d.NextInSEL||null!==d.PrevInSEL){if(b.NextInSEL==d){var e=d.NextInSEL;null!==e&&(e.PrevInSEL=b);var f=b.PrevInSEL;null!==f&&(f.NextInSEL=d);d.PrevInSEL=f;d.NextInSEL=b;b.PrevInSEL=d;b.NextInSEL=e}else d.NextInSEL==b?(e=b.NextInSEL,null!==e&&(e.PrevInSEL=d),f=d.PrevInSEL,null!==f&&(f.NextInSEL=b),b.PrevInSEL=f,b.NextInSEL=d,d.PrevInSEL=b,d.NextInSEL=e):(e=b.NextInSEL,f=b.PrevInSEL,b.NextInSEL= d.NextInSEL,null!==b.NextInSEL&&(b.NextInSEL.PrevInSEL=b),b.PrevInSEL=d.PrevInSEL,null!==b.PrevInSEL&&(b.PrevInSEL.NextInSEL=b),d.NextInSEL=e,null!==d.NextInSEL&&(d.NextInSEL.PrevInSEL=d),d.PrevInSEL=f,null!==d.PrevInSEL&&(d.PrevInSEL.NextInSEL=d));null===b.PrevInSEL?this.m_SortedEdges=b:null===d.PrevInSEL&&(this.m_SortedEdges=d)}};f.Clipper.prototype.AddLocalMaxPoly=function(b,d,e){this.AddOutPt(b,e);0==d.WindDelta&&this.AddOutPt(d,e);b.OutIdx==d.OutIdx?(b.OutIdx=-1,d.OutIdx=-1):b.OutIdxd.Dx?(r=this.AddOutPt(b,e),d.OutIdx=b.OutIdx,b.Side=f.EdgeSide.esLeft,d.Side=f.EdgeSide.esRight,n=b,b=n.PrevInAEL==d?d.PrevInAEL:n.PrevInAEL):(r=this.AddOutPt(d,e),b.OutIdx=d.OutIdx,b.Side=f.EdgeSide.esRight,d.Side=f.EdgeSide.esLeft,n=d,b=n.PrevInAEL==b?b.PrevInAEL:n.PrevInAEL);null!==b&&0<=b.OutIdx&&f.Clipper.TopX(b,e.Y)==f.Clipper.TopX(n,e.Y)&&f.ClipperBase.SlopesEqual(n, b,this.m_UseFullRange)&&0!==n.WindDelta&&0!==b.WindDelta&&(e=this.AddOutPt(b,e),this.AddJoin(r,e,n.Top));return r};f.Clipper.prototype.CreateOutRec=function(){var b=new f.OutRec;b.Idx=-1;b.IsHole=!1;b.IsOpen=!1;b.FirstLeft=null;b.Pts=null;b.BottomPt=null;b.PolyNode=null;this.m_PolyOuts.push(b);b.Idx=this.m_PolyOuts.length-1;return b};f.Clipper.prototype.AddOutPt=function(b,d){var e=b.Side==f.EdgeSide.esLeft;if(0>b.OutIdx){var r=this.CreateOutRec();r.IsOpen=0===b.WindDelta;var n=new f.OutPt;r.Pts= n;n.Idx=r.Idx;n.Pt.X=d.X;n.Pt.Y=d.Y;f.use_xyz&&(n.Pt.Z=d.Z);n.Next=n;n.Prev=n;r.IsOpen||this.SetHoleState(b,r);b.OutIdx=r.Idx}else{var r=this.m_PolyOuts[b.OutIdx],k=r.Pts;if(e&&f.IntPoint.op_Equality(d,k.Pt))return k;if(!e&&f.IntPoint.op_Equality(d,k.Prev.Pt))return k.Prev;n=new f.OutPt;n.Idx=r.Idx;n.Pt.X=d.X;n.Pt.Y=d.Y;f.use_xyz&&(n.Pt.Z=d.Z);n.Next=k;n.Prev=k.Prev;n.Prev.Next=n;k.Prev=n;e&&(r.Pts=n)}return n};f.Clipper.prototype.SwapPoints=function(b,d){var e=new f.IntPoint(b.Value);b.Value.X=d.Value.X; b.Value.Y=d.Value.Y;f.use_xyz&&(b.Value.Z=d.Value.Z);d.Value.X=e.X;d.Value.Y=e.Y;f.use_xyz&&(d.Value.Z=e.Z)};f.Clipper.prototype.HorzSegmentsOverlap=function(b,d,e,f){var n;b>d&&(n=b,b=d,d=n);e>f&&(n=e,e=f,f=n);return b=k&&r>=e||n>=k&&n>= e};f.Clipper.prototype.GetBottomPt=function(b){for(var d=null,e=b.Next;e!=b;)e.Pt.Y>b.Pt.Y?(b=e,d=null):e.Pt.Y==b.Pt.Y&&e.Pt.X<=b.Pt.X&&(e.Pt.Xf.Pt.Y?b:e.Pt.Yf.Pt.X?d:e.Next==e?d:f.Next==f?b:this.FirstIsBottomPt(e,f)?b:d};f.Clipper.prototype.Param1RightOfParam2=function(b,d){do if(b=b.FirstLeft,b==d)return!0;while(null!==b);return!1};f.Clipper.prototype.GetOutRec=function(b){for(b=this.m_PolyOuts[b];b!=this.m_PolyOuts[b.Idx];)b=this.m_PolyOuts[b.Idx];return b};f.Clipper.prototype.AppendPolygon=function(b,d){var e=this.m_PolyOuts[b.OutIdx],r=this.m_PolyOuts[d.OutIdx],n;n=this.Param1RightOfParam2(e, r)?r:this.Param1RightOfParam2(r,e)?e:this.GetLowermostRec(e,r);var k=e.Pts,u=k.Prev,C=r.Pts,p=C.Prev;b.Side==f.EdgeSide.esLeft?(d.Side==f.EdgeSide.esLeft?(this.ReversePolyPtLinks(C),C.Next=k,k.Prev=C,u.Next=p,p.Prev=u,e.Pts=p):(p.Next=k,k.Prev=p,C.Prev=u,u.Next=C,e.Pts=C),k=f.EdgeSide.esLeft):(d.Side==f.EdgeSide.esRight?(this.ReversePolyPtLinks(C),u.Next=p,p.Prev=u,C.Next=k,k.Prev=C):(u.Next=C,C.Prev=u,k.Prev=p,p.Next=k),k=f.EdgeSide.esRight);e.BottomPt=null;n==r&&(r.FirstLeft!=e&&(e.FirstLeft=r.FirstLeft), e.IsHole=r.IsHole);r.Pts=null;r.BottomPt=null;r.FirstLeft=e;n=b.OutIdx;u=d.OutIdx;b.OutIdx=-1;d.OutIdx=-1;for(C=this.m_ActiveEdges;null!==C;){if(C.OutIdx==u){C.OutIdx=n;C.Side=k;break}C=C.NextInAEL}r.Idx=e.Idx};f.Clipper.prototype.ReversePolyPtLinks=function(b){if(null!==b){var d,e;d=b;do e=d.Next,d.Next=d.Prev,d=d.Prev=e;while(d!=b)}};f.Clipper.SwapSides=function(b,d){var e=b.Side;b.Side=d.Side;d.Side=e};f.Clipper.SwapPolyIndexes=function(b,d){var e=b.OutIdx;b.OutIdx=d.OutIdx;d.OutIdx=e};f.Clipper.prototype.IntersectEdges= function(b,d,e){var r=0<=b.OutIdx,n=0<=d.OutIdx;f.use_xyz&&this.SetZ(e,b,d);if(!f.use_lines||0!==b.WindDelta&&0!==d.WindDelta){if(b.PolyTyp==d.PolyTyp)if(this.IsEvenOddFillType(b)){var k=b.WindCnt;b.WindCnt=d.WindCnt;d.WindCnt=k}else b.WindCnt=0===b.WindCnt+d.WindDelta?-b.WindCnt:b.WindCnt+d.WindDelta,d.WindCnt=0===d.WindCnt-b.WindDelta?-d.WindCnt:d.WindCnt-b.WindDelta;else this.IsEvenOddFillType(d)?b.WindCnt2=0===b.WindCnt2?1:0:b.WindCnt2+=d.WindDelta,this.IsEvenOddFillType(b)?d.WindCnt2=0===d.WindCnt2? 1:0:d.WindCnt2-=b.WindDelta;var u,C,p;b.PolyTyp==f.PolyType.ptSubject?(u=this.m_SubjFillType,p=this.m_ClipFillType):(u=this.m_ClipFillType,p=this.m_SubjFillType);d.PolyTyp==f.PolyType.ptSubject?(C=this.m_SubjFillType,k=this.m_ClipFillType):(C=this.m_ClipFillType,k=this.m_SubjFillType);switch(u){case f.PolyFillType.pftPositive:u=b.WindCnt;break;case f.PolyFillType.pftNegative:u=-b.WindCnt;break;default:u=Math.abs(b.WindCnt)}switch(C){case f.PolyFillType.pftPositive:C=d.WindCnt;break;case f.PolyFillType.pftNegative:C= -d.WindCnt;break;default:C=Math.abs(d.WindCnt)}if(r&&n)0!=u&&1!=u||0!=C&&1!=C||b.PolyTyp!=d.PolyTyp&&this.m_ClipType!=f.ClipType.ctXor?this.AddLocalMaxPoly(b,d,e):(this.AddOutPt(b,e),this.AddOutPt(d,e),f.Clipper.SwapSides(b,d),f.Clipper.SwapPolyIndexes(b,d));else if(r){if(0===C||1==C)this.AddOutPt(b,e),f.Clipper.SwapSides(b,d),f.Clipper.SwapPolyIndexes(b,d)}else if(n){if(0===u||1==u)this.AddOutPt(d,e),f.Clipper.SwapSides(b,d),f.Clipper.SwapPolyIndexes(b,d)}else if(!(0!=u&&1!=u||0!=C&&1!=C)){switch(p){case f.PolyFillType.pftPositive:r= b.WindCnt2;break;case f.PolyFillType.pftNegative:r=-b.WindCnt2;break;default:r=Math.abs(b.WindCnt2)}switch(k){case f.PolyFillType.pftPositive:n=d.WindCnt2;break;case f.PolyFillType.pftNegative:n=-d.WindCnt2;break;default:n=Math.abs(d.WindCnt2)}if(b.PolyTyp!=d.PolyTyp)this.AddLocalMinPoly(b,d,e);else if(1==u&&1==C)switch(this.m_ClipType){case f.ClipType.ctIntersection:0=r&&0>=n&&this.AddLocalMinPoly(b,d,e);break;case f.ClipType.ctDifference:(b.PolyTyp== f.PolyType.ptClip&&0=r&&0>=n)&&this.AddLocalMinPoly(b,d,e);break;case f.ClipType.ctXor:this.AddLocalMinPoly(b,d,e)}else f.Clipper.SwapSides(b,d)}}else if(0!=b.WindDelta||0!=d.WindDelta)b.PolyTyp==d.PolyTyp&&b.WindDelta!=d.WindDelta&&this.m_ClipType==f.ClipType.ctUnion?0===b.WindDelta?n&&(this.AddOutPt(b,e),r&&(b.OutIdx=-1)):r&&(this.AddOutPt(d,e),n&&(d.OutIdx=-1)):b.PolyTyp!=d.PolyTyp&&(0!==b.WindDelta||1!=Math.abs(d.WindCnt)||this.m_ClipType==f.ClipType.ctUnion&& 0!==d.WindCnt2?0!==d.WindDelta||1!=Math.abs(b.WindCnt)||this.m_ClipType==f.ClipType.ctUnion&&0!==b.WindCnt2||(this.AddOutPt(d,e),n&&(d.OutIdx=-1)):(this.AddOutPt(b,e),r&&(b.OutIdx=-1)))};f.Clipper.prototype.DeleteFromAEL=function(b){var d=b.PrevInAEL,e=b.NextInAEL;if(null!==d||null!==e||b==this.m_ActiveEdges)null!==d?d.NextInAEL=e:this.m_ActiveEdges=e,null!==e&&(e.PrevInAEL=d),b.NextInAEL=null,b.PrevInAEL=null};f.Clipper.prototype.DeleteFromSEL=function(b){var d=b.PrevInSEL,e=b.NextInSEL;if(null!== d||null!==e||b==this.m_SortedEdges)null!==d?d.NextInSEL=e:this.m_SortedEdges=e,null!==e&&(e.PrevInSEL=d),b.NextInSEL=null,b.PrevInSEL=null};f.Clipper.prototype.UpdateEdgeIntoAEL=function(b){null===b.NextInLML&&f.Error("UpdateEdgeIntoAEL: invalid call");var d=b.PrevInAEL,e=b.NextInAEL;b.NextInLML.OutIdx=b.OutIdx;null!==d?d.NextInAEL=b.NextInLML:this.m_ActiveEdges=b.NextInLML;null!==e&&(e.PrevInAEL=b.NextInLML);b.NextInLML.Side=b.Side;b.NextInLML.WindDelta=b.WindDelta;b.NextInLML.WindCnt=b.WindCnt; b.NextInLML.WindCnt2=b.WindCnt2;b=b.NextInLML;b.Curr.X=b.Bot.X;b.Curr.Y=b.Bot.Y;f.use_xyz&&(b.Curr.Z=b.Bot.Z);b.PrevInAEL=d;b.NextInAEL=e;f.ClipperBase.IsHorizontal(b)||this.InsertScanbeam(b.Top.Y);return b};f.Clipper.prototype.ProcessHorizontals=function(b){for(var d=this.m_SortedEdges;null!==d;)this.DeleteFromSEL(d),this.ProcessHorizontal(d,b),d=this.m_SortedEdges};f.Clipper.prototype.GetHorzDirection=function(b,d){b.Bot.X=n){if(E==C&&p){if(0<=b.OutIdx){r=this.AddOutPt(b,b.Top);for(e=this.m_SortedEdges;null!==e;)0<=e.OutIdx&&this.HorzSegmentsOverlap(b.Bot.X,b.Top.X,e.Bot.X,e.Top.X)&&(n=this.AddOutPt(e,e.Bot),this.AddJoin(n,r,e.Top)),e=e.NextInSEL;this.AddGhostJoin(r,b.Bot);this.AddLocalMaxPoly(b,C,b.Top)}this.DeleteFromAEL(b);this.DeleteFromAEL(C);return}if(r==f.Direction.dLeftToRight){var F=new f.IntPoint(E.Curr.X,b.Curr.Y);this.IntersectEdges(b, E,F)}else F=new f.IntPoint(E.Curr.X,b.Curr.Y),this.IntersectEdges(E,b,F);this.SwapPositionsInAEL(b,E)}else if(r==f.Direction.dLeftToRight&&E.Curr.X>=k||r==f.Direction.dRightToLeft&&E.Curr.X<=n)break;E=e}if(null!==b.NextInLML&&f.ClipperBase.IsHorizontal(b.NextInLML))b=this.UpdateEdgeIntoAEL(b),0<=b.OutIdx&&this.AddOutPt(b,b.Bot),e={Dir:r,Left:n,Right:k},this.GetHorzDirection(b,e),r=e.Dir,n=e.Left,k=e.Right;else break}null!==b.NextInLML?0<=b.OutIdx?(r=this.AddOutPt(b,b.Top),d&&this.AddGhostJoin(r,b.Bot), b=this.UpdateEdgeIntoAEL(b),0!==b.WindDelta&&(C=b.PrevInAEL,e=b.NextInAEL,null!==C&&C.Curr.X==b.Bot.X&&C.Curr.Y==b.Bot.Y&&0!==C.WindDelta&&0<=C.OutIdx&&C.Curr.Y>C.Top.Y&&f.ClipperBase.SlopesEqual(b,C,this.m_UseFullRange)?(n=this.AddOutPt(C,b.Bot),this.AddJoin(r,n,b.Top)):null!==e&&e.Curr.X==b.Bot.X&&e.Curr.Y==b.Bot.Y&&0!==e.WindDelta&&0<=e.OutIdx&&e.Curr.Y>e.Top.Y&&f.ClipperBase.SlopesEqual(b,e,this.m_UseFullRange)&&(n=this.AddOutPt(e,b.Bot),this.AddJoin(r,n,b.Top)))):this.UpdateEdgeIntoAEL(b):(0<= b.OutIdx&&this.AddOutPt(b,b.Top),this.DeleteFromAEL(b))};f.Clipper.prototype.GetNextInAEL=function(b,d){return d==f.Direction.dLeftToRight?b.NextInAEL:b.PrevInAEL};f.Clipper.prototype.IsMinima=function(b){return null!==b&&b.Prev.NextInLML!=b&&b.Next.NextInLML!=b};f.Clipper.prototype.IsMaxima=function(b,d){return null!==b&&b.Top.Y==d&&null===b.NextInLML};f.Clipper.prototype.IsIntermediate=function(b,d){return b.Top.Y==d&&null!==b.NextInLML};f.Clipper.prototype.GetMaximaPair=function(b){var d=null; f.IntPoint.op_Equality(b.Next.Top,b.Top)&&null===b.Next.NextInLML?d=b.Next:f.IntPoint.op_Equality(b.Prev.Top,b.Top)&&null===b.Prev.NextInLML&&(d=b.Prev);return null===d||-2!=d.OutIdx&&(d.NextInAEL!=d.PrevInAEL||f.ClipperBase.IsHorizontal(d))?d:null};f.Clipper.prototype.ProcessIntersections=function(b){if(null==this.m_ActiveEdges)return!0;try{this.BuildIntersectList(b);if(0==this.m_IntersectList.length)return!0;if(1==this.m_IntersectList.length||this.FixupIntersectionOrder())this.ProcessIntersectList(); else return!1}catch(d){this.m_SortedEdges=null,this.m_IntersectList.length=0,f.Error("ProcessIntersections error")}this.m_SortedEdges=null;return!0};f.Clipper.prototype.BuildIntersectList=function(b){if(null!==this.m_ActiveEdges){var d=this.m_ActiveEdges;for(this.m_SortedEdges=d;null!==d;)d.PrevInSEL=d.PrevInAEL,d.NextInSEL=d.NextInAEL,d.Curr.X=f.Clipper.TopX(d,b),d=d.NextInAEL;for(var e=!0;e&&null!==this.m_SortedEdges;){e=!1;for(d=this.m_SortedEdges;null!==d.NextInSEL;){b=d.NextInSEL;var r=new f.IntPoint; d.Curr.X>b.Curr.X?(this.IntersectPoint(d,b,r),e=new f.IntersectNode,e.Edge1=d,e.Edge2=b,e.Pt.X=r.X,e.Pt.Y=r.Y,f.use_xyz&&(e.Pt.Z=r.Z),this.m_IntersectList.push(e),this.SwapPositionsInSEL(d,b),e=!0):d=b}if(null!==d.PrevInSEL)d.PrevInSEL.NextInSEL=null;else break}this.m_SortedEdges=null}};f.Clipper.prototype.EdgesAdjacent=function(b){return b.Edge1.NextInSEL==b.Edge2||b.Edge1.PrevInSEL==b.Edge2};f.Clipper.IntersectNodeSort=function(b,d){return d.Pt.Y-b.Pt.Y};f.Clipper.prototype.FixupIntersectionOrder= function(){this.m_IntersectList.sort(this.m_IntersectNodeComparer);this.CopyAELToSEL();for(var b=this.m_IntersectList.length,d=0;db?Math.ceil(b-.5):Math.round(b)};Sb=function(b){return 0>b?Math.ceil(b-.5):Math.floor(b+.5)};Ta=function(b){return 0>b?-Math.round(Math.abs(b)):Math.round(b)};fb=function(b){if(0>b)return b-=.5,-2147483648>b?Math.ceil(b):b|0;b+=.5;return 2147483647d.Top.Y)return e.Y=b.Top.Y,e.X=f.Clipper.TopX(d,b.Top.Y),e.Xb.Curr.Y&&(e.Y=b.Curr.Y,e.X=Math.abs(b.Dx)>Math.abs(d.Dx)?f.Clipper.TopX(d,e.Y):f.Clipper.TopX(b,e.Y))}};f.Clipper.prototype.ProcessEdgesAtTopOfScanbeam= function(b){for(var d=this.m_ActiveEdges;null!==d;){var e=this.IsMaxima(d,b);e&&(e=this.GetMaximaPair(d),e=null===e||!f.ClipperBase.IsHorizontal(e));if(e){var r=d.PrevInAEL;this.DoMaxima(d);d=null===r?this.m_ActiveEdges:r.NextInAEL}else{this.IsIntermediate(d,b)&&f.ClipperBase.IsHorizontal(d.NextInLML)?(d=this.UpdateEdgeIntoAEL(d),0<=d.OutIdx&&this.AddOutPt(d,d.Bot),this.AddEdgeToSEL(d)):(d.Curr.X=f.Clipper.TopX(d,b),d.Curr.Y=b);if(this.StrictlySimple&&(r=d.PrevInAEL,0<=d.OutIdx&&0!==d.WindDelta&& null!==r&&0<=r.OutIdx&&r.Curr.X==d.Curr.X&&0!==r.WindDelta)){var n=new f.IntPoint(d.Curr);f.use_xyz&&this.SetZ(n,r,d);e=this.AddOutPt(r,n);r=this.AddOutPt(d,n);this.AddJoin(e,r,n)}d=d.NextInAEL}}this.ProcessHorizontals(!0);for(d=this.m_ActiveEdges;null!==d;)this.IsIntermediate(d,b)&&(e=null,0<=d.OutIdx&&(e=this.AddOutPt(d,d.Top)),d=this.UpdateEdgeIntoAEL(d),r=d.PrevInAEL,n=d.NextInAEL,null!==r&&r.Curr.X==d.Bot.X&&r.Curr.Y==d.Bot.Y&&null!==e&&0<=r.OutIdx&&r.Curr.Y>r.Top.Y&&f.ClipperBase.SlopesEqual(d, r,this.m_UseFullRange)&&0!==d.WindDelta&&0!==r.WindDelta?(r=this.AddOutPt(r,d.Bot),this.AddJoin(e,r,d.Top)):null!==n&&n.Curr.X==d.Bot.X&&n.Curr.Y==d.Bot.Y&&null!==e&&0<=n.OutIdx&&n.Curr.Y>n.Top.Y&&f.ClipperBase.SlopesEqual(d,n,this.m_UseFullRange)&&0!==d.WindDelta&&0!==n.WindDelta&&(r=this.AddOutPt(n,d.Bot),this.AddJoin(e,r,d.Top))),d=d.NextInAEL};f.Clipper.prototype.DoMaxima=function(b){var d=this.GetMaximaPair(b);if(null===d)0<=b.OutIdx&&this.AddOutPt(b,b.Top),this.DeleteFromAEL(b);else{for(var e= b.NextInAEL;null!==e&&e!=d;)this.IntersectEdges(b,e,b.Top),this.SwapPositionsInAEL(b,e),e=b.NextInAEL;-1==b.OutIdx&&-1==d.OutIdx?(this.DeleteFromAEL(b),this.DeleteFromAEL(d)):0<=b.OutIdx&&0<=d.OutIdx?(0<=b.OutIdx&&this.AddLocalMaxPoly(b,d,b.Top),this.DeleteFromAEL(b),this.DeleteFromAEL(d)):f.use_lines&&0===b.WindDelta?(0<=b.OutIdx&&(this.AddOutPt(b,b.Top),b.OutIdx=-1),this.DeleteFromAEL(b),0<=d.OutIdx&&(this.AddOutPt(d,b.Top),d.OutIdx=-1),this.DeleteFromAEL(d)):f.Error("DoMaxima error")}};f.Clipper.ReversePaths= function(b){for(var d=0,e=b.length;dn)){for(var k=Array(n),u=0;un||!r.IsOpen&&3>n)){this.FixHoleLinkage(r);var k=new f.PolyNode;b.m_AllPolys.push(k);r.PolyNode=k;k.m_polygon.length=n;for(var r=r.Pts.Prev,u=0;ud.Pt.X?f.Direction.dRightToLeft:f.Direction.dLeftToRight;r=e.Pt.X>r.Pt.X?f.Direction.dRightToLeft:f.Direction.dLeftToRight;if(u==r)return!1;if(u==f.Direction.dLeftToRight){for(;b.Next.Pt.X<=n.X&&b.Next.Pt.X>=b.Pt.X&&b.Next.Pt.Y==n.Y;)b=b.Next;k&&b.Pt.X!=n.X&&(b=b.Next);d=this.DupOutPt(b,!k);f.IntPoint.op_Inequality(d.Pt,n)&&(b=d,b.Pt.X=n.X,b.Pt.Y=n.Y,f.use_xyz&&(b.Pt.Z=n.Z),d=this.DupOutPt(b, !k))}else{for(;b.Next.Pt.X>=n.X&&b.Next.Pt.X<=b.Pt.X&&b.Next.Pt.Y==n.Y;)b=b.Next;k||b.Pt.X==n.X||(b=b.Next);d=this.DupOutPt(b,k);f.IntPoint.op_Inequality(d.Pt,n)&&(b=d,b.Pt.X=n.X,b.Pt.Y=n.Y,f.use_xyz&&(b.Pt.Z=n.Z),d=this.DupOutPt(b,k))}if(r==f.Direction.dLeftToRight){for(;e.Next.Pt.X<=n.X&&e.Next.Pt.X>=e.Pt.X&&e.Next.Pt.Y==n.Y;)e=e.Next;k&&e.Pt.X!=n.X&&(e=e.Next);r=this.DupOutPt(e,!k);f.IntPoint.op_Inequality(r.Pt,n)&&(e=r,e.Pt.X=n.X,e.Pt.Y=n.Y,f.use_xyz&&(e.Pt.Z=n.Z),r=this.DupOutPt(e,!k))}else{for(;e.Next.Pt.X>= n.X&&e.Next.Pt.X<=e.Pt.X&&e.Next.Pt.Y==n.Y;)e=e.Next;k||e.Pt.X==n.X||(e=e.Next);r=this.DupOutPt(e,k);f.IntPoint.op_Inequality(r.Pt,n)&&(e=r,e.Pt.X=n.X,e.Pt.Y=n.Y,f.use_xyz&&(e.Pt.Z=n.Z),r=this.DupOutPt(e,k))}u==f.Direction.dLeftToRight==k?(b.Prev=e,e.Next=b,d.Next=r,r.Prev=d):(b.Next=e,e.Prev=b,d.Prev=r,r.Next=d);return!0};f.Clipper.prototype.JoinPoints=function(b,d,e){var r=b.OutPt1,n;new f.OutPt;var k=b.OutPt2,u;new f.OutPt;if((u=b.OutPt1.Pt.Y==b.OffPt.Y)&&f.IntPoint.op_Equality(b.OffPt,b.OutPt1.Pt)&& f.IntPoint.op_Equality(b.OffPt,b.OutPt2.Pt)){if(d!=e)return!1;for(n=b.OutPt1.Next;n!=r&&f.IntPoint.op_Equality(n.Pt,b.OffPt);)n=n.Next;n=n.Pt.Y>b.OffPt.Y;for(u=b.OutPt2.Next;u!=k&&f.IntPoint.op_Equality(u.Pt,b.OffPt);)u=u.Next;if(n==u.Pt.Y>b.OffPt.Y)return!1;n?(n=this.DupOutPt(r,!1),u=this.DupOutPt(k,!0),r.Prev=k,k.Next=r,n.Next=u,u.Prev=n):(n=this.DupOutPt(r,!0),u=this.DupOutPt(k,!1),r.Next=k,k.Prev=r,n.Prev=u,u.Next=n);b.OutPt1=r;b.OutPt2=n;return!0}if(u){for(n=r;r.Prev.Pt.Y==r.Pt.Y&&r.Prev!=n&& r.Prev!=k;)r=r.Prev;for(;n.Next.Pt.Y==n.Pt.Y&&n.Next!=r&&n.Next!=k;)n=n.Next;if(n.Next==r||n.Next==k)return!1;for(u=k;k.Prev.Pt.Y==k.Pt.Y&&k.Prev!=u&&k.Prev!=n;)k=k.Prev;for(;u.Next.Pt.Y==u.Pt.Y&&u.Next!=k&&u.Next!=r;)u=u.Next;if(u.Next==k||u.Next==r)return!1;e={Left:null,Right:null};if(!this.GetOverlap(r.Pt.X,n.Pt.X,k.Pt.X,u.Pt.X,e))return!1;d=e.Left;var C=e.Right;e=new f.IntPoint;r.Pt.X>=d&&r.Pt.X<=C?(e.X=r.Pt.X,e.Y=r.Pt.Y,f.use_xyz&&(e.Z=r.Pt.Z),d=r.Pt.X>n.Pt.X):k.Pt.X>=d&&k.Pt.X<=C?(e.X=k.Pt.X, e.Y=k.Pt.Y,f.use_xyz&&(e.Z=k.Pt.Z),d=k.Pt.X>u.Pt.X):n.Pt.X>=d&&n.Pt.X<=C?(e.X=n.Pt.X,e.Y=n.Pt.Y,f.use_xyz&&(e.Z=n.Pt.Z),d=n.Pt.X>r.Pt.X):(e.X=u.Pt.X,e.Y=u.Pt.Y,f.use_xyz&&(e.Z=u.Pt.Z),d=u.Pt.X>k.Pt.X);b.OutPt1=r;b.OutPt2=k;return this.JoinHorz(r,n,k,u,e,d)}for(n=r.Next;f.IntPoint.op_Equality(n.Pt,r.Pt)&&n!=r;)n=n.Next;if(C=n.Pt.Y>r.Pt.Y||!f.ClipperBase.SlopesEqual(r.Pt,n.Pt,b.OffPt,this.m_UseFullRange)){for(n=r.Prev;f.IntPoint.op_Equality(n.Pt,r.Pt)&&n!=r;)n=n.Prev;if(n.Pt.Y>r.Pt.Y||!f.ClipperBase.SlopesEqual(r.Pt, n.Pt,b.OffPt,this.m_UseFullRange))return!1}for(u=k.Next;f.IntPoint.op_Equality(u.Pt,k.Pt)&&u!=k;)u=u.Next;var p=u.Pt.Y>k.Pt.Y||!f.ClipperBase.SlopesEqual(k.Pt,u.Pt,b.OffPt,this.m_UseFullRange);if(p){for(u=k.Prev;f.IntPoint.op_Equality(u.Pt,k.Pt)&&u!=k;)u=u.Prev;if(u.Pt.Y>k.Pt.Y||!f.ClipperBase.SlopesEqual(k.Pt,u.Pt,b.OffPt,this.m_UseFullRange))return!1}if(n==r||u==k||n==u||d==e&&C==p)return!1;C?(n=this.DupOutPt(r,!1),u=this.DupOutPt(k,!0),r.Prev=k,k.Next=r,n.Next=u,u.Prev=n):(n=this.DupOutPt(r,!0), u=this.DupOutPt(k,!1),r.Next=k,k.Prev=r,n.Prev=u,u.Next=n);b.OutPt1=r;b.OutPt2=n;return!0};f.Clipper.GetBounds=function(b){for(var d=0,e=b.length;dr.right&&(r.right=b[d][k].X),b[d][k].Yr.bottom&&(r.bottom=b[d][k].Y);return r};f.Clipper.prototype.GetBounds2= function(b){var d=b,e=new f.IntRect;e.left=b.Pt.X;e.right=b.Pt.X;e.top=b.Pt.Y;e.bottom=b.Pt.Y;for(b=b.Next;b!=d;)b.Pt.Xe.right&&(e.right=b.Pt.X),b.Pt.Ye.bottom&&(e.bottom=b.Pt.Y),b=b.Next;return e};f.Clipper.PointInPolygon=function(b,d){var e=0,f=d.length;if(3>f)return 0;for(var k=d[0],I=1;I<=f;++I){var u=I==f?d[0]:d[I];if(u.Y==b.Y&&(u.X==b.X||k.Y==b.Y&&u.X>b.X==k.X=b.X)if(u.X>b.X)e=1-e;else{var C= (k.X-b.X)*(u.Y-b.Y)-(u.X-b.X)*(k.Y-b.Y);if(0==C)return-1;0k.Y&&(e=1-e)}else if(u.X>b.X){C=(k.X-b.X)*(u.Y-b.Y)-(u.X-b.X)*(k.Y-b.Y);if(0==C)return-1;0k.Y&&(e=1-e)}k=u}return e};f.Clipper.prototype.PointInPolygon=function(b,d){var e=0,f=d,k=b.X,I=b.Y,u=d.Pt.X,C=d.Pt.Y;do{d=d.Next;var p=d.Pt.X,E=d.Pt.Y;if(E==I&&(p==k||C==I&&p>k==u=k)if(p>k)e=1-e;else{u=(u-k)*(E-I)-(p-k)*(C-I);if(0==u)return-1;0C&&(e=1-e)}else if(p>k){u=(u-k)*(E-I)-(p-k)*(C-I);if(0== u)return-1;0C&&(e=1-e)}u=p;C=E}while(f!=d);return e};f.Clipper.prototype.Poly2ContainsPoly1=function(b,d){var e=b;do{var f=this.PointInPolygon(e.Pt,d);if(0<=f)return 0d)return 0;for(var e=0,f=0,k=d-1;fMath.abs(b.Y-d.Y)?b.X>d.X==b.Xb.X==d.Xd.Y== b.Yb.Y==d.Ye&&(e=0);for(var p=Array(e),n=0;nk)){var n= new f.PolyNode;n.m_jointype=d;n.m_endtype=e;if(e==f.EndType.etClosedLine||e==f.EndType.etClosedPolygon)for(;0n.m_polygon[d].Y||b[u].Y==n.m_polygon[d].Y&&b[u].Xp)&&(this.m_polyNodes.AddChild(n),e==f.EndType.etClosedPolygon))if(0>this.m_lowest.X)this.m_lowest= new f.IntPoint(this.m_polyNodes.ChildCount()-1,d);else if(b=this.m_polyNodes.Childs()[this.m_lowest.X].m_polygon[this.m_lowest.Y],n.m_polygon[d].Y>b.Y||n.m_polygon[d].Y==b.Y&&n.m_polygon[d].X=this.ArcTolerance?f.ClipperOffset.def_arc_tolerance:this.ArcTolerance> Math.abs(b)*f.ClipperOffset.def_arc_tolerance?Math.abs(b)*f.ClipperOffset.def_arc_tolerance:this.ArcTolerance)/Math.abs(b));this.m_sin=Math.sin(f.ClipperOffset.two_pi/k);this.m_cos=Math.cos(f.ClipperOffset.two_pi/k);this.m_StepsPerRad=k/f.ClipperOffset.two_pi;0>b&&(this.m_sin=-this.m_sin);for(d=0;d=b&&(3>n||e.m_endtype!=f.EndType.etClosedPolygon))){this.m_destPoly= [];if(1==n)if(e.m_jointype==f.JoinType.jtRound)for(var e=1,n=0,p=1;p<=k;p++){this.m_destPoly.push(new f.IntPoint(f.ClipperOffset.Round(this.m_srcPoly[0].X+e*b),f.ClipperOffset.Round(this.m_srcPoly[0].Y+n*b)));var u=e,e=e*this.m_cos-this.m_sin*n,n=u*this.m_sin+n*this.m_cos}else for(n=e=-1,p=0;4>p;++p)this.m_destPoly.push(new f.IntPoint(f.ClipperOffset.Round(this.m_srcPoly[0].X+e*b),f.ClipperOffset.Round(this.m_srcPoly[0].Y+n*b))),0>e?e=1:0>n?n=1:e=-1;else{for(p=this.m_normals.length=0;pMath.abs(this.m_sinA*this.m_delta)){if(0this.m_sinA&&(this.m_sinA=-1);if(0>this.m_sinA*this.m_delta)this.m_destPoly.push(new f.IntPoint(f.ClipperOffset.Round(this.m_srcPoly[b].X+this.m_normals[d].X*this.m_delta),f.ClipperOffset.Round(this.m_srcPoly[b].Y+this.m_normals[d].Y*this.m_delta))),this.m_destPoly.push(new f.IntPoint(this.m_srcPoly[b])),this.m_destPoly.push(new f.IntPoint(f.ClipperOffset.Round(this.m_srcPoly[b].X+this.m_normals[b].X* this.m_delta),f.ClipperOffset.Round(this.m_srcPoly[b].Y+this.m_normals[b].Y*this.m_delta)));else switch(e){case f.JoinType.jtMiter:e=1+(this.m_normals[b].X*this.m_normals[d].X+this.m_normals[b].Y*this.m_normals[d].Y);e>=this.m_miterLim?this.DoMiter(b,d,e):this.DoSquare(b,d);break;case f.JoinType.jtSquare:this.DoSquare(b,d);break;case f.JoinType.jtRound:this.DoRound(b,d)}return b};f.ClipperOffset.prototype.DoSquare=function(b,d){var e=Math.tan(Math.atan2(this.m_sinA,this.m_normals[d].X*this.m_normals[b].X+ this.m_normals[d].Y*this.m_normals[b].Y)/4);this.m_destPoly.push(new f.IntPoint(f.ClipperOffset.Round(this.m_srcPoly[b].X+this.m_delta*(this.m_normals[d].X-this.m_normals[d].Y*e)),f.ClipperOffset.Round(this.m_srcPoly[b].Y+this.m_delta*(this.m_normals[d].Y+this.m_normals[d].X*e))));this.m_destPoly.push(new f.IntPoint(f.ClipperOffset.Round(this.m_srcPoly[b].X+this.m_delta*(this.m_normals[b].X+this.m_normals[b].Y*e)),f.ClipperOffset.Round(this.m_srcPoly[b].Y+this.m_delta*(this.m_normals[b].Y-this.m_normals[b].X* e))))};f.ClipperOffset.prototype.DoMiter=function(b,d,e){e=this.m_delta/e;this.m_destPoly.push(new f.IntPoint(f.ClipperOffset.Round(this.m_srcPoly[b].X+(this.m_normals[d].X+this.m_normals[b].X)*e),f.ClipperOffset.Round(this.m_srcPoly[b].Y+(this.m_normals[d].Y+this.m_normals[b].Y)*e)))};f.ClipperOffset.prototype.DoRound=function(b,d){for(var e=Math.max(f.Cast_Int32(f.ClipperOffset.Round(this.m_StepsPerRad*Math.abs(Math.atan2(this.m_sinA,this.m_normals[d].X*this.m_normals[b].X+this.m_normals[d].Y*this.m_normals[b].Y)))), 1),k=this.m_normals[d].X,n=this.m_normals[d].Y,p,u=0;ud)return b;e||(b=[b]);for(var k=b.length,n,p,u,E,F,H,N,M=[],ia=0;ian)u=p,M.push(u);else{u=p;E=d*d;F=p[0];for(N=H=1;Nd)return f.JS.Clone(b);b[0]instanceof Array||(b=[b]);var e,k,n,p,u,E,F,H,N,M,ia,S,V,Y,ba,fa=b.length,ha=d*d,ea=[];for(e=0;ep;p++){u=[];E=n.length;n[E-1].X!=n[0].X||n[E-1].Y!=n[0].Y?(ia=1,n.push({X:n[0].X,Y:n[0].Y}),E=n.length):ia=0;M=[];for(k=0;kH)return 0;for(d&&(b[H]= b[0],H++);--H;)p=b[H],E=p.X,p=p.Y,u=b[H-1],F=u.X,u=u.Y,k+=f((E-F)*(E-F)+(p-u)*(p-u));d&&b.pop();return k/e};f.JS.PerimeterOfPaths=function(b,d,e){e||(e=1);for(var k=0,n=0;nha&&(ha=0);++ha;return function(){--ha;0>ha&&console.error("Wait count mismatch: "+k);if(0===ha)for(var p=0,F=Ga.length;p=ha?p.startup():!1!==k.autostart&&Ga.push(p);return p}var ha=-1,Ga=[];"undefined"===typeof document||"undefined"===typeof window||"undefined"===typeof document.addEventListener||"undefined"!== typeof window.cindyDontWait&&!0===window.cindyDontWait||document.addEventListener("DOMContentLoaded",p("DOMContentLoaded"));var pa=null,Ha=null,ea={};F.getBaseDir=function(){if(null!==pa)return pa;for(var k=document.getElementsByTagName("script"),p=0;p tag for Cindy.js");return pa=Ha=!1};F.addNewScript=function(k, p){p||console.error.bind(console);var N=F.getBaseDir();if(!1===N)return!1;var V=document.createElement("script");V.src=N+k;var N=Ha.nextSibling,S=Ha.parentElement;N?S.insertBefore(V,N):S.appendChild(V);return V};F.loadScript=function(k,p,N,V){for(var S=String(k).split("."),fa=window;S.length&&"object"===typeof fa&&null!==fa;)fa=fa[S.shift()];if(fa&&!S.length)return N(),!0;V||(V=console.error.bind(console));S=ea[k];if(!S){S=F.addNewScript(p,V);if(!1===S)return V("Can't load additional components."), !1;ea[k]=S}S.addEventListener("load",N);S.addEventListener("error",V);return null};F._autoLoadingPlugin={};F.autoLoadPlugin=function(k,p,N){if(F._pluginRegistry[k])return N(),!0;var V=F._autoLoadingPlugin[k];if(!V){p||(p=k+"-plugin.js");V=F._autoLoadingPlugin[k]=[];k=F.addNewScript(p);if(!1===k)return!1;k.addEventListener("error",console.error.bind(console))}V.push(N);return null};var k={ctype:"undefined"};F.waitFor=p;F._pluginRegistry={};F.instances=[];F.registerPlugin=function(k,p,N){if(1!==k)return console.error("Plugin API version "+ k+" not supported"),!1;F._pluginRegistry[p]=N;(F._autoLoadingPlugin[p]||[]).forEach(function(k){k()})};var Qa=0;F.dumpState=function(k){k=F.instances[k||0].saveState();console.log(JSON.stringify(k))};F.debugState=function(k){F.instances.map(function(k){var p=k.config,p=JSON.parse(JSON.stringify(p)),E=k.saveState();console.log(JSON.stringify(E));for(var F in E)p[F]=E[F];k.shutdown();return p}).forEach(function(k){F(k)})};F.newInstance=function(p){function F(){na.width=ca=na.clientWidth;na.height=da= na.clientHeight;A.setTransform(1,0,0,1,0,0);y.setMat(25,0,0,25,250.5,250.5);if(Db)for(var a=0;a=c.HAVE_METADATA?(q.width=c.videoWidth,q.height=c.videoHeight):(q.ready=!1,c.addEventListener("loadedmetadata",function(){q.width=c.videoWidth;q.height=c.videoHeight;q.ready=!0;q.whenReady= f;d.forEach(f);e()}),q.whenReady=d.push.bind(d));else if("canvas"===b)q.width=c.width,q.height=c.height;else return console.error("Not a valid image element",b,c),k;return{ctype:"image",value:q}}function ea(a){function g(a,c){var g=document.createElement("button"),q=document.createElement("img");g.appendChild(q);m.appendChild(g);Gb(q,a);g.addEventListener("click",c);Va[a]=function(a){a?g.classList.add("CindyJS-active"):g.classList.remove("CindyJS-active")}}function c(a){if(k){var c=e.getBoundingClientRect(); ha(h*(a.clientX-c.left-e.clientLeft+.5)/c.width+b)}}var q=document.createElement("div");q.className="CindyJS-animcontrols";na.parentNode.appendChild(q);var b=0,d=1,h=1;a.animation&&a.animation.speedRange&&Ia(a.animation.speedRange[0])&&Ia(a.animation.speedRange[1])&&(b=a.animation.speedRange[0],d=a.animation.speedRange[1],h=d-b);var e=document.createElement("div");e.className="CindyJS-animspeed";q.appendChild(e);var f=document.createElement("div");e.appendChild(f);H(e,"mousedown",function(a){k=!0; c(a)});H(e,"mousemove",c);H(na.parentNode,"mouseup",function(a){k=!1},!0);var m=document.createElement("div");m.className="CindyJS-animbuttons";q.appendChild(m);g("play",M);g("pause",Ga);g("stop",Ha);Va.stop(!0);oc=function(a){a=(a-b)/h;a=Math.max(0,Math.min(1,a));a=.1*Math.round(1E3*a);f.style.width=a+"%"};var k=!1}function ha(a){Vc=a;oc&&oc(a)}function f(a){return a()}function pa(a,g,c){var q=null;p.plugins&&(q=p.plugins[a]);q||(q=va._pluginRegistry[a]);q?t.use$1([w.wrap(a)],{}):(++Wc,va.autoLoadPlugin(a, g,function(){t.use$1([w.wrap(a)],{});Y(c)}))}function Y(a){0===--Wc&&(a?e():(z(R.init),(p.animation||p).autoplay&&M(),sa.canvas&&ic(sa.canvas,p)))}function ba(){null!==Hb&&(qa.set(Hb.state),Object.keys(Hb.speeds).forEach(function(a){var g=v.csnames[a];"undefined"!==typeof g.behavior&&(a=Hb.speeds[a],g.behavior.vx=a[0],g.behavior.vy=a[1],g.behavior.vz=a[2],g.behavior.fx=0,g.behavior.fy=0,g.behavior.fz=0)}),Vd())}function M(){if(!cb){if(Xb){var a=ib.backup;a.set(qa);for(var g={},c=0;c
';document.body.appendChild(c); g=document.getElementById("cmd");q=document.getElementById("log");g.onkeydown=function(c){13===c.keyCode&&""!==g.value&&(a["in"](g.value),c=t.parse$1([w.wrap(g.value)],[]),c=z(c),console.log(Z(c)),"undefined"!==c.ctype&&wa.out(Z(c)),g.value="",q.scrollTop=q.scrollHeight)};this.append=function(a){q.appendChild(a)};this.clear=function(){q.innerHTML=""}}function gb(a){var g=a;"string"===typeof a&&(g=document.getElementById(a));this.append=function(a){g.appendChild(a)};this.clear=function(){g.innerHTML= ""}}function ua(){this.append=function(a){};this.clear=function(){}}function H(a,g,c,q){void 0===q&&(q=!1);jb.push(function(){a.removeEventListener(g,c,q)});a.addEventListener(g,c,q)}function ic(a,g){function c(c){var g=a.getBoundingClientRect();c=y.to(c.clientX-g.left-a.clientLeft+.5,c.clientY-g.top-a.clientTop+.5);aa.prevx=aa.x;aa.prevy=aa.y;aa.x=c[0];aa.y=c[1];ra[0]=aa.x;ra[1]=aa.y;e()}function q(a){for(var c=a.changedTouches,g=!1,q=0;qc[0]&&(c=[k.value.real,f]),Ra.value.realq[0]&&(q=[Ra.value.real,f])))}c[0]-b[0]>q[0]-d[0]?(b=b[1],c=c[1]):(b=d[1],c=q[1]);if(b!==c){t.draw$2([b,c],{dashtype:g.dashtype,size:g.size,color:g.color,alpha:g.alpha,overhang:g.overhang});break a}}t.draw$1([g.homog],{dashtype:g.dashtype,size:g.size,color:g.color,alpha:g.alpha})}for(a= 0;a"+Z(a.value):"shape"===a.ctype?a.type:"error"===a.ctype?"Error: "+a.message:"variable"=== a.ctype?Z(J.getvar(a.name)):"geo"===a.ctype?a.value.name:"image"===a.ctype?"IMAGE":"_?_"}function ab(a,g){var c="undefined"===a[0].ctype,q="undefined"===a[1].ctype,b=z(a[1]);if(c||q)return k;"variable"===a[0].ctype?J.setvar(a[0].name,b):"infix"===a[0].ctype?"_"===a[0].oper?D.assigntake(a[0],b):ka("Can't use infix expression as lvalue"):"field"===a[0].ctype?D.assigndot(a[0],b):"userdata"===a[0].ctype?D.assigncolon(a[0],b):"function"===a[0].ctype&&"genList"===a[0].oper?"list"===b.ctype?D.assignlist(a[0].args, b.value):ka("Expected list in rhs of assignment"):ka("Left hand side of assignment is not a recognized lvalue");return b}function vb(a,g){var c=z(a[0]),q=z(a[1]);if(c.ctype===q.ctype){if("number"===c.ctype)return w.bool(c.value.real===q.value.real&&c.value.imag===q.value.imag);if("string"===c.ctype||"boolean"===c.ctype)return w.bool(c.value===q.value);if("list"===c.ctype)return h.equals(c,q);if("geo"===c.ctype)return w.bool(c.value===q.value)}return{ctype:"boolean",value:!1}}function Oc(a,g){return w.not(vb(a, g))}function hc(a,g){var c=B(a[0]),q=B(a[1]);return"number"===c.ctype&&"number"===q.ctype?{ctype:"boolean",value:m._helper.isAlmostEqual(c,q)}:"string"===c.ctype&&"string"===q.ctype||"boolean"===c.ctype&&"boolean"===q.ctype?{ctype:"boolean",value:c.value===q.value}:"list"===c.ctype&&"list"===q.ctype?h.almostequals(c,q):{ctype:"boolean",value:!1}}function Pc(a,g){var c=B(a[0]),q=B(a[1]);return"boolean"===c.ctype&&"boolean"===q.ctype?{ctype:"boolean",value:c.value&&q.value}:k}function Qc(a,g){var c= B(a[0]),q=B(a[1]);return"boolean"===c.ctype&&"boolean"===q.ctype?{ctype:"boolean",value:c.value||q.value}:k}function Rc(a,g){var c=a[0];"void"!==c.ctype&&(c=B(c));var q=B(a[1]),b=w.add(c,q);"Angle"===c.usage&&"Angle"===q.usage&&(b=w.withUsage(b,"Angle"));return b}function jc(a,g){var c=a[0];"void"!==c.ctype&&(c=B(c));var q=B(a[1]),b=w.sub(c,q);"Angle"===c.usage&&"Angle"===q.usage&&(b=w.withUsage(b,"Angle"));return b}function Sc(a,g){var c=B(a[0]),q=B(a[1]),b=w.mult(c,q);"Angle"!==c.usage||q.usage? "Angle"!==q.usage||c.usage||(b=w.withUsage(b,"Angle")):b=w.withUsage(b,"Angle");return b}function Tc(a,g){var c=B(a[0]),q=B(a[1]);"number"===q.ctype&&m._helper.isZero(q)&&ka("WARNING: Division by zero!");var b=w.div(c,q);"Angle"!==c.usage||q.usage?"Angle"!==q.usage||c.usage||(b=w.withUsage(b,"Angle")):b=w.withUsage(b,"Angle");return b}function Uc(a,g){var c=B(a[0]),q=B(a[1]);return"number"===c.ctype&&"number"===q.ctype?m.pow(c,q):k}function $c(a,g){var c=K(a[0]),q=K(a[1]);if(c!==k&&q!==k){var b=h.cross(c, q);"Point"===c.usage&&"Point"===q.usage&&(b=w.withUsage(b,"Line"));"Line"===c.usage&&"Line"===q.usage&&(b=w.withUsage(b,"Point"));return b}return k}function uc(a){var g=a.length;if(0===g)return[];if(1===g)return[0];if(2===g)return a[0][0]+a[1][1]<=a[0][1]+a[1][0]?[0,1]:[1,0];if(4a[h][e]&&(f[h].cost=a[h][e]);for(;;){for(h=0;hk[h][e]&&(l=k[h][e]);for(h=0;hq&&(q=c.value.length+q+1);if(0g.left&&(e=g.left);fg.top&&(m=g.top);k"===f.oper){var m=f.args[0];if("variable"!==m.ctype)throw la("Modifier name must be an identifier",f.start);h[m.name]=f.args[1]}else q.push(f)}d.oper=d.name.toLowerCase()+"$"+d.args.length}else if("||"===h)if(1===b.length)c.push({ctype:"function",oper:"abs_infix",args:b,modifs:{}});else if(2===b.length)c.push({ctype:"function",oper:"dist_infix",args:b,modifs:{}});else throw la("Don't support |\u2026| with "+ b.length+" arguments",q.start);else{if("{}"===h)throw la("{\u2026} reserved for future use",q.start);"[]"!==h&&1===b.length?c.push({ctype:"paren",args:b}):0===b.length?c.push({ctype:"list",value:[]}):c.push({ctype:"function",oper:"genList",args:b,modifs:{}})}break;case "EOF":break a}for(c.length&1||c.push(null);3<=c.length;)$b(c);return{expr:c[0],closedBy:q}}function Lb(a){this.usedFunctions={};this.usedVariables={}}function z(a){if(void 0===a)return k;if("infix"===a.ctype)return a.impl(a.args,{}, a);if("variable"===a.ctype)return z(J.getvar(a.name));if("function"===a.ctype)return Mb.push(a),a=D.evaluate(a.oper,a.args,a.modifs),Mb.pop(),a;if("void"===a.ctype)return k;if("field"===a.ctype){var g=z(a.obj);return"geo"===g.ctype?ta.getField(g.value,a.key):"list"===g.ctype?h.getField(g,a.key):k}return"userdata"===a.ctype?(g=z(a.obj),a=Z(z(a.key)),"_?_"===a&&(a=void 0),"geo"===g.ctype?ta.getuserData(g.value,a):"list"===g.ctype||"string"===g.ctype?ta.getuserData(g,a):k):a}function B(a){a=z(a);if("geo"=== a.ctype){var g=a.value;if("P"===g.kind)return ta.getField(g,"xy");if("V"===g.kind)return g.value}return a}function K(a){a=z(a);if("geo"===a.ctype){var g=a.value;if("P"===g.kind||"L"===g.kind)return ta.getField(g,"homog")}return h._helper.isNumberVecN(a,3)?a:h._helper.isNumberVecN(a,2)?(g=h.turnIntoCSList([a.value[0],a.value[1],m.real(1)]),a.usage&&(g=w.withUsage(g,a.usage)),g):k}function Ua(a){var g=new Lb;g.usedFunctions=hb;g.infixmap=Q;a=g.parse(a);for(var c in g.usedVariables)J.create(c);return a} function Td(a,g){return{ctype:"infix",args:[],impl:function(){Mb=[{oper:g}];var c=z(a);Mb=[];return c}}}function ka(a){wa.err(a+Mb.map(function(a){return"\n at "+a.oper}).join("\n"))}function ld(){this._path=[];this._defs=[""];this._imgcache=[];this._body=[];this._saveStack=[""];this._clipIndex=0;this._stroke=this._fill="#000";this._strokeOpacity=this._fillOpacity=null;this.height=this.width=0;this.lineWidth=1;this.lineCap="butt";this.lineJoin="miter";this.miterLimit=10;this.globalAlpha=1} function md(){this._body=[];this._yPos=this._xPos=NaN;this._extGState={Af255:"<< /ca 1 >>",As255:"<< /CA 1 >>"};this._objects=[["%PDF-1.4\n"]];this._offset=this._objects[0][0].length;this._nextIndex=5;this._imgcache=[];this._xobjects={};this._pathUsed=-1;this._fillAlpha=this._strokeAlpha=this._globalAlpha=1;this.height=this.width=0;this.lineWidth=1;this.lineCap="butt";this.lineJoin="miter";this.miterLimit=10}function nd(a,g){var c=a.width,q=a.height,b=document.createElement("canvas");b.setAttribute("width", c);b.setAttribute("height",q);b.setAttribute("style","display:none;");var d=sa.canvas;d.parentNode.insertBefore(b,d.nextSibling);try{return b.getContext("2d").drawImage(a,0,0,c,q),b.toDataURL(g||"image/png")}finally{b.parentNode.removeChild(b)}}function de(a){a=a.replace(RegExp("[^ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/]+","g"),"");var g=new Uint8Array(3*a.length>>2),c,q,b,d,h,e;for(q=c=0;c+3>4,g[q++]=d<<4|h>>2,g[q++]=h<<6|e;switch(a.length-c){case 0:break;case 2:b="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(a.charAt(c));d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(a.charAt(c+ 1));g[q++]=b<<2|d>>4;break;case 3:b="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(a.charAt(c));d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(a.charAt(c+1));h="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(a.charAt(c+2));g[q++]=b<<2|d>>4;g[q++]=d<<4|h>>2;break;default:throw Error("Malformed Base64 input: "+(a.length-c)+" chars left: "+a.substr(c));}if(q!==g.length)throw Error("Failed assertion: "+q+" should be "+ g.length);return g}function ee(a){function g(c){return(a[c]<<24|a[c+1]<<16|a[c+2]<<8|a[c+3])>>>0}if(57>a.length)throw Error("Too short to be a PNG file");if(2303741511!==g(0)||218765834!==g(4))throw Error("PNG signature missing");for(var c=[],q=8;qa.length)throw Error("Incomplete chunk at offset 0x"+q.toString(16));var b=g(q);if(2147483648<=b)throw Error("Chunk too long");var d=q+12+b;if(d>a.length)throw Error("Incomplete chunk at offset 0x"+q.toString(16));var h=a.subarray(q+ 4,q+8),h=String.fromCharCode.apply(String,h);c.push({len:b,type:h,data:a.subarray(q+8,q+8+b),crc:g(q+8+b)});q=d}return c}function ac(a,g){var c;if(c=/^rgba\(([0-9.]+), *([0-9.]+), *([0-9.]+), *([0-9.]+)\)$/.exec(a))g(+c[1],+c[2],+c[3],+c[4]);else if(c=/^rgb\(([0-9.]+), *([0-9.]+), *([0-9.]+)\)$/.exec(a))g(+c[1],+c[2],+c[3],1);else throw Error("Can't handle color style "+a);}function fe(a){var g=1;Object.keys(bb).forEach(function(c){var q=bb[c].value.img;if(void 0===q.cachedDataURL&&q.src)if("data:"=== q.src.substr(0,5))q.cachedDataURL=q.src;else{++g;q.cachedDataURL=null;var b=new XMLHttpRequest;b.responseType="blob";b.onreadystatechange=function(){if(b.readyState===XMLHttpRequest.DONE)if(200===b.status){var c=new FileReader;c.onloadend=function(){q.cachedDataURL=c.result;console.log("Cached data for image "+q.src);0===--g&&a()};c.readAsDataURL(b.response)}else console.error("Failed to load "+q.src+": "+b.statusText),0===--g&&a()};b.open("GET",q.src,!0);b.send()}});0===--g&&a()}function rb(a,g, c){for(c||(c="0");a.length20/l&&(k=1E4)}else if("C"===d.kind)f=v.csnames[d.args[0]],k=0,"undefined"!==typeof d.radius&&(k=d.radius.value.real),e=m.div(f.homog.value[0],f.homog.value[2]).value.real,f=m.div(f.homog.value[1],f.homog.value[2]).value.real,e-=a.x,f-=a.y,k=Math.sqrt(e*e+f*f)-k,f=e=0,0>k&&(k=-k),k+=30/l;else if("L"===d.kind||"S"===d.kind)e=d.homog,k=m,f=k.add(k.mult(e.value[0],k.conjugate(e.value[0])), k.mult(e.value[1],k.conjugate(e.value[1]))),f=h.scaldiv(k.sqrt(f),e),k=f.value[0].value.real*a.x+f.value[1].value.real*a.y+f.value[2].value.real,e=f.value[0].value.real*k,f=f.value[1].value.real*k,0>k&&(k=-k),k+=1;kMath.abs(a.offset.x)&&.5>Math.abs(a.offset.y)&& !a.mover.tmp}function rd(a){return yc(a)&&"P"===a.mover.kind}function sd(a){return yc(a)&&("L"===a.mover.kind||"S"===a.mover.kind)}function zc(a){ja={mover:a,offset:{x:0,y:0},prev:{x:aa.x,y:aa.y}}}function sb(){var a=Ob(aa);rd(a)?Aa[Ya]=a.mover:(Aa[Ya]={type:"Free",name:Xa(),labeled:!0,pos:[ra[0],ra[1],1]},Ka(Aa[Ya]));Ya++}function td(){var a=Ob(aa);return sd(a)?(Aa[Ya]=a.mover,Ya++,!0):!1}function ud(){var a=Ob(aa),g;(g=sd(a))||(g=yc(a)&&"C"===a.mover.kind);return g?(Aa[Ya]=a.mover,Ya++,!0):!1}function yb(){var a= Ob(aa);if(rd(a))for(Pb.args[1]=a.mover.name,a=0;ad*d):!1}function Bc(a,g){a.isshowing=!0;if(a.args)for(var c=0;c1E12*g(Da[c+1])&&(Da[c+1]=0)}function ec(){if(Ab)Ma=!0;else throw Ed;}function Fd(a,g,c,q,b){return w.add(q,w.mult(c,w.sub(b,q)))}function Yd(){L&&(L.currentMouseAndScripts=[]);Dc=!0;if(ja){var a= ja.mover,g=h.realVector([aa.x+ja.offset.x,aa.y+ja.offset.y,1]);Gd(a,g,"mouse");ja.prev.x=aa.x;ja.prev.y=aa.y}z(R.move);z(R.draw);Ma||zb();Dc=!1;L&&(L.fullLog.push(h.turnIntoCSList([h.turnIntoCSList(L.currentMouseAndScripts)])),L.length>L.logLength&&L.splice(0,L.length-L.logLength),L.currentMouseAndScripts=null,L.postMouseHooks.forEach(function(a){a()}))}function La(a,g,c){Gd(a,g,c);Dc||Ma||zb()}function Gd(a,g,c){L&&L.currentMouseAndScripts&&(L.currentMover=[]);a===Hd?(qa.set(Da),Ma=!1):(Hd=a,zb()); Oa.set(qa);var q=1E4,b;b=dc[a.name];if(!b){var d={},e=0;b=[];d[a.name]=a;for(var f=v.gslp,k=0;kp?(r=[g,a],n=p):r=[a,g];p=function(){};if(L&&L.currentStep){var t=[L.labelTracing2,w.wrap(L.currentElement.name),h.turnIntoCSList(r),h.turnIntoCSList([c,q]),h.realMatrix([[b,d],[e,f]]),w.wrap(n),w.wrap(m),w.wrap(l),k];L.currentStep.push(h.turnIntoCSList(t));p=function(a){L.hasOwnProperty(a)||(L[a]=w.wrap(a));t[t.length-1]=L[a]}}h._helper.isNaN(a)||h._helper.isNaN(g)? (p("Tracing failed due to NaNs."),Ma=!0):m>3*n&&l>3*n?p("Normal case, everything all right."):1E-5>l?1E-5>m?p("Staying inside singularity."):(p("Moved into singularity."),Ma=!0):1E-5>m?p("Moved out of singularity."):(Ab?p("Reached refinement limit, giving up."):p("Need to refine."),ec());return r}function Fc(a,g,c,q){var b=X(3),d=X(3),e=X(3),f=X(3);a=pe(a,g,c,q,b,d,e,f);T(a[0]);T(a[1]);T(a[2]);T(a[3]);return h.turnIntoCSList(a)}function pe(a,g,c,q,b,d,e,f){var m=function(){};b=[b,d,e,f];a=[a,g,c, q];if(lb)return a;d=0;q=Array(4);for(c=0;4>c;c++)for(q[c]=Array(4),f=0;4>f;f++)e=h.projectiveDistMinScal(b[c],a[f]),q[c][f]=e;e=uc(q);g=Array(4);for(c=0;4>c;++c)g[c]=a[e[c]],d+=q[c][e[c]];var l=1*d,n=Infinity,p=Infinity;for(c=0;4>c;c++){if(h._helper.isNaN(a[c]))return m("Tracing failed due to NaNs."),Ma=!0,g;for(f=c+1;4>f;f++)e=h.projectiveDistMinScal(b[c],b[f]),n>e&&(n=e),e=h.projectiveDistMinScal(g[c],g[f]),p>e&&(p=e)}if(L&&L.currentStep){var r=[L.labelTracing4,w.wrap(L.currentElement.name),h.turnIntoCSList(g), h.turnIntoCSList(b),h.realMatrix(q),w.wrap(d),w.wrap(n),w.wrap(p),k];L.currentStep.push(h.turnIntoCSList(r));m=function(a){L.hasOwnProperty(a)||(L[a]=w.wrap(a));r[r.length-1]=L[a]}}n>l&&p>l||(1E-5>p?1E-5>n?m("Staying inside singularity."):(m("Moved into singularity."),Ma=!0):1E-5>n?m("Moved out of singularity."):(Ab?m("Reached refinement limit, giving up."):m("Need to refine."),ec()));return g}function Id(a){var g=a.length,c,q;if(lb){for(c=0;c1-n&&(f=1-n),n=h.sesquilinearproduct(a[c],a[q]).value,n=(n.real*n.real+n.imag*n.imag)/ (e[c]*e[q]),m>1-n&&(m=1-n)}n=uc(l);q=Array(g);d=0;e=!1;for(c=0;c3*d&&m>3*d?a("Normal case, everything all right."): 1E-5>m?1E-5>f?a("Staying inside singularity."):(a("Moved into singularity."),Ma=!0):1E-5>f?a("Moved out of singularity."):(Ab?a("Reached refinement limit, giving up."):a("Need to refine."),ec());return q}function Qb(a,g){var c=l._helper.flattenConicMatrix(a),q=l._helper.flattenConicMatrix(g),b=X(6),d=X(6),q=Ec(c,q,b,d);T(q[0]);T(q[1]);c=l._helper.buildConicMatrix(q[0].value);q=l._helper.buildConicMatrix(q[1].value);return h.turnIntoCSList([c,q])}function mb(a){if(mb.hasOwnProperty(a.kind))mb[a.kind](a)} function Jd(a,g){return function(){a.incidences.push(g.name);g.incidences.push(a.name)}}function Kd(a,g){return{toString:function(){return"point "+a.name+" incident line "+g.name},apply:Jd(a,g),holds:function(){var c=h.scaldiv(h.abs(a.homog),a.homog),q=h.scaldiv(h.abs(g.homog),g.homog);return 1E-13>m.abs(h.scalproduct(c,q)).value.real}}}function Ld(a,g){return{toString:function(){return"point "+a.name+" incident conic "+g.name},apply:Jd(a,g),holds:function(){var c=w.mult(g.matrix,a.homog),c=w.mult(a.homog, c),c=m.abs(c);1E-13>c.value.real&&(a.incidences.push(g.name),g.incidences.push(a.name))}}}function xd(){if(0!==ob.length){for(var a=0;aa&&(q+=2*Math.PI);0===a&&0>g&&(q=Math.PI);q>Math.PI&&(q-=2*Math.PI);return m.snap({ctype:"number",value:{real:Math.log(c),imag:q}})};m.pow=function(a,g){return m._helper.isZero(g)?m.one:m._helper.isZero(a)?m.zero:m._helper.isReal(g)?m.powRealExponent(a,g.value.real):m.exp(m.mult(m.log(a),g))};m.mod=function(a,g){var c=a.value.real,q=g.value.real,b=a.value.imag,d=g.value.imag,c=c-Math.floor(c/q)*q,b=b-Math.floor(b/d)*d;0===q&&(c=0);0===d&&(b=0);return m.snap({ctype:"number",value:{real:c, imag:b}})};m._helper.seed="NO";m._helper.seedrandom=function(a){a-=Math.floor(a);m._helper.seed=.8*a+.1};m._helper.rand=function(){if("NO"===m._helper.seed)return Math.random();var a=m._helper.seed,a=1E3*Math.sin(1E3*a),a=a-Math.floor(a);return m._helper.seed=a};m._helper.randnormal=function(){var a=m._helper.rand(),g=m._helper.rand();return Math.sqrt(-2*Math.log(a))*Math.cos(2*Math.PI*g)};m._helper.isEqual=function(a,g){return a.value.real===g.value.real&&a.value.imag===g.value.imag};m._helper.isLessThan= function(a,g){return a.value.real-q&&a-q};m._helper.isZero=function(a){return 0===a.value.real&&0===a.value.imag};m._helper.isAlmostZero=function(a){var g=a.value.real;a=a.value.imag; return g-m.eps&&a-m.eps};m._helper.isReal=function(a){return 0===a.value.imag};m._helper.isAlmostReal=function(a){a=a.value.imag;return a-m.epsbig};m._helper.isNaN=function(a){return isNaN(a.value.real)||isNaN(a.value.imag)};m._helper.isFinite=function(a){return isFinite(a.value.real)&&isFinite(a.value.imag)};m._helper.isAlmostImag=function(a){a=a.value.real;return a-m.epsbig};m._helper.z3a=m.complex(-.5,.5*Math.sqrt(3));m._helper.z3b=m.complex(-.5,-.5* Math.sqrt(3));m._helper.cub1={ctype:"list",value:[m.one,m.one,m.one]};m._helper.cub2={ctype:"list",value:[m._helper.z3a,m.one,m._helper.z3b]};m._helper.cub3={ctype:"list",value:[m._helper.z3b,m.one,m._helper.z3a]};m.solveCubic=function(a,g,c,q){a=m._helper.solveCubicHelper(a,g,c,q);return[h.scalproduct(m._helper.cub1,a),h.scalproduct(m._helper.cub2,a),h.scalproduct(m._helper.cub3,a)]};m._helper.solveCubicHelper=function(a,g,c,q){var b=a.value.real;a=a.value.imag;var d=g.value.real;g=g.value.imag; var e=c.value.real,f=c.value.imag,k=q.value.real,l=q.value.imag,n=b*e-a*f;c=b*f+a*e;q=4*n-(d*d-g*g);var p=4*c-2*d*g,r=b*d-a*g,t=b*g+a*d,v=q*e-p*f-18*(r*k-t*l),p=q*f+p*e-18*(r*l+t*k);q=27*(b*b-a*a);var u=54*a*b,w=q*k-u*l,x=q*l+u*k,y=d*d-g*g,A=2*d*g,z=y*d-A*g,B=y*g+A*d,C=w+4*z,u=x+4*B;q=27*(v*e-p*f+C*k-u*l);p=27*(v*f+p*e+C*l+u*k);C=Math.sqrt(Math.sqrt(q*q+p*p));u=Math.atan2(p,q);p=C*Math.sin(u/2);q=C*Math.cos(u/2);z=-2*z+9*(r*e-t*f)-w+(q*b-p*a);B=-2*B+9*(r*f+t*e)-x+(q*a+p*b);q=Math.exp(Math.log(Math.sqrt(z* z+B*B))/3);e=Math.atan2(B,z);u=q*Math.sin(e/3);p=q*Math.cos(e/3);q*=q;e*=2;n=2*y-6*n;c=2*A-6*c;A=-1.5874010519681996*(d*p-g*u);d=-1.5874010519681996*(d*u+g*p);g=1.2599210498948732*q*Math.cos(e/3);e=1.2599210498948732*q*Math.sin(e/3);q=4.762203155904599*(p*b-u*a);p=4.762203155904599*(p*a+u*b);b=q*q+p*p;u=(-n*p+c*q)/b;n=(n*q+c*p)/b;c=u;u=(-A*p+d*q)/b;A=(A*q+d*p)/b;d=u;u=(-g*p+e*q)/b;g=(g*q+e*p)/b;e=u;return h.turnIntoCSList([m.complex(n,c),m.complex(A,d),m.complex(g,e)])};var h={_helper:{},turnIntoCSList:function(a){return{ctype:"list", value:a}}};h.EMPTY=h.turnIntoCSList([]);h.asList=function(a){return"list"===a.ctype?a:"number"===a.ctype||"boolean"===a.ctype||"geo"===a.ctype?h.turnIntoCSList([a]):h.EMPTY};h.realVector=function(a){for(var g=[],c=0;c=c||b>=q)&&w.isEqual(a.value[b],g.value[b]);)b++;return b===c&&bb&&(c=q,b=d)}return c};h.normalizeMax=function(a){var g=m.inv(h.maxval(a));return m._helper.isFinite(g)?h.scalmult(g,a):a};h.normalizeZ=function(a){var g=m.inv(a.value[2]);return h.scalmult(g,a)};h.dehom=function(a){a=a.value.slice();var g=a.length-1,c=m.inv(a[g]);a.length=g;for(var q=0;qg&&(c=a.value[q],g=b.value.real)}return h.scaldiv(c,a)};h.recursive=function(a,g){for(var c=[],q=0;qh.abs(l).value.real&&0===p&&(l=h._helper.inverseIteration(a,b.value[c])),f.value[c]=h._helper.isAlmostZeroVec(l)?l:h.scaldiv(h.abs(l),l),cm.abs(m.sub(b.value[c],b.value[c+1])).value.real)?p++:p=0);f=h.transpose(f)}return h.turnIntoCSList([b,f])};h._helper.isNormalMatrix=function(a){return 1E-10>h.abs(h.sub(a,h.transjugate(a))).value.real}; h._helper.QRIteration=function(a,g){var c,b=a;c=m.real(b.value.length);var d=c.value.real,e=c.value.real;m.real(0);var f;h.idMatrix(c,c);var k=h.zeromatrix(c,c),l=h.idMatrix(c,c),n=g?g:2500,p,r,t,v=0,u=Array(e);for(c=0;cm.abs2(b.value[b.value.length-1].value[b.value[0].value.length-2]).value.real&&1e;e++)b=h.scaldiv(h.abs(b), b),b=h.LUsolve(h.sub(a,h.scalmult(d,c)),JSON.parse(JSON.stringify(b)));return h.scaldiv(h.abs(b),b)};h._helper.toHessenberg=function(a){var g=JSON.parse(JSON.stringify(a)),c=g.value.length,b=m.real(c-1),d=m.real(c);m.real(1);if(h._helper.isUpperTriangular(g))return[h.idMatrix(b,b),a];var e;a=h.idMatrix(d,d);for(var f,d=1;dc&&v++;break}e=m.sub(e,f);k.value=k.value.splice(0,k.value.length-1)}return{Q:l,R:n,P:h.turnIntoCSList(p),rank:m.real(v)}};h._helper.getHouseHolder=function(a){var g=m.real(a.value.length);if(1E-16>h.abs2(a))return h.idMatrix(g,g);var c,b=m.real(1),d=h._helper.unitvector(m.real(a.value.length),b);c=h._helper.QRgetAlpha(a,0);c=h.sub(a,h.scalmult(c,d));c=h.scaldiv(h.abs(c),c);a=m.div(h.sesquilinearproduct(a,c),h.sesquilinearproduct(c, a));g=h.idMatrix(g,g);return g=h.sub(g,h.scalmult(m.add(b,a),h._helper.transposeMult(c,h.conjugate(c))))};h._helper.reOrderbyPivots=function(a,g){for(var c=a.value.length.length,b=h.transpose(a),c=Array(c),d=0;da.value[g].value.real?h.abs(a):m.neg(h.abs(a))};h.LUdecomp=function(a){a=JSON.parse(JSON.stringify(a));var g,c,b,d,h,e=0,f,k=a.value.length,l=k-1,n=Array(k);for(b=0;b=l&&console.log("CG did not converge");return e};h.det= function(a){if(1===a.value.length)return a.value[0].value[0];if(2===a.value.length)return h.det2(a.value[0],a.value[1]);if(3===a.value.length)return h.det3(a.value[0],a.value[1],a.value[2]);if(4===a.value.length)return h.det4m(a);var g=a.value.length,c=m.real(1),b,d,e=JSON.parse(JSON.stringify(a)),f,k,l,n;for(a=0;am.abs(e.value[d].value[a]).value.real&&(d=b);d!==a&&(b=e.value[d],e.value[d]=e.value[a],e.value[a]=b,c=m.neg(c));f= e.value[a];for(b=a+1;b"]=function(a,g){var c=B(a[0]),b=B(a[1]);return"number"===c.ctype&&"number"===b.ctype&&m._helper.isAlmostReal(c)&&m._helper.isAlmostReal(b)?{ctype:"boolean",value:c.value.real-b.value.real>=m.eps}:k};Q["=:="]=C("=:=");Q[">="]=function(a,g){var c=B(a[0]),b=B(a[1]);return"number"===c.ctype&&"number"===b.ctype&& m._helper.isAlmostReal(c)&&m._helper.isAlmostReal(b)?{ctype:"boolean",value:c.value.real>=b.value.real}:"string"===c.ctype&&"string"===b.ctype?{ctype:"boolean",value:c.value>=b.value}:k};Q["<="]=function(a,g){var c=B(a[0]),b=B(a[1]);return"number"===c.ctype&&"number"===b.ctype&&m._helper.isAlmostReal(c)&&m._helper.isAlmostReal(b)?{ctype:"boolean",value:c.value.real<=b.value.real}:"string"===c.ctype&&"string"===b.ctype?{ctype:"boolean",value:c.value<=b.value}:k};Q["~>="]=function(a,g){var c=B(a[0]), b=B(a[1]);return"number"===c.ctype&&"number"===b.ctype&&m._helper.isAlmostReal(c)&&m._helper.isAlmostReal(b)?{ctype:"boolean",value:c.value.real-b.value.real>-m.eps}:k};Q["~<="]=function(a,g){var c=B(a[0]),b=B(a[1]);return"number"===c.ctype&&"number"===b.ctype&&m._helper.isAlmostReal(c)&&m._helper.isAlmostReal(b)?{ctype:"boolean",value:c.value.real-b.value.real"]=function(a,g){var c=B(a[0]),b=B(a[1]);return"number"===c.ctype&&"number"===b.ctype&&m._helper.isAlmostReal(c)&&m._helper.isAlmostReal(b)? {ctype:"boolean",value:c.value.real>b.value.real}:"string"===c.ctype&&"string"===b.ctype?{ctype:"boolean",value:c.value>b.value}:k};Q["<"]=function(a,g){var c=B(a[0]),b=B(a[1]);return"number"===c.ctype&&"number"===b.ctype&&m._helper.isAlmostReal(c)&&m._helper.isAlmostReal(b)?{ctype:"boolean",value:c.value.real"]=Oc;Q["\u2208"]=function(a,g){var c=z(a[0]),b=z(a[1]);return"list"===b.ctype?h.contains(b, c):k};Q["\u2209"]=function(a,g){var c=z(a[0]),b=z(a[1]);return"list"===b.ctype?w.not(h.contains(b,c)):k};Q["&"]=Pc;Q["%"]=Qc;Q["!="]=Oc;Q["~!="]=function(a,g){return w.not(hc(a,g))};Q[".."]=function(a,g){var c=z(a[0]),b=z(a[1]);return"number"===c.ctype&&"number"===b.ctype?h.sequence(c,b):k};Q["++"]=ad;Q["--"]=cd;Q["~~"]=bd;Q[":>"]=dd;Q["<:"]=ed;Q["="]=ab;Q[":="]=function(a,g,c){g="undefined"===a[1].ctype;if("undefined"===a[0].ctype||g)return k;if("function"===a[0].ctype){g=a[0].oper;var b=a[0].args, d=a[1],h=1;if(db.hasOwnProperty(g)){h=db[g];if(h.definer===c)return k;h=h.generation+1}db[g]={oper:g,body:d,arglist:b,definer:c,generation:h}}"variable"===a[0].ctype&&J.setvar(a[0].name,a[1]);return k};Q[":=_"]=function(a,g){if("void"!==a[1].ctype)return k;"function"===a[0].ctype&&delete db[a[0].oper];return k};Q["::="]=C("::=");Q[";"]=function(a,g){var c="void"===a[0].ctype,b="void"===a[1].ctype;if(c&&b)return k;if(!c&&b)return z(a[0]);c||b||z(a[0]);return b?k:z(a[1])};var t={},D={evaluate:function(a, g,c){if(db.hasOwnProperty(a)){a=db[a];if(void 0===a)g=k;else{var b=[];for(c=0;c "+Z(g[a]))};J.vstack=[];J.pushVstack=function(a){this.vstack.push(a)};J.popVstack=function(){this.vstack.pop()};J.cleanVstack=function(){for(var a=this.vstack;0 "+Z(z(b));ka(b);return k};t.errc$1=function(a,g){var c;"variable"===a[0].ctype?(c=z(J.getvar(a[0].name)),console.log(a[0].name+" ===> "+Z(c))):(c=z(a[0]),console.log(" ===> "+Z(c)));return k};t.print$1=function(a,g){wa.out(Z(z(a[0])), !0);return k};t.println$1=function(a,g){wa.out(Z(z(a[0])));return k};t.assert$2=function(a,g){var c=z(a[0]);if("boolean"===c.ctype){if(!1===c.value)return t.println$1([a[1]],g)}else ka("Condition for assert is not boolean");return k};t.dump$1=function(a,g){console.log(JSON.stringify(a[0]));return k};t.repeat$2=function(a,g){return t.repeat$3([a[0],null,a[1]],g)};t.repeat$3=function(a,g){var c=B(a[0]),b="#";null!==a[1]&&"variable"===a[1].ctype&&(b=a[1].name);if("number"!==c.ctype)return k;var c=Math.round(c.value.real), d=1,h=1,e=c+1,f=!1,m=!1,l=!1,n;void 0!==g.start&&(n=z(g.start),"number"===n.ctype&&(f=!0,h=n.value.real));void 0!==g.step&&(n=z(g.step),"number"===n.ctype&&(l=!0,d=n.value.real));void 0!==g.stop&&(n=z(g.stop),"number"===n.ctype&&(m=!0,e=n.value.real));!f||m||l||(e=d*c+h);f||!m||l||(h=-d*(c-1)+e,e+=d);f||m||!l||(e=d*c+h);f&&m&&!l&&(d=(e-h)/(c-1),e+=d);f&&!m&&l&&(e=d*c+h);!f&&m&&l&&(h=-d*(c-1)+e,e+=d);f&&m&&l&&(e+=d);(h<=e&&0=e&&0>d)&&f&&m&&l&&(c=Math.floor((e-h)/d));J.newvar(b);e=k;for(f=0;f< c;f++)J.setvar(b,{ctype:"number",value:{real:f*d+h,imag:0}}),e=z(a[2]);J.removevar(b);return e};t.while$2=function(a,g){for(var c=a[1],b=a[0],d=z(b),h=k;"list"!==d.ctype&&d.value;)h=z(c),d=z(b);return h};t.apply$2=function(a,g){return t.apply$3([a[0],null,a[1]],g)};t.apply$3=function(a,g){var c=B(a[0]);if("list"!==c.ctype)return k;var b="#";null!==a[1]&&"variable"===a[1].ctype&&(b=a[1].name);var c=c.value,d=[];J.newvar(b);for(var h=0;hd&&(d=b.value.length+d+1),0=b)return h.turnIntoCSList([]);if(m._helper.isZero(a.value[b]))return g=D.roots(h.turnIntoCSList(a.value.slice(0,b))),h.append(g,m.infinity);if(1===b)g[0]=m.neg(m.div(a.value[0],a.value[1]));else if(2===b)g=D.quadratic_roots(a);else{for(var d=0;dh.value.real)return ka("grade cant be < 1"),k;h=m.add(h,m.real(1));return P.autodiff(b,c,d,h)};t.cos$1=function(a,g){var c=B(a[0]);return"number"===c.ctype?m.cos(c):k};t.tan$1=function(a,g){var c=B(a[0]);return"number"===c.ctype?m.tan(c):k};t.arccos$1=function(a,g){var c=B(a[0]);return"number"===c.ctype?m.arccos(c):k};t.arcsin$1=function(a,g){var c=B(a[0]);return"number"=== c.ctype?m.arcsin(c):k};t.arctan$1=function(a,g){var c=B(a[0]);return"number"===c.ctype?m.arctan(c):k};t.arctan2$2=function(a,g){var c=B(a[0]),b=B(a[1]);return"number"===c.ctype&&"number"===b.ctype?m.arctan2(c,b):k};t.arctan2$1=function(a,g){var c=B(a[0]);if("list"===c.ctype&&2===c.value.length){if(c=c.value,"number"===c[0].ctype&&"number"===c[1].ctype)return t.arctan2$2(c,g)}else if("number"===c.ctype)return m.arctan2(c);return k};t.log$1=function(a,g){var c=B(a[0]);return"number"===c.ctype?m.log(c): k};D.recursiveGen=function(a){var g=m[a],c=h[a];t[a+"$1"]=function(a,b){var d=B(a[0]);return"number"===d.ctype?g(d):"list"===d.ctype?c(d):k}};D.recursiveGen("im");D.recursiveGen("re");D.recursiveGen("conjugate");D.recursiveGen("round");D.recursiveGen("ceil");D.recursiveGen("floor");D.recursiveGen("abs");t.abs_infix=t.abs$1;t.random$0=function(a,g){return m.real(m._helper.rand())};t.random$1=function(a,g){var c=B(a[0]);return"number"===c.ctype?m.complex(c.value.real*m._helper.rand(),c.value.imag*m._helper.rand()): k};t.seedrandom$1=function(a,g){var c=B(a[0]);"number"===c.ctype&&m._helper.seedrandom(c.value.real);return k};t.randomnormal$0=function(a,g){return m.real(m._helper.randnormal())};t.randominteger$1=function(a,g){var c=B(a[0]);if("number"===c.ctype){var b=c.value.real|0,c=c.value.imag|0,b=b*m._helper.rand()|0,c=c*m._helper.rand()|0;return m.complex(b,c)}return k};t.randomint$1=t.randominteger$1;t.randombool$0=function(a,g){return.5f)return m.real(0);if(0=== f)return m.real(1);if(1===f)return b;for(var p=d=1,r=1;r<=f;++r)var t=e-f+r|0,u=r|0,v=wc(t,u)|0,t=t/v|0,u=u/v|0,v=wc(d,u)|0,d=d/v|0,u=u/v|0,v=wc(t,p)|0,t=t/v|0,p=p/v|0,d=d*t|0,p=p*u|0;return m.real(d/p)}if("list"===b.ctype){e=b.value.length;if(0>f||f>e)return h.turnIntoCSList([]);if(0===f)return h.turnIntoCSList([h.turnIntoCSList([])]);if(f===e)return h.turnIntoCSList([b]);n=[];l=Array(f);c(0,0);return h.turnIntoCSList(n)}}return k};t.zeromatrix$2=function(a,g){var c=B(a[0]),b=B(a[1]);return"number"=== c.ctype&&"number"===b.ctype?h.zeromatrix(c,b):k};t.zerovector$1=function(a,g){var c=B(a[0]);return"number"===c.ctype?h.zerovector(c):k};t.transpose$1=function(a,g){var c=B(a[0]);return"list"===c.ctype&&-1!==h._helper.colNumb(c)?h.transpose(c):k};t.row$2=function(a,g){var c=B(a[0]),b=B(a[1]);return"number"===b.ctype&&"list"===c.ctype&&-1!==h._helper.colNumb(c)?h.row(c,b):k};t.column$2=function(a,g){var c=B(a[0]),b=B(a[1]);return"number"===b.ctype&&"list"===c.ctype&&-1!==h._helper.colNumb(c)?h.column(c, b):k};t.dict$0=function(a,g){var c=Na.create(),b;for(b in g)g.hasOwnProperty(b)&&Na.put(c,w.string(b),z(g[b]));return c};t.put$3=function(a,g){var c=z(a[0]),b=z(a[1]),d=z(a[2]);return"dict"===c.ctype?(c=Na.clone(c),Na.put(c,b,d),c):k};t.get$2=function(a,g){var c=z(a[0]),b=z(a[1]);return"dict"===c.ctype?Na.get(c,b,k):k};t.red$1=function(a,g){var c=z(a[0]);return"number"===c.ctype?h.realVector([Math.min(1,Math.max(0,c.value.real)),0,0]):k};t.green$1=function(a,g){var c=z(a[0]);return"number"===c.ctype? h.realVector([0,Math.min(1,Math.max(0,c.value.real)),0]):k};t.blue$1=function(a,g){var c=z(a[0]);return"number"===c.ctype?h.realVector([0,0,Math.min(1,Math.max(0,c.value.real))]):k};t.gray$1=function(a,g){var c=z(a[0]);return"number"===c.ctype?(c=Math.min(1,Math.max(0,c.value.real)),h.realVector([c,c,c])):k};t.grey$1=t.gray$1;D.HSVtoRGB=function(a,g,c){var b,d,e,f,k,m;a&&void 0===g&&void 0===c&&(g=a.s,c=a.v,a=a.h);f=Math.floor(6*a);k=6*a-f;a=c*(1-g);m=c*(1-k*g);g=c*(1-(1-k)*g);switch(f%6){case 0:b= c;d=g;e=a;break;case 1:b=m;d=c;e=a;break;case 2:b=a;d=c;e=g;break;case 3:b=a;d=m;e=c;break;case 4:b=g;d=a;e=c;break;case 5:b=c,d=a,e=m}return h.realVector([b,d,e])};t.hue$1=function(a,g){var c=z(a[0]);return"number"===c.ctype?(c=c.value.real,c-=Math.floor(c),D.HSVtoRGB(c,1,1)):k};D.shapeconvert=function(a){var g,c;if("circle"===a.type){g=a.value.value[0];g=w.div(g,g.value[2]);var b=g.value[0].value.real,d=g.value[1].value.real;a=a.value.value[1].value.real;c=Array(125);var h=2*Math.PI/125;for(g=0;125> g;g++)c[g]={X:b+Math.cos(g*h)*a,Y:d+Math.sin(g*h)*a};return[c]}if("polygon"===a.type){b=[];for(g=0;g=c?c=String.fromCharCode(c):(c-=65536,c=String.fromCharCode((c>>10)+55296,(c&1023)+ 56320));return w.string(c)};t.international$1=function(a,g){return t.international$2([a[0],null],g)};t.international$2=function(a,g){var c=z(a[0]);if("string"!==c.ctype)return k;var b=(p.translations||{})[p.language||"en"]||{};if(!b.hasOwnProperty(c.value))return c;var d=b[c.value];if("string"===typeof d)return w.string(d);if(null===a[1])return c;var h=z(a[1]),h="number"===h.ctype?h.value.real:0,b=(b._pluralFormFunction||ce)(h);return bMath.min(a[0],a[1])},f=v.points.filter(function(a){return.5> b(a.homog)}),k=v.lines.filter(function(a){var g;g=d(a.homog);g=h.normalizeMax(h.cross(a.homog,g));if((g=.5>b(g))&&"S"===a.kind){var e=a.homog,e=h.turnIntoCSList([e.value[0],e.value[1],m.zero]);a=h.crossratio3(a.farpoint,a.startpos,a.endpos,c,e).value.real;if(0>a||1a.value.real&&(b=m.neg(b));0>b.value.real&&(g=!1)}return g}),f=f.concat(k,n);return h.ofGeos(f)};t.incidences$1=t.allelements$1;t.createpoint$2=function(a,g){var c=z(a[0]),b=K(a[1]);return"string"!==c.ctype?(ka("Name must be a string"),k):"list"!==b.ctype&&h.isNumberVector(b)?(ka("Position must be a number vector"),k):Ka({name:c.value,type:"Free",labeled:!0,pos:b})};t.create$3=function(a,g){var c=z(a[0]),b=z(a[1]), d=z(a[2]),e,f;if("string"===c.ctype)e=c.value;else{if("list"!==c.ctype)return ka("Names must be a string or a list of strings"),k;if(1!==c.value.length){e=w.string(c.value.map(function(a){return a.value}).join("__"));e=t.create$3([e,b,d],g);if(e!==k)for(b=w.string(e.kind.replace(/^(.*)s$/,"Select$1")),d=h.turnIntoCSList([w.string(e.name)]),f=0;fm&&(m=a.length)});for(var l=[],n=0;nd.length)for(n=d.length;n(c.x-g.x)*(c.x-g.x)+(c.y-g.y)*(c.y-g.y)||1E-12>n||1E-12>e)return k;0>h.crossratio3(b,a,d,h.cross(h.cross(b,d),h.linfty),h.ii).value.real?x.drawsegcore(c,f):x.drawRaySegment(b,a)}return k};D.drawcircle=function(a,g,c){var b=B(a[0]);a=B(a[1]);var d=D.extractPoint(b);if(!d.ok||"number"!==a.ctype||!m._helper.isAlmostReal(a))return k;var b=y.drawingstate.matrix, e=d.x*b.a-d.y*b.b+b.tx,d=d.x*b.c-d.y*b.d-b.ty;x.handleModifs(g,x.conicModifs);x.preDrawCurve();A.lineJoin="miter";A.beginPath();A.arc(e,d,Math.abs(a.value.real)*b.sdet,0,2*Math.PI);A.closePath();"D"===c&&A.stroke();"F"===c&&(A.fillStyle=x.lineColor,A.fill());"C"===c&&A.clip();return k};t.drawconic$1=function(a,b){var c=B(a[0]);if("list"!==c.ctype||3!==c.value.length&&6!==c.value.length)return console.error("could not parse conic"),k;if(6===c.value.length){for(var d=0;6>d;d++)if("number"!==c.value[d].ctype)return console.error("could not parse conic"), k;var e=m.real(.5),d=c.value[0],f=c.value[2],f=m.mult(f,e),l=c.value[1],n=c.value[3],n=m.mult(n,e),p=c.value[4],p=m.mult(p,e),c=c.value[5],c=h.turnIntoCSList([h.turnIntoCSList([d,f,n]),h.turnIntoCSList([f,l,p]),h.turnIntoCSList([n,p,c])])}else{if(!h.isNumberMatrix(c).value||3!==c.value.length||3!==c.value[0].value.length)return k;d=h.transpose(c);h.equals(c,d).value||(c=h.add(d,c))}return D.drawconic(c,b)};D.drawconic=function(a,b){function c(a,c){var b=(p*a+r*c+t)*a+(u*c+v)*c+w;return 0<=b?1:0>b? -1:NaN}function d(a){K.next=a;a.prev=K;return K=a}function e(a,b,g,d){return{a:a,b1:b,b2:g,vertical:!0,index:d,sign:function(b){return c(a,b)},mkp:function(c){return{x:a,y:c}},sol:Jb(u,r*a+v,(p*a+t)*a+w),discr:function(){return Jb(E,-2*C,z)},tpt:function(a){return{x:a,y:-.5*(r*a+v)/u}}}}function f(a,b,g,d){return{a:a,b1:b,b2:g,vertical:!1,index:d,sign:function(b){return c(b,a)},mkp:function(c){return{x:c,y:a}},sol:Jb(p,r*a+t,(u*a+v)*a+w),discr:function(){return Jb(E,-2*F,D)},tpt:function(a){return{x:-.5* (r*a+t)/p,y:a}}}}function m(a){var c=Math.min(a.b1,a.b2),b=Math.max(a.b1,a.b2),g=a.sign(c),e=a.sign(b);if(!isFinite(g*e))return!1;var h=a.sol,f;if(g!==e){if(null===h)return!1;f=.5*(h[0]+h[1]);f>c&&f=G)return!0;h=a.discr();if(null===h)return!0;a=a.tpt(h[a.index]);a.x>=H&&a.x<=J&&a.y>=L&&a.y<=M&&d(a);return!0}f=.5*(h[0]+h[1]);if(!(f>c&&fa.b2&&(h=[h[1],h[0]]);N.push(d(a.mkp(h[0])));N.push(d(a.mkp(h[1])))}return!0}function k(a,c,b,g,d){var e=c-g,h=b-a,q=a*g-c*b,f=C*e+F*h+E*q;if(1E-14>Math.abs(f))return A.lineTo(b,g);var m=(z*e+B*h+C*q)/f,e=(B*e+D*h+F*q)/f;if(!isFinite(m)||!isFinite(e)||.04>Math.abs(a*e+m*g+b*c-b*e-m*c-a*g))return A.lineTo(b,g);do if(!(10l*l+f*f)){var n=p*l*l+r*l*f+u*f*f,oa=2*p*l*q+r*(l*h+f*q)+2*u*f*h+t*l+v*f,W=(p*q+r*h+t)*q+(u*h+v)*h+w,xa=Jb(n, oa,W);xa||(xa=[-.5*oa/n,-2*W/oa]);if(0q*q+h*h)){k(a,c,l,f,d+1);k(l,f,b,g,d+1);return}}}while(0);A.quadraticCurveTo(m,e,b,g)}x.handleModifs(b,x.conicModifs);if(0!==x.lsize){x.preDrawCurve();var l;l=h.normalizeMax(a);if(h._helper.isAlmostReal(l)){var n=y.toMat();l=h.mult(h.transpose(n),l);l=h.mult(l,n);l=h.normalizeMax(l);var p=l.value[0].value[0].value.real,r=2*l.value[0].value[1].value.real,t= 2*l.value[0].value[2].value.real,u=l.value[1].value[1].value.real,v=2*l.value[1].value[2].value.real,w=l.value[2].value[2].value.real,z=4*w*u-v*v,B=v*t-2*w*r,C=v*r-2*u*t,D=4*w*p-t*t,F=t*r-2*v*p,E=4*u*p-r*r,G=E;l=u*D+r*B+p*z-w*E;0>l&&(p=-p,r=-r,t=-t,u=-u,v=-v,w=-w,l=-l);l=x.lsize;var H=-l,L=-l,J=ca+l,M=da+l,N=[],K=l={};if(m(e(H,L,M,0))&&m(f(M,H,J,1))&&m(e(J,M,L,1))&&m(f(L,J,H,0))&&K!==l){K.next=l.next;l.next.prev=K;A.beginPath();var I,O;if(0===N.length){I=K;A.moveTo(I.x,I.y);do O=I.next,k(I.x,I.y, O.x,O.y,0),I=O;while(I!==K);A.closePath()}n=1===c(H,L)?0:1;if(4===N.length){var P=0;for(l=0;2>l;++l){I=N[l];O=N[l+2];var Q=O.x-I.x;I=O.y-I.y;I=(p*Q+r*I)*Q+u*I*I;Math.abs(I)>Math.abs(P)&&(P=I)}if(isNaN(P))return;0<=P&&(n=1-n)}for(l=n;lf&&(f=d[m].value.length);-1===f?(d=d.map(function(a){return[a]}),f=1):d=d.map(function(a){return h.asList(a).value});var l=100,n=null,p=!0,r=y.drawingstate.textcolor;x.handleModifs(b,{size:!0,color:function(a){h._helper.isNumberVecN(a,3)&&(r=x.makeColor([a.value[0].value.real,a.value[1].value.real,a.value[2].value.real]))},alpha:!0,bold:!0,italics:!0,family:!0,align:!0,x_offset:!0,y_offset:!0,offset:!0,width:function(a){"number"=== a.ctype&&(l=a.value.real)},height:function(a){"number"===a.ctype&&(n=a.value.real)},border:function(a){"boolean"===a.ctype&&(p=a.value)}});var t=y.drawingstate.textsize;null===t&&(t=ga.textsize);null!==x.size&&(t=x.size);null===n&&(n=1.6*t);A.font=x.bold+x.italics+Math.round(10*t)/10+"px "+x.family;m=y.drawingstate.matrix;var u=f*l,v=c*n,t=e.x*m.a-e.y*m.b+m.tx+x.xOffset,w=e.x*m.c-e.y*m.d-m.ty-x.yOffset-v;if(p){x.preDrawCurve();A.strokeStyle=x.lineColor;A.beginPath();for(m=1;mk)!f&&p&&(A.stroke(),p=!1);else if(n||r){var t=m.real((a.value.real+b.value.real)/2);J.setvar(B,t);var u=z(w), v=c(u);if(n&&r&&v){var Wb=g.value.real,r=u.value.real,v=h.value.real;if(n=1>Math.abs(Wb+v-2*r)/l){var Wa=m.real((a.value.real+t.value.real)/2);J.setvar(B,Wa);var Wa=z(w),Ra=m.real((t.value.real+b.value.real)/2);J.setvar(B,Ra);Ra=z(w);Wb=Math.abs(Wb+r-2*Wa.value.real)/l;r=Math.abs(r+v-2*Ra.value.real)/l;n=n&&1>Wb&&1>r}n?(d(a,t,g,u,k/2),d(t,b,u,h,k/2)):(e(a,t,g,u,k/2),e(t,b,u,h,k/2))}else e(a,t,g,u,k/2),e(t,b,u,h,k/2)}}var f=!1,l=.2/Tb,n=0,p=!1,r=-10,t=10,u=.1,v=1E3,w=a[0],B;if(null!==a[1]&&"variable"=== a[1].ctype)B=a[1].name;else{var C=D.plotvars(w);B="#";-1!==C.indexOf("t")&&(B="t");-1!==C.indexOf("z")&&(B="z");-1!==C.indexOf("y")&&(B="y");-1!==C.indexOf("x")&&(B="x")}J.newvar(B);var E=y.drawingstate.matrix;x.handleModifs(b,{color:!0,alpha:!0,size:!0,dashpattern:!0,dashtype:!0,dashing:!0,lineCap:!0,lineJoin:!0,miterLimit:!0,connect:function(a){"boolean"===a.ctype&&(f=a.value)},start:function(a){"number"===a.ctype&&(r=a.value.real)},stop:function(a){"number"===a.ctype&&(t=a.value.real)},steps:function(a){"number"=== a.ctype&&(v=a.value.real)}});A.strokeStyle=x.lineColor;A.lineWidth=x.lsize;var F,G,H,I,p=!1,C=m.real(14.32);J.setvar(B,C);H=z(w);if("number"!==H.ctype){if(h.isNumberVector(H).value&&2===H.value.length){p=!1;u=(t-r)/v;for(C=r;Cr&&e(F,C,G,H,u),F=C,G=H;J.removevar(B);p&&A.stroke();return k};t.plotX$1=function(a,b){var c=a[0],d=D.plotvars(c),e="#";-1!==d.indexOf("t")&&(e="t");-1!==d.indexOf("z")&&(e="z");-1!==d.indexOf("y")&&(e="y");-1!==d.indexOf("x")&&(e="x");J.newvar(e);d=y.drawingstate.matrix;A.fillStyle=y.drawingstate.linecolor;A.lineWidth=1;A.lineCap=x.lineCap;A.lineJoin=x.lineJoin;A.miterLimit=x.miterLimit;for(var h=!1,f=-10;10>f;f+=.01){J.setvar(e,m.real(f));var l=z(c); if("number"===l.ctype){var n=+l.value.real,l=f*d.a-n*d.b+d.tx,n=f*d.c-n*d.d-d.ty;h?A.lineTo(l,n):(A.beginPath(),A.moveTo(l,n),h=!0)}}A.stroke();J.removevar(e);return k};D.plotvars=function(a){function b(a,c){var g={},d;for(d=a.length-1;0<=d;--d)g[a[d]]=a[d];for(d=c.length-1;0<=d;--d)g[c[d]]=c[d];d=[];for(var e in g)g.hasOwnProperty(e)&&d.push(g[e]);return d}function c(a,c){for(var b=0;bf||!Number.isInteger(f)?(e.video.aspectRatio=f,e.video.advanced[0].aspectRatio={min:f,max:f},e.video.advanced[1].aspectRatio={ideal:f}):(e.video.height=f,e.video.advanced[0].height={min:f,max:f},e.video.advanced[1].height={ideal:f}))}d&&(e=[320,640,1024,1280,1920,2560],e=e.map(function(a){return{width:{min:a}}}),e={video:{width:16E3, height:9E3,advanced:e},audio:!1});var d=null,m=navigator.mediaDevices&&navigator.mediaDevices.getUserMedia;m?d=function(a,c){navigator.mediaDevices.getUserMedia(e).then(a,c)}:(m=navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia||navigator.msGetUserMedia)&&(d=function(a,c){m.call(navigator,e,a,c)});if(!d)return console.warn("getUserMedia call not supported"),k;var l=document.createElement("video");l.autoplay=!0;f=fa(l,!0);console.log("Opening stream.");d(function(a){l.srcObject= a;l.setAttribute("autoplay","");l.setAttribute("muted","");l.setAttribute("playsinline","");l.play();l.addEventListener("loadeddata",M)},function(a){console.error("Could not get user video:",String(a),a)});return f};t.playvideo$1=function(a,b){var c=Ja(B(a[0]));c.live&&c.img.play&&c.img.play();return k};t.pausevideo$1=function(a,b){var c=Ja(B(a[0]));c.live&&c.img.pause&&c.img.pause();return k};var Kb;t.imagergba$3=function(a,b){var c=Ja(B(a[0])),d=B(a[1]),e=B(a[2]);if(!c||"number"!==d.ctype||"number"!== e.ctype||!c.ready)return k;d=Math.round(d.value.real);e=Math.round(e.value.real);if(!Ia(d)||!Ia(e))return k;c=pb(c,d,e,1,1);return h.realVector([255*c[0],255*c[1],255*c[2],c[3]])};t.imagergb$3=t.imagergba$3;t.imagergba$4=function(a,b){var c=Ja(B(a[2]));if(!c||!c.ready)return k;var d=c.width,e=c.height,f=K(a[0]),m=K(a[1]),l=K(h.realVector([0,e,1])),d=K(h.realVector([d,e,1]));if(f===k||m===k||n===k)return k;var n=h.ii,e=h.jj,l=D.basismap(l,d,n,e),f=D.basismap(f,m,e,n),n=K(a[3]);var p=D.extractPoint(w.mult(l, w.mult(h.adjoint3(f),n)));if(p.ok){var m=c.width,l=c.height,n=!0,r=!1;void 0!==b.interpolate&&(f=z(b.interpolate),"boolean"===f.ctype&&(n=f.value));void 0!==b.repeat&&(f=z(b.repeat),"boolean"===f.ctype&&(r=f.value));n&&(p.x-=.5,p.y-=.5);r&&(p.x=(p.x%m+m)%m,p.y=(p.y%l+l)%l);d=Math.floor(p.x);e=Math.floor(p.y);if(Ia(d)&&Ia(e)){f=[0,0,0,0];if(n){var n=p.x-d,p=p.y-e,t=pb(c,d,e,2,2);if(r){if(d===m-1||e===l-1)var r=pb(c,(d+1)%m,e,1,1),v=pb(c,d,(e+1)%l,1,1),c=pb(c,(d+1)%m,(e+1)%l,1,1),t=t.slice(0,4).concat(r, v,c)}else{if(-1===d||d===m-1)n=Math.round(n);if(-1===e||e===l-1)p=Math.round(p)}for(c=0;4>c;c++)f[c]=(1-p)*((1-n)*t[c]+n*t[c+4])+p*((1-n)*t[c+8]+n*t[c+12])}else f=pb(c,d,e,1,1);c=h.realVector(f)}else c=k}else c=k;return c};t.imagergb$4=function(a,b){var c=t.imagergba$4(a,b);return c===k?k:h.turnIntoCSList(c.value.slice(0,3))};t.readpixels$1=function(a,b){for(var c=Ja(B(a[0])),c=pb(c,0,0,c.width,c.height),d=[],e=0;e+3","\u2260"],lt:["<"],gt:[">"],le:["<=","\u2264","\u2266"],ge:[">=","\u2265","\u2267"],aeq:["~=","\u2248"],ane:["~!=","\u2249"],alt:["~<", "\u2a89"],agt:["~>","\u2a8a"],ale:["~<=","\u2a85"],age:["~>=","\u2a86"],"in":["\u2208"],nin:["\u2209"]},{and:["&","\u2227"],or:["%","\u2228"]},{rassoc:!0,prepend:["<:"]},{concat:["++","\u222a"],remove:["--","\u2216"],common:["~~","\u2229"],append:[":>"]},{rassoc:!0,assign:["="],define:[":="],undefine:[":=_"],bdefine:["::="]},{seq:[";"]},{modif:["->","\u2192"]},{rassoc:!0,list:[","]}],Ae=["+","-"],Be=["!","\u221a"],Ce=["\u00b0",":=_"],De=[";",","],Kc=[],Ca={},kd;(function(){var a=0;ze.forEach(function(b){a+= 2;var c=!!b.rassoc;b.functionCall&&(kd=a);for(var d in b){var e=b[d];if("boolean"!==typeof e)for(var h={name:d,sym:e[0],symbols:e,rassoc:c,precedence:a,prefix:!1,postfix:!1,infix:!0,bare:!1},f=0;f &%C( / . $$!L! %5%;( D#!*!* 4'&*$W + !#&]F %6&]% !#% !#!(# & ! !#% # %1!#$ !/#L!S( @?$\u00817-!*''#$!$%+ ',6!:= !&!#7 \u0090 ##& ! ##D ##B ##& ! ##9 K ##^Y2*V#'$\u009d#5 4&p((+, #2*2*2, 5OC!'!Uy.D !&_)0J<#$,E'4Q/1Pv!|8:&K<9%)E>@7 )@\u0080# #$%1gT\u008e#'#=#'#( ! ! ! 0#P & !$ &$##'',& &d!9!*,b!'!#. !$$(! ! ! # 1##&$'!G%\u00a58 8 \u0084(#$%6= !&!#Q+!*/1& & & & & & & &t!\u0097%E$&%'V( z #&D${:Aj2\u0099\u00a6q\u00a9E\u00a4UZ#\u008d$2)%-8*0#_J+#b#M#(S1 # /0O2[R'$! !6>)/A?+8?G)-):9*\ud803!`KJ9J\ud804#PriL3>@7M$!6F2#/! !C* 3V& ! # 9 .+8N(#%#- & % $$!;!6$\ud805eF-% !\u008987#=F-!k7x4\ud806\u0087RB!\u0095K\ud808!\u00a2\ud809e\u008a\ud80d!8\ud811!\u009c\ud81a!\u009b+0c<;F*#BH&:\ud81b\u00a0U,!l,\ud82c!%\ud82f!\"&,$++.\ud835!w m %#!#%## ) ! & S ##( & > # $ !$& \u0091#3 3 0 3 0 3 0 3 0 3 (\ud83a!\u008b\ud83b\u0098# A % !#! . # ! !(!'! ! ! % !#! ! ! ! ! % !## & # # ! . 5& $ 5\ud869!\u009f7\u008c\ud86d!\u00a1,g\ud86e!<#\u00a3\ud873!\u009e\ud87e!\u009a", "\ud80c\ud840-\ud868\ud86a-\ud86c\ud86f-\ud872"),He=("#(?: [1-9])?|(?:'|"+Lc+")(?: (?:[0-9']|"+Lc+"))*").replace(/ /g,"[ \t]*"),hd=["([ \t\n]+)|(//.*)|(/\\*)","("+Ee+")","("+Kc.map(gd).join("|")+")","("+"[](){}||".split("").map(gd).join("|")+")","("+Ge+")","("+Fe+")","("+He+")",'("[^"]*")|($)'].join("|"),Ie=new RegExp("[ \t]*".replace(/\*$/,"+"),"g"),Mc="ANY WS COMMENT START_COMMENT NUM OP BRA SUB SUP ID STR EOF".split(" ");(function(){var a=(new RegExp(hd,"g")).exec("");if(a.hasOwnProperty(Mc.length))throw Error("RE has more groups than expected"); if(!a.hasOwnProperty(Mc.length-1))throw Error("RE has fewer groups than expected");})();qb.prototype.advanceBy=function(a){this.advanceTo(this.pos+a)};qb.prototype.advanceTo=function(a){for(this.pos=a;this.bols[0]<=a;)this.bol=this.bols.shift(),this.line++};qb.prototype.curPos=function(){return{row:this.line,col:this.pos-this.bol,pos:this.pos}};qb.prototype.nextInternal=function(){var a=this.re.exec(this.input);if(a.index!==this.pos)throw la("Invalid token",this.curPos(),this.input.substring(this.pos, a.index));var b=this.curPos();this.advanceBy(a[0].length);var c=this.curPos(),d;for(d=1;null==a[d];++d);return{start:b,end:c,raw:a[0],text:a[0].replace(Ie,""),toktype:Mc[d]}};qb.prototype.next=function(){var a;do if(a=this.nextInternal(),"START_COMMENT"===a.toktype){var b=/\*\/|\/\*/g;b.lastIndex=a.start.pos+2;for(var c=1,d;0d&&(d=0),10b.value.real||b.value.real!==Math.floor(b.value.real))return P.root(a, b);for(var c=a,d=1;d=x.psize&&(x.psize=0);0>=x.lsize&&(x.lsize=0);x.overhang=1;x.dashing=!1;x.isArrow=!1;x.arrowSides="==>";x.arrowposition=1;x.headlen=10;x.arrowShape=x.arrowShapes.line;x.alpha=y.drawingstate.alpha;x.fillalpha=0;x.bold="";x.italics="";x.family="sans-serif";x.align=0;x.xOffset=0;x.yOffset=0;x.lineCap="round";x.lineJoin="round";x.miterLimit=10;x.noborder=!1;var c,d;for(c in a){var e=a[c];e&&((d=b[c])?(!0===d&&(d=x.modifHandlers[c]), d(z(e))):console.log("Modifier not supported: "+c))}null!==x.size?x.psize=x.lsize=x.size:(x.psize=y.drawingstate.pointsize,x.lsize=y.drawingstate.linesize);x.dashing&&x.dashing(x.lsize);null!==x.colorraw?x.pointColor=x.lineColor=x.textColor=x.makeColor(x.colorraw):1===x.alpha?(x.pointColor=y.drawingstate.pointcolor,x.lineColor=y.drawingstate.linecolor,x.textColor=y.drawingstate.textcolor):(x.pointColor=x.makeColor(y.drawingstate.pointcolorraw),x.lineColor=x.makeColor(y.drawingstate.linecolorraw), x.textColor=x.makeColor(y.drawingstate.textcolorraw));x.black=1===x.alpha?"rgb(0,0,0)":"rgba(0,0,0,"+x.alpha+")";x.fillColor=x.fillcolorraw&&0x.size&&(x.size=0),1E3"!==a.value&&"<==>"!==a.value&&"<=="!==a.value?console.error("arrowsides is unknows"): (x.arrowSides=a.value,x.isArrow=!0)},arrowposition:function(a){"number"!==a.ctype?console.error("arrowposition is not of type number"):0>a.value.real?console.error("arrowposition has to be positive"):1a.value.real?console.error("arrowsize has to be positive"):x.headlen*=a.value.real}, bold:function(a){"boolean"===a.ctype&&a.value&&(x.bold="bold ")},italics:function(a){"boolean"===a.ctype&&a.value&&(x.italics="italic ")},family:function(a){"string"===a.ctype&&(x.family=a.value)},align:function(a){"string"===a.ctype&&(a=a.value,"left"===a&&(x.align=0),"right"===a&&(x.align=1),"mid"===a||"center"===a)&&(x.align=.5)},x_offset:function(a){"number"===a.ctype&&(x.xOffset=a.value.real)},y_offset:function(a){"number"===a.ctype&&(x.yOffset=a.value.real)},offset:function(a){"list"===a.ctype&& 2===a.value.length&&"number"===a.value[0].ctype&&"number"===a.value[1].ctype&&(x.xOffset=a.value[0].value.real,x.yOffset=a.value[1].value.real)},lineCap:function(a){"string"!==a.ctype||"round"!==a.value&&"square"!==a.value&&"butt"!==a.value||(x.lineCap=a.value)},lineJoin:function(a){"string"!==a.ctype||"round"!==a.value&&"bevel"!==a.value&&"miter"!==a.value||(x.lineJoin=a.value)},fillrule:function(a){"string"!==a.ctype||"nonzero"!==a.value&&"evenodd"!==a.value||(x.fillrule=a.value)},miterLimit:function(a){"number"=== a.ctype&&0m&&(h=a);1c&&(e=a);1d||d>ca||0>n||n>da||0>p||p>ca||0>k||k>da){k=x.clipSegment({x:d,y:n},{x:p,y:k});if(2!==k.length||.01>x.lsize)return;d=k[0].x;n=k[0].y;p=k[1].x;k=k[1].y}x.preDrawCurve();if(!x.isArrow||e===h&&f===m).01>x.lsize||(A.beginPath(),A.moveTo(d,n),A.lineTo(p,k),A.stroke());else{var e=f-e,h=m-h,f=x.headlen/ Math.sqrt(e*e+h*h),r=e*f,t=h*f,m=x.arrowposition,l=1-m,h=m*d+l*p,e=m*n+l*k,f=m*p+l*d,m=m*k+l*n,l=x.arrowSides;A.beginPath();x.arrowShape.close?("<==>"===l||"<=="===l?(1>x.arrowposition&&(A.moveTo(d,n),A.lineTo(h,e)),A.moveTo(h+r,e+t)):A.moveTo(d,n),"==>"===l||"<==>"===l?(A.lineTo(f-r,m-t),1>x.arrowposition&&(A.moveTo(f,m),A.lineTo(p,k))):A.lineTo(p,k)):(A.moveTo(d,n),A.lineTo(p,k));A.stroke();"==>"!==l&&"<==>"!==l||c(f,m,1,x.arrowShape.ratio);"<=="!==l&&"<==>"!==l||c(h,e,-1,-x.arrowShape.ratio)}}; x.drawpoint=function(a){var b=y.drawingstate.matrix,c=a.x*b.a-a.y*b.b+b.tx;a=a.x*b.c-a.y*b.d-b.ty;A.lineWidth=.3*x.psize;A.beginPath();A.arc(c,a,x.psize,0,2*Math.PI);A.fillStyle=x.pointColor;A.fill();x.noborder||(A.beginPath(),A.arc(c,a,1.15*x.psize,0,2*Math.PI),A.fillStyle=x.black,A.strokeStyle=x.black,A.stroke())};x.clipLineCore=function(a,b,c){var d=Math.SQRT1_2*x.lsize,e=0-d,h=ca+d,f=0-d,d=da+d,m=0>e*a+f*b+c,k=0>h*a+f*b+c,l=0>e*a+d*b+c,n=0>h*a+d*b+c,p=[];m!==k&&p.push({x:(-c-b*f)/a,y:f});k!== n&&p.push({x:h,y:(-c-a*h)/b});l!==n&&p.push({x:(-c-b*d)/a,y:d});m!==l&&p.push({x:e,y:(-c-a*e)/b});return p};x.clipLine=function(a){a=h.normalizeMax(h.productVM(a,y.toMat()));return x.clipLineCore(a.value[0].value.real,a.value[1].value.real,a.value[2].value.real)};x.drawline=function(a){h._helper.isAlmostReal(a)&&(a=x.clipLine(a),2===a.length&&.01<=x.lsize&&(x.preDrawCurve(),A.beginPath(),A.moveTo(a[0].x,a[0].y),A.lineTo(a[1].x,a[1].y),A.stroke()))};x.drawRaySegment=function(a,b){var c=D.extractPoint(a), d=D.extractPoint(b);if(c.ok&&d.ok){var e=c.x-d.x,h=c.y-d.y,f=25E3/y.drawingstate.matrix.sdet/Math.sqrt(e*e+h*h),e=e*f,h=h*f;x.drawsegcore(c,{x:c.x+e,y:c.y+h});x.drawsegcore(d,{x:d.x-e,y:d.y-h})}};x.dashTypes={solid:[],dashed:[10,10],tightdash:[10,4],dotted:[1,3],dashdot:[10,5,1,5],"dashvalue.solid":[],"dashvalue.dashed":[10,10],"dashvalue.tightdash":[10,4],"dashvalue.dotted":[1,3],"dashvalue.dashdot":[10,5,1,5],0:[],1:[10,10],2:[10,4],3:[1,3],4:[10,5,1,5]};x.setDash=function(a,b){var c=Math.sqrt(b); a=a.slice();for(var d=0;d=2*Math.PI?this._pathcmd(this._path.length?"L":"M",f,m,"A",c,c,0,0,h?1:0,a-c*Math.cos(d),b-c*Math.sin(d),"A",c,c,0,0,h?1:0,f,m):this._pathcmd(this._path.length?"L":"M",f,m,"A",c,c,0,e>Math.PI?1:0,h?1:0,k,l)},rect:function(a,b,c,d){this._pathcmd("M",a,b,"h",c,"v",d,"h",-c,"z")},_cmd:function(a){1!==this.globalAlpha?(this._body.push(''),this._body.push(a),this._body.push("")):this._body.push(a)},_attrs:function(a){var b="",c;for(c in a)null!==a[c]&&(b+=" "+ c+'="'+a[c]+'"');return b},fill:function(){this._cmd("")},stroke:function(){this._cmd("")},clip:function(){++this._clipIndex;this._body.push('','');this._saveStack[this._saveStack.length-1]+=""},save:function(){this._saveStack.push("")},restore:function(){this._body.push(this._saveStack.pop());0===this._saveStack.length&&this._saveStack.push("")},_transform:function(a){this._body.push('');this._saveStack[this._saveStack.length-1]+=""},translate:function(a,b){this._transform("translate("+a+" "+b+")")}, rotate:function(a){this._transform("rotate("+Math.PI/180*a+")")},scale:function(a,b){this._transform("scale("+a+" "+b+")")},transform:function(a,b,c,d,e,h){this._transform("matrix("+[a,b,c,d,e,h].join(" ")+")")},drawImage:function(a,b,c){if(3!==arguments.length)throw Error("SvgWriterContext only supports 3-argument version of drawImage");var d=this._imgcache.indexOf(a);if(-1===d){var d=this._imgcache.length,e;e=a.cachedDataURL?a.cachedDataURL:nd(a);this._defs.push('');this._imgcache.push(a)}this._cmd('')},toBlob:function(){for(;1\n'+this._defs.join("\n")+'\n\n\n'+ this._body.join("\n")+"\n\n\n";return new Blob([a],{type:"image/svg+xml"})}};md.prototype={_cmd:function(){this._body.push(Array.prototype.join.call(arguments," "))},_setAlpha:function(a,b,c){var d=Math.round(255*a*this._globalAlpha);b+=d;this._extGState[b]="<< /"+c+" "+d/255+" >>";this._cmd("/"+b,"gs");return a},set globalAlpha(a){this._globalAlpha=a;this._setAlpha(this._strokeAlpha,"As","CA");this._setAlpha(this._fillAlpha,"Af","ca")},set fillStyle(a){var b=this;ac(a,function(a,d,e,h){b._cmd(a/ 255,d/255,e/255,"rg");b._setAlpha(b._fillAlpha=h,"Af","ca")})},set strokeStyle(a){var b=this;ac(a,function(a,d,e,h){b._cmd(a/255,d/255,e/255,"RG");b._setAlpha(b._strokeAlpha=h,"As","CA")})},set lineWidth(a){this._cmd(a,"w")},set lineCap(a){this._cmd({butt:0,round:1,square:2}[a],"J")},set lineJoin(a){this._cmd({miter:0,round:1,bevel:2}[a],"j")},set miterLimit(a){this._cmd(a,"M")},clearRect:function(){},beginPath:function(){this._pathUsed=!1},closePath:function(){this._cmd("h")},moveTo:function(a,b){this._cmd(this._xPos= a,this._yPos=-b,"m")},lineTo:function(a,b){this._cmd(this._xPos=a,this._yPos=-b,"l")},bezierCurveTo:function(a,b,c,d,e,h){this._cmd(a,-b,c,-d,this._xPos=e,this._yPos=-h,"c")},quadraticCurveTo:function(a,b,c,d){this.bezierCurveTo((2*a+this._xPos)/3,(2*b-this._yPos)/3,(c+2*a)/3,(d+2*b)/3,c,d)},_kappa:.5522847498307935,arc:function(a,b,c,d,e,h){if(0===d&&e===2*Math.PI)d=this._kappa*c,this.moveTo(a+c,b),this.bezierCurveTo(a+c,b+d,a+d,b+c,a,b+c),this.bezierCurveTo(a-d,b+c,a-c,b+d,a-c,b),this.bezierCurveTo(a- c,b-d,a-d,b-c,a,b-c),this.bezierCurveTo(a+d,b-c,a+c,b-d,a+c,b);else throw Error("PdfWriterContext.arc only supports full circles");},rect:function(a,b,c,d){this._cmd(a,-b,c,-d,"re")},_usePath:function(a){if(this._pathUsed){var b=this._body[this._pathUsed],c={"S + f":"B","f + S":"B","W n + S":"W S","W n + f":"W f","S + W n":"W S","f + W n":"W f","B + W n":"W B","W S + f":"W B","W f + S":"W B"}[b+" + "+a];if(!c)throw Error("Don't know how to combine '"+b+"' and '"+a+"'");this._body.splice(this._pathUsed, 1);a=c}this._pathUsed=this._body.length;this._cmd(a)},fill:function(){this._usePath("f")},stroke:function(){this._usePath("S")},clip:function(){this._usePath("W n")},save:function(){this._cmd("q")},restore:function(){this._cmd("Q")},translate:function(a,b){this.transform(1,0,0,1,a,b)},rotate:function(a){var b=Math.cos(a);a=Math.sin(a);this.transform(b,a,-a,b,0,0)},scale:function(a,b){this.transform(a,0,0,b,0,0)},transform:function(a,b,c,d,e,h){this._cmd(a,-b,-c,d,e,-h,"cm")},_png:function(a){if("data:image/png;base64,"!== a.substr(0,22))return{error:"Not a base64-encoded PNG file"};a=de(a.substr(22));var b=ee(a);console.log("PNG chunks:",b.map(function(a){return a.type}));if("IHDR"!==b[0].type)throw Error("Image does not start with an IHDR");var c=b[0].data;a=(c[0]<<24|c[1]<<16|c[2]<<8|c[3])>>>0;var d=(c[4]<<24|c[5]<<16|c[6]<<8|c[7])>>>0,e=c[8],h=c[9],f=0===(h&2),m=0!==(h&4),k=c[10],l=c[11],c=c[12];if(0!==k)throw Error("Unsupported PNG compression method: "+k);if(0!==l)throw Error("Unsupported PNG filter method: "+ l);if(0!==c)return{error:"Interlaced image not supported"};if(0!==(h&1))return{error:"Indexed PNG image not supported"};l=null;h=f?1:3;k=b.filter(function(a){return"IDAT"===a.type}).map(function(a){return a.data});if(m){m=window.pako;l=new m.Inflate;for(b=0;b>>3;if(l.length!==d*(a*(h+1)*c+1))throw Error("Data length mismatch");for(var n=h*c,k=new Uint8Array(d*(a*n+1)),p=new Uint8Array(d*(a*c+1)),r=0,t=0,v=0,u=0;u< d;++u){k[t++]=p[v++]=l[r++];for(var w=0;w>"},_obj:function(a,b){b||(b=this._nextIndex++);Array.isArray(a)||(a=[this._dict(a)]); a.index=b;a.ref=b+" 0 R";a.offset=this._offset;var c=0;a.unshift(b+" 0 obj\n");a.push("\nendobj\n");for(var d=0;d("number"===typeof f.narrow?f.narrow:20)/p)continue}else if("C"===f.kind){l=h.normalizeZ(v.csnames[f.args[0]].homog);k=f.radius;if(!h._helper.isAlmostReal(l)|| !m._helper.isAlmostReal(k))continue;n=l.value[0].value.real;var r=l.value[1].value.real;l=a.x-n;var t=a.y-r,u=Math.sqrt(l*l+t*t);if(0===u)continue;r+=t/u*k.value.real;k=n+l/u*k.value.real-a.x;l=r-a.y;n=Math.sqrt(k*k+l*l);n+=30/p;if(f.narrow&&n>(("number"===typeof f.narrow?f.narrow:20)+30)/p)continue}else if("L"===f.kind)k=f.homog,n=m,l=n.add(n.mult(k.value[0],n.conjugate(k.value[0])),n.mult(k.value[1],n.conjugate(k.value[1]))),l=h.scaldiv(n.sqrt(l),k),n=l.value[0].value.real*a.x+l.value[1].value.real* a.y+l.value[2].value.real,k=-l.value[0].value.real*n,l=-l.value[1].value.real*n,0>n&&(n=-n),n+=25/p;else if("Text"===f.kind){if(!f.homog||f.dock||!f._bbox)continue;l=y.from(a.x,a.y,1);k=Math.max(0,l[0]-f._bbox.right,f._bbox.left-l[0]);l=Math.max(0,l[1]-f._bbox.bottom,f._bbox.top-l[1]);n=Math.sqrt(k*k+l*l);if(20Math.abs(d-a)&&.2>Math.abs(e-c)&&(b=h.realVector([d,e,1]))}return h.normalizeMax(b)}; l.Free.getParamFromState=function(a){return X(3)};l.Free.putParamToState=function(a,b){T(b)};l.Free.updatePosition=function(a){var b=X(3);T(b);a.homog=w.withUsage(b,"Point")};l.Free.stateSize=6;l._helper.projectPointToLine=function(a,b){var c=h.turnIntoCSList([b.value[0],b.value[1],m.zero]),c=h.cross(c,a);return h.normalizeMax(h.cross(c,b))};l.PointOnLine={};l.PointOnLine.kind="P";l.PointOnLine.signature=["L"];l.PointOnLine.isMovable=!0;l.PointOnLine.initialize=function(a){var b=l._helper.initializePoint(a); a=v.csnames[a.args[0]].homog;var b=l._helper.projectPointToLine(b,a),b=h.normalizeMax(b),c=h.cross(h.linfty,b);h.normalizeMax(c);T(b);T(a);lb=!1};l.PointOnLine.updatePosition=function(a,b){var c,d=v.csnames[a.args[0]].homog;c=X(3);X(3);if(!b){Ba=a.stateIdx;var e=qa;qa=Da;var f=X(3),m=X(3);qa=e;e=h.cross(m,d);h._helper.isAlmostZero(e)&&(e=h.cross(h.linfty,d));f=l._helper.CircleMP(e,f);f=l._helper.IntersectLC(d,f);e=l._helper.pointReflection(e,c);c=Ec(f[0],f[1],c,e)[0]}c=h.normalizeMax(c);T(c);T(d); a.homog=w.withUsage(c,"Point")};l.PointOnLine.getParamForInput=function(a,b,c){a=v.csnames[a.args[0]].homog;b=l._helper.projectPointToLine(b,a);"mouse"===c&&Eb&&0!==za&&(b=l._helper.snapPointToLine(b,a));return b};l.PointOnLine.getParamFromState=function(a){return X(3)};l.PointOnLine.putParamToState=function(a,b){return T(b)};l.PointOnLine.stateSize=12;l.PointOnCircle={};l.PointOnCircle.kind="P";l.PointOnCircle.signature=["C"];l.PointOnCircle.isMovable=!0;l.PointOnCircle.initialize=function(a){var b= v.csnames[a.args[0]];a=h.normalizeZ(l._helper.initializePoint(a));var c=h.normalizeZ(l._helper.CenterOfCircle(b.matrix)),d=h.sub(a,c),d=h.turnIntoCSList([d.value[1],m.neg(d.value[0]),m.zero]),c=h.cross(a,c),b=l._helper.IntersectLC(c,b.matrix),c=h.projectiveDistMinScal(a,b[0]);h.projectiveDistMinScal(a,b[1])m.sub(m.mult(a.value[0],c.value[1]),m.mult(a.value[1],c.value[0])).value.real&&(b=h.neg(b));return h.turnIntoCSList([b.value[1],m.neg(b.value[0]),m.zero])};l.PointOnCircle.parameterPath=function(a,b,c,d,e){d=h.normalizeAbs(d);e=h.normalizeAbs(e);var f=h.scalproduct(d,e);if(0<=f.value.real)return Fd(a,b,c,d,e);a=h.turnIntoCSList([m.sub(d.value[1], e.value[1]),m.sub(e.value[0],d.value[0]),m.zero]);f=h.scalproduct(d,a);0>f.value.real&&(a=h.neg(a));0>b?(b=2*b+1,c=b*b,f=.25/(1+c),c=m.complex(2*b*f+.25,(1-c)*f)):(b=2*b-1,c=b*b,f=.25/(1+c),c=m.complex(2*b*f+.75,(1-c)*f));var k=m.sub(m.real(1),c);b=m.mult(c,c);f=m.mult(k,k);c=m.mult(c,k);d=h.scalmult(f,d);d=h.add(d,h.scalmult(c,a));return d=h.add(d,h.scalmult(b,e))};l.PointOnCircle.updatePosition=function(a){var b=X(3);T(b);var c=v.csnames[a.args[0]],b=h.productMV(c.matrix,b),c=l._helper.IntersectLC(b, c.matrix),c=Pa(c[0],c[1]),b=h.normalizeMax(c.value[0]);a.homog=w.withUsage(b,"Point");a.antipodalPoint=c.value[1]};l.PointOnCircle.stateSize=6+Pa.stateSize;l.OtherPointOnCircle={};l.OtherPointOnCircle.kind="P";l.OtherPointOnCircle.signature=["P"];l.OtherPointOnCircle.signatureConstraints=function(a){return"PointOnCircle"===v.csnames[a.args[0]].type};l.OtherPointOnCircle.updatePosition=function(a){var b=v.csnames[a.args[0]].antipodalPoint,b=h.normalizeMax(b);a.homog=w.withUsage(b,"Point")};l.PointOnSegment= {};l.PointOnSegment.kind="P";l.PointOnSegment.signature=["S"];l.PointOnSegment.isMovable=!0;l.PointOnSegment.initialize=function(a){var b=l._helper.initializePoint(a);a=l.PointOnSegment.getParamForInput(a,b);Za(a)};l.PointOnSegment.getParamForInput=function(a,b,c){a=v.csnames[a.args[0]];var d=a.homog;"mouse"===c&&Eb&&0!==za&&(b=l._helper.snapPointToLine(b,d));c=h.turnIntoCSList([d.value[0],d.value[1],m.zero]);d=h.sub(a.startpos,a.endpos);b=h.crossratio3(d,a.startpos,a.endpos,b,c);0>b.value.real&& (b=m.complex(0,b.value.imag));1d.value.real&&(c=-1>d.value.real?h.realVector([1,0]):h.realVector([0,1]));return c};l.PointOnArc.getParamFromState=function(a){return X(2)};l.PointOnArc.putParamToState=function(a,b){T(b)};l.PointOnArc.updatePosition=function(a){var b=v.csnames[a.args[0]],c=b.startPoint,d=b.viaPoint,e=b.endPoint,f=h.ii,k=h.cross(c,f),d= h.cross(d,f),n=h.cross(e,f),n=h.turnIntoCSList([k,n]),k=h.transpose(n),n=h.conjugate(n),k=h.productMM(n,k),d=h.productMV(n,d),k=h.productMV(h.adjoint2(k),d),d=k.value[0],k=k.value[1],n=X(2);T(n);c=h.normalizeMax(h.add(h.scalmult(m.mult(d,n.value[0]),c),h.scalmult(m.mult(k,n.value[1]),e)));b=l._helper.conicOtherIntersection(b.matrix,f,c);a.homog=w.withUsage(b,"Point")};l.PointOnArc.stateSize=4;l._helper.CenterOfCircle=function(a){return h.turnIntoCSList([a.value[2].value[0],a.value[2].value[1],m.neg(a.value[0].value[0])])}; l._helper.CenterOfConic=function(a){a=h.adjoint3(a);return{ctype:"list",value:[a.value[2].value[0],a.value[2].value[1],a.value[2].value[2]]}};l.CenterOfConic={};l.CenterOfConic.kind="P";l.CenterOfConic.signature=["C"];l.CenterOfConic.updatePosition=function(a){var b=l._helper.CenterOfConic(v.csnames[a.args[0]].matrix);a.homog=b;a.homog=h.normalizeMax(a.homog);a.homog=w.withUsage(a.homog,"Point")};l._helper.CircleMP=function(a,b){var c=a.value[0],d=a.value[1],e=m.neg(a.value[2]),f=m.zero,c=h.turnIntoCSList([h.turnIntoCSList([e, f,c]),h.turnIntoCSList([f,e,d]),h.turnIntoCSList([c,d,f])]),e=w.mult(w.mult(b,c),b),d=w.mult(w.mult(b,h.fund),b),e=w.mult(e,h.fund),c=w.mult(d,c);return h.sub(e,c)};l.CircleMP={};l.CircleMP.kind="C";l.CircleMP.signature=["P","P"];l.CircleMP.updatePosition=function(a){a.matrix=l._helper.CircleMP(v.csnames[a.args[0]].homog,v.csnames[a.args[1]].homog);a.matrix=h.normalizeMax(a.matrix);a.matrix=w.withUsage(a.matrix,"Circle")};l.CircleMr={};l.CircleMr.kind="C";l.CircleMr.signature=["P"];l.CircleMr.isMovable= !0;l.CircleMr.initialize=function(a){Za(m.real(a.radius))};l.CircleMr.getParamForInput=function(a,b,c){if("radius"===c)return b;a=v.csnames[a.args[0]].homog;a=h.normalizeZ(a);b=h.normalizeZ(b);b=h.sub(a,b);return b=h.abs(b)};l.CircleMr.getParamFromState=function(a){return Bb()};l.CircleMr.putParamToState=function(a,b){Za(b)};l.CircleMr.updatePosition=function(a){var b=Bb();Za(b);var c=v.csnames[a.args[0]].homog,d=m.mult(c.value[2],b),d=m.mult(d,d);if(!m._helper.isFinite(d)&&!m._helper.isNaN(d))return h.fund; c=l._helper.ScaledCircleMrr(c,d);a.matrix=w.withUsage(c,"Circle");a.radius=b};l.CircleMr.stateSize=2;l.CircleMr.set_radius=function(a,b){"number"===b.ctype&&La(a,b,"radius")};l._helper.ScaledCircleMrr=function(a,b){var c=a.value[0],d=a.value[1],e=m.neg(a.value[2]),e=h.scalmult(e,h.turnIntoCSList([c,d,e])).value,c=h.turnIntoCSList([c,d]),c=m.sub(h.scalproduct(c,c),b),e=l._helper.buildConicMatrix([e[2],m.zero,e[2],e[0],e[1],c]);return h.normalizeMax(e)};l.Compass={};l.Compass.kind="C";l.Compass.signature= ["P","P","P"];l.Compass.updatePosition=function(a){var b=v.csnames[a.args[0]].homog,c=v.csnames[a.args[1]].homog,d=v.csnames[a.args[2]].homog,e=b.value[2],f=c.value[2],k=d.value[2],b=h.scalmult(m.mult(f,k),b),c=h.scalmult(m.mult(e,k),c),d=h.scalmult(m.mult(e,f),d),b=h.sub(c,b),d=l._helper.ScaledCircleMrr(d,h.scalproduct(b,b));a.matrix=w.withUsage(d,"Circle")};l._helper.getConicType=function(a){if(1E-16>m.abs(h.det(a)).value.real)return"degenerate";var b=m.mult(a.value[0].value[0],a.value[1].value[1]), b=m.sub(b,m.pow(a.value[0].value[1],m.real(2))),b=b.value.real;return 1E-16>Math.abs(b)?"parabola":1E-16c;++c)for(var d=0;d<=c;++d)Za(b.value[c].value[d])};l.FreeConic.updatePosition=function(a){var b=X(6);T(b);a.matrix= l._helper.buildConicMatrix(b.value);a.matrix=h.normalizeMax(a.matrix);a.matrix=w.withUsage(a.matrix,"Conic")};l.FreeConic.set_matrix=function(a,b){h._helper.isNumberMatrixMN(b,3,3)&&La(a,h.add(b,h.transpose(b)),"matrix")};l.FreeConic.stateSize=12;l._helper.buildConicMatrix=function(a){var b=a[1],c=a[2],d=a[3],e=a[4],f=a[5];return h.turnIntoCSList([h.turnIntoCSList([a[0],b,d]),h.turnIntoCSList([b,c,e]),h.turnIntoCSList([d,e,f])])};l._helper.flattenConicMatrix=function(a){return h.turnIntoCSList([a.value[0].value[0], a.value[0].value[1],a.value[1].value[1],a.value[0].value[2],a.value[1].value[2],a.value[2].value[2]])};l._helper.splitDegenConic=function(a){var b=h.adjoint3(a),c=0,d,e,f=m.abs2(b.value[0].value[0]).value.real;for(d=1;3>d;d++)e=m.abs2(b.value[d].value[d]).value.real,e>f&&(c=d,f=e);d=m.sqrt(m.mult(m.real(-1),b.value[c].value[c]));if(1E-16>m.abs2(d).value.real)return a=h.turnIntoCSList([m.zero,m.zero,m.zero]),[a,a];c=m.real(c+1);e=h.column(b,c);e=h.scaldiv(d,e);d=e.value[0];f=e.value[1];e=e.value[2]; d=h.turnIntoCSList([h.turnIntoCSList([m.real(0),e,m.mult(m.real(-1),f)]),h.turnIntoCSList([m.mult(m.real(-1),e),m.real(0),d]),h.turnIntoCSList([f,m.mult(m.real(-1),d),m.real(0)])]);a=h.add(a,d);var k=0;for(d=f=b=0;3>d;d++)for(c=0;3>c;c++)e=m.abs2(a.value[d].value[c]).value.real,e>f&&(k=d,b=c,f=e);d=a.value[k];a=h.transpose(a);a=a.value[b];d=h.normalizeMax(d);a=h.normalizeMax(a);d=w.withUsage(d,"Line");a=w.withUsage(a,"Line");return[d,a]};l._helper.inputConic=function(a){var b="xx xy yy xz yz zz".split(" ").map(function(b){var d= m._helper.input(a[b]);b[0]!==b[1]&&(d=m.realmult(.5,d));return d});return l._helper.buildConicMatrix(b)};l.SelectConic={};l.SelectConic.kind="C";l.SelectConic.signature=["Cs"];l.SelectConic.initialize=function(a){if(void 0!==a.index)return a.index-1;var b=l._helper.inputConic(a.pos);a=v.csnames[a.args[0]].results;for(var c=h.conicDist(b,a[0]),d=0,e=1;er;++r){var v=(r&2)-1,u=d(m.real(((r&1)<<1)-1),n), w=d(m.real(v),p),x=f(e,u,k,w),y=f(b,w,a,u),v=f(a,e,b,k),z=m.add(m.add(f(b,k,a,e),f(k,w,e,u)),f(w,b,u,a)),u=d(x,x),w=d(y,y),A=d(z,z),B=d(x,y),x=d(x,z),y=d(y,z),B=m.sub(B,d(m.real(.5),d(v,v))),v=h.turnIntoCSList([h.turnIntoCSList([u,B,x]),h.turnIntoCSList([B,w,y]),h.turnIntoCSList([x,y,A])]),v=h.productMM(l,h.productMM(v,c)),v=h.turnIntoCSList([v.value[0].value[0],v.value[0].value[1],v.value[0].value[2],v.value[1].value[1],v.value[1].value[2],v.value[2].value[2]]);t[r]=v}return t};l.ConicBy3p2l={}; l.ConicBy3p2l.kind="Cs";l.ConicBy3p2l.signature=["P","P","P","L","L"];l.ConicBy3p2l.updatePosition=function(a){for(var b=l._helper.ConicBy3p2l(v.csnames[a.args[0]].homog,v.csnames[a.args[1]].homog,v.csnames[a.args[2]].homog,v.csnames[a.args[3]].homog,v.csnames[a.args[4]].homog),b=Id(b),c=Array(4),d=0;4>d;++d){var e=b[d].value;c[d]=h.turnIntoCSList([h.turnIntoCSList([e[0],e[1],e[2]]),h.turnIntoCSList([e[1],e[3],e[4]]),h.turnIntoCSList([e[2],e[4],e[5]])])}a.results=c};l.ConicBy3p2l.stateSize=48;l.ConicBy2p3l= {};l.ConicBy2p3l.kind="Cs";l.ConicBy2p3l.signature=["P","P","L","L","L"];l.ConicBy2p3l.updatePosition=function(a){for(var b=l._helper.ConicBy3p2l(v.csnames[a.args[2]].homog,v.csnames[a.args[3]].homog,v.csnames[a.args[4]].homog,v.csnames[a.args[0]].homog,v.csnames[a.args[1]].homog),b=Id(b),c=Array(4),d=0;4>d;++d){var e=b[d].value,e=h.turnIntoCSList([h.turnIntoCSList([e[0],e[1],e[2]]),h.turnIntoCSList([e[1],e[3],e[4]]),h.turnIntoCSList([e[2],e[4],e[5]])]);c[d]=h.normalizeMax(h.adjoint3(e))}a.results= c};l.ConicBy2p3l.stateSize=48;l.ConicBy1p4l={};l.ConicBy1p4l.kind="Cs";l.ConicBy1p4l.signature=["P","L","L","L","L"];l.ConicBy1p4l.updatePosition=function(a){var b=l._helper.ConicBy4p1l(a,v.csnames[a.args[1]].homog,v.csnames[a.args[2]].homog,v.csnames[a.args[3]].homog,v.csnames[a.args[4]].homog,v.csnames[a.args[0]].homog),c=b[0],b=b[1],c=h.adjoint3(c),b=h.adjoint3(b),b=[c,b];a.results=b};l.ConicBy1p4l.stateSize=Pa.stateSize;l.ConicParabolaPL={};l.ConicParabolaPL.kind="C";l.ConicParabolaPL.signature= ["P","L"];l.ConicParabolaPL.updatePosition=function(a){var b=v.csnames[a.args[0]].homog.value,c=v.csnames[a.args[1]].homog.value,d=m.mult,e=m.neg,f=m.add,k=m.sub,n=b[0],p=b[1],r=b[2],t=c[0],b=c[1],c=c[2],u=d(r,r),x=d(t,t),y=d(b,b),z=d(r,c),A=e(r),r=f(x,y),y=d(u,y),x=d(u,x),e=d(e(u),d(t,b)),t=d(A,f(d(n,r),d(z,t))),b=d(A,f(d(p,r),d(z,b))),d=k(d(f(d(n,n),d(p,p)),r),d(u,d(c,c))),d=l._helper.buildConicMatrix([y,e,x,t,b,d]),d=h.normalizeMax(d);a.matrix=w.withUsage(d,"Conic")};l.ConicBy2Foci1P={};l.ConicBy2Foci1P.kind= "Cs";l.ConicBy2Foci1P.signature=["P","P","P"];l.ConicBy2Foci1P.updatePosition=function(a){var b=v.csnames[a.args[0]].homog,c=v.csnames[a.args[1]].homog,d=v.csnames[a.args[2]].homog,e=h.ii,f=h.jj,k=h.normalizeMax(h.cross(b,d)),n=h.normalizeMax(h.cross(c,d)),p=h.normalizeMax(h.cross(d,e)),d=h.normalizeMax(h.cross(d,f)),n=l._helper.coHarmonic(p,d,k,n),k=h.normalizeMax(n[0]),n=h.normalizeMax(n[1]),e=h.turnIntoCSList([e]),p=h.turnIntoCSList([f]),d=h.turnIntoCSList([b]),r=h.turnIntoCSList([c]),f=l._helper.conicFromTwoDegenerates(e, p,d,r,k),f=h.normalizeMax(f),e=l._helper.conicFromTwoDegenerates(e,p,d,r,n),e=h.normalizeMax(e),f=h.normalizeMax(h.adjoint3(f)),e=h.normalizeMax(h.adjoint3(e));"ellipsoid"!==l._helper.getConicType(f)&&(k=f,f=e,e=k);h.almostequals(b,c).value&&(b=m.real(3),e=h.zeromatrix(b,b));a.results=[f,e]};l.ConicBy2Pol1P={};l.ConicBy2Pol1P.kind="C";l.ConicBy2Pol1P.signature=["P","L","P","L","P"];l.ConicBy2Pol1P.updatePosition=function(a){var b=v.csnames[a.args[0]].homog,c=v.csnames[a.args[1]].homog,d=v.csnames[a.args[2]].homog, e=v.csnames[a.args[3]].homog,f=v.csnames[a.args[4]].homog,k=h.scalproduct,l=h.scalmult,n=h.sub,p=h.productMM,r=m.realmult,t=h.transpose,u=h.turnIntoCSList,x=n(l(k(c,b),f),l(r(2,k(c,f)),b)),y=n(l(k(e,d),f),l(r(2,k(e,f)),d)),z=u([h.cross(b,f)]),f=u([h.cross(d,f)]),y=p(t(z),u([h.cross(b,y)])),u=p(t(f),u([h.cross(d,x)])),p=p(t(z),f),b=k(b,e),c=k(d,c),d=h.add(l(c,y),l(b,u)),d=n(d,l(r(2,m.mult(b,c)),p)),d=h.add(d,t(d)),d=h.normalizeMax(d),d=w.withUsage(d,"Conic");a.matrix=d};l.ConicBy2Pol1L={};l.ConicBy2Pol1L.kind= "C";l.ConicBy2Pol1L.signature=["P","L","P","L","L"];l.ConicBy2Pol1L.updatePosition=function(a){var b=v.csnames[a.args[0]].homog,c=v.csnames[a.args[1]].homog,d=v.csnames[a.args[2]].homog,e=v.csnames[a.args[3]].homog,f=v.csnames[a.args[4]].homog,k=h.scalproduct,l=h.scalmult,n=h.productMM,p=m.mult,r=h.transpose,t=h.turnIntoCSList,u=k(c,b),x=k(c,d),y=k(e,b),z=k(e,d),A=k(f,b),k=k(f,d),B=t([h.sub(l(p(y,k),c),l(p(x,A),e))]),b=h.add(n(r(t([l(p(y,x),f)])),t([h.sub(h.add(l(m.sub(p(u,k),p(x,A)),e),l(m.sub(p(z, A),p(y,k)),c)),l(h.det3(c,e,f),h.cross(b,d)))])),n(r(B),B)),b=h.add(b,r(b)),b=h.normalizeMax(b),b=w.withUsage(b,"Conic");a.matrix=b};l._helper.conic1Pol3Inc=function(a,b,c,d,e){var f=h.scalproduct,k=h.scalmult,l=h.productMM,n=h.cross,p=m.realmult,r=m.mult,t=h.transpose,v=h.turnIntoCSList,u=h.det3,w=u(a,c,d),x=v([n(c,e)]),y=v([n(a,e)]),z=v([n(c,d)]),A=f(b,a),B=f(b,c);b=f(b,e);n=v([n(d,h.sub(k(A,e),k(p(2,b),a)))]);x=k(w,l(t(x),n));a=p(2,m.add(r(u(a,d,e),B),r(w,b)));a=m.sub(r(u(c,d,e),A),a);x=h.add(x, k(a,l(t(y),z)));x=h.add(x,t(x));return x=h.normalizeMax(x)};l.ConicBy1Pol3P={};l.ConicBy1Pol3P.kind="C";l.ConicBy1Pol3P.signature=["P","L","P","P","P"];l.ConicBy1Pol3P.updatePosition=function(a){var b=l._helper.conic1Pol3Inc(v.csnames[a.args[0]].homog,v.csnames[a.args[1]].homog,v.csnames[a.args[2]].homog,v.csnames[a.args[3]].homog,v.csnames[a.args[4]].homog),b=w.withUsage(b,"Conic");a.matrix=b};l.ConicBy1Pol3L={};l.ConicBy1Pol3L.kind="C";l.ConicBy1Pol3L.signature=["P","L","L","L","L"];l.ConicBy1Pol3L.updatePosition= function(a){var b=l._helper.conic1Pol3Inc(v.csnames[a.args[1]].homog,v.csnames[a.args[0]].homog,v.csnames[a.args[2]].homog,v.csnames[a.args[3]].homog,v.csnames[a.args[4]].homog),b=h.normalizeMax(h.adjoint3(b)),b=w.withUsage(b,"Conic");a.matrix=b};l.ConicBy1Pol2P1L={};l.ConicBy1Pol2P1L.kind="Cs";l.ConicBy1Pol2P1L.signature=["P","L","P","P","L"];l.ConicBy1Pol2P1L.updatePosition=function(a){var b=v.csnames[a.args[0]].homog,c=v.csnames[a.args[1]].homog,d=v.csnames[a.args[2]].homog,e=v.csnames[a.args[3]].homog, f=v.csnames[a.args[4]].homog,k=m.add,l=h.turnIntoCSList,n=h.cross,p=h.productMM,r=m.mult,t=m.realmult,u=h.scalmult,w=h.scalproduct,x=m.sub,y=h.transpose,z=w(c,b),A=w(c,d),B=w(c,e),c=w(f,b),C=w(f,d),w=w(f,e),f=l([n(b,d)]),b=l([n(b,e)]),d=l([n(d,e)]),e=m.sqrt(r(r(C,w),r(x(r(z,C),t(2,r(c,A))),x(r(z,w),t(2,r(c,B)))))),l=p(y(f),b),e=u(e,h.add(l,y(l))),k=u(x(r(z,r(C,w)),k(r(c,r(A,w)),r(c,r(C,B)))),l),t=h.add(h.sub(u(B,f),u(A,b)),u(t(.5,z),d)),k=h.add(k,u(r(c,c),p(y(d),t))),k=h.add(k,y(k)),p=h.normalizeMax(h.add(e, k)),r=h.normalizeMax(h.sub(e,k));a.results=Qb(p,r).value};l.ConicBy1Pol2P1L.stateSize=Qb.stateSize;l.ConicBy1Pol1P2L={};l.ConicBy1Pol1P2L.kind="Cs";l.ConicBy1Pol1P2L.signature=["P","L","P","L","L"];l.ConicBy1Pol1P2L.updatePosition=function(a){var b=v.csnames[a.args[0]].homog,c=v.csnames[a.args[1]].homog,d=v.csnames[a.args[2]].homog,e=v.csnames[a.args[3]].homog,f=v.csnames[a.args[4]].homog,k=m.add,l=h.turnIntoCSList,n=h.cross,p=h.productMM,r=m.mult,t=m.realmult,u=h.scalmult,w=h.scalproduct,x=m.sub, y=h.transpose,z=w(c,b),A=w(c,d),B=w(e,b),C=w(e,d),D=w(f,b),E=w(f,d),F=r(z,z),G=r(z,A),w=r(A,A),H=r(B,B),I=r(B,C),L=r(C,C),N=r(D,D),J=r(D,E),M=r(E,E),K=r(r(F,L),M),K=x(K,t(2,r(r(G,I),M))),K=x(K,t(2,r(r(G,L),J))),K=k(K,t(.5,r(r(w,H),M))),K=k(K,t(3,r(r(w,I),J))),K=k(K,t(.5,r(r(w,L),N))),J=r(r(z,C),E),J=x(J,r(r(A,B),E)),J=x(J,r(r(A,C),D)),J=r(J,r(w,D)),M=x(r(z,C),t(2,r(A,B))),M=r(M,r(w,r(C,D))),K=p(y(l([c])),l([h.add(h.add(u(K,c),u(J,e)),u(M,f))])),J=l([e]),K=h.add(K,u(t(.5,r(r(w,w),N)),p(y(J),J))),K= h.add(K,u(w,p(y(l([f])),l([h.add(u(x(x(t(2,r(G,I)),r(F,L)),t(.5,r(w,H))),f),u(r(h.det3(c,e,f),x(r(z,C),r(A,B))),n(b,d)))])))),K=h.add(K,y(K)),b=m.sqrt(r(r(C,E),r(x(r(z,C),t(2,r(A,B))),x(r(z,E),t(2,r(A,D)))))),c=p(y(l([c])),l([h.sub(u(x(r(A,k(r(B,E),r(C,D))),r(z,r(C,E))),c),u(w,h.add(u(D,e),u(B,f))))])),c=h.add(c,u(r(z,w),p(y(l([e])),l([f])))),c=u(b,c),c=h.add(c,y(c)),e=h.normalizeMax(h.add(K,c)),f=h.normalizeMax(h.sub(K,c));a.results=Qb(e,f).value};l.ConicBy1Pol1P2L.stateSize=Qb.stateSize;l._helper.coHarmonic= function(a,b,c,d){var e=h.realVector([100*Math.random(),100*Math.random(),1]),f=h.det3(e,c,a),k=h.det3(e,c,b);c=h.det3(e,d,a);d=h.det3(e,d,b);d=m.sqrt(m.mult(d,k));f=m.sqrt(m.mult(c,f));a=w.mult(a,d);f=w.mult(b,f);b=h.add(a,f);a=h.sub(a,f);return[b,a]};l.ConicInSquare={};l.ConicInSquare.kind="C";l.ConicInSquare.signature=["P","P","P","P"];l.ConicInSquare.updatePosition=function(a){var b=D.basismap(v.csnames[a.args[0]].homog,v.csnames[a.args[1]].homog,v.csnames[a.args[2]].homog,v.csnames[a.args[3]].homog), c=m.one,c=l._helper.buildConicMatrix([c,c,c,m.real(-3),c,c]),b=h.adjoint3(b),b=h.productMM(h.productMM(h.transpose(b),c),b),b=h.normalizeMax(b);a.matrix=w.withUsage(b,"Conic")};l.ConicBy5lines={};l.ConicBy5lines.kind="C";l.ConicBy5lines.signature=["L","L","L","L","L"];l.ConicBy5lines.updatePosition=function(a){var b=l._helper.ConicBy5(a,v.csnames[a.args[0]].homog,v.csnames[a.args[1]].homog,v.csnames[a.args[2]].homog,v.csnames[a.args[3]].homog,v.csnames[a.args[4]].homog),b=h.adjoint3(b);a.matrix=b; a.matrix=h.normalizeMax(a.matrix);a.matrix=w.withUsage(a.matrix,"Conic")};l.ConicFromPrincipalDirections={};l.ConicFromPrincipalDirections.kind="C";l.ConicFromPrincipalDirections.signature=["P","P","P"];l.ConicFromPrincipalDirections.updatePosition=function(a){var b=v.csnames[a.args[0]].homog,c=v.csnames[a.args[1]].homog,d=v.csnames[a.args[2]].homog,e=l._helper.pointReflection(b,c),f=h.cross(c,b),b=h.turnIntoCSList([f.value[0],f.value[1],m.zero]),f=h.turnIntoCSList([f]),c=h.turnIntoCSList([h.cross(c, b)]),e=h.turnIntoCSList([h.cross(e,b)]);a.matrix=l._helper.conicFromTwoDegenerates(f,f,c,e,d);a.matrix=h.normalizeMax(a.matrix);a.matrix=w.withUsage(a.matrix,"Conic")};l.CircleBy3={};l.CircleBy3.kind="C";l.CircleBy3.signature=["P","P","P"];l.CircleBy3.updatePosition=function(a){var b=l._helper.ConicBy5(a,v.csnames[a.args[0]].homog,v.csnames[a.args[1]].homog,h.ii,h.jj,v.csnames[a.args[2]].homog);a.matrix=h.normalizeMax(b);a.matrix=w.withUsage(a.matrix,"Circle")};l.ArcBy3={};l.ArcBy3.kind="C";l.ArcBy3.signature= ["P","P","P"];l.ArcBy3.updatePosition=function(a){l.CircleBy3.updatePosition(a);a.startPoint=v.csnames[a.args[0]].homog;a.viaPoint=v.csnames[a.args[1]].homog;a.endPoint=v.csnames[a.args[2]].homog};l.ArcBy3.initialize=function(a){a.startPoint=v.csnames[a.args[0]].homog;a.viaPoint=v.csnames[a.args[1]].homog;a.endPoint=v.csnames[a.args[2]].homog;a.isArc=!0};l.PolarOfPoint={};l.PolarOfPoint.kind="L";l.PolarOfPoint.signature=["P","C"];l.PolarOfPoint.updatePosition=function(a){var b=w.mult(v.csnames[a.args[1]].matrix, v.csnames[a.args[0]].homog),b=h.normalizeMax(b);a.homog=w.withUsage(b,"Line")};l.PolarOfLine={};l.PolarOfLine.kind="P";l.PolarOfLine.signature=["L","C"];l.PolarOfLine.updatePosition=function(a){var b=v.csnames[a.args[0]],c=h.adjoint3(v.csnames[a.args[1]].matrix),b=w.mult(c,b.homog),b=h.normalizeMax(b);a.homog=w.withUsage(b,"Point")};l.AngleBisector={};l.AngleBisector.kind="Ls";l.AngleBisector.signature=["L","L","P"];l.AngleBisector.updatePosition=function(a){var b=v.csnames[a.args[0]].homog,c=v.csnames[a.args[1]].homog, d=v.csnames[a.args[2]].homog,e=h.add,f=h.sub,k=h.abs,l=h.cross,m=h.scalmult,n=h.normalizeMax,p=h._helper.isAlmostZero,r=h.linfty,t=m(k(l(l(r,c),r)),b),b=m(k(l(l(r,b),r)),c),f=f(t,b),e=e(t,b);p(f)&&(f=l(l(l(r,e),r),d));p(e)&&(e=l(l(l(r,f),r),d));a.results=Pa(n(f),n(e))};l.AngleBisector.stateSize=Pa.stateSize;l._helper.IntersectLC=function(a,b){var c=m,d=h.crossOperator(a),e=h.transpose(d),e=w.mult(e,w.mult(b,d)),f=h.maxIndex(a,m.abs2),k,l,n,p;0===f?(f=e.value[1].value[1],k=e.value[1].value[2],l=e.value[2].value[1], n=e.value[2].value[2],p=a.value[0]):1===f?(f=e.value[0].value[0],k=e.value[0].value[2],l=e.value[2].value[0],n=e.value[2].value[2],p=a.value[1]):(f=e.value[0].value[0],k=e.value[0].value[1],l=e.value[1].value[0],n=e.value[1].value[1],p=a.value[2]);c=c.div(c.sqrt(c.sub(c.mult(k,l),c.mult(f,n))),p);c=h.add(e,h.scalmult(c,d));f=h.maxIndex(c,h.abs2);d=c.value[f];d=h.normalizeMax(d);d=w.withUsage(d,"Point");c=h.transpose(c);f=h.maxIndex(c,h.abs2);c=c.value[f];c=h.normalizeMax(c);c=w.withUsage(c,"Point"); return[d,c]};l.IntersectLC={};l.IntersectLC.kind="Ps";l.IntersectLC.signature=["L","C"];l.IntersectLC.updatePosition=function(a){var b=l._helper.IntersectLC(v.csnames[a.args[0]].homog,v.csnames[a.args[1]].matrix);a.results=Pa(b[0],b[1])};l.IntersectLC.stateSize=Pa.stateSize;l.OtherIntersectionCL={};l.OtherIntersectionCL.kind="P";l.OtherIntersectionCL.signature=["C","L","P"];l.OtherIntersectionCL.updatePosition=function(a){var b=v.csnames[a.args[2]].homog,c=l._helper.IntersectLC(v.csnames[a.args[1]].homog, v.csnames[a.args[0]].matrix),d=c[0],c=c[1],e=h.projectiveDistMinScal(d,b),b=h.projectiveDistMinScal(c,b);a.homog=en?(p=a,c=b):(r=m.solveCubic(p,r,c,f),c=m.abs2(m.sub(r[0],r[1])).value.real,f=m.abs2(m.sub(r[0],r[2])).value.real,k=m.abs2(m.sub(r[1],r[2])).value.real,c>f?(p=r[1],r=c>k?r[0]:r[2]):(p=r[2],r=f>k?r[0]:r[1]),p=h.add(h.scalmult(p,a),b),c=h.add(h.scalmult(r,a),b));r=l._helper.splitDegenConic(p);p=r[0];r=r[1];c=l._helper.splitDegenConic(c);k=c[0];f=c[1];c= h.cross(p,k);k=h.cross(r,k);p=h.cross(p,f);r=h.cross(r,f);c=h.normalizeMax(c);k=h.normalizeMax(k);p=h.normalizeMax(p);r=h.normalizeMax(r);c=w.withUsage(c,"Point");k=w.withUsage(k,"Point");p=w.withUsage(p,"Point");r=w.withUsage(r,"Point");return[c,k,p,r]};l.IntersectConicConic={};l.IntersectConicConic.kind="Ps";l.IntersectConicConic.signature=["C","C"];l.IntersectConicConic.updatePosition=function(a){var b=l._helper.IntersectConicConic(v.csnames[a.args[0]].matrix,v.csnames[a.args[1]].matrix),b=Fc(b[0], b[1],b[2],b[3]);a.results=b};l.IntersectConicConic.stateSize=Fc.stateSize;l.SelectP={};l.SelectP.kind="P";l.SelectP.signature=["Ps"];l.SelectP.initialize=function(a){if(void 0!==a.index)return a.index-1;var b=v.csnames[a.args[0]].results.value;a=l._helper.initializePoint(a);for(var c=h.projectiveDistMinScal(a,b[0]),d=0,e=1;ea.isEuclidean,ar:b[0].value[0],ai:b[1].value[0],br:b[0].value[2],bi:b[1].value[2],cr:m.zero,ci:m.zero,dr:b[2].value[2],di:m.zero}};l.TrComposeMtMt={};l.TrComposeMtMt.kind="Mt";l.TrComposeMtMt.signature=["Mt","Mt"];l.TrComposeMtMt.updatePosition= function(a){l._helper.composeMtMt(a,v.csnames[a.args[0]].moebius,v.csnames[a.args[1]].moebius)};l.TrComposeTrMt={};l.TrComposeTrMt.kind="Mt";l.TrComposeTrMt.signature=["Tr","Mt"];l.TrComposeTrMt.signatureConstraints=function(a){return!!v.csnames[a.args[0]].isEuclidean};l.TrComposeTrMt.updatePosition=function(a){l._helper.composeMtMt(a,l._helper.euc2moeb(v.csnames[a.args[0]]),v.csnames[a.args[1]].moebius)};l.TrComposeMtTr={};l.TrComposeMtTr.kind="Mt";l.TrComposeMtTr.signature=["Mt","Tr"];l.TrComposeMtTr.signatureConstraints= function(a){return!!v.csnames[a.args[1]].isEuclidean};l.TrComposeMtTr.updatePosition=function(a){l._helper.composeMtMt(a,v.csnames[a.args[0]].moebius,l._helper.euc2moeb(v.csnames[a.args[1]]))};l._helper.pointReflection=function(a,b){return h.normalizeMax(h.sub(h.scalmult(m.realmult(2,b.value[2]),a),h.scalmult(a.value[2],b)))};l._helper.conicOtherIntersection=function(a,b,c){var d=h.productMV(a,c);a=h.scalproduct(c,d);d=h.scalproduct(b,d);d=m.realmult(-2,d);b=h.scalmult(a,b);c=h.scalmult(d,c);c=h.add(b, c);return c=h.normalizeMax(c)};l.Dist={};l.Dist.kind="V";l.Dist.signature=["P","P"];l.Dist.updatePosition=function(a){var b=v.csnames[a.args[1]].homog;a.value=h.abs(h.sub(h.normalizeZ(v.csnames[a.args[0]].homog),h.normalizeZ(b)))};l.Angle={};l.Angle.kind="V";l.Angle.signature=["L","L","P"];l.Angle.initialize=function(a){void 0===a.angle&&(a.angle=.5*Math.PI);Za(m._helper.input(a.angle))};l.Angle.updatePosition=function(a){var b=v.csnames[a.args[1]].homog,c=v.csnames[a.args[2]].homog,d=h.cross(v.csnames[a.args[0]].homog, h.linfty),b=h.cross(b,h.linfty),c=h.crossratio3(d,b,h.ii,h.jj,c),c=m.mult(m.complex(0,.5),m.log(c)),d=(Bb().value.real-c.value.real)/Math.PI,b=Math.round(d);!lb&&.01a;++a)l.IFS["set_prob"+a]=l.IFS.probSetter.bind(null,a)})();l._helper.snapPointToLine=function(a,b){if(m._helper.isAlmostZero(a.value[2]))return a;var c=l._helper.projectPointToLine(a,b),c=h.normalizeZ(c),d=c.value[0].value.real,c=c.value[1].value.real,e=Math.round(d/za)*za,f=Math.round(c/za)*za,k=h.realVector([e,f,1]);.2>Math.abs(e-d)&&.2>Math.abs(f-c)&&m._helper.isAlmostZero(h.scalproduct(b, k))&&(a=l._helper.projectPointToLine(k,b));return a};var Ac={CircleByRadius:"CircleMr",IntersectionCircleCircle:"IntersectCirCir",IntersectionConicConic:"IntersectConicConic",FreePoint:"Free",Orthogonal:"Perp",Parallel:"Para",Pole:"PolarOfLine",Polar:"PolarOfPoint",Arc:"ArcBy3",EuclideanMid:"Mid",AngularBisector:"AngleBisector",TransformConic:"TransformC",TransformSegment:"TransformS",TrMoebiusSegment:"TrMoebiusS",ReflectCC:"TrMoebiusC",ReflectCL:"TrMoebiusL",ReflectCP:"TrMoebiusP",ReflectCArc:"TrMoebiusArc", ReflectCS:"TrMoebiusS",TrMoebiusCircle:"TrMoebiusC"},zd={CircleMFixedr:function(a){a.pinned=!0;a.type="CircleMr";return[a]},CircleByFixedRadius:function(a){a.pinned=!0;a.type="CircleMr";return[a]},IntersectionConicLine:function(a){a.args=[a.args[1],a.args[0]];a.type="IntersectLC";return[a]},angleBisector:function(a){var b={name:a.name+"_Intersection",type:"Meet",args:a.args,visible:!1};a.type="AngleBisector";a.args=[a.args[0],a.args[1],b.name];return[b,a]},Transform:function(a){var b=v.csnames[a.args[1]], b={Tr:"Transform",Mt:"TrMoebius"}[v.csnames[a.args[0]].kind]+(b.isArc?"Arc":b.kind);if(l.hasOwnProperty(b))return a.type=b,[a];console.log(b+" not implemented yet");return[]},TrReflection:function(a){var b="TrReflection"+v.csnames[a.args[0]].kind;if(l.hasOwnProperty(b))return a.type=b,[a];console.log(b+" not implemented yet");return[]},TrCompose:function(a){var b="TrCompose"+a.args.map(function(a){return v.csnames[a].kind}).join("");if(l.hasOwnProperty(b))return a.type=b,[a];console.log(b+" not implemented yet"); return[]}},te="align alpha angle args arrow arrowposition arrowshape arrowsides arrowsize clip color dashtype drawtrace fillalpha fillcolor filled labeled labelpos name overhang pinned printname radius size text text_fontfamily textbold textitalics textsize tracedim tracelength traceskip tracing type visible".split(" ");sa.saveState=function(){return{geometry:ue()}};var ya={},Qd,Rb,Rd,Sd;Qd=[[],[.2],[.075,.225],[44/45,-56/15,32/9],[19372/6561,-25360/2187,64448/6561,-212/729],[9017/3168,-355/33,46732/ 5247,49/176,-5103/18656],[35/384,0,500/1113,125/192,-2187/6784,11/84]];Rb=[0,.2,.3,.8,8/9,1,1];Rd=[35/384,0,500/1113,125/192,-2187/6784,11/84,0];Sd=[5179/57600,0,7571/16695,.6140625,-92097/339200,187/2100,.025];var Fa,ma=[],Hc=[],qc=!1;ya.tick=function(a){a/=Vb;for(var b=0;ba&&c>.999*a;)b=ya.oneRKStep(b),c+=b,b=Math.min(2*b,a-c),b=Math.max(b,1E-16),ya.restorePosition(),ya.doCollisions(),ya.calculateForces(), ya.moveToFinalPos();return!0};ya.restorePosition=function(){Fa.forEach(function(a){O[a.type].restorePos(a,9)})};ya.doCollisions=function(){Fa.forEach(function(a){O[a.type].doCollisions(a)})};ya.calculateForces=function(){Fa.forEach(function(a){O[a.type].calculateForces(a)})};ya.moveToFinalPos=function(){Fa.forEach(function(a){O[a.type].move(a)})};ya.oneRKStep=function(a){for(var b=function(a){Fa.forEach(function(b){O[b.type].initRK(b,a);O[b.type].storePosition(b)})},c=function(a){Fa.forEach(function(b){O[b.type].setToTimestep(b, Rb[a])})},d=function(a){Fa.forEach(function(b){O[b.type].proceedMotion(b,Rb[a],a,Qd[a])})},e=function(){Fa.forEach(function(a){O[a.type].resetForces(a)})},f=function(a){Fa.forEach(function(b){O[b.type].calculateDelta(b,a)})},h=function(b){var c=0;Fa.forEach(function(a){O[a.type].proceedMotion(a,Rb[6],7,Rd);O[a.type].savePos(a,8);O[a.type].proceedMotion(a,Rb[6],7,Sd);O[a.type].savePos(a,9);c+=O[a.type].sqDist(a,8,9)});return c=Math.sqrt(c)/a},k=function(a){Fa.forEach(function(a){O[a.type].recallPosition(a)})}, l=!1;!l;){b(a);for(var m=0;7>m;m++)c(m),d(m),e(),ya.calculateForces(),f(m);h(a)>O.env.errorbound&&a>O.env.lowestdeltat?(a/=O.env.slowdownfactor,k()):l=!0}return a};var O={Mass:{reset:function(a,b){a.vel=[0,0,0];a.pos=[0,0,0,0];a.el=b;"undefined"===typeof a.mass&&(a.mass=1);"undefined"===typeof a.charge&&(a.charge=0);"undefined"===typeof a.friction&&(a.friction=0);a.lnfrict=0;"undefined"===typeof a.limitspeed&&(a.limitspeed=!1);"undefined"===typeof a.fixed&&(a.fixed=!1);"undefined"===typeof a.radius&& (a.radius=1);a.internalmove=!1;a.fx=0;a.fy=0;a.fz=0;a.vx=a.vx||0;a.vy=a.vy||0;a.vz=a.vz||0;a.mtype=0;a.env=O.env;a.deltat=0;a.mx=0;a.my=0;a.mz=0;a.mvx=0;a.mvy=0;a.mvz=0;a.dx=[0,0,0,0,0,0,0,0,0,0];a.dy=[0,0,0,0,0,0,0,0,0,0];a.dz=[0,0,0,0,0,0,0,0,0,0];a.dvx=[0,0,0,0,0,0,0,0,0,0];a.dvy=[0,0,0,0,0,0,0,0,0,0];a.dvz=[0,0,0,0,0,0,0,0,0,0];a.midx=0;a.midy=0;a.midz=0;a.lx=0;a.ly=0;a.lz=0},resetForces:function(a){a.fx=0;a.fy=0;a.fz=0},getBlock:!1,setToTimestep:function(a,b,c){},initRK:function(a,b){var c=D.extractPoint(a.el.homog); a.x=c.x;a.y=c.y;a.z=0;a.xo=a.x;a.yo=a.y;a.zo=a.z;a.vxo=a.vx;a.vyo=a.vy;a.vzo=a.vz;a.deltat=b;a.fx=0;a.fy=0;a.fz=0},setVelocity:function(a,b,c,d){d||(d=0);a.vx=b;a.vy=c;a.vz=d},move:function(a){a.pos=[a.x,a.y,1];a.internalmove=!0;ja&&aa.down&&a.el===ja.mover||La(a.el,h.realVector(a.pos),"homog");a.el.sx=a.x;a.el.sy=a.y;a.internalmove=!1},proceedMotion:function(a,b,c,d){if(!a.fixed)for(a.x=a.mx,a.y=a.my,a.z=a.mz,a.vx=a.mvx,a.vy=a.mvy,a.vz=a.mvz,b=0;bO.det(d,b,e,c,w,x)*O.det(d,b,e,c,y.value.real,y.value.imag)&&0>O.det(d,b,w,x,y.value.real,y.value.imag)*O.det(e,c,w,x,y.value.real,y.value.imag)&&(v=t.behavior.mvx+a.deltat*(-y.value.real+t.behavior.xo),w=t.behavior.mvy+a.deltat*(-y.value.imag+t.behavior.yo),u=p*v+n*w,v=n*v-p*w,t.behavior.x=y.value.real,t.behavior.y=y.value.imag,t.behavior.vx=p*u*(1-a.xdamp),t.behavior.vy=n*u*(1-a.xdamp),t.behavior.vx+= -n*v*(1-a.ydamp),t.behavior.vy+=p*v*(1-a.ydamp))}a.x1o=d;a.y1o=b;a.x2o=e;a.y2o=c}},Environment:{init:function(a){"undefined"===typeof a.gravity&&(a.gravity=0);"undefined"===typeof a.friction&&(a.friction=0);"undefined"===typeof a.springstrength&&(a.springstrength=1);"undefined"!==typeof a.accuracy&&(Vb=a.accuracy);"undefined"!==typeof a.deltat&&ha(a.deltat/.6);"undefined"===typeof a.charges&&(a.charges=!1);"undefined"===typeof a.balls&&(a.balls=!1);"undefined"===typeof a.newton&&(a.newton=!1);"undefined"=== typeof a.ballInteractionBoosting&&(a.ballInteractionBoosting=1);O.env=a;a.errorbound=.001;a.lowestdeltat=1E-7;a.slowdownfactor=2},reset:function(a){},resetForces:function(a){},getBlock:!1,setToTimestep:function(a,b,c){},initRK:function(a,b){},setVelocity:function(a,b,c,d){},move:function(a){},proceedMotion:function(a,b,c,d){},calculateForces:function(a){var b,c,d,e,f,h,k,l,m,n;if(a.newton)for(b=0;bm?0:(n-m)*(n-m)),l=(e-l)/(n*n*n)*(n>m?0:(n-m)*(n-m))):1===a.ballInteractionBoosting?(k=(d-k)/(n*n*n*n)*(n>m?0:(n-m)*(n-m)),l=(e-l)/(n*n* n*n)*(n>m?0:(n-m)*(n-m))):(k=(d-k)/(n*n*n*n*n)*(n>m?0:(n-m)*(n-m)),l=(e-l)/(n*n*n*n*n)*(n>m?0:(n-m)*(n-m))),c.behavior.fx+=k,c.behavior.fy+=l,h.behavior.fx-=k,h.behavior.fy-=l);for(b=0;b