(function(){/* unicode_hack.js Copyright (C) 2010-2012 Marcelo Gibson de Castro Gonçalves. All rights reserved. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. This file is offered as-is, without any warranty. */ 'use strict';var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.SIMPLE_FROUND_POLYFILL=!1;$jscomp.ISOLATE_POLYFILLS=!1;$jscomp.FORCE_POLYFILL_PROMISE=!1;$jscomp.FORCE_POLYFILL_PROMISE_WHEN_NO_UNHANDLED_REJECTION=!1;$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(F,P,b){if(F==Array.prototype||F==Object.prototype)return F;F[P]=b.value;return F}; $jscomp.getGlobal=function(F){F=["object"==typeof globalThis&&globalThis,F,"object"==typeof window&&window,"object"==typeof self&&self,"object"==typeof global&&global];for(var P=0;Pb&&(b=Math.max(b+d,0));b{Sk.abstr.setUpSlots(e);Sk.abstr.setUpMethods(e);Sk.abstr.setUpGetSets(e);Sk.abstr.setUpClassMethods(e)});b(19);b(20);b(21);[Sk.builtin.str,Sk.builtin.none,Sk.builtin.NotImplemented,Sk.builtin.object].forEach(e=>{e=e.prototype;e.__doc__=e.hasOwnProperty("tp$doc")?new Sk.builtin.str(e.tp$doc):Sk.builtin.none.none$}); b(22);b(23);b(24);b(25);b(26);b(27);b(28);b(29);b(31);b(32);b(33);b(34);b(35);b(36);b(37);b(38);b(39);b(40);b(41);b(42);b(43);b(44);b(45);b(46);b(47);b(48);b(49);b(50);b(51);b(52);b(53);b(66);b(54);b(55);b(56);b(57);b(58);b(59);b(60);b(61);b(62);b(63);b(64);b(65)},function(F,P,b){(function(e){var d={build:{githash:"1d6da87991edd93117a53858367c32f27d77b396",date:"2023-09-01T06:58:47.589Z"}};d.global="undefined"!==typeof e?e:"undefined"!==typeof self?self:"undefined"!==typeof window?window:{};d.exportSymbol= function(f,h){f=f.split(".");var p=d.global,g;for(g=0;gM.getHours()?S.am:S.pm;break;case 82:H+=q(S.formats.R,M,S,E);break;case 83:H+=e(M.getSeconds(),y);break;case 84:H+=q(S.formats.T,M,S,E);break;case 85:H+=e(h(M,"sunday"),y);break;case 87:H+=e(h(M,"monday"),y);break;case 88:H+=q(S.formats.X,M,S,E);break;case 89:H+= M.getFullYear();break;case 90:t&&0===r?H+="GMT":(y=M,y=(y=y.toString().match(/\(([\w\s]+)\)/))&&y[1],H+=y||"");break;case 97:H+=S.shortDays[M.getDay()];break;case 98:H+=S.shortMonths[M.getMonth()];break;case 99:H+=q(S.formats.c,M,S,E);break;case 100:H+=e(M.getDate(),y);break;case 101:H+=e(M.getDate(),null==y?" ":y);break;case 104:H+=S.shortMonths[M.getMonth()];break;case 106:y=new Date(M.getFullYear(),0,1);y=Math.ceil((M.getTime()-y.getTime())/864E5);H+=d(y);break;case 107:H+=e(M.getHours(),null== y?" ":y);break;case 108:H+=e(f(M.getHours()),null==y?" ":y);break;case 109:H+=e(M.getMonth()+1,y);break;case 110:H+="\n";break;case 111:y=M.getDate();H=S.ordinalSuffixes?H+(String(y)+(S.ordinalSuffixes[y-1]||p(y))):H+(String(y)+p(y));break;case 112:H+=12>M.getHours()?S.AM:S.PM;break;case 114:H+=q(S.formats.r,M,S,E);break;case 115:H+=Math.floor(E/1E3);break;case 116:H+="\t";break;case 117:y=M.getDay();H+=0===y?7:y;break;case 118:H+=q(S.formats.v,M,S,E);break;case 119:H+=M.getDay();break;case 120:H+= q(S.formats.x,M,S,E);break;case 121:A=M.getFullYear()%100;H+=e(A,y);break;case 122:t&&0===r?H+=Q?"+00:00":"+0000":(y=0!==r?r/6E4:-M.getTimezoneOffset(),A=Q?":":"",aa=Math.abs(y%60),H+=(0>y?"-":"+")+e(Math.floor(Math.abs(y/60)))+A+e(aa));break;default:A&&(H+="%"),H+=I[X]}y=null;A=!1}else 37===aa?A=!0:H+=I[X]}return H}var z=k||c,r=u||0,t=l||!1,x=0,v,B=function(I,M){if(M){var S=M.getTime();if(t){var E=6E4*(M.getTimezoneOffset()||0);M=new Date(S+E+r);6E4*(M.getTimezoneOffset()||0)!==E&&(M=6E4*(M.getTimezoneOffset()|| 0),M=new Date(S+M+r))}}else S=Date.now(),S>x?(x=S,v=new Date(x),S=x,t&&(v=new Date(x+6E4*(v.getTimezoneOffset()||0)+r))):S=x,M=v;return q(I,M,z,S)};B.localize=function(I){return new b(I||z,r,t)};B.localizeByIdentifier=function(I){var M=a[I];return M?B.localize(M):(g('[WARNING] No locale found with identifier "'+I+'".'),B)};B.timezone=function(I){var M=r,S=t,E=typeof I;if("number"===E||"string"===E)S=!0,"string"===E?(M="-"===I[0]?-1:1,E=parseInt(I.slice(1,3),10),I=parseInt(I.slice(3,5),10),M=M*(60* E+I)*6E4):"number"===E&&(M=6E4*I);return new b(z,M,S)};B.utc=function(){return new b(z,r,!0)};return B}function e(k,u){if(""===u||9=k||0===u||4<=u)return"th";switch(u){case 1:return"st";case 2:return"nd";case 3:return"rd"}}function g(k){"undefined"!==typeof console&&"function"==typeof console.warn&&console.warn(k)}var a={de_DE:{identifier:"de-DE",days:"Sonntag Montag Dienstag Mittwoch Donnerstag Freitag Samstag".split(" "),shortDays:"So Mo Di Mi Do Fr Sa".split(" "),months:"Januar Februar M\u00e4rz April Mai Juni Juli August September Oktober November Dezember".split(" "),shortMonths:"Jan Feb M\u00e4r Apr Mai Jun Jul Aug Sep Okt Nov Dez".split(" "), AM:"AM",PM:"PM",am:"am",pm:"pm",formats:{c:"%a %d %b %Y %X %Z",D:"%d.%m.%Y",F:"%Y-%m-%d",R:"%H:%M",r:"%I:%M:%S %p",T:"%H:%M:%S",v:"%e-%b-%Y",X:"%T",x:"%D"}},en_CA:{identifier:"en-CA",days:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),shortDays:"Sun Mon Tue Wed Thu Fri Sat".split(" "),months:"January February March April May June July August September October November December".split(" "),shortMonths:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),ordinalSuffixes:"st nd rd th th th th th th th th th th th th th th th th th st nd rd th th th th th th th st".split(" "), AM:"AM",PM:"PM",am:"am",pm:"pm",formats:{c:"%a %d %b %Y %X %Z",D:"%d/%m/%y",F:"%Y-%m-%d",R:"%H:%M",r:"%I:%M:%S %p",T:"%H:%M:%S",v:"%e-%b-%Y",X:"%r",x:"%D"}},en_US:{identifier:"en-US",days:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),shortDays:"Sun Mon Tue Wed Thu Fri Sat".split(" "),months:"January February March April May June July August September October November December".split(" "),shortMonths:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),ordinalSuffixes:"st nd rd th th th th th th th th th th th th th th th th th st nd rd th th th th th th th st".split(" "), AM:"AM",PM:"PM",am:"am",pm:"pm",formats:{c:"%a %d %b %Y %X %Z",D:"%m/%d/%y",F:"%Y-%m-%d",R:"%H:%M",r:"%I:%M:%S %p",T:"%H:%M:%S",v:"%e-%b-%Y",X:"%r",x:"%D"}},es_MX:{identifier:"es-MX",days:"domingo lunes martes mi\u00e9rcoles jueves viernes s\u00e1bado".split(" "),shortDays:"dom lun mar mi\u00e9 jue vie s\u00e1b".split(" "),months:"enero febrero marzo abril mayo junio julio agosto septiembre octubre noviembre diciembre".split(" "),shortMonths:"ene feb mar abr may jun jul ago sep oct nov dic".split(" "), AM:"AM",PM:"PM",am:"am",pm:"pm",formats:{c:"%a %d %b %Y %X %Z",D:"%d/%m/%Y",F:"%Y-%m-%d",R:"%H:%M",r:"%I:%M:%S %p",T:"%H:%M:%S",v:"%e-%b-%Y",X:"%T",x:"%D"}},fr_FR:{identifier:"fr-FR",days:"dimanche lundi mardi mercredi jeudi vendredi samedi".split(" "),shortDays:"dim. lun. mar. mer. jeu. ven. sam.".split(" "),months:"janvier f\u00e9vrier mars avril mai juin juillet ao\u00fbt septembre octobre novembre d\u00e9cembre".split(" "),shortMonths:"janv. f\u00e9vr. mars avril mai juin juil. ao\u00fbt sept. oct. nov. d\u00e9c.".split(" "), AM:"AM",PM:"PM",am:"am",pm:"pm",formats:{c:"%a %d %b %Y %X %Z",D:"%d/%m/%Y",F:"%Y-%m-%d",R:"%H:%M",r:"%I:%M:%S %p",T:"%H:%M:%S",v:"%e-%b-%Y",X:"%T",x:"%D"}},it_IT:{identifier:"it-IT",days:"domenica luned\u00ec marted\u00ec mercoled\u00ec gioved\u00ec venerd\u00ec sabato".split(" "),shortDays:"dom lun mar mer gio ven sab".split(" "),months:"gennaio febbraio marzo aprile maggio giugno luglio agosto settembre ottobre novembre dicembre".split(" "),shortMonths:"gen feb mar apr mag giu lug ago set ott nov dic".split(" "), AM:"AM",PM:"PM",am:"am",pm:"pm",formats:{c:"%a %d %b %Y %X %Z",D:"%d/%m/%Y",F:"%Y-%m-%d",R:"%H:%M",r:"%I:%M:%S %p",T:"%H:%M:%S",v:"%e-%b-%Y",X:"%T",x:"%D"}},nl_NL:{identifier:"nl-NL",days:"zondag maandag dinsdag woensdag donderdag vrijdag zaterdag".split(" "),shortDays:"zo ma di wo do vr za".split(" "),months:"januari februari maart april mei juni juli augustus september oktober november december".split(" "),shortMonths:"jan feb mrt apr mei jun jul aug sep okt nov dec".split(" "),AM:"AM",PM:"PM", am:"am",pm:"pm",formats:{c:"%a %d %b %Y %X %Z",D:"%d-%m-%y",F:"%Y-%m-%d",R:"%H:%M",r:"%I:%M:%S %p",T:"%H:%M:%S",v:"%e-%b-%Y",X:"%T",x:"%D"}},pt_BR:{identifier:"pt-BR",days:"domingo segunda ter\u00e7a quarta quinta sexta s\u00e1bado".split(" "),shortDays:"Dom Seg Ter Qua Qui Sex S\u00e1b".split(" "),months:"janeiro fevereiro mar\u00e7o abril maio junho julho agosto setembro outubro novembro dezembro".split(" "),shortMonths:"Jan Fev Mar Abr Mai Jun Jul Ago Set Out Nov Dez".split(" "),AM:"AM",PM:"PM", am:"am",pm:"pm",formats:{c:"%a %d %b %Y %X %Z",D:"%d-%m-%Y",F:"%Y-%m-%d",R:"%H:%M",r:"%I:%M:%S %p",T:"%H:%M:%S",v:"%e-%b-%Y",X:"%T",x:"%D"}},ru_RU:{identifier:"ru-RU",days:"\u0412\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435 \u041f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a \u0412\u0442\u043e\u0440\u043d\u0438\u043a \u0421\u0440\u0435\u0434\u0430 \u0427\u0435\u0442\u0432\u0435\u0440\u0433 \u041f\u044f\u0442\u043d\u0438\u0446\u0430 \u0421\u0443\u0431\u0431\u043e\u0442\u0430".split(" "), shortDays:"\u0412\u0441 \u041f\u043d \u0412\u0442 \u0421\u0440 \u0427\u0442 \u041f\u0442 \u0421\u0431".split(" "),months:"\u042f\u043d\u0432\u0430\u0440\u044c \u0424\u0435\u0432\u0440\u0430\u043b\u044c \u041c\u0430\u0440\u0442 \u0410\u043f\u0440\u0435\u043b\u044c \u041c\u0430\u0439 \u0418\u044e\u043d\u044c \u0418\u044e\u043b\u044c \u0410\u0432\u0433\u0443\u0441\u0442 \u0421\u0435\u043d\u0442\u044f\u0431\u0440\u044c \u041e\u043a\u0442\u044f\u0431\u0440\u044c \u041d\u043e\u044f\u0431\u0440\u044c \u0414\u0435\u043a\u0430\u0431\u0440\u044c".split(" "), shortMonths:"\u044f\u043d\u0432 \u0444\u0435\u0432 \u043c\u0430\u0440 \u0430\u043f\u0440 \u043c\u0430\u0439 \u0438\u044e\u043d \u0438\u044e\u043b \u0430\u0432\u0433 \u0441\u0435\u043d \u043e\u043a\u0442 \u043d\u043e\u044f \u0434\u0435\u043a".split(" "),AM:"AM",PM:"PM",am:"am",pm:"pm",formats:{c:"%a %d %b %Y %X",D:"%d.%m.%y",F:"%Y-%m-%d",R:"%H:%M",r:"%I:%M:%S %p",T:"%H:%M:%S",v:"%e-%b-%Y",X:"%T",x:"%D"}},tr_TR:{identifier:"tr-TR",days:"Pazar Pazartesi Sal\u0131 \u00c7ar\u015famba Per\u015fembe Cuma Cumartesi".split(" "), shortDays:"Paz Pzt Sal \u00c7r\u015f Pr\u015f Cum Cts".split(" "),months:"Ocak \u015eubat Mart Nisan May\u0131s Haziran Temmuz A\u011fustos Eyl\u00fcl Ekim Kas\u0131m Aral\u0131k".split(" "),shortMonths:"Oca \u015eub Mar Nis May Haz Tem A\u011fu Eyl Eki Kas Ara".split(" "),AM:"\u00d6\u00d6",PM:"\u00d6S",am:"\u00d6\u00d6",pm:"\u00d6S",formats:{c:"%a %d %b %Y %X %Z",D:"%d-%m-%Y",F:"%Y-%m-%d",R:"%H:%M",r:"%I:%M:%S %p",T:"%H:%M:%S",v:"%e-%b-%Y",X:"%T",x:"%D"}},zh_CN:{identifier:"zh-CN",days:"\u661f\u671f\u65e5 \u661f\u671f\u4e00 \u661f\u671f\u4e8c \u661f\u671f\u4e09 \u661f\u671f\u56db \u661f\u671f\u4e94 \u661f\u671f\u516d".split(" "), shortDays:"\u65e5\u4e00\u4e8c\u4e09\u56db\u4e94\u516d".split(""),months:"\u4e00\u6708\u4efd \u4e8c\u6708\u4efd \u4e09\u6708\u4efd \u56db\u6708\u4efd \u4e94\u6708\u4efd \u516d\u6708\u4efd \u4e03\u6708\u4efd \u516b\u6708\u4efd \u4e5d\u6708\u4efd \u5341\u6708\u4efd \u5341\u4e00\u6708\u4efd \u5341\u4e8c\u6708\u4efd".split(" "),shortMonths:"\u4e00\u6708 \u4e8c\u6708 \u4e09\u6708 \u56db\u6708 \u4e94\u6708 \u516d\u6708 \u4e03\u6708 \u516b\u6708 \u4e5d\u6708 \u5341\u6708 \u5341\u4e00\u6708 \u5341\u4e8c\u6708".split(" "), AM:"\u4e0a\u5348",PM:"\u4e0b\u5348",am:"\u4e0a\u5348",pm:"\u4e0b\u5348",formats:{c:"%a %d %b %Y %X %Z",D:"%d/%m/%y",F:"%Y-%m-%d",R:"%H:%M",r:"%I:%M:%S %p",T:"%H:%M:%S",v:"%e-%b-%Y",X:"%r",x:"%D"}}},c=a.en_US,n=new b(c,0,!1);if("undefined"!==typeof F)var m=F.exports=n;else m=function(){return this||(0,eval)("this")}(),m.strftime=n;"function"!==typeof Date.now&&(Date.now=function(){return+new Date})})()},function(F,P,b){F=b(5);const e=Sk.global.JSBI=void 0!==Sk.global.BigInt?{}:F;void 0===Sk.global.BigInt? (e.__isBigInt||(e.__isBigInt=d=>d instanceof e),e.powermod=(d,f,h)=>{const p=e.BigInt(1);let g=p;for(f=e.greaterThan(f,e.__ZERO)?f:e.unaryMinus(f);e.greaterThan(f,e.__ZERO);)e.bitwiseAnd(f,p)&&(g=e.remainder(e.multiply(g,d),h)),f=e.signedRightShift(f,p),d=e.remainder(e.multiply(d,d),h);return g}):Object.assign(e,{BigInt:Sk.global.BigInt,toNumber:d=>Number(d),toString:d=>d.toString(),__isBigInt:d=>"bigint"===typeof d,unaryMinus:d=>-d,bitwiseNot:d=>~d,bitwiseAnd:(d,f)=>d&f,bitwiseOr:(d,f)=>d|f,bitwiseXor:(d, f)=>d^f,exponentiate:(d,f)=>{const h=e.BigInt(1);let p=h;for(f=f>e.__ZERO?f:-f;f>e.__ZERO;)f&h&&(p*=d),f>>=h,d*=d;return p},powermod:(d,f,h)=>{const p=e.BigInt(1);let g=p;for(f=f>e.__ZERO?f:-f;f>e.__ZERO;)f&p&&(g=g*d%h),f>>=p,d=d*d%h;return g},multiply:(d,f)=>d*f,divide:(d,f)=>d/f,remainder:(d,f)=>d%f,add:(d,f)=>d+f,subtract:(d,f)=>d-f,leftShift:(d,f)=>d<d>>f,unsignedRightShift:(d,f)=>d>>>f,lessThan:(d,f)=>dd<=f,greaterThan:(d,f)=>d>f,greaterThanOrEqual:(d, f)=>d>=f,equal:(d,f)=>d===f,notEqual:(d,f)=>d!==f});e.__ZERO=e.BigInt(0);e.__MAX_SAFE=e.BigInt(Number.MAX_SAFE_INTEGER);e.__MIN_SAFE=e.BigInt(-Number.MAX_SAFE_INTEGER);e.numberIfSafe=d=>e.lessThan(d,e.__MAX_SAFE)&&e.greaterThan(d,e.__MIN_SAFE)?e.toNumber(d):d;e.BigUp=d=>e.__isBigInt(d)?d:e.BigInt(d)},function(F,P,b){(function(e,d){F.exports=d()})(this,function(){var e=Math.imul,d=Math.clz32,f=Math.abs,h=Math.max,p=Math.floor;class g extends Array{constructor(a,c){if(super(a),this.sign=c,a>g.__kMaxLength)throw new RangeError("Maximum BigInt size exceeded"); }static BigInt(a){var c=Number.isFinite;if("number"==typeof a){if(0===a)return g.__zero();if(g.__isOneDigitInt(a))return 0>a?g.__oneDigit(-a,!0):g.__oneDigit(a,!1);if(!c(a)||p(a)!==a)throw new RangeError("The number "+a+" cannot be converted to BigInt because it is not an integer");return g.__fromDouble(a)}if("string"==typeof a){c=g.__fromString(a);if(null===c)throw new SyntaxError("Cannot convert "+a+" to a BigInt");return c}if("boolean"==typeof a)return!0===a?g.__oneDigit(1,!1):g.__zero();if("object"== typeof a){if(a.constructor===g)return a;a=g.__toPrimitive(a);return g.BigInt(a)}throw new TypeError("Cannot convert "+a+" to a BigInt");}toDebugString(){const a=["BigInt["];for(const c of this)a.push((c?(c>>>0).toString(16):c)+", ");return a.push("]"),a.join("")}toString(a){a=void 0===a?10:a;if(2>a||36>>12;const q=l-12;c=12<=l?0:m<<20+l;l=20+l;for(0>>30-q,c=m<>>30-l,l-=30;m=g.__decideRounding(a,l,u,m);if((1===m||0===m&&1==(1&c))&&(c=c+1>>>0,0===c&&(k++,0!=k>>>20&&(k=0,n++,1023=g.__kMaxLengthBits)throw new RangeError("BigInt too big");if(1===a.length&&2===a.__digit(0)){var n=1+(0|c/30);a=new g(n,a.sign&&0!=(1&c));a.__initializeDigits();return a.__setDigit(n-1,1<>=1;0!==c;c>>=1)m=g.multiply(m,m),0!=(1&c)&&(null===n?n=m:n=g.multiply(n,m));return n}static multiply(a,c){if(0===a.length)return a; if(0===c.length)return c;var n=a.length+c.length;30<=a.__clzmsd()+c.__clzmsd()&&n--;n=new g(n,a.sign!==c.sign);n.__initializeDigits();for(let m=0;mg.__absoluteCompare(a,c))return g.__zero();const n=a.sign!==c.sign,m=c.__unsignedDigit(0);if(1===c.length&&32767>=m){if(1===m)return n===a.sign?a:g.unaryMinus(a);a=g.__absoluteDivSmall(a,m,null)}else a= g.__absoluteDivLarge(a,c,!0,!1);return a.sign=n,a.__trim()}static remainder(a,c){if(0===c.length)throw new RangeError("Division by zero");if(0>g.__absoluteCompare(a,c))return a;const n=c.__unsignedDigit(0);if(1===c.length&&32767>=n){if(1===n)return g.__zero();c=g.__absoluteModSmall(a,n);return 0===c?g.__zero():g.__oneDigit(c,a.sign)}c=g.__absoluteDivLarge(a,c,!1,!0);return c.sign=a.sign,c.__trim()}static add(a,c){const n=a.sign;return n===c.sign?g.__absoluteAdd(a,c,n):0<=g.__absoluteCompare(a,c)? g.__absoluteSub(a,c,n):g.__absoluteSub(c,a,!n)}static subtract(a,c){const n=a.sign;return n===c.sign?0<=g.__absoluteCompare(a,c)?g.__absoluteSub(a,c,n):g.__absoluteSub(c,a,!n):g.__absoluteAdd(a,c,n)}static leftShift(a,c){return 0===c.length||0===a.length?a:c.sign?g.__rightShiftByAbsolute(a,c):g.__leftShiftByAbsolute(a,c)}static signedRightShift(a,c){return 0===c.length||0===a.length?a:c.sign?g.__leftShiftByAbsolute(a,c):g.__rightShiftByAbsolute(a,c)}static unsignedRightShift(){throw new TypeError("BigInts have no unsigned right shift; use >> instead"); }static lessThan(a,c){return 0>g.__compareToBigInt(a,c)}static lessThanOrEqual(a,c){return 0>=g.__compareToBigInt(a,c)}static greaterThan(a,c){return 0a)throw new RangeError("Invalid value: not (convertible to) a safe integer");if(0===a)return g.__zero();if(a>=g.__kMaxLengthBits)return c;const n=0|(a+29)/30;if(c.lengtha)throw new RangeError("Invalid value: not (convertible to) a safe integer");if(0===a)return g.__zero();if(c.sign){if(a>g.__kMaxLengthBits)throw new RangeError("BigInt too big");return g.__truncateAndSubFromPowerOfTwo(a,c,!1)}if(a>=g.__kMaxLengthBits)return c;const n=0|(a+29)/30;if(c.length>>m?g.__truncateToNBits(a, c):c}static ADD(a,c){if(a=g.__toPrimitive(a),c=g.__toPrimitive(c),"string"==typeof a)return"string"!=typeof c&&(c=c.toString()),a+c;if("string"==typeof c)return a.toString()+c;if(a=g.__toNumeric(a),c=g.__toNumeric(c),g.__isBigInt(a)&&g.__isBigInt(c))return g.add(a,c);if("number"==typeof a&&"number"==typeof c)return a+c;throw new TypeError("Cannot mix BigInt and other types, use explicit conversions");}static LT(a,c){return g.__compare(a,c,0)}static LE(a,c){return g.__compare(a,c,1)}static GT(a,c){return g.__compare(a, c,2)}static GE(a,c){return g.__compare(a,c,3)}static EQ(a,c){for(;;){if(g.__isBigInt(a))return g.__isBigInt(c)?g.equal(a,c):g.EQ(c,a);if("number"==typeof a){if(g.__isBigInt(c))return g.__equalToNumber(c,a);if("object"!=typeof c)return a==c;c=g.__toPrimitive(c)}else if("string"==typeof a){if(g.__isBigInt(c))return a=g.__fromString(a),null!==a&&g.equal(a,c);if("object"!=typeof c)return a==c;c=g.__toPrimitive(c)}else if("boolean"==typeof a){if(g.__isBigInt(c))return g.__equalToNumber(c,+a);if("object"!= typeof c)return a==c;c=g.__toPrimitive(c)}else if("symbol"==typeof a){if(g.__isBigInt(c))return!1;if("object"!=typeof c)return a==c;c=g.__toPrimitive(c)}else if("object"==typeof a){if("object"==typeof c&&c.constructor!==g)return a==c;a=g.__toPrimitive(a)}else return a==c}}static NE(a,c){return!g.EQ(a,c)}static __zero(){return new g(0,!1)}static __oneDigit(a,c){c=new g(1,c);return c.__setDigit(0,a),c}__copy(){const a=new g(this.length,this.sign);for(let c=0;cc)c=-c-1;else{if(0===n)return-1;n--;m=a.__digit(n);c=29}c=1<>>20)-1023,n=(0|c/30)+1;a=new g(n,0>a); let m=1048575&g.__kBitConversionInts[1]|1048576,k=g.__kBitConversionInts[0];c%=30;let u;if(20>c){var l=20-c;u=l+32;c=m>>>l;m=m<<32-l|k>>>l;k<<=32-l}else 20===c?(u=32,c=m,m=k):(l=c-20,u=32-l,c=m<>>32-l,m=k<>>2,m=m<<30|k>>>2,k<<=30):c=0,a.__setDigit(n,c);return a.__trim()}static __isWhitespace(a){return!!(13>=a&&9<=a)||(159>=a?32==a:131071>=a?160==a||5760==a:196607>=a?(a&=131071,10>=a||40==a||41==a||47==a||95==a||4096==a):65279==a)}static __fromString(a, c){c=void 0===c?0:c;let n=0;const m=a.length;let k=0;if(k===m)return g.__zero();let u=a.charCodeAt(k);for(;g.__isWhitespace(u);){if(++k===m)return g.__zero();u=a.charCodeAt(k)}if(43===u){if(++k===m)return null;u=a.charCodeAt(k);n=1}else if(45===u){if(++k===m)return null;u=a.charCodeAt(k);n=-1}if(0===c){if(c=10,48===u){if(++k===m)return g.__zero();if(u=a.charCodeAt(k),88===u||120===u){if(c=16,++k===m)return null;u=a.charCodeAt(k)}else if(79===u||111===u){if(c=8,++k===m)return null;u=a.charCodeAt(k)}else if(66=== u||98===u){if(c=2,++k===m)return null;u=a.charCodeAt(k)}}}else if(16===c&&48===u){if(++k===m)return g.__zero();if(u=a.charCodeAt(k),88===u||120===u){if(++k===m)return null;u=a.charCodeAt(k)}}if(0!=n&&10!==c)return null;for(;48===u;){if(++k===m)return g.__zero();u=a.charCodeAt(k)}var l=m-k;let q=g.__kMaxBitsPerChar[c];var z=g.__kBitsPerCharTableMultiplier-1;if(l>1073741824/q)return null;l=new g(0|((q*l+z>>>g.__kBitsPerCharTableShift)+29)/30,!1);const r=10>c?c:10,t=10>=g.__kBitsPerCharTableShift; c=[];var x=[],v=!1;do{for(var B=0,I=0;;){if(u-48>>>0>>0>>0>>0>>g.__kBitsPerCharTableShift)/30)}while(!x)}if(k!==m){if(!g.__isWhitespace(u))return null;for(k++;k>>z-u)}if(0!==k){if(m>=a.length)throw Error("implementation bug");a.__setDigit(m++,k)}for(;m>>1)+(85&m);m=(51&m>>>2)+(51&m);m=(15&m>>>4)+(15&m);--c;const k=a.__digit(n-1);var u=g.__clz30(k),l=0|(30*n-u+m-1)/m;if(a.sign&&l++,268435456>>z;for(z=30-z;z>=m;)u[l--]=g.__kConversionChars[q&c],q>>>=m,z-=m}u[l--]=g.__kConversionChars[(q|k<>>m-z;0!==q;)u[l--]= g.__kConversionChars[q&c],q>>>=m;if(a.sign&&(u[l--]="-"),-1!=l)throw Error("implementation bug");return u.join("")}static __toStringGeneric(a,c,n){var m=a.length;if(0===m)return"";if(1===m)return c=a.__unsignedDigit(0).toString(c),!1===n&&a.sign&&(c="-"+c),c;var k=30*m-g.__clz30(a.__digit(m-1));m=g.__kMaxBitsPerChar[c]-1;k*=g.__kBitsPerCharTableMultiplier;m=(0|(k+(m-1))/m)+1>>1;k=g.exponentiate(g.__oneDigit(c,!1),g.__oneDigit(m,!1));var u=k.__unsignedDigit(0);if(1===k.length&&32767>=u){k=new g(a.length, !1);k.__initializeDigits();var l=0;for(let q=2*a.length-1;0<=q;q--)l=l<<15|a.__halfDigit(q),k.__setHalfDigit(q,0|l/u),l=0|l%u;u=l.toString(c)}else u=g.__absoluteDivLarge(a,k,!0,!0),k=u.quotient,u=u.remainder.__trim(),u=g.__toStringGeneric(u,c,!0);k.__trim();for(c=g.__toStringGeneric(k,c,!0);u.lengtha?g.__absoluteLess(n):0}static __compareToNumber(a,c){if(g.__isOneDigitInt(c)){const n=a.sign,m=0>c;if(n!==m)return g.__unequalSign(n);if(0===a.length){if(m)throw Error("implementation bug");return 0===c?0:-1}if(1c?g.__absoluteGreater(n):ac)return g.__unequalSign(n);if(0===c)throw Error("implementation bug: should be handled elsewhere");if(0===a.length)return-1;g.__kBitConversionDouble[0]=c;c=2047&g.__kBitConversionInts[1]>>>20;if(2047==c)throw Error("implementation bug: handled elsewhere");var m=c-1023;if(0>m)return g.__absoluteGreater(n);c=a.length;var k=a.__digit(c-1),u=g.__clz30(k),l=30*c-u;m+=1;if(lm)return g.__absoluteGreater(n); m=1048576|1048575&g.__kBitConversionInts[1];let q=g.__kBitConversionInts[0];u=29-u;if(u!==(0|(l-1)%30))throw Error("implementation bug");if(20>u){var z=20-u;u=z+32;l=m>>>z;m=m<<32-z|q>>>z;q<<=32-z}else 20===u?(u=32,l=m,m=q):(z=u-20,u=32-z,l=m<>>32-z,m=q<>>=0,l>>>=0,k>l)return g.__absoluteGreater(n);if(k>>2,m=m<<30|q>>>2,q<<=30):l=0;k=a.__unsignedDigit(c);if(k>l)return g.__absoluteGreater(n);if(kc&&a.__unsignedDigit(0)===f(c):0===g.__compareToDouble(a,c)}static __comparisonResultToBool(a,c){return 0===c?0>a:1===c?0>=a:2===c?0 c;case 3:return a>=c}if(g.__isBigInt(a)&&"string"==typeof c)return c=g.__fromString(c),null!==c&&g.__comparisonResultToBool(g.__compareToBigInt(a,c),n);if("string"==typeof a&&g.__isBigInt(c))return a=g.__fromString(a),null!==a&&g.__comparisonResultToBool(g.__compareToBigInt(a,c),n);if(a=g.__toNumeric(a),c=g.__toNumeric(c),g.__isBigInt(a)){if(g.__isBigInt(c))return g.__comparisonResultToBool(g.__compareToBigInt(a,c),n);if("number"!=typeof c)throw Error("implementation bug");return g.__comparisonResultToBool(g.__compareToNumber(a, c),n)}if("number"!=typeof a)throw Error("implementation bug");if(g.__isBigInt(c))return g.__comparisonResultToBool(g.__compareToNumber(c,a),2^n);if("number"!=typeof c)throw Error("implementation bug");return 0===n?ac:3===n?a>=c:void 0}__clzmsd(){return g.__clz30(this.__digit(this.length-1))}static __absoluteAdd(a,c,n){if(a.length>>30;n.__setDigit(k,1073741823&u)}for(;k>>30,n.__setDigit(k,1073741823&c);return k>>30;n.__setDigit(k, 1073741823&u)}for(;k>>30,n.__setDigit(k,1073741823&c);return n.__trim()}static __absoluteAddOne(a,c,n){n=void 0===n?null:n;const m=a.length;null===n?n=new g(m,c):n.sign=c;c=1;for(let k=0;k>>30;n.__setDigit(k,1073741823&u)}return 0!=c&&n.__setDigitGrow(m,1),n}static __absoluteSubOne(a,c){const n=a.length;c=c||n;const m=new g(c,!1);let k=1;for(let u=0;u>>30;m.__setDigit(u,1073741823&l)}if(0!= k)throw Error("implementation bug");for(a=n;an?0:a.__unsignedDigit(n)>c.__unsignedDigit(n)?1:-1}static __multiplyAccumulate(a,c,n,m){if(0!==c){var k=32767&c,u=c>>>15,l=c=0;for(let t,x=0;x>>15;q=g.__imul(z,k);z=g.__imul(z,u);const v=g.__imul(r,k);r=g.__imul(r,u);t+=l+q+c;c=t>>>30;t&=1073741823;t+=((32767&z)<<15)+((32767&v)<<15);c+=t>>>30;l=r+(z>>>15)+(v>>>15);n.__setDigit(m,1073741823&t)}for(;0!=c||0!==l;m++)a=n.__digit(m),a+=c+l,l=0,c=a>>>30,n.__setDigit(m,1073741823&a)}}static __internalMultiplyAdd(a,c,n,m,k){let u=0;for(let z=0;z>>15,c);q=q+((32767&l)<<15)+u+n;n=q>>>30;u=l>>>15;k.__setDigit(z, 1073741823&q)}if(k.length>m)for(k.__setDigit(m++,n+u);mthis.length&&(n=this.length);const m=32767&a;a>>>=15;let k=0;for(let z=0;z>>15;u=g.__imul(l,m);l=g.__imul(l,a);const r=g.__imul(q,m);q=g.__imul(q,a);u=c+u+k;k=u>>>30;u&=1073741823;u+=((32767&l)<<15)+((32767&r)<<15);k+=u>>>30;c=q+(l>>>15)+(r>>>15);this.__setDigit(z,1073741823&u)}if(0!=k||0!== c)throw Error("implementation bug");}static __absoluteDivSmall(a,c,n){n=void 0===n?null:n;null===n&&(n=new g(a.length,!1));let m=0;for(let k,u=2*a.length-1;0<=u;u-=2){k=(m<<15|a.__halfDigit(u))>>>0;const l=0|k/c;m=0|k%c;k=(m<<15|a.__halfDigit(u-1))>>>0;const q=0|k/c;m=0|k%c;n.__setDigit(u>>>1,l<<15|q)}return n}static __absoluteModSmall(a,c){let n=0;for(let m=2*a.length-1;0<=m;m--)n=0|((n<<15|a.__halfDigit(m))>>>0)%c;return n}static __absoluteDivLarge(a,c,n,m){const k=c.__halfDigitLength(),u=c.length; var l=a.__halfDigitLength()-k;let q=null;n&&(q=new g(l+2>>>1,!1),q.__initializeDigits());const z=new g(k+2>>>1,!1);z.__initializeDigits();const r=g.__clz15(c.__halfDigit(k-1));0>>0;v=0|l/t;l=0|l%t;const I=c.__halfDigit(k-2),M=a.__halfDigit(B+k-2);for(;g.__imul(v,I)>>>0>(l<<16|M)>>>0&&(v--,l+=t,!(32767>>1,x|v))}if(m)return a.__inplaceRightShift(r),n?{quotient:q,remainder:a}:a;if(n)return q;throw Error("unreachable");}static __clz15(a){return g.__clz30(a)-15}__inplaceAdd(a,c,n){let m=0;for(let k=0;k>>15;this.__setHalfDigit(c+k,32767&u)}return m}__inplaceSub(a, c,n){let m=0;if(1&c){c>>=1;for(var k=this.__digit(c),u=32767&k,l=0;l>>1;l++){var q=a.__digit(l);k=(k>>>15)-(32767&q)-m;m=1&k>>>15;this.__setDigit(c+l,(32767&k)<<15|32767&u);k=this.__digit(c+l+1);u=(32767&k)-(q>>>15)-m;m=1&u>>>15}q=a.__digit(l);const z=(k>>>15)-(32767&q)-m;m=1&z>>>15;this.__setDigit(c+l,(32767&z)<<15|32767&u);if(c+l+1>=this.length)throw new RangeError("out of bounds");0==(1&n)&&(k=this.__digit(c+l+1),u=(32767&k)-(q>>>15)-m,m=1&u>>>15,this.__setDigit(c+a.length,1073709056&k|32767& u))}else{c>>=1;for(u=0;u>>15,k=(k>>>15)-(q>>>15)-m,m=1&k>>>15,this.__setDigit(c+u,(32767&k)<<15|32767&l);l=this.__digit(c+u);a=a.__digit(u);k=(32767&l)-(32767&a)-m;m=1&k>>>15;q=0;0==(1&n)&&(q=(l>>>15)-(a>>>15)-m,m=1&q>>>15);this.__setDigit(c+u,(32767&q)<<15|32767&k)}return m}__inplaceRightShift(a){if(0!==a){var c=this.__digit(0)>>>a,n=this.length-1;for(let m=0;m>>a}this.__setDigit(n,c)}}static __specialLeftShift(a,c,n){const m=a.length,k=new g(m+n,!1);if(0===c){for(c=0;c>>30-c}return 0n)throw new RangeError("BigInt too big");c=0|n/30;var m=n%30;const k=a.length,u=0!==m&&0!=a.__digit(k-1)>>>30-m;var l= k+c+(u?1:0);n=new g(l,a.sign);if(0===m){for(m=0;m>>30-m}if(u)n.__setDigit(k+c,l);else if(0!==l)throw Error("implementation bug");}return n.__trim()}static __rightShiftByAbsolute(a,c){var n=a.length,m=a.sign,k=g.__toShiftAmount(c);if(0>k)return g.__rightShiftByMaximum(m);c=0|k/30;var u=k%30,l=n-c;if(0>=l)return g.__rightShiftByMaximum(m); k=!1;if(m)if(0!=(a.__digit(c)&(1<>>u;n=n-c-1;for(q=0;q>>u}m.__setDigit(n,l)}return k&&(m=g.__absoluteAddOne(m,!0,m)),m.__trim()}static __rightShiftByMaximum(a){return a?g.__oneDigit(1,!0):g.__zero()}static __toShiftAmount(a){if(1< a.length)return-1;a=a.__unsignedDigit(0);return a>g.__kMaxLengthBits?-1:a}static __toPrimitive(a,c){c=void 0===c?"default":c;if("object"!=typeof a||a.constructor===g)return a;if("undefined"!=typeof Symbol&&"symbol"==typeof Symbol.toPrimitive){const n=a[Symbol.toPrimitive];if(n){a=n(c);if("object"!=typeof a)return a;throw new TypeError("Cannot convert object to primitive value");}}if(c=a.valueOf)if(c=c.call(a),"object"!=typeof c)return c;if(c=a.toString)if(a=c.call(a),"object"!=typeof a)return a;throw new TypeError("Cannot convert object to primitive value"); }static __toNumeric(a){return g.__isBigInt(a)?a:+a}static __isBigInt(a){return"object"==typeof a&&null!==a&&a.constructor===g}static __truncateToNBits(a,c){var n=0|(a+29)/30;const m=new g(n,c.sign);--n;for(let k=0;k>>a);return m.__setDigit(n,c),m.__trim()}static __truncateAndSubFromPowerOfTwo(a,c,n){var m=Math.min,k=0|(a+29)/30;n=new g(k,n);let u=0;--k;var l=0;for(m=m(k,c.length);u>> 30;n.__setDigit(u,1073741823&q)}for(;u>>a,a=1<<32-a,l=a-c-l,l&=a-1);return n.__setDigit(k,l),n.__trim()}__digit(a){return this[a]}__unsignedDigit(a){return this[a]>>>0}__setDigit(a,c){this[a]=0|c}__setDigitGrow(a,c){this[a]=0|c}__halfDigitLength(){const a=this.length;return 32767>=this.__unsignedDigit(a-1)?2*a-1:2*a}__halfDigit(a){return 32767&this[a>>>1]>>>15*(1&a)}__setHalfDigit(a,c){const n= a>>>1,m=this.__digit(n);this.__setDigit(n,1&a?32767&m|c<<15:1073709056&m|32767&c)}static __digitPow(a,c){let n=1;for(;0>>=1,a*=a;return n}static __isOneDigitInt(a){return(1073741823&a)===a}}return g.__kMaxLength=33554432,g.__kMaxLengthBits=g.__kMaxLength<<5,g.__kMaxBitsPerChar=[0,0,32,51,64,75,83,90,96,102,107,111,115,119,122,126,128,131,134,136,139,141,143,145,147,149,151,153,154,156,158,159,160,162,163,165,166],g.__kBitsPerCharTableShift=5,g.__kBitsPerCharTableMultiplier=1<>>0)/c)},g.__imul=e||function(a,c){return 0|a*c},g})},function(F,P){[..."abc"].flat();"a".matchAll(/a/g)},function(F,P,b){(function(e,d){(function(f,h){function p(v){delete q[v]} function g(v){if(z)setTimeout(g,0,v);else{var B=q[v];if(B){z=!0;try{var I=B.callback,M=B.args;switch(M.length){case 0:I();break;case 1:I(M[0]);break;case 2:I(M[0],M[1]);break;case 3:I(M[0],M[1],M[2]);break;default:I.apply(h,M)}}finally{p(v),z=!1}}}}function a(){t=function(v){d.nextTick(function(){g(v)})}}function c(){if(f.postMessage&&!f.importScripts){var v=!0,B=f.onmessage;f.onmessage=function(){v=!1};f.postMessage("","*");f.onmessage=B;return v}}function n(){var v="setImmediate$"+Math.random()+ "$",B=function(I){I.source===f&&"string"===typeof I.data&&0===I.data.indexOf(v)&&g(+I.data.slice(v.length))};f.addEventListener?f.addEventListener("message",B,!1):f.attachEvent("onmessage",B);t=function(I){f.postMessage(v+I,"*")}}function m(){var v=new MessageChannel;v.port1.onmessage=function(B){g(B.data)};t=function(B){v.port2.postMessage(B)}}function k(){var v=r.documentElement;t=function(B){var I=r.createElement("script");I.onreadystatechange=function(){g(B);I.onreadystatechange=null;v.removeChild(I); I=null};v.appendChild(I)}}function u(){t=function(v){setTimeout(g,0,v)}}if(!f.setImmediate){var l=1,q={},z=!1,r=f.document,t,x=Object.getPrototypeOf&&Object.getPrototypeOf(f);x=x&&x.setTimeout?x:f;"[object process]"==={}.toString.call(f.process)?a():c()?n():f.MessageChannel?m():r&&"onreadystatechange"in r.createElement("script")?k():u();x.setImmediate=function(v){"function"!==typeof v&&(v=new Function(""+v));for(var B=Array(arguments.length-1),I=0;I{r+=q;l[z.$mangled]=new Sk.builtin.getset_descriptor(u,{$get(){const t=this.$s[r];if(void 0===t)throw new Sk.builtin.AttributeError(z);return t},$set(t){this.$s[r]=t}})})}function g(k){for(;null!==k.prototype.tp$base;){if(void 0===k.sk$klass&&k.prototype.hasOwnProperty("__dict__"))return k=k.prototype.__dict__,Sk.builtin.checkDataDescr(k)?k:void 0;k=k.prototype.tp$base}}function a(k,u,l){if(void 0=== k.sk$klass)throw new Sk.builtin.TypeError("can't set "+k.prototype.tp$name+"."+l.$jsstr());if(void 0===u)throw new Sk.builtin.TypeError("can't delete "+k.prototype.tp$name+"."+l.$jsstr());}function c(k,u){k=(new Sk.builtin.super_(k,k)).tp$getattr(Sk.builtin.str.$initsubclass);Sk.misceval.callsimArray(k,[],u)}function n(k){const u=k.prototype;Object.keys(u).forEach(l=>{const q=Sk.abstr.lookupSpecial(u[l],Sk.builtin.str.$setname);if(void 0!==q)try{Sk.misceval.callsimArray(q,[k,new Sk.builtin.str(l)])}catch(z){throw l= new Sk.builtin.RuntimeError("Error calling __set_name__ on '"+Sk.abstr.typeName(u[l])+"' instance '"+l+"' in '"+k.prototype.tp$name+"'"),l.$cause=z,l;}})}void 0===Sk.builtin&&(Sk.builtin={});Sk.builtin.type=function(k){this instanceof Sk.builtin.type&&Sk.asserts.fail("calling new Sk.builtin.type is not safe");return k.ob$type};Object.defineProperties(Sk.builtin.type.prototype,{call:{value:Function.prototype.call},apply:{value:Function.prototype.apply},tp$slots:{value:{tp$doc:"type(object_or_name, bases, dict)\ntype(object) -> the object's type\ntype(name, bases, dict) -> a new type", tp$call:function(k,u){if(this===Sk.builtin.type){if(1===k.length&&(void 0===u||!u.length))return k[0].ob$type;if(3!==k.length)throw new Sk.builtin.TypeError("type() takes 1 or 3 arguments");}let l=this.prototype.tp$new(k,u);if(l.$isSuspension)return Sk.misceval.chain(l,q=>{l=q;if(l.ob$type.$isSubType(this))return l.tp$init(k,u)},()=>l);if(l.ob$type.$isSubType(this)){const q=l.tp$init(k,u);return void 0!==q&&q.$isSuspension?Sk.misceval.chain(q,()=>l):l}return l},tp$new:function(k,u){if(3!==k.length){if(1=== k.length&&(void 0===u||!u.length))return k[0].ob$type;throw new Sk.builtin.TypeError("type() takes 1 or 3 arguments");}const l=k[0];var q=k[1];const z=k[2];if("dict"!==z.tp$name)throw new Sk.builtin.TypeError("type() argument 3 must be dict, not "+Sk.abstr.typeName(z));if(!Sk.builtin.checkString(l))throw new Sk.builtin.TypeError("type() argument 1 must be str, not "+Sk.abstr.typeName(l));const r=l.$jsstr();if("tuple"!==q.tp$name)throw new Sk.builtin.TypeError("type() argument 2 must be tuple, not "+ Sk.abstr.typeName(q));q=q.sk$asarray();k=function(){this.sk$hasDict&&(this.$d=new Sk.builtin.dict);this.$s=[]};f(r,k,q,this.constructor);const t=k.prototype;Sk.globals&&(t.__module__=Sk.globals.__name__);t.__doc__=Sk.builtin.none.none$;q=z.quick$lookup(Sk.builtin.str.$slots);let x=void 0===q,v=void 0!==k.$typeLookup(Sk.builtin.str.$dict),B;void 0!==q&&(B=new Set,q=Sk.builtin.checkString(q)?[q]:Sk.misceval.arrayFromIterable(q),q.forEach(I=>{if(!Sk.builtin.checkString(I))throw new Sk.builtin.TypeError("__slots__ items must be strings, not '"+ Sk.abstr.typeName(I)+"'");if(!I.$isIdentifier())throw new Sk.builtin.TypeError("__slots__ must be identifiers");if(I===Sk.builtin.str.$dict){if(v)throw new Sk.builtin.TypeError("__dict__ slot disallowed: we already got one");x=!0}else B.add(Sk.mangleName(l,I))}),q=[...B].sort((I,M)=>I.toString().localeCompare(M.toString())),p(q,k));x&&!v&&(t.__dict__=new Sk.builtin.getset_descriptor(k,m),v=!0);Object.defineProperties(t,{ht$slots:{value:q||null,writable:!0},sk$hasDict:{value:v,writable:!0}});z.$items().forEach(I=> {var [M,S]=I;if(B&&B.has(M))throw new Sk.builtin.ValueError("'"+M.toString()+"' in __slots__ conflicts with class variable");t[M.$mangled]=S});if(t.hasOwnProperty("__qualname__")){q=t.__qualname__;if(!Sk.builtin.checkString(q))throw new Sk.builtin.TypeError("type __qualname__ must be a str, not '"+Sk.abstr.typeName(q)+"'");t.ht$qualname=q}q=k.prototype;b(q,"__init_subclass__","classmethod");b(q,"__new__","staticmethod");b(q,"__class_getitem__","classmethod");k.$allocateSlots();n(k);c(k,u);return k}, tp$init:function(k,u){if(k&&1==k.length&&u&&u.length)throw new Sk.builtin.TypeError("type.__init__() takes no keyword arguments");if(3!=k.length&&1!=k.length)throw new Sk.builtin.TypeError("type.__init__() takes 1 or 3 arguments");return Sk.builtin.object.prototype.tp$init.call(this,[])},tp$getattr:function(k,u){var l=this.ob$type;const q=l.$typeLookup(k);let z;if(void 0!==q&&(z=q.tp$descr_get,void 0!==z&&void 0!==q.tp$descr_set))return u=z.call(q,this,l,u);k=this.$typeLookup(k);if(void 0!==k)return l= k.tp$descr_get,void 0!==l?u=l.call(k,null,this,u):k;if(void 0!==z)return u=z.call(q,this,l,u);if(void 0!==q)return q},tp$setattr:function(k,u,l){if(!this.sk$klass){if(void 0!==u)throw new Sk.builtin.TypeError("can't set attributes of built-in/extension type '"+this.prototype.tp$name+"'");throw new Sk.builtin.TypeError("can't delete attributes on type object '"+this.prototype.tp$name+"'");}const q=this.ob$type.$typeLookup(k);if(void 0!==q){const z=q.tp$descr_set;if(z)return z.call(q,this,u,l)}l=k.$mangled; if(void 0===u)if(u=this.prototype,u.hasOwnProperty(l))delete u[l],k=Sk.dunderToSkulpt[l],void 0!==k&&(delete this.prototype[k],u.sk$prototypical||this.$allocateGetterSlot(l));else throw new Sk.builtin.AttributeError("type object '"+this.prototype.tp$name+"' has no attribute '"+k.$jsstr()+"'");else this.prototype[l]=u,l in Sk.dunderToSkulpt&&this.$allocateSlot(l,u)},$r:function(){let k=this.prototype.__module__,u="",l="class";k&&Sk.builtin.checkString(k)?u=k.v+".":k=null;k||this.sk$klass||Sk.__future__.class_repr|| (l="type");return new Sk.builtin.str("<"+l+" '"+u+this.prototype.tp$name+"'>")}},writable:!0},tp$methods:{value:null,writable:!0},tp$classmethods:{value:null,writable:!0},tp$getsets:{value:null,writable:!0},sk$type:{value:!0},$isSubType:{value:function(k){return this===k||this.prototype instanceof k||!this.prototype.sk$prototypical&&this.prototype.tp$mro.includes(k)}},$allocateSlot:{value:function(k,u){k=Sk.slots[k];const l=k.$slot_name,q=this.prototype;q.hasOwnProperty(l)&&delete q[l];Object.defineProperty(q, l,{value:k.$slot_func(u),writable:!0,configurable:!0})}},$allocateSlots:{value:function(){const k=this.prototype;this.prototype.sk$prototypical?Object.keys(k).forEach(u=>{u in Sk.slots&&this.$allocateSlot(u,k[u])}):Object.keys(Sk.slots).forEach(u=>{k.hasOwnProperty(u)?this.$allocateSlot(u,k[u]):this.$allocateGetterSlot(u)});k.hasOwnProperty("__eq__")&&!k.hasOwnProperty("__hash__")&&(k.tp$hash=k.__hash__=Sk.builtin.none.none$)}},$allocateGetterSlot:{value:function(k){const u=Sk.slots[k].$slot_name, l=this.prototype;l.hasOwnProperty(u)||Object.defineProperty(l,u,{configurable:!0,get(){const q=l.tp$mro;for(let z=1;zb.length)throw b=d.tp$name,new Sk.builtin.TypeError(b+".__new__(): not enough arguments");var f=b.shift();if(void 0===f.sk$type)throw b=d.tp$name,new Sk.builtin.TypeError(b+"__new__(X): X is not a type object ("+Sk.abstr.typeName(f)+")");if(!f.$isSubType(this))throw b=d.tp$name,f=f.prototype.tp$name,new Sk.builtin.TypeError(b+".__new__("+f+"): "+f+" is not a subtype of "+b);const h=f.prototype.sk$staticNew.prototype; if(h.tp$new!==d.tp$new)throw b=d.tp$name,f=f.prototype.tp$name,new Sk.builtin.TypeError(b+".__new__("+f+") is not safe, use "+h.tp$name+".__new__()");return d.tp$new.call(f.prototype,b,e)},$flags:{FastCall:!0},$textsig:"($type, *args, **kwargs)",$name:"__new__"};Sk.generic.selfIter=function(){return this};Sk.generic.iterNextWithArrayCheckSize=function(){if(this.$seq.length!==this.$orig.get$size()){const b=this.tp$name.split("_")[0];throw new Sk.builtin.RuntimeError(b+" changed size during iteration"); }if(!(this.$index>=this.$seq.length))return this.$seq[this.$index++]};Sk.generic.iterNextWithArray=function(){const b=this.$seq[this.$index++];void 0===b&&(this.tp$iternext=()=>{});return b};Sk.generic.iterLengthHintWithArrayMethodDef={$meth:function(){return new Sk.builtin.int_(this.$seq.length-this.$index)},$flags:{NoArgs:!0}};Sk.generic.iterReverseLengthHintMethodDef={$meth:function(){return new Sk.builtin.int_(this.$index)},$flags:{NoArgs:!0}};Sk.generic.getSetDict={$get(){return this.$d},$set(b){if(void 0=== b)throw new Sk.builtin.TypeError("cannot delete __dict__");if(b instanceof Sk.builtin.dict)this.$d=b;else throw new Sk.builtin.TypeError("__dict__ must be set to a dictionary, not a '"+Sk.abstr.typeName(b)+"'");},$doc:"dictionary for instance variables (if defined)",$name:"__dict__"};Sk.generic.seqCompare=function(b,e){if(this===b&&Sk.misceval.opAllowsEquality(e))return!0;if(!(b instanceof this.sk$builtinBase))return Sk.builtin.NotImplemented.NotImplemented$;const d=this.v;b=b.v;let f;if(d.length!== b.length&&("Eq"===e||"NotEq"===e))return"Eq"===e?!1:!0;for(f=0;f=h||f>=p)switch(e){case "Lt":return hp;case "GtE":return h>=p;default:Sk.asserts.fail()}return"Eq"===e?!1:"NotEq"===e?!0:Sk.misceval.richCompareBool(d[f],b[f],e)};Sk.generic.classGetItem={__class_getitem__:{$meth(b){return new Sk.builtin.GenericAlias(this, b)},$flags:{OneArg:!0}}}},function(F,P){Sk.builtin.pyCheckArgs=function(b,e,d,f,h,p){e=e.length;void 0===f&&(f=Infinity);h&&--e;p&&--e;if(ef)throw new Sk.builtin.TypeError((d===f?b+"() takes exactly "+d+" arguments":ef)throw new Sk.builtin.TypeError((d===f?b+"() takes exactly "+d+" arguments":e{var [z,r]=q;l[r]=function(t){return this.tp$richcompare(t,z)}})}function g(l){const q=Sk.reflectedNumberSlots;Object.keys(q).forEach(z=>{if(void 0!==l[z]){const r=q[z],t=r.reflected, x=l[t];void 0!==x?null===x&&delete l[t]:l[t]=r.slot||l[z]}})}function a(l){const q=Sk.sequenceAndMappingSlots;Object.keys(q).forEach(z=>{void 0!==l[z]&&q[z].forEach(r=>{l[r]=l[z]})})}Sk.abstr={};Sk.abstr.typeName=function(l){if(null!=l&&void 0!==l.tp$name){let q=l.ht$name;if(void 0!==q)return q.toString();q=l.tp$name;q.includes(".")&&(q=q.slice(q.lastIndexOf(".")+1));return q}Sk.asserts.fail(l+" passed to typeName");return""};const c={Add:"+",Sub:"-",Mult:"*",MatMult:"@",Div:"/",FloorDiv:"//", Mod:"%",DivMod:"divmod()",Pow:"** or pow()",LShift:"<<",RShift:">>",BitAnd:"&",BitXor:"^",BitOr:"|"},n={UAdd:"+",USub:"-",Invert:"~"};Sk.abstr.numberBinOp=function(l,q,z){var r;if(!(r=f(l,q,z)))throw l=Sk.abstr.typeName(l),q=Sk.abstr.typeName(q),new Sk.builtin.TypeError("unsupported operand type(s) for "+c[z]+": '"+l+"' and '"+q+"'");return r};Sk.exportSymbol("Sk.abstr.numberBinOp",Sk.abstr.numberBinOp);Sk.abstr.numberInplaceBinOp=function(l,q,z){var r;if(!(r=h(l,q,z)))throw l=Sk.abstr.typeName(l), q=Sk.abstr.typeName(q),new Sk.builtin.TypeError("unsupported operand type(s) for "+c[z]+"=: '"+l+"' and '"+q+"'");return r};Sk.exportSymbol("Sk.abstr.numberInplaceBinOp",Sk.abstr.numberInplaceBinOp);Sk.abstr.numberUnaryOp=function(l,q){if("Not"===q)return Sk.misceval.isTrue(l)?Sk.builtin.bool.false$:Sk.builtin.bool.true$;b:{switch(q){case "USub":var z=l.nb$negative;break b;case "UAdd":z=l.nb$positive;break b;case "Invert":z=l.nb$invert;break b}z=void 0}z=void 0!==z?z.call(l):void 0;if(!z)throw l= Sk.abstr.typeName(l),new Sk.builtin.TypeError("bad operand type for unary "+n[q]+": '"+l+"'");return z};Sk.exportSymbol("Sk.abstr.numberUnaryOp",Sk.abstr.numberUnaryOp);Sk.abstr.fixSeqIndex_=function(l,q){q=Sk.builtin.asnum$(q);0>q&&l.sq$length&&(q+=l.sq$length());return q};Sk.abstr.sequenceContains=function(l,q,z){if(l.sq$contains)return l.sq$contains(q,z);l=Sk.misceval.iterFor(Sk.abstr.iter(l),function(r){return r===q||Sk.misceval.richCompareBool(r,q,"Eq")?new Sk.misceval.Break(!0):!1},!1);return z? l:Sk.misceval.retryOptionalSuspensionOrThrow(l)};Sk.abstr.sequenceConcat=function(l,q){if(l.sq$concat)return l.sq$concat(q);if(Sk.builtin.checkSequence(l)&&Sk.builtin.checkSequence(q)&&(q=f(l,q,"Add"),void 0!==q))return q;throw new Sk.builtin.TypeError("'"+Sk.abstr.typeName(l)+"' object can't be concatenated");};Sk.abstr.sequenceInPlaceConcat=function(l,q){if(l.sq$inplace_concat)return l.sq$inplace_concat(q);if(l.sq$concat)return l.sq$concat(q);if(Sk.builtin.checkSequence(l)&&Sk.builtin.checkSequence(q)&& (q=h(l,q,"Add"),void 0!==q))return q;throw new Sk.builtin.TypeError("'"+Sk.abstr.typeName(l)+"' object can't be concatenated");};Sk.abstr.sequenceGetIndexOf=function(l,q){if(l.index)return Sk.misceval.callsimArray(l.index,[l,q]);let z=0;for(let r=Sk.abstr.iter(l),t=r.tp$iternext();void 0!==t;t=r.tp$iternext()){if(Sk.misceval.richCompareBool(q,t,"Eq"))return new Sk.builtin.int_(z);z+=1}throw new Sk.builtin.ValueError("sequence.index(x): x not in sequence");};Sk.abstr.sequenceGetCountOf=function(l, q){if(l.count)return Sk.misceval.callsimArray(l.count,[l,q]);let z=0;for(let r=Sk.abstr.iter(l),t=r.tp$iternext();void 0!==t;t=r.tp$iternext())Sk.misceval.richCompareBool(q,t,"Eq")&&(z+=1);return new Sk.builtin.int_(z)};Sk.abstr.sequenceGetItem=function(l,q,z){"number"===typeof q&&(q=new Sk.builtin.int_(q));return Sk.abstr.objectGetItem(l,q,z)};Sk.abstr.sequenceSetItem=function(l,q,z,r){"number"===typeof q&&(q=new Sk.builtin.int_(q));return Sk.abstr.objectSetItem(l,q,z,r)};Sk.abstr.sequenceDelItem= function(l,q,z){return Sk.abstr.objectDelItem(l,q,z)};Sk.abstr.sequenceGetSlice=function(l,q,z){return Sk.abstr.objectGetItem(l,new Sk.builtin.slice(q,z))};Sk.abstr.sequenceDelSlice=function(l,q,z){return Sk.abstr.objectDelItem(l,new Sk.builtin.slice(q,z))};Sk.abstr.sequenceSetSlice=function(l,q,z,r){return Sk.abstr.objectSetItem(l,new Sk.builtin.slice(q,z))};Sk.abstr.sequenceUnpack=function(l,q,z,r){if(!Sk.builtin.checkIterable(l))throw new Sk.builtin.TypeError("cannot unpack non-iterable "+Sk.abstr.typeName(l)+ " object");const t=Sk.abstr.iter(l),x=[];let v=0,B;0{x.push(I);if(++v===q)return new Sk.misceval.Break}));return Sk.misceval.chain(B,()=>{if(x.length{if(void 0!==M)throw new Sk.builtin.ValueError("too many values to unpack (expected "+q+")");return x});const I=[];return Sk.misceval.chain(Sk.misceval.iterFor(t, M=>{I.push(M)}),()=>{const M=I.length+q-z;if(0>M)throw new Sk.builtin.ValueError("not enough values to unpack (expected at least "+z+", got "+(z+M)+")");x.push(new Sk.builtin.list(I.slice(0,M)));x.push(...I.slice(M));return x})})};Sk.abstr.mappingUnpackIntoKeywordArray=function(l,q,z){if(q instanceof Sk.builtin.dict)q.$items().forEach(t=>{var [x,v]=t;if(!Sk.builtin.checkString(x))throw new Sk.builtin.TypeError((z.$qualname?z.$qualname+"() ":"")+"keywords must be strings");l.push(x.v);l.push(v)}); else{var r=Sk.abstr.lookupSpecial(q,Sk.builtin.str.$keys);if(void 0===r)throw new Sk.builtin.TypeError("Object is not a mapping");return Sk.misceval.chain(Sk.misceval.callsimOrSuspendArray(r),t=>Sk.misceval.iterFor(Sk.abstr.iter(t),x=>{if(!Sk.builtin.checkString(x))throw new Sk.builtin.TypeError((z.$qualname?z.$qualname+"() ":"")+"keywords must be strings");return Sk.misceval.chain(q.mp$subscript(x,!0),v=>{l.push(x.v);l.push(v)})}))}};Sk.abstr.keywordArrayFromPyDict=function(l){const q=[];l.$items().forEach(z=> {var [r,t]=z;if(!Sk.builtin.checkString(r))throw new Sk.builtin.TypeError("keywords must be strings");q.push(r.toString());q.push(t)});return q};Sk.abstr.keywordArrayToPyDict=function(l){const q=new Sk.builtin.dict;for(let z=0;zq.length)throw new Sk.builtin.TypeError(l+"() expected at most "+q.length+" arguments ("+x+" given)");if(r.length|| void 0!==t){if(x===q.length&&!r.length)return z;if(0===x&&q.length===(t&&t.length))return t}else return z;z=z.slice(0);for(x=0;xvoid 0===z[B]); if(q.length)throw new Sk.builtin.TypeError(l+"() missing "+q.length+" required positional arguments: "+q.join(", "));}return z};Sk.exportSymbol("Sk.abstr.copyKeywordsToNamedArgs",Sk.abstr.copyKeywordsToNamedArgs);Sk.abstr.checkNoKwargs=function(l,q){if(q&&q.length)throw new Sk.builtin.TypeError(l+"() takes no keyword arguments");};Sk.exportSymbol("Sk.abstr.checkNoKwargs",Sk.abstr.checkNoKwargs);Sk.abstr.checkNoArgs=function(l,q,z){if(q=q.length+(z?z.length:0))throw new Sk.builtin.TypeError(l+"() takes no arguments ("+ q+" given)");};Sk.exportSymbol("Sk.abstr.checkNoArgs",Sk.abstr.checkNoArgs);Sk.abstr.checkOneArg=function(l,q,z){Sk.abstr.checkNoKwargs(l,z);if(1!==q.length)throw new Sk.builtin.TypeError(l+"() takes exactly one argument ("+q.length+" given)");};Sk.exportSymbol("Sk.abstr.checkOneArg",Sk.abstr.checkOneArg);Sk.abstr.checkArgsLen=function(l,q,z,r){q=q.length;void 0===r&&(r=Infinity);if(qr)throw new Sk.builtin.TypeError((z===r?l+"() takes exactly "+z+" arguments":qSk.builtin.str&&Sk.builtin.str.$fixReserved?(m=Sk.builtin.str.$fixReserved,Sk.builtin.str.$fixReserved(l)): l;Sk.abstr.setUpGetSets=function(l,q){if(void 0!==Sk.builtin.getset_descriptor){var z=l.prototype;q=q||z.tp$getsets||{};Object.entries(q).forEach(r=>{var [t,x]=r;x.$name=t;z[m(t)]=new Sk.builtin.getset_descriptor(l,x)});Object.defineProperty(z,"tp$getsets",{value:null,writable:!0})}};Sk.abstr.setUpMethods=function(l,q){if(void 0!==Sk.builtin.method_descriptor){var z=l.prototype;q=q||z.tp$methods||{};Object.entries(q).forEach(r=>{var [t,x]=r;x.$name=t;z[m(t)]=new Sk.builtin.method_descriptor(l,x)}); Object.defineProperty(z,"tp$methods",{value:null,writable:!0})}};Sk.abstr.setUpClassMethods=function(l,q){if(void 0!==Sk.builtin.classmethod_descriptor){var z=l.prototype;q=q||z.tp$classmethods||{};Object.entries(q).forEach(r=>{var [t,x]=r;x.$name=t;z[m(t)]=new Sk.builtin.classmethod_descriptor(l,x)});Object.defineProperty(z,"tp$classmethods",{value:null,writable:!0})}};const k={Eq:"ob$eq",NotEq:"ob$ne",Gt:"ob$gt",GtE:"ob$ge",Lt:"ob$lt",LtE:"ob$le"},u=Object.entries(k);Sk.abstr.setUpSlots=function(l, q){function z(v,B){t[v]=new Sk.builtin.wrapper_descriptor(l,Sk.slots[v],B)}function r(v,B){"string"===typeof v?z(v,B):v.forEach(I=>{z(I,B)})}if(void 0!==Sk.builtin.wrapper_descriptor){var t=l.prototype;q=q||t.tp$slots||{};q.tp$new===Sk.generic.new&&(q.tp$new=Sk.generic.new(l));q.tp$richcompare?p(q):q.ob$eq&&(q.tp$richcompare=function(v,B){return this[k[B]].call(this,v)});q.tp$as_number&&g(q);q.tp$as_sequence_or_mapping&&a(q);Object.entries(q).forEach(v=>{var [B,I]=v;Object.defineProperty(t,B,{value:I, writable:!0})});q.tp$new&&(t.__new__=new Sk.builtin.sk_method(Sk.generic.newMethodDef,l),Object.defineProperty(t,"sk$staticNew",{value:l,writable:!0}));Sk.subSlots.main_slots.forEach(v=>{var [B,I]=v;v=q[B];void 0!==v&&r(I,v)});var x=q.tp$hash;void 0!==x&&("function"===typeof x?z("__hash__",x):x===Sk.builtin.none.none$?t.__hash__=x:Sk.asserts.fail("invalid tp$hash"));q.tp$as_number&&Sk.subSlots.number_slots.forEach(v=>{var [B,I]=v;v=q[B];void 0!==v&&r(I,v)});q.tp$as_sequence_or_mapping&&Sk.subSlots.sequence_and_mapping_slots.forEach(v=> {var [B,I]=v;v=q[B];void 0!==v&&r(I,v)});Object.defineProperty(t,"tp$slots",{value:null,writable:!0})}};Sk.abstr.buildNativeClass=function(l,q){q=q||{};Sk.asserts.assert(q.hasOwnProperty("constructor"),"A constructor is required to build a native class");let z=q.constructor;Sk.abstr.setUpInheritance(l,z,q.base,q.meta);Sk.abstr.setUpBuiltinMro(z);const r=z.prototype;Object.defineProperties(r,{tp$slots:{value:q.slots,writable:!0},tp$getsets:{value:q.getsets,writable:!0},tp$methods:{value:q.methods, writable:!0},tp$classmethods:{value:q.classmethods,writable:!0}});Sk.abstr.setUpSlots(z,q.slots||{});Sk.abstr.setUpMethods(z,q.methods);Sk.abstr.setUpGetSets(z,q.getsets);Sk.abstr.setUpClassMethods(z,q.classmethods);Object.entries(q.proto||{}).forEach(t=>{var [x,v]=t;Object.defineProperty(r,x,{value:v,writable:!0,enumerable:!(x.includes("$")||x in Object.prototype)})});Object.entries(q.flags||{}).forEach(t=>{var [x,v]=t;Object.defineProperty(z,x,{value:v,writable:!0})});r.hasOwnProperty("tp$iter")&& (r[Symbol.iterator]=function(){return this.tp$iter()[Symbol.iterator]()});void 0!==Sk.builtin.str&&r.hasOwnProperty("tp$doc")&&!r.hasOwnProperty("__doc__")&&(l=r.tp$doc||null,r.__doc__="string"===typeof l?new Sk.builtin.str(l):Sk.builtin.none.none$);return z};Sk.abstr.buildIteratorClass=function(l,q){Sk.asserts.assert(q.hasOwnProperty("constructor"),"must provide a constructor");q.slots=q.slots||{};q.slots.tp$iter=Sk.generic.selfIter;q.slots.tp$iternext=q.slots.tp$iternext||q.iternext;q.slots.tp$getattr= q.slots.tp$getattr||Sk.generic.getAttr;l=Sk.abstr.buildNativeClass(l,q);Sk.abstr.built$iterators.push(l);l.prototype[Symbol.iterator]=function(){return{next:()=>{const z=this.tp$iternext();return{value:z,done:void 0===z}}}};return l};Sk.abstr.built$iterators=[];Sk.abstr.setUpModuleMethods=function(l,q,z){Object.entries(z).forEach(r=>{var [t,x]=r;x.$name=x.$name||t;q[t]=new Sk.builtin.sk_method(x,null,l)});return q};Sk.abstr.superConstructor=function(l,q,z){var r=Array.prototype.slice.call(arguments, 2);l.prototype.tp$base.apply(q,r)}},function(F,P){function b(f){const h=f.prototype,p=h.tp$base;if(null==p)return!1;const g=p.prototype;return p.sk$solidSlotBase||f.sk$solidSlotBase||g.sk$hasDict!==h.sk$hasDict||p.sk$solidBase&&p!==Sk.builtin.module?!1:!0}function e(f,h){f=f.prototype;h=h.prototype;const p=f.ht$slots,g=h.ht$slots;return f.sk$hasDict!==h.sk$hasDict?!1:p===g?!0:p&&g?p.length===g.length&&p.every((a,c)=>a===g[c]):(p&&(p.length||null))===(g&&(g.length||null))}const d=new WeakMap;Sk.builtin.object= Sk.abstr.buildNativeClass("object",{constructor:function(){Sk.asserts.assert(this instanceof Sk.builtin.object,"bad call to object, use 'new'")},base:null,slots:{tp$new(f,h){if(f.length||h&&h.length){if(this.tp$new!==Sk.builtin.object.prototype.tp$new)throw new Sk.builtin.TypeError("object.__new__() takes exactly one argument (the type to instantiate)");if(this.tp$init===Sk.builtin.object.prototype.tp$init)throw new Sk.builtin.TypeError(Sk.abstr.typeName(this)+"() takes no arguments");}return new this.constructor}, tp$init(f,h){if(f.length||h&&h.length){if(this.tp$init!==Sk.builtin.object.prototype.tp$init)throw new Sk.builtin.TypeError("object.__init__() takes exactly one argument (the instance to initialize)");if(this.tp$new===Sk.builtin.object.prototype.tp$new)throw new Sk.builtin.TypeError(Sk.abstr.typeName(this)+".__init__() takes exactly one argument (the instance to initialize)");}},tp$getattr:Sk.generic.getAttr,tp$setattr:Sk.generic.setAttr,$r(){const f=Sk.abstr.lookupSpecial(this,Sk.builtin.str.$module); let h="";f&&Sk.builtin.checkString(f)&&(h=f.v+".");return new Sk.builtin.str("<"+h+Sk.abstr.typeName(this)+" object>")},tp$str(){return this.$r()},tp$hash(){let f=d.get(this);if(void 0!==f)return f;f=Math.floor(Math.random()*Number.MAX_SAFE_INTEGER-Number.MAX_SAFE_INTEGER/2);d.set(this,f);return f},tp$richcompare(f,h){switch(h){case "Eq":f=this===f||Sk.builtin.NotImplemented.NotImplemented$;break;case "NotEq":f=this.ob$eq(f,"Eq");f!==Sk.builtin.NotImplemented.NotImplemented$&&(f=!Sk.misceval.isTrue(f)); break;default:f=Sk.builtin.NotImplemented.NotImplemented$}return f},tp$doc:"The most base type"},getsets:{__class__:{$get(){return this.ob$type},$set(f){if(void 0===f)throw new Sk.builtin.TypeError("can't delete __class__ attribute");if(!Sk.builtin.checkClass(f))throw new Sk.builtin.TypeError("__class__ must be set to a class, not '"+Sk.abstr.typeName(f)+"' object");const h=this.ob$type;if(!(h.$isSubType(Sk.builtin.module)&&f.$isSubType(Sk.builtin.module)||void 0!==h.prototype.ht$type&&void 0!==f.prototype.ht$type))throw new Sk.builtin.TypeError(" __class__ assignment only supported for heap types or ModuleType subclasses"); {let p=h,g=f;for(;b(p);)p=p.prototype.tp$base;for(;b(g);)g=g.prototype.tp$base;if(p!==g&&(p.prototype.tp$base!==g.prototype.tp$base||!e(p,g)))throw new Sk.builtin.TypeError("__class__ assignment: '"+f.prototype.tp$name+"' object layout differs from '"+h.prototype.tp$name+"'");}Object.setPrototypeOf(this,f.prototype)},$doc:"the object's class"}},methods:{__dir__:{$meth:function(){let f=Sk.abstr.lookupAttr(this,Sk.builtin.str.$dict);f=void 0===f?new Sk.builtin.dict([]):f instanceof Sk.builtin.dict? f.dict$copy():new Sk.builtin.dict([]);const h=Sk.abstr.lookupAttr(this,Sk.builtin.str.$class);void 0!==h&&h.$mergeClassDict(f);return new Sk.builtin.list(f.sk$asarray())},$flags:{NoArgs:!0},$doc:"Default dir() implementation."},__format__:{$meth(f){if(!Sk.builtin.checkString(f))throw new Sk.builtin.TypeError("__format__() argument must be str, not "+Sk.abstr.typeName(f));if(f!==Sk.builtin.str.$empty)throw new Sk.builtin.TypeError(`unsupported format string passed to ${Sk.abstr.typeName(this)}.__format__`); return this.tp$str()},$flags:{OneArg:!0},$doc:"Default object formatter."}},classmethods:{__init_subclass__:{$meth(f){return Sk.builtin.none.none$},$flags:{FastCall:!0,NoKwargs:!0}}},proto:{valueOf:Object.prototype.valueOf,toString(){return this.tp$str().v},hasOwnProperty:Object.prototype.hasOwnProperty,ht$type:void 0,sk$attrError(){return"'"+this.tp$name+"' object"},$mergeClassDict(f){var h=Sk.abstr.lookupAttr(this,Sk.builtin.str.$dict);void 0!==h&&f.dict$merge(h);h=Sk.abstr.lookupAttr(this,Sk.builtin.str.$bases); if(void 0!==h){var p=Sk.builtin.len(h).valueOf();for(let g=0;gvoid 0===B?Sk.builtin.none.none$:B)}function f(t,x,v){Sk.abstr.checkNoKwargs(this.$name,v);Sk.abstr.checkArgsLen(this.$name,x,1,2);t=this.call(t,...x);return void 0===t?Sk.builtin.none.none$:t}function h(t,x,v){Sk.abstr.checkNoKwargs(this.$name,v);Sk.abstr.checkArgsLen(this.$name,x,2,2);return Sk.misceval.chain(this.call(t,x[0],x[1],!0),()=>Sk.builtin.none.none$)}function p(t,x,v){Sk.abstr.checkOneArg(this.$name, x,v);t=this.call(t,x[0],void 0,!0);return Sk.misceval.chain(t,B=>void 0===B?Sk.builtin.none.none$:B)}function g(t,x,v){t=e.call(this,t,x,v);return t===Sk.builtin.NotImplemented.NotImplemented$?t:new Sk.builtin.bool(t)}function a(t,x,v){return function(B,I,M){B=t.call(this,B,I,M);return v?Sk.misceval.chain(B,x):x(Sk.misceval.retryOptionalSuspensionOrThrow(B))}}function c(t){return function(){const x=t.tp$descr_get?t.tp$descr_get(this,this.ob$type):t;return Sk.misceval.callsimArray(x,[])}}function n(t, x,v,B){return function(I){return function(){var M=I.tp$descr_get?I.tp$descr_get(this,this.ob$type):I;M=Sk.misceval.callsimArray(M,[]);if(!x(M))throw new Sk.builtin.TypeError(t+" should return "+v+" (returned "+Sk.abstr.typeName(M)+")");return void 0!==B?B(M):M}}}function m(t){return function(x){const v=t.tp$descr_get?t.tp$descr_get(this,this.ob$type):t;return Sk.misceval.callsimArray(v,[x])}}function k(t,x){let v=this.ob$type.$typeLookup(Sk.builtin.str.$getattribute);if(v instanceof Sk.builtin.wrapper_descriptor)return v.d$wrapped.call(this, t,x);v.tp$descr_get&&(v=v.tp$descr_get(this,this.ob$type));const B=Sk.misceval.tryCatch(()=>Sk.misceval.callsimOrSuspendArray(v,[t]),I=>{if(!(I instanceof Sk.builtin.AttributeError))throw I;});return x?B:Sk.misceval.retryOptionalSuspensionOrThrow(B)}function u(t,x,v){return function(B){return function(I,M,S){let E;void 0===M?(E=x,v=null):E=t;let H=this.ob$type.$typeLookup(new Sk.builtin.str(E));if(H instanceof Sk.builtin.wrapper_descriptor)return H.d$wrapped.call(this,I,M);H.tp$descr_get&&(H=H.tp$descr_get(this, this.ob$type,S));if(void 0!==H)I=Sk.misceval.callsimOrSuspendArray(H,void 0===M?[I]:[I,M]);else{if(v)throw new Sk.builtin.TypeError("'"+Sk.abstr.typeName(this)+"' object "+v);throw new Sk.builtin.AttributeError(E);}return S?I:Sk.misceval.retryOptionalSuspensionOrThrow(I)}}}function l(t,x){let v=t.ob$type;for(;v&&void 0!==v.sk$klass;)v=v.prototype.tp$base;if(v&&v.prototype.tp$setattr!==x)throw new Sk.builtin.TypeError("can't apply this "+x.$name+" to "+Sk.abstr.typeName(t)+" object");}Sk.slots=Object.create(null); F=Sk.slots;Sk.slots.__init__={$name:"__init__",$slot_name:"tp$init",$slot_func:function(t){return function(x,v){const B=t.tp$descr_get?t.tp$descr_get(this,this.ob$type):t;x=Sk.misceval.callsimOrSuspendArray(B,x,v);return Sk.misceval.chain(x,I=>{if(!Sk.builtin.checkNone(I)&&void 0!==I)throw new Sk.builtin.TypeError("__init__() should return None, not "+Sk.abstr.typeName(I));})}},$wrapper:function(t,x,v){this.call(t,x,v);return Sk.builtin.none.none$},$textsig:"($self, /, *args, **kwargs)",$flags:{FastCall:!0}, $doc:"Initialize self. See help(type(self)) for accurate signature."};F.__new__={$name:"__new__",$slot_name:"tp$new",$slot_func:function(t){const x=function(v,B){let I=t;t.tp$descr_get&&(I=t.tp$descr_get(null,this.constructor));return Sk.misceval.callsimOrSuspendArray(I,[this.constructor,...v],B)};x.sk$static_new=!1;return x},$wrapper:null,$textsig:"($self, /, *args, **kwargs)",$flags:{FastCall:!0},$doc:"Create and return a new object."};F.__call__={$name:"__call__",$slot_name:"tp$call",$slot_func:function(t){return function(x, v){const B=t.tp$descr_get?t.tp$descr_get(this,this.ob$type):t;return Sk.misceval.callsimOrSuspendArray(B,x,v)}},$wrapper:function(t,x,v){t=t.tp$call(x,v);return void 0===t?Sk.builtin.none.none$:t},$textsig:"($self, /, *args, **kwargs)",$flags:{FastCall:!0},$doc:"Call self as a function."};F.__repr__={$name:"__repr__",$slot_name:"$r",$slot_func:n("__repr__",Sk.builtin.checkString,"str"),$wrapper:b,$textsig:"($self, /)",$flags:{NoArgs:!0},$doc:"Return repr(self)."};F.__str__={$name:"__str__",$slot_name:"tp$str", $slot_func:n("__str__",Sk.builtin.checkString,"str"),$wrapper:b,$textsig:"($self, /)",$flags:{NoArgs:!0},$doc:"Return str(self)."};var q=n("__hash__",Sk.builtin.checkInt,"int",t=>"number"===typeof t.v?t.v:t.tp$hash());F.__hash__={$name:"__hash__",$slot_name:"tp$hash",$slot_func:function(t){return t===Sk.builtin.none.none$?Sk.builtin.none.none$:q(t)},$wrapper:a(b,t=>new Sk.builtin.int_(t)),$textsig:"($self, /)",$flags:{NoArgs:!0},$doc:"Return hash(self)."};F.__getattribute__={$name:"__getattribute__", $slot_name:"tp$getattr",$slot_func:function(t){return function(x,v){let B=this.ob$type.$typeLookup(Sk.builtin.str.$getattr);if(void 0===B)return k.call(this,x,v);const I=Sk.misceval.chain(k.call(this,x,v),M=>Sk.misceval.tryCatch(()=>{if(void 0!==M)return M;B.tp$descr_get&&(B=B.tp$descr_get(this,this.ob$type));return Sk.misceval.callsimOrSuspendArray(B,[x])},function(S){if(!(S instanceof Sk.builtin.AttributeError))throw S;}));return v?I:Sk.misceval.retryOptionalSuspensionOrThrow(I)}},$wrapper:function(t, x,v){Sk.abstr.checkOneArg(this.$name,x,v);const B=x[0];if(!Sk.builtin.checkString(B))throw new Sk.builtin.TypeError("attribute name must be string, not '"+Sk.abstr.typeName(B)+"'");x=this.call(t,B,!0);return Sk.misceval.chain(x,I=>{if(void 0===I)throw new Sk.builtin.AttributeError(Sk.abstr.typeName(t)+" has no attribute "+B.$jsstr());return I})},$textsig:"($self, name, /)",$flags:{OneArg:!0},$doc:"Return getattr(self, name)."};F.__getattr__={$name:"__getattr__",$slot_name:"tp$getattr",$slot_func:F.__getattribute__.$slot_func, $wrapper:null,$textsig:"($self, name, /)",$flags:{OneArg:!0},$doc:"Return getattr(self, name)."};F.__setattr__={$name:"__setattr__",$slot_name:"tp$setattr",$slot_func:u("__setattr__","__delattr__"),$wrapper:function(t,x,v){Sk.abstr.checkNoKwargs(this.$name,v);Sk.abstr.checkArgsLen(this.$name,x,2,2);l(t,this);return Sk.misceval.chain(this.call(t,x[0],x[1],!0),()=>Sk.builtin.none.none$)},$textsig:"($self, name, value, /)",$flags:{MinArgs:2,MaxArgs:2},$doc:"Implement setattr(self, name, value)."};F.__delattr__= {$name:"__delattr__",$slot_name:"tp$setattr",$slot_func:F.__setattr__.$slot_func,$wrapper:function(t,x,v){Sk.abstr.checkOneArg(this.$name,x,v);l(t,this);this.call(t,x[0]);return Sk.builtin.none.none$},$textsig:"($self, name, /)",$flags:{OneArg:!0},$doc:"Implement delattr(self, name)."};F.__get__={$name:"__get__",$slot_name:"tp$descr_get",$slot_func:function(t){return function(x,v,B){null===x&&(x=Sk.builtin.none.none$);null==v&&(v=Sk.builtin.none.none$);const I=t.tp$descr_get?t.tp$descr_get(this,this.ob$type): t;x=Sk.misceval.callsimOrSuspendArray(I,[x,v]);return B?x:Sk.misceval.retryOptionalSuspensionOrThrow(x)}},$wrapper:function(t,x,v){Sk.abstr.checkNoKwargs(this.$name,v);Sk.abstr.checkArgsLen(this.$name,x,1,2);v=x[0];x=x[1];v===Sk.builtin.none.none$&&(v=null);x===Sk.builtin.none.none$&&(x=null);if(null===x&&null===v)throw new Sk.builtin.TypeError("__get__(None, None) is invalid");return this.call(t,v,x,!0)},$textsig:"($self, instance, owner, /)",$flags:{MinArgs:2,MaxArgs:2},$doc:"Return an attribute of instance, which is of type owner."}; F.__set__={$name:"__set__",$slot_name:"tp$descr_set",$slot_func:u("__set__","__delete__"),$wrapper:h,$textsig:"($self, instance, value, /)",$flags:{MinArgs:2,MaxArgs:2},$doc:"Set an attribute of instance to value."};F.__delete__={$name:"__delete__",$slot_name:"tp$descr_set",$slot_func:F.__set__.$slot_func,$wrapper:p,$textsig:"($self, instance, /)",$flags:{OneArg:!0},$doc:"Delete an attribute of instance."};F.__eq__={$name:"__eq__",$slot_name:"ob$eq",$slot_func:m,$wrapper:g,$textsig:"($self, value, /)", $flags:{OneArg:!0},$doc:"Return self==value."};F.__ge__={$name:"__ge__",$slot_name:"ob$ge",$slot_func:m,$wrapper:g,$textsig:"($self, value, /)",$flags:{OneArg:!0},$doc:"Return self>=value."};F.__gt__={$name:"__gt__",$slot_name:"ob$gt",$slot_func:m,$wrapper:g,$textsig:"($self, value, /)",$flags:{OneArg:!0},$doc:"Return self>value."};F.__le__={$name:"__le__",$slot_name:"ob$le",$slot_func:m,$wrapper:g,$textsig:"($self, value, /)",$flags:{OneArg:!0},$doc:"Return self<=value."};F.__lt__={$name:"__lt__", $slot_name:"ob$lt",$slot_func:m,$wrapper:g,$textsig:"($self, value, /)",$flags:{OneArg:!0},$doc:"Return selfSk.misceval.callsimOrSuspendArray(v,[]),I=>{if(I instanceof Sk.builtin.StopIteration)this.gi$ret=I.$value;else throw I;});return x?B:Sk.misceval.retryOptionalSuspensionOrThrow(B)}},$wrapper:function(t,x,v){Sk.abstr.checkNoArgs(this.$name,x,v);return Sk.misceval.chain(t.tp$iternext(!0),B=>{if(void 0===B)throw new Sk.builtin.StopIteration;return B})},$textsig:"($self, /)",$flags:{NoArgs:!0},$doc:"Implement next(self)."};F.__len__= {$name:"__len__",$slot_name:"sq$length",$slot_func:function(t){return function(x){const v=t.tp$descr_get?t.tp$descr_get(this,this.ob$type):t;if(x)return x=Sk.misceval.callsimOrSuspendArray(v,[]),Sk.misceval.chain(x,B=>Sk.misceval.asIndexOrThrow(B));x=Sk.misceval.callsimArray(v,[]);return Sk.misceval.asIndexOrThrow(x)}},$wrapper:a(function(t,x,v){Sk.abstr.checkNoArgs(this.$name,x,v);t=this.call(t,!0);return Sk.misceval.chain(t,B=>void 0===B?Sk.builtin.none.none$:B)},t=>new Sk.builtin.int_(t),!0),$flags:{NoArgs:!0}, $textsig:"($self, /)",$doc:"Return len(self)."};F.__contains__={$name:"__contains__",$slot_name:"sq$contains",$slot_func:function(t){return function(x,v){const B=t.tp$descr_get?t.tp$descr_get(this,this.ob$type):t;x=Sk.misceval.callsimOrSuspendArray(B,[x]);x=Sk.misceval.chain(x,I=>Sk.misceval.isTrue(I));return x.$isSuspension?v?x:Sk.misceval.retryOptionalSuspensionOrThrow(x):x}},$wrapper:a(d,t=>new Sk.builtin.bool(t),!0),$textsig:"($self, key, /)",$flags:{OneArg:!0},$doc:"Return key in self."};F.__getitem__= {$name:"__getitem__",$slot_name:"mp$subscript",$slot_func:function(t){return function(x,v){const B=t.tp$descr_get?t.tp$descr_get(this,this.ob$type):t;x=Sk.misceval.callsimOrSuspendArray(B,[x]);return v?x:Sk.misceval.retryOptionalSuspensionOrThrow(x)}},$wrapper:d,$textsig:"($self, key, /)",$flags:{OneArg:!0},$doc:"Return self[key]."};F.__setitem__={$name:"__setitem__",$slot_name:"mp$ass_subscript",$slot_func:u("__setitem__","__delitem__","does not support item assignment"),$wrapper:h,$textsig:"($self, key, value, /)", $flags:{MinArgs:2,MaxArgs:2},$doc:"Set self[key] to value."};F.__delitem__={$name:"__delitem__",$slot_name:"mp$ass_subscript",$slot_func:F.__setitem__.$slot_func,$wrapper:p,$textsig:"($self, key, /)",$flags:{OneArg:!0},$doc:"Delete self[key]."};F.__add__={$name:"__add__",$slot_name:"nb$add",$slot_func:m,$wrapper:e,$textsig:"($self, value, /)",$flags:{OneArg:!0},$doc:"Return self+value."};F.__radd__={$name:"__radd__",$slot_name:"nb$reflected_add",$slot_func:m,$wrapper:e,$textsig:"($self, value, /)", $flags:{OneArg:!0},$doc:"Return value+self."};F.__iadd__={$name:"__iadd__",$slot_name:"nb$inplace_add",$slot_func:m,$wrapper:e,$textsig:"($self, value, /)",$flags:{OneArg:!0},$doc:"Implement self+=value."};F.__sub__={$name:"__sub__",$slot_name:"nb$subtract",$slot_func:m,$wrapper:e,$textsig:"($self, value, /)",$flags:{OneArg:!0},$doc:"Return self-value."};F.__rsub__={$name:"__rsub__",$slot_name:"nb$reflected_subtract",$slot_func:m,$wrapper:e,$textsig:"($self, value, /)",$flags:{OneArg:!0},$doc:"Return value-self."}; F.__imul__={$name:"__imul__",$slot_name:"nb$inplace_multiply",$slot_func:m,$wrapper:e,$textsig:"($self, value, /)",$flags:{OneArg:!0},$doc:"Implement self*=value."};F.__mul__={$name:"__mul__",$slot_name:"nb$multiply",$slot_func:m,$wrapper:e,$textsig:"($self, value, /)",$flags:{OneArg:!0},$doc:"Return self*value."};F.__rmul__={$name:"__rmul__",$slot_name:"nb$reflected_multiply",$slot_func:m,$wrapper:e,$textsig:"($self, value, /)",$flags:{OneArg:!0},$doc:"Return value*self."};F.__isub__={$name:"__isub__", $slot_name:"nb$inplace_subtract",$slot_func:m,$wrapper:e,$textsig:"($self, value, /)",$flags:{OneArg:!0},$doc:"Implement self-=value."};F.__mod__={$name:"__mod__",$slot_name:"nb$remainder",$slot_func:m,$wrapper:e,$textsig:"($self, value, /)",$flags:{OneArg:!0},$doc:"Return self%value."};F.__rmod__={$name:"__rmod__",$slot_name:"nb$reflected_remainder",$slot_func:m,$wrapper:e,$textsig:"($self, value, /)",$flags:{OneArg:!0},$doc:"Return value%self."};F.__imod__={$name:"__imod__",$slot_name:"nb$inplace_remainder", $slot_func:m,$wrapper:e,$textsig:"($self, value, /)",$flags:{OneArg:!0},$doc:"Implement value%=self."};F.__divmod__={$name:"__divmod__",$slot_name:"nb$divmod",$slot_func:m,$wrapper:e,$textsig:"($self, value, /)",$flags:{OneArg:!0},$doc:"Return divmod(self, value)."};F.__rdivmod__={$name:"__rdivmod__",$slot_name:"nb$reflected_divmod",$slot_func:m,$wrapper:e,$textsig:"($self, value, /)",$flags:{OneArg:!0},$doc:"Return divmod(value, self)"};F.__pos__={$name:"__pos__",$slot_name:"nb$positive",$slot_func:c, $wrapper:b,$textsig:"($self, /)",$flags:{NoArgs:!0},$doc:"+self"};F.__neg__={$name:"__neg__",$slot_name:"nb$negative",$slot_func:c,$wrapper:b,$textsig:"($self, /)",$flags:{NoArgs:!0},$doc:"-self"};F.__abs__={$name:"__abs__",$slot_name:"nb$abs",$slot_func:c,$wrapper:b,$textsig:"($self, /)",$flags:{NoArgs:!0},$doc:"abs(self)"};F.__bool__={$name:"__bool__",$slot_name:"nb$bool",$slot_func:n("__bool__",Sk.builtin.checkBool,"bool",t=>0!==t.v),$wrapper:a(b,t=>new Sk.builtin.bool(t)),$textsig:"($self, /)", $flags:{NoArgs:!0},$doc:"self != 0"};F.__invert__={$name:"__invert__",$slot_name:"nb$invert",$slot_func:c,$wrapper:b,$textsig:"($self, /)",$flags:{NoArgs:!0},$doc:"~self"};F.__lshift__={$name:"__lshift__",$slot_name:"nb$lshift",$slot_func:m,$wrapper:e,$textsig:"($self, value, /)",$flags:{OneArg:!0},$doc:"Return self<>value."};F.__rrshift__={$name:"__rrshift__",$slot_name:"nb$reflected_rshift",$slot_func:m,$wrapper:e,$textsig:"($self, value, /)",$flags:{OneArg:!0},$doc:"Return value>>self."};F.__ilshift__={$name:"__ilshift__",$slot_name:"nb$inplace_lshift",$slot_func:m,$wrapper:e,$textsig:"($self, value, /)",$flags:{OneArg:!0},$doc:"Implement self<<=value."};F.__irshift__={$name:"__irshift__", $slot_name:"nb$inplace_rshift",$slot_func:m,$wrapper:e,$textsig:"($self, value, /)",$flags:{OneArg:!0},$doc:"Implement self=>>value."};F.__and__={$name:"__and__",$slot_name:"nb$and",$slot_func:m,$wrapper:e,$textsig:"($self, value, /)",$flags:{OneArg:!0},$doc:"Return self&value."};F.__rand__={$name:"__rand__",$slot_name:"nb$refelcted_and",$slot_func:m,$wrapper:e,$textsig:"($self, value, /)",$flags:{OneArg:!0},$doc:"Return value&self."};F.__iand__={$name:"__iand__",$slot_name:"nb$and",$slot_func:m, $wrapper:e,$textsig:"($self, value, /)",$flags:{OneArg:!0},$doc:"Implement self&=value."};F.__xor__={$name:"__xor__",$slot_name:"nb$xor",$slot_func:m,$wrapper:e,$textsig:"($self, value, /)",$flags:{OneArg:!0},$doc:"Return self^value."};F.__rxor__={$name:"__rxor__",$slot_name:"nb$reflected_xor",$slot_func:m,$wrapper:e,$textsig:"($self, value, /)",$flags:{OneArg:!0},$doc:"Return value^self."};F.__ixor__={$name:"__ixor__",$slot_name:"nb$inplace_xor",$slot_func:m,$wrapper:e,$textsig:"($self, value, /)", $flags:{OneArg:!0},$doc:"Implement self^=value."};F.__or__={$name:"__or__",$slot_name:"nb$or",$slot_func:m,$wrapper:e,$textsig:"($self, value, /)",$flags:{OneArg:!0},$doc:"Return self|value."};F.__ror__={$name:"__ror__",$slot_name:"nb$reflected_or",$slot_func:m,$wrapper:e,$textsig:"($self, value, /)",$flags:{OneArg:!0},$doc:"Return value|self."};F.__ior__={$name:"__ior__",$slot_name:"nb$inplace_or",$slot_func:m,$wrapper:e,$textsig:"($self, value, /)",$flags:{OneArg:!0},$doc:"Implement self|=value."}; F.__int__={$name:"__int__",$slot_name:"nb$int",$slot_func:n("__int__",Sk.builtin.checkInt,"int"),$wrapper:b,$textsig:"($self, /)",$flags:{NoArgs:!0},$doc:"int(self)"};F.__float__={$name:"__float__",$slot_name:"nb$float",$slot_func:n("__float__",Sk.builtin.checkFloat,"float"),$wrapper:b,$textsig:"($self, /)",$flags:{NoArgs:!0},$doc:"float(self)"};F.__floordiv__={$name:"__floordiv__",$slot_name:"nb$floor_divide",$slot_func:m,$wrapper:e,$textsig:"($self, value, /)",$flags:{OneArg:!0},$doc:"Return self//value."}; F.__rfloordiv__={$name:"__rfloordiv__",$slot_name:"nb$reflected_floor_divide",$slot_func:m,$wrapper:e,$textsig:"($self, value, /)",$flags:{OneArg:!0},$doc:"Return value//self."};F.__ifloordiv__={$name:"__ifloordiv__",$slot_name:"nb$inplace_floor_divide",$slot_func:m,$wrapper:e,$textsig:"($self, value, /)",$flags:{OneArg:!0},$doc:"Implement self//=value."};F.__truediv__={$name:"__truediv__",$slot_name:"nb$divide",$slot_func:m,$wrapper:e,$textsig:"($self, value, /)",$flags:{OneArg:!0},$doc:"Return self/value."}; F.__rtruediv__={$name:"__rtruediv__",$slot_name:"nb$reflected_divide",$slot_func:m,$wrapper:e,$textsig:"($self, value, /)",$flags:{OneArg:!0},$doc:"Return value/self."};F.__itruediv__={$name:"__itruediv__",$slot_name:"nb$inplace_divide",$slot_func:m,$wrapper:e,$textsig:"($self, value, /)",$flags:{OneArg:!0},$doc:"Implement self/=value."};F.__index__={$name:"__index__",$slot_name:"nb$index",$slot_func:n("__index__",Sk.builtin.checkInt,"int",t=>t.v),$wrapper:a(b,t=>new Sk.builtin.int_(t)),$textsig:"($self, /)", $flags:{NoArgs:!0},$doc:"Return self converted to an integer, if self is suitable for use as an index into a list."};F.__pow__={$name:"__pow__",$slot_name:"nb$power",$slot_func:function(t){return function(x,v){const B=t.tp$descr_get?t.tp$descr_get(this,this.ob$type):t;return void 0==v?Sk.misceval.callsimArray(B,[x]):Sk.misceval.callsimArray(B,[x,v])}},$wrapper:f,$textsig:"($self, value, mod=None, /)",$flags:{MinArgs:1,MaxArgs:2},$doc:"Return pow(self, value, mod)."};F.__rpow__={$name:"__rpow__",$slot_name:"nb$reflected_power", $slot_func:F.__pow__.$slot_func,$wrapper:f,$textsig:"($self, value, mod=None, /)",$flags:{MinArgs:1,MaxArgs:2},$doc:"Return pow(value, self, mod)."};F.__ipow__={$name:"__ipow__",$slot_name:"nb$inplace_power",$slot_func:F.__pow__.$slot_func,$wrapper:f,$textsig:"($self, value, mod=None, /)",$flags:{MinArgs:1,MaxArgs:2},$doc:"Implement **="};F.__matmul__={$name:"__matmul__",$slot_name:"nb$matrix_multiply",$slot_func:m,$wrapper:e,$textsig:"($self, value, /)",$flags:{OneArg:!0},$doc:"Return self@value."}; F.__rmatmul__={$name:"__rmatmul__",$slot_name:"nb$reflected_matrix_multiply",$slot_func:m,$wrapper:e,$textsig:"($self, value, /)",$flags:{OneArg:!0},$doc:"Return value@self."};F.__imatmul__={$name:"__imatmul__",$slot_name:"nb$inplace_matrix_multiply",$slot_func:m,$wrapper:e,$textsig:"($self, value, /)",$flags:{OneArg:!0},$doc:"Implement self@=value."};F.__long__={$name:"__long__",$slot_name:"nb$long",$slot_func:n("__long__",Sk.builtin.checkInt,"int"),$wrapper:b,$textsig:"($self, /)",$flags:{NoArgs:!0}, $doc:"int(self)"};var z,r={next:{$name:"next",$slot_name:"tp$iternext",$slot_func:F.__next__.$slot_func,$wrapper:F.__next__.$wrapper,$textsig:F.__next__.$textsig,$flags:F.__next__.$flags},__nonzero__:{$name:"__nonzero__",$slot_name:"nb$bool",$slot_func:n("__nonzero__",Sk.builtin.checkInt,"int",t=>0!==t.v),$wrapper:a(b,t=>new Sk.builtin.bool(t)),$textsig:"($self, /)",$flags:{NoArgs:!0},$doc:"x.__nonzero__() <==> x != 0"},__div__:{$name:"__div__",$slot_name:"nb$divide",$slot_func:m,$wrapper:e,$textsig:"($self, other/)", $flags:{OneArg:!0},$doc:"x.__div__(y) <==> x/y"},__rdiv__:{$name:"__rdiv__",$slot_name:"nb$reflected_divide",$slot_func:m,$wrapper:e,$textsig:"($self, other/)",$flags:{OneArg:!0},$doc:"x.__rdiv__(y) <==> x/y"},__idiv__:{$name:"__idiv__",$slot_name:"nb$inplace_divide",$slot_func:m,$wrapper:e,$textsig:"($self, other/)",$flags:{OneArg:!0},$doc:"implement self /= other"}};Sk.subSlots={main_slots:Object.entries({tp$init:"__init__",tp$call:"__call__",$r:"__repr__",tp$str:"__str__",tp$getattr:"__getattribute__", tp$setattr:["__setattr__","__delattr__"],ob$eq:"__eq__",ob$ne:"__ne__",ob$lt:"__lt__",ob$le:"__le__",ob$gt:"__gt__",ob$ge:"__ge__",tp$descr_get:"__get__",tp$descr_set:["__set__","__delete__"],tp$iter:"__iter__",tp$iternext:"__next__"}),number_slots:Object.entries({nb$abs:"__abs__",nb$negative:"__neg__",nb$positive:"__pos__",nb$int:"__int__",nb$long:"__long__",nb$float:"__float__",nb$index:"__index__",nb$add:"__add__",nb$reflected_add:"__radd__",nb$inplace_add:"__iadd__",nb$subtract:"__sub__",nb$reflected_subtract:"__rsub__", nb$inplace_subtract:"__isub__",nb$multiply:"__mul__",nb$reflected_multiply:"__rmul__",nb$inplace_multiply:"__imul__",nb$floor_divide:"__floordiv__",nb$reflected_floor_divide:"__rfloordiv__",nb$inplace_floor_divide:"__ifloordiv__",nb$invert:"__invert__",nb$remainder:"__mod__",nb$reflected_remainder:"__rmod__",nb$inplace_remainder:"__imod__",nb$divmod:"__divmod__",nb$reflected_divmod:"__rdivmod__",nb$power:"__pow__",nb$reflected_power:"__rpow__",nb$inplace_power:"__ipow__",nb$divide:"__truediv__",nb$reflected_divide:"__rtruediv__", nb$inplace_divide:"__itruediv__",nb$bool:"__bool__",nb$and:"__and__",nb$reflected_and:"__rand__",nb$inplace_and:"__iand__",nb$or:"__or__",nb$reflected_or:"__ror__",nb$inplace_or:"__ior__",nb$xor:"__xor__",nb$reflected_xor:"__rxor__",nb$inplace_xor:"__ixor__",nb$lshift:"__lshift__",nb$reflected_lshift:"__rlshift__",nb$rshift:"__rshift__",nb$reflected_rshift:"__rrshift__",nb$inplace_lshift:"__ilshift__",nb$inplace_rshift:"__irshift__",nb$matrix_multiply:"__matmul__",nb$reflected_matrix_multiply:"__rmatmul__", nb$inplace_matrix_multiply:"__imatmul__"}),sequence_and_mapping_slots:Object.entries({sq$length:"__len__",sq$contains:"__contains__",mp$subscript:"__getitem__",mp$ass_subscript:["__setitem__","__delitem__"],nb$add:"__add__",nb$multiply:"__mul__",nb$reflected_multiply:"__rmul__",nb$inplace_add:"__iadd__",nb$inplace_multiply:"__imul__"})};Sk.reflectedNumberSlots={nb$add:{reflected:"nb$reflected_add"},nb$subtract:{reflected:"nb$reflected_subtract",slot:function(t){return t instanceof this.constructor? t.nb$subtract(this):Sk.builtin.NotImplemented.NotImplemented$}},nb$multiply:{reflected:"nb$reflected_multiply"},nb$divide:{reflected:"nb$reflected_divide",slot:function(t){return t instanceof this.constructor?t.nb$divide(this):Sk.builtin.NotImplemented.NotImplemented$}},nb$floor_divide:{reflected:"nb$reflected_floor_divide",slot:function(t){return t instanceof this.constructor?t.nb$floor_divide(this):Sk.builtin.NotImplemented.NotImplemented$}},nb$remainder:{reflected:"nb$reflected_remainder",slot:function(t){return t instanceof this.constructor?t.nb$remainder(this):Sk.builtin.NotImplemented.NotImplemented$}},nb$divmod:{reflected:"nb$reflected_divmod",slot:function(t){return t instanceof this.constructor?t.nb$divmod(this):Sk.builtin.NotImplemented.NotImplemented$}},nb$power:{reflected:"nb$reflected_power",slot:function(t,x){return t instanceof this.constructor?t.nb$power(this,x):Sk.builtin.NotImplemented.NotImplemented$}},nb$and:{reflected:"nb$reflected_and"},nb$or:{reflected:"nb$reflected_or"},nb$xor:{reflected:"nb$reflected_xor"}, nb$lshift:{reflected:"nb$reflected_lshift",slot:function(t){return t instanceof this.constructor?t.nb$lshift(this):Sk.builtin.NotImplemented.NotImplemented$}},nb$rshift:{reflected:"nb$reflected_rshift",slot:function(t){return t instanceof this.constructor?t.nb$rshift(this):Sk.builtin.NotImplemented.NotImplemented$}},nb$matrix_multiply:{reflected:"nb$reflexted_matrix_multiply",slot:function(t){return t instanceof this.constructor?t.nb$matrix_multiply(this):Sk.builtin.NotImplemented.NotImplemented$}}}; Sk.sequenceAndMappingSlots={sq$concat:["nb$add"],sq$repeat:["nb$multiply","nb$reflected_multiply"],mp$length:["sq$length"],sq$inplace_repeat:["nb$inplace_multiply"],sq$inplace_concat:["nb$inplace_add"]};Sk.dunderToSkulpt={__repr__:"$r",__str__:"tp$str",__init__:"tp$init",__new__:"tp$new",__hash__:"tp$hash",__call__:"tp$call",__iter__:"tp$iter",__next__:"tp$iternext",__eq__:"ob$eq",__ne__:"ob$ne",__lt__:"ob$lt",__le__:"ob$le",__gt__:"ob$gt",__ge__:"ob$ge",__abs__:"nb$abs",__neg__:"nb$negative",__pos__:"nb$positive", __int__:"nb$int",__float__:"nb$float",__index__:"nb$index",__add__:"nb$add",__radd__:"nb$reflected_add",__iadd__:"nb$inplace_add",__sub__:"nb$subtract",__rsub__:"nb$reflected_subtract",__isub__:"nb$inplace_subtract",__mul__:"nb$multiply",__rmul__:"nb$reflected_multiply",__imul__:"nb$inplace_multiply",__truediv__:"nb$divide",__rtruediv__:"nb$reflected_divide",__itruediv__:"nb$inplace_divide",__floordiv__:"nb$floor_divide",__rfloordiv__:"nb$reflected_floor_divide",__ifloordiv__:"nb$inplace_floor_divide", __invert__:"nb$invert",__mod__:"nb$remainder",__rmod__:"nb$reflected_remainder",__imod__:"nb$inplace_remainder",__divmod__:"nb$divmod",__rdivmod__:"nb$reflected_divmod",__pow__:"nb$power",__rpow__:"nb$reflected_power",__ipow__:"nb$inplace_power",__bool__:"nb$bool",__long__:"nb$long",__lshift__:"nb$lshift",__rlshift__:"nb$reflected_lshift",__ilshift__:"nb$inplace_lshift",__rshift__:"nb$rshift",__rrshift__:"nb$reflected_rshift",__irshift__:"nb$inplace_rshift",__and__:"nb$and",__rand__:"nb$reflected_and", __iand__:"nb$inplace_and",__or__:"nb$or",__ror__:"nb$reflected_or",__ior__:"nb$inplace_or",__xor__:"nb$xor",__rxor__:"nb$reflected_xor",__ixor__:"nb$inplace_xor",__matmul__:"nb$matrix_multiply",__rmatmul__:"nb$reflected_matrix_multiply",__imatmul__:"nb$inplace_matrix_multiply",__get__:"tp$descr_get",__set__:"tp$descr_set",__delete__:"tp$descr_set",__getattribute__:"tp$getattr",__getattr__:"tp$getattr",__setattr__:"tp$setattr",__delattr__:"tp$setattr",__len__:"sq$length",__contains__:"sq$contains", __getitem__:"mp$subscript",__setitem__:"mp$ass_subscript",__delitem__:"mp$ass_subscript"};Sk.exportSymbol("Sk.setupDunderMethods",Sk.setupDunderMethods);Sk.setupDunderMethods=function(t){function x(A,J,Q){for(let X=0;X "tp$iternext"===A[0]),H=M.findIndex(A=>"nb$bool"===A[0]),y=Sk.dunderToSkulpt;if(t){y.__bool__="nb$bool";y.__next__="tp$iternext";delete y.__nonzero__;delete y.__div__;delete y.__rdiv__;delete y.__idiv__;delete y.next;for(let A in z)v[A]=z[A];for(let A in r)delete v[A];for(t=0;t")}const h={__doc__:{$get(){return this.d$def.$doc?new Sk.builtin.str(this.d$def.$doc): Sk.builtin.none.none$}},__objclass__:{$get(){return this.d$type}},__name__:{$get(){return new Sk.builtin.str(this.d$name)}}};F={__text_signature__:{$get(){return this.d$def.$textsig?new Sk.builtin.str(this.d$def.$textsig):Sk.builtin.none.none$}}};Sk.builtin.getset_descriptor=b("getset_descriptor",void 0,{constructor:function(p,g){this.d$def=g;this.$get=g.$get;this.$set=g.$set;this.d$type=p;this.d$name=g.$name},slots:{tp$descr_get(p,g,a){if(g=this.d$check(p))return g;if(void 0!==this.$get)return p= this.$get.call(p),a?p:Sk.misceval.retryOptionalSuspensionOrThrow(p);throw new Sk.builtin.AttributeError("getset_descriptor '"+this.d$name+"' of '"+this.d$type.prototype.tp$name+"' objects is not readable");},tp$descr_set(p,g,a){this.d$set_check(p);if(void 0!==this.$set)return p=this.$set.call(p,g),a?p:Sk.misceval.retryOptionalSuspensionOrThrow(p);throw new Sk.builtin.AttributeError("attribute '"+this.d$name+"' of '"+this.d$type.prototype.tp$name+"' objects is readonly");}}});Sk.builtin.method_descriptor= b("method_descriptor","method",{constructor:function(p,g){this.d$def=g;this.$meth=g.$meth;this.d$type=p;this.d$name=g.$name||"";this.$flags=p=g.$flags||{};p.FastCall&&p.NoKwargs?this.tp$call=this.$methodFastCallNoKwargs:p.FastCall?this.tp$call=this.$methodFastCall:p.NoArgs?this.tp$call=this.$methodCallNoArgs:p.OneArg?this.tp$call=this.$methodCallOneArg:p.NamedArgs?this.tp$call=this.$methodCallNamedArgs:void 0!==p.MinArgs?this.tp$call=this.$methodCallMinArgs:(this.func_code=g.$meth,this.tp$call= this.$defaultCall,this.$memoiseFlags=Sk.builtin.func.prototype.$memoiseFlags,this.$resolveArgs=Sk.builtin.func.prototype.$resolveArgs)},slots:{tp$call(p,g){return this.tp$call(p,g)},tp$descr_get(p,g){let a;return(a=this.d$check(p))?a:new Sk.builtin.sk_method(this.d$def,p)}},getsets:F,proto:{$methodFastCall(p,g){const a=p.shift();this.m$checkself(a);return this.$meth.call(a,p,g)},$methodFastCallNoKwargs(p,g){const a=p.shift();this.m$checkself(a);Sk.abstr.checkNoKwargs(this.d$name,g);return this.$meth.call(a, p)},$methodCallNoArgs(p,g){const a=p.shift();this.m$checkself(a);Sk.abstr.checkNoArgs(this.d$name,p,g);return this.$meth.call(a)},$methodCallOneArg(p,g){const a=p.shift();this.m$checkself(a);Sk.abstr.checkOneArg(this.d$name,p,g);return this.$meth.call(a,p[0])},$methodCallNamedArgs(p,g){const a=p.shift();this.m$checkself(a);p=Sk.abstr.copyKeywordsToNamedArgs(this.d$name,this.$flags.NamedArgs,p,g,this.$flags.Defaults);return this.$meth.call(a,...p)},$methodCallMinArgs(p,g){const a=p.shift();this.m$checkself(a); Sk.abstr.checkNoKwargs(this.d$name,g);Sk.abstr.checkArgsLen(this.d$name,p,this.$flags.MinArgs,this.$flags.MaxArgs);return this.$meth.call(a,...p)},$defaultCall(p,g){this.m$checkself(p[0]);return Sk.builtin.func.prototype.tp$call.call(this,p,g)},m$checkself(p){if(void 0===p)throw new Sk.builtin.TypeError("descriptor '"+this.d$name+"' of '"+this.d$type.prototype.tp$name+"' object needs an argument");this.d$check(p)}}});Sk.builtin.wrapper_descriptor=b("wrapper_descriptor","slot wrapper",{constructor:function(p, g,a){this.d$def=g;this.d$type=p;this.d$name=a.$name=g.$name;this.d$wrapped=a},slots:{tp$descr_get(p,g){let a;return(a=this.d$check(p))?a:new Sk.builtin.method_wrapper(this,p)},tp$call(p,g){if(1>p.length)throw new Sk.builtin.TypeError("descriptor '"+this.d$name+"' of '"+this.d$type.prototype.tp$name+"' object needs an argument");const a=p.shift();if(!a.ob$type.$isSubType(this.d$type))throw new Sk.builtin.TypeError("descriptor '"+this.d$name+"' requires a '"+this.d$type.prototype.tp$name+"' object but received a '"+ Sk.abstr.typeName(a)+"'");return this.raw$call(a,p,g)}},proto:{raw$call(p,g,a){this.d$wrapped.$name=this.d$name;return this.d$def.$wrapper.call(this.d$wrapped,p,g,a)}}});Sk.builtin.method_wrapper=b("method_wrapper",void 0,{constructor:function(p,g){this.m$descr=p;this.m$self=g;this.d$def=p.d$def;this.d$name=p.d$name;this.d$type=p.d$type},slots:{tp$call(p,g){return this.m$descr.raw$call(this.m$self,p,g)},tp$richcompare(p,g){if("Eq"!==g&&"NotEq"!==g||!(p instanceof Sk.builtin.method_wrapper))return Sk.builtin.NotImplemented.NotImplemented$; p=this.m$self===p.m$self&&this.m$descr===p.m$descr;return"Eq"===g?p:!p},$r(){return new Sk.builtin.str("")}},getsets:{__self__:{$get(){return this.m$self}}}});Sk.builtin.classmethod_descriptor=b("classmethod_descriptor","method",{constructor:function(p,g){this.d$def=g;this.$meth=g.$meth;this.d$type=p;this.d$name=g.$name||""},slots:{tp$call(p,g){if(1>p.length)throw new Sk.builtin.TypeError("descriptor '"+this.d$name+ "' of '"+this.d$type.prototype.tp$name+"' object needs an argument");const a=p.shift();return this.tp$descr_get(null,a).tp$call(p,g)},tp$descr_get(p,g,a){if(void 0===g)if(null!==p)g=g||p.ob$type;else throw new Sk.builtin.TypeError("descriptor '"+this.d$name+"' for type '"+this.d$type.prototype.tp$name+"' needs an object or a type");if(!g.ob$type.$isSubType(Sk.builtin.type))throw new Sk.builtin.TypeError("descriptor '"+this.d$name+"' for type '"+this.d$type.prototype.tp$name+"' needs a type not a '"+ Sk.abstr.typeName(g)+"' as arg 2");if(!g.$isSubType(this.d$type))throw new Sk.builtin.TypeError("descriptor '"+this.d$name+"' requires a '"+this.d$type.prototype.tp$name+"' object but received a '"+Sk.abstr.typeName(g)+"' object");return new Sk.builtin.sk_method(this.d$def,g)}},getsets:F});[Sk.builtin.method_descriptor,Sk.builtin.getset_descriptor,Sk.builtin.wrapper_descriptor,Sk.builtin.method_wrapper,Sk.builtin.classmethod_descriptor].forEach(p=>{Sk.abstr.setUpSlots(p);Sk.abstr.setUpMethods(p); Sk.abstr.setUpGetSets(p)})},function(F,P){Sk.builtin.sk_method=Sk.abstr.buildNativeClass("builtin_function_or_method",{constructor:function(b,e,d){this.$meth=b.$meth.bind(e);this.$doc=b.$doc;this.$self=e||null;this.$module=d?new Sk.builtin.str(d):null;this.$name=b.$name||b.$meth.name||"";this.m$def=b;this.$textsig=b.$textsig;this.$flags=b=b.$flags||{};b.FastCall&&b.NoKwargs?this.tp$call=this.$fastCallNoKwargs:b.FastCall?this.tp$call=this.$meth:b.NoArgs?this.tp$call=this.$callNoArgs:b.OneArg? this.tp$call=this.$callOneArg:b.NamedArgs?this.tp$call=this.$callNamedArgs:void 0!==b.MinArgs?this.tp$call=this.$callMinArgs:(this.func_code=this.$meth,this.tp$call=this.$defaultCallMethod)},proto:{$fastCallNoKwargs(b,e){Sk.abstr.checkNoKwargs(this.$name,e);return this.$meth(b)},$callNoArgs(b,e){Sk.abstr.checkNoArgs(this.$name,b,e);return this.$meth()},$callOneArg(b,e){Sk.abstr.checkOneArg(this.$name,b,e);return this.$meth(b[0])},$callNamedArgs(b,e){b=Sk.abstr.copyKeywordsToNamedArgs(this.$name,this.$flags.NamedArgs, b,e,this.$flags.Defaults);return this.$meth(...b)},$callMinArgs(b,e){Sk.abstr.checkNoKwargs(this.$name,e);Sk.abstr.checkArgsLen(this.$name,b,this.$flags.MinArgs,this.$flags.MaxArgs);return this.$meth(...b)},$defaultCallMethod(b,e){return null!==this.$self?Sk.builtin.func.prototype.tp$call.call(this,[this.$self,...b],e):Sk.builtin.func.prototype.tp$call.call(this,b,e)},$memoiseFlags(){return Sk.builtin.func.prototype.$memoiseFlags.call(this)},$resolveArgs(){return Sk.builtin.func.prototype.$resolveArgs.call(this)}}, flags:{sk$unacceptableBase:!0},slots:{tp$getattr:Sk.generic.getAttr,$r(){return null===this.$self?new Sk.builtin.str(""):new Sk.builtin.str("")},tp$call(b,e){return this.tp$call(b,e)},tp$richcompare(b,e){if("Eq"!==e&&"NotEq"!==e||!(b instanceof Sk.builtin.sk_method))return Sk.builtin.NotImplemented.NotImplemented$;b=this.$self===b.$self&&this.m$def.$meth===b.m$def.$meth;return"Eq"===e?b:!b}}, getsets:{__module__:{$get(){return this.$module||Sk.builtin.none.none$},$set(b){this.$module=b=b||Sk.builtin.none.none$}},__doc__:{$get(){return this.$doc?new Sk.builtin.str(this.$doc):Sk.builtin.none.none$}},__name__:{$get(){return new Sk.builtin.str(this.$name)}},__text_signature__:{$get(){return new Sk.builtin.str(this.$textsig)}},__self__:{$get(){return this.$self||Sk.sysModules.mp$lookup(this.$module)||Sk.builtin.none.none$}}}})},function(F,P){Sk.builtin.none=Sk.abstr.buildNativeClass("NoneType", {constructor:function(){return Sk.builtin.none.none$},slots:{tp$new(b,e){Sk.abstr.checkNoArgs("NoneType",b,e);return Sk.builtin.none.none$},$r(){return new Sk.builtin.str("None")},tp$as_number:!0,nb$bool(){return!1}},proto:{valueOf(){return null}},flags:{sk$unacceptableBase:!0}});Sk.builtin.none.none$=Object.create(Sk.builtin.none.prototype,{v:{value:null,enumerable:!0}});Sk.builtin.NotImplemented=Sk.abstr.buildNativeClass("NotImplementedType",{constructor:function(){return Sk.builtin.NotImplemented.NotImplemented$}, slots:{$r(){return new Sk.builtin.str("NotImplemented")},tp$new(b,e){Sk.abstr.checkNoArgs("NotImplementedType",b,e);return Sk.builtin.NotImplemented.NotImplemented$}},flags:{sk$unacceptableBase:!0}});Sk.builtin.NotImplemented.NotImplemented$=Object.create(Sk.builtin.NotImplemented.prototype,{v:{value:null,enumerable:!0}});F=Sk.abstr.buildNativeClass("ellipsis",{constructor:function(){return Sk.builtin.Ellipsis},slots:{tp$new(b,e){Sk.abstr.checkNoArgs("ellipsis",b,e);return Sk.builtin.Ellipsis},$r(){return new Sk.builtin.str("Ellipsis")}}, flags:{sk$unacceptableBase:!0}});Sk.builtin.Ellipsis=Object.create(F.prototype,{v:{value:"..."}})},function(F,P){const b=/^(?:(.)?([<>=\^]))?([\+\-\s])?(#)?(0)?(\d+)?(,|_)?(?:\.(\d+))?([bcdeEfFgGnosxX%])?$/;Sk.formatting={};let e=function(a,c,n,m){Sk.asserts.assert("string"===typeof c);if(a[6]){var k=parseInt(a[6],10);m=a[2]||(a[5]?"=":m?">":"<");let u=k-(c.length+(n?n.length:0));if(0>=u)return n+c;k=(a[1]||(a[5]?"0":" ")).repeat(u);switch(m){case "=":if("s"===a[9])throw new Sk.builtin.ValueError("'=' alignment not allowed in string format specifier"); return n+k+c;case ">":return k+n+c;case "<":return n+c+k;case "^":return a=Math.floor(u/2),k.substring(0,a)+n+c+k.substring(a)}}return n+c},d=function(a,c){return c?"-":"+"===a[3]?"+":" "===a[3]?" ":""};const f=/\B(?=(\d{3})+(?!\d))/g,h=/\B(?=([A-Za-z0-9]{4})+(?![A-Za-z0-9]))/g;let p=function(a,c,n){Sk.asserts.assert(c instanceof Sk.builtin.int_||c instanceof Sk.builtin.lng);if(a[8])throw new Sk.builtin.ValueError("Precision not allowed in integer format");var m=c.str$(n,!1);c=c.nb$isnegative();c= d(a,c);a[4]&&(16===n?c+="0x":8===n?c+="0o":2===n&&(c+="0b"));const k=a[9];"X"===k&&(m=m.toUpperCase());if("n"===a[9])m=(+m).toLocaleString();else if(a[7]){m=m.split(".");const u=a[7];if(","===u&&10!==n)throw new Sk.builtin.ValueError(`Cannot specify ',' with '${k}'`);m[0]=m[0].replace(10===n?f:h,u);m=m.join(".")}return e(a,m,c,!0)},g=function(a,c,n){if(!c)return a.str$(10,!0);c=c.match(b);if(!c)throw new Sk.builtin.ValueError("Invalid format specifier");var m=c[9];m||(m=n?"g":"d");if(-1==(n?"fFeEgG%": "bcdoxXnfFeEgG%").indexOf(m))throw new Sk.builtin.ValueError("Unknown format code '"+c[9]+"' for object of type '"+Sk.abstr.typeName(a)+"'");switch(m){case "d":case "n":return p(c,a,10);case "x":case "X":return p(c,a,16);case "o":return p(c,a,8);case "b":return p(c,a,2);case "c":if(c[3])throw new Sk.builtin.ValueError("Sign not allowed with integer format specifier 'c'");if(c[4])throw new Sk.builtin.ValueError("Alternate form not allowed with integer format specifier 'c'");if(c[7])throw new Sk.builtin.ValueError("Cannot specify ',' with 'c'"); if(c[8])throw new Sk.builtin.ValueError("Cannot specify ',' with 'c'");return e(c,String.fromCodePoint(Sk.builtin.asnum$(a)),"",!0);case "f":case "F":case "e":case "E":case "g":case "G":{if(c[4])throw new Sk.builtin.ValueError("Alternate form (#) not allowed in float format specifier");n=Sk.builtin.asnum$(a);"string"===typeof n&&(n=Number(n));if(Infinity===n)return e(c,"inf","",!0);if(-Infinity===n)return e(c,"inf","-",!0);if(isNaN(n))return e(c,"nan","",!0);a=!1;0>n&&(n=-n,a=!0);var k=["toExponential", "toFixed","toPrecision"]["efg".indexOf(m.toLowerCase())];let u=c[8]?parseInt(c[8],10):6;n=n[k](u);-1!=="EFG".indexOf(m)&&(n=n.toUpperCase());if("g"===m.toLowerCase()||!c[9]){if(k=n.match(/\.(\d*[1-9])?(0+)$/)){let [,l,q]=k;n=n.slice(0,l?-q.length:-(q.length+1))}-1!=n.indexOf(".")||c[9]||(n+=".0")}"e"===m.toLowerCase()&&(n=n.replace(/^([-+]?[0-9]*\.?[0-9]+[eE][-+]?)([0-9])?$/,"$10$2"));c[7]&&(m=n.toString().split("."),m[0]=m[0].replace(/\B(?=(\d{3})+(?!\d))/g,","),n=m.join("."));return e(c,n,d(c,a), !0)}case "%":if(c[4])throw new Sk.builtin.ValueError("Alternate form (#) not allowed with format specifier '%'");a=Sk.builtin.asnum$(a);"string"===typeof a&&(a=Number(a));if(Infinity===a)return e(c,"inf%","",!0);if(-Infinity===a)return e(c,"inf%","-",!0);if(isNaN(a))return e(c,"nan%","",!0);m=!1;0>a&&(a=-a,m=!0);n=c[8]?parseInt(c[8],10):6;a=(100*a).toFixed(n)+"%";return e(c,a,d(c,m),!0);default:throw new Sk.builtin.ValueError("Unknown format code '"+c[9]+"'");}};Sk.formatting.mkNumber__format__=a=> function(c){if(!Sk.builtin.checkString(c))throw new Sk.builtin.TypeError("format() argument 2 must be str, not "+Sk.abstr.typeName(c));return new Sk.builtin.str(g(this,c.$jsstr(),a))};Sk.formatting.format=function(a,c){c=c||[];const n={};for(let k=0;kx?Infinity:x;null!=(E=B.exec(r))&&Sv)return new Sk.builtin.tuple([new Sk.builtin.str(""),new Sk.builtin.str(""),new Sk.builtin.str(x)])}else if(v=x.indexOf(t),0>v)return new Sk.builtin.tuple([new Sk.builtin.str(x),new Sk.builtin.str(""),new Sk.builtin.str("")]);return new Sk.builtin.tuple([new Sk.builtin.str(x.substring(0, v)),new Sk.builtin.str(t),new Sk.builtin.str(x.substring(v+t.length))])}}function h(r,t){return function(x,v){x=Sk.misceval.asIndexSized(x,Sk.builtin.OverflowError);if(void 0===v)v=" ";else if(v instanceof Sk.builtin.str&&1===v.sq$length())v=v.v;else throw new Sk.builtin.TypeError("the fill character must be a str of length 1");var B=this.sq$length();if(B>=x)return new Sk.builtin.str(this.v);if(t)return B=x-B,x=Math.floor(B/2)+(B&x&1),v=v.repeat(x)+this.v+v.repeat(B-x),new Sk.builtin.str(v);v=v.repeat(x- B);return new Sk.builtin.str(r?v+this.v:this.v+v)}}function p(r,t,x){({start:t,end:x}=Sk.builtin.slice.startEnd$wrt(r,t,x));if(r.$hasAstralCodePoints()){const v=r.codepoints[t];t=void 0===v?t+r.v.length-r.codepoints.length:v;x=r.codepoints[x];x=void 0===x?r.v.length:x}return{start:t,end:x}}function g(r){return function(t,x,v){t=this.get$tgt(t);({start:x,end:v}=p(this,x,v));if(v=x&&t<=v?t:-1;if(this.codepoints){v=this.sq$length(); x=-1;for(let B=0;BB)return Sk.builtin.bool.false$;v=this.v.slice(v,B);if(x instanceof Sk.builtin.tuple){for(let I=Sk.abstr.iter(x),M=I.tp$iternext();void 0!==M;M=I.tp$iternext()){if(!(M instanceof Sk.builtin.str))throw new Sk.builtin.TypeError("tuple for "+ r+" must only contain str, not "+Sk.abstr.typeName(M));if(t(v,M.v))return Sk.builtin.bool.true$}return Sk.builtin.bool.false$}return new Sk.builtin.bool(t(v,x.v))}}function c(r){return void 0===z[r]?r:r+"_$rw$"}var n=/^[0-9!#_]/,m=Object.create(null);Sk.builtin.str=Sk.abstr.buildNativeClass("str",{constructor:function(r){Sk.asserts.assert(this instanceof Sk.builtin.str,"bad call to str - use 'new'");if("string"!==typeof r)if(void 0===r)r="";else if(null===r)r="None";else{if(void 0!==r.tp$str)return r.tp$str(); if("number"===typeof r)r=Number.isFinite(r)?String(r):String(r).replace("Infinity","inf").replace("NaN","nan");else throw new Sk.builtin.TypeError("could not convert object of type '"+Sk.abstr.typeName(r)+"' to str");}const t=m[r];if(void 0!==t)return t;m[r]=this;this.$mangled=c(r);this.$savedKeyHash=r.replace(n,"!$&");this.v=r},slots:{tp$getattr:Sk.generic.getAttr,tp$as_sequence_or_mapping:!0,tp$doc:"str(object='') -> str\nstr(bytes_or_buffer[, encoding[, errors]]) -> str\n\nCreate a new string object from the given object. If encoding or\nerrors is specified, then the object must expose a data buffer\nthat will be decoded using the given encoding and error handler.\nOtherwise, returns the result of object.__str__() (if defined)\nor repr(object).\nencoding defaults to sys.getdefaultencoding().\nerrors defaults to 'strict'.", tp$new(r,t){t=t||[];if(this!==Sk.builtin.str.prototype)return this.$subtype_new(r,t);if(1>=r.length&&!t.length)return new Sk.builtin.str(r[0]);if(Sk.__future__.python3){const [x,v,B]=Sk.abstr.copyKeywordsToNamedArgs("str",["object","encoding","errors"],r,t);if(void 0===x||void 0===v&&void 0===B)return new Sk.builtin.str(x);Sk.builtin.bytes.check$encodeArgs("str",v,B);if(!Sk.builtin.checkBytes(x))throw new Sk.builtin.TypeError("decoding to str: need a bytes-like object, "+Sk.abstr.typeName(x)+" found"); return Sk.builtin.bytes.$decode.call(x,v,B)}throw new Sk.builtin.TypeError("str takes at most one argument ("+(r.length+t.length)+" given)");},$r(){let r="'";-1!==this.v.indexOf("'")&&-1===this.v.indexOf('"')&&(r='"');const t=this.v.length;let x=r;for(let I=0;IB||57344<=B)&&!Sk.__future__.python3?x+="\\u"+("000"+B.toString(16)).slice(-4):55296<=B&& !Sk.__future__.python3?(v=this.v.codePointAt(I),I++,v=v.toString(16),B="0000000"+v.toString(16),x=4v||127<=B&&!Sk.__future__.python3?(v=v.charCodeAt(0).toString(16),2>v.length&&(v="0"+v),x+="\\x"+v):x+=v}return new Sk.builtin.str(x+r)},tp$str(){return this.constructor===Sk.builtin.str?this:new Sk.builtin.str(this.v)},tp$iter(){return new q(this)},tp$richcompare(r,t){if(!(r instanceof Sk.builtin.str))return Sk.builtin.NotImplemented.NotImplemented$; switch(t){case "Lt":return this.vr.v;case "GtE":return this.v>=r.v}},mp$subscript(r){let t;if(Sk.misceval.isIndex(r)){r=Sk.misceval.asIndexSized(r,Sk.builtin.OverflowError);t=this.sq$length();0>r&&(r+=t);if(0>r||r>=t)throw new Sk.builtin.IndexError("string index out of range");return this.codepoints?new Sk.builtin.str(this.v.substring(this.codepoints[r],this.codepoints[r+1])): new Sk.builtin.str(this.v.charAt(r))}if(r instanceof Sk.builtin.slice){let x="";t=this.sq$length();this.codepoints?r.sssiter$(t,v=>{x+=this.v.substring(this.codepoints[v],this.codepoints[v+1])}):r.sssiter$(t,v=>{x+=this.v.charAt(v)});return new Sk.builtin.str(x)}throw new Sk.builtin.TypeError("string indices must be integers, not "+Sk.abstr.typeName(r));},sq$length(){return this.$hasAstralCodePoints()?this.codepoints.length:this.v.length},sq$concat(r){if(!(r instanceof Sk.builtin.str))throw new Sk.builtin.TypeError("cannot concatenate 'str' and '"+ Sk.abstr.typeName(r)+"' objects");return new Sk.builtin.str(this.v+r.v)},sq$repeat(r){if(!Sk.misceval.isIndex(r))throw new Sk.builtin.TypeError("can't multiply sequence by non-int of type '"+Sk.abstr.typeName(r)+"'");r=Sk.misceval.asIndexSized(r,Sk.builtin.OverflowError);if(r*this.v.length>Number.MAX_SAFE_INTEGER)throw new Sk.builtin.OverflowError;let t="";for(let x=0;x' requires string as left operand not "+ Sk.abstr.typeName(r));return-1!==this.v.indexOf(r.v)},tp$as_number:!0,nb$remainder:function(r){var t;const x=this.sk$builtinBase;r.constructor===Sk.builtin.tuple||r instanceof Sk.builtin.dict||r instanceof Sk.builtin.mappingproxy||(r=new Sk.builtin.tuple([r]));var v=0;var B=this.$jsstr().replace(/%(\([a-zA-Z0-9]+\))?([#0 +\-]+)?(\*|[0-9]+)?(\.(\*|[0-9]+))?[hlL]?([diouxXeEfFgGcrsb%])/g,function(I,M,S,E,H,y,A){var J,Q,X,aa,ea;E=Sk.builtin.asnum$(E);H=Sk.builtin.asnum$(H);void 0!==M&&""!==M||"%"==A|| (J=v++);""===H&&(H=void 0);var na=Q=X=aa=ea=!1;S&&(-1!==S.indexOf("-")?aa=!0:-1!==S.indexOf("0")&&(ea=!0),-1!==S.indexOf("+")?Q=!0:-1!==S.indexOf(" ")&&(X=!0),na=-1!==S.indexOf("#"));H&&(H=parseInt(H.substr(1),10));S=function(ca,la){var ia;la=Sk.builtin.asnum$(la);var ka=!1;if("number"===typeof ca){0>ca&&(ca=-ca,ka=!0);var U=ca.toString(la)}else ca instanceof Sk.builtin.float_?(U=ca.str$(la,!1),2t){this.codepoints=[];for(r=0;r t&&r++;return!0}}this.codepoints=null;return!1},sk$asarray(){const r=[];if(this.$hasAstralCodePoints()){var t=this.codepoints;for(let x=0;xx)return new Sk.builtin.str(this.v.replace(r,t));let v=0;r=this.v.replace(r,B=>v++t?0:2*(r.length/2-t);t=[];for(0>=x?x=0:t.push(new Sk.builtin.str(this.v.slice(0,r[x-1])));x{if(!(x instanceof Sk.builtin.str))throw new Sk.builtin.TypeError("sequence item "+t.length+": expected str, "+Sk.abstr.typeName(x)+" found");t.push(x.v)}),()=>new Sk.builtin.str(t.join(this.v)))},$flags:{OneArg:!0},$textsig:"($self, iterable, /)",$doc:"Concatenate any number of strings.\n\nThe string whose method is called is inserted in between each given string.\nThe result is returned as a new string.\n\nExample: '.'.join(['ab', 'pq', 'rs']) -> 'ab.pq.rs'"}, capitalize:{$meth:function(){return new Sk.builtin.str(this.v.charAt(0).toUpperCase()+this.v.slice(1).toLowerCase())},$flags:{NoArgs:!0},$textsig:"($self, /)",$doc:"Return a capitalized version of the string.\n\nMore specifically, make the first character have upper case and the rest lower\ncase."},title:{$meth:function(){const r=this.v.replace(/[a-z][a-z]*/gi,t=>t[0].toUpperCase()+t.substr(1).toLowerCase());return new Sk.builtin.str(r)},$flags:{NoArgs:!0},$textsig:"($self, /)",$doc:"Return a version of the string where each word is titlecased.\n\nMore specifically, words start with uppercased characters and all remaining\ncased characters have lower case."}, center:{$meth:h(!1,!0),$flags:{MinArgs:1,MaxArgs:2},$textsig:"($self, width, fillchar=' ', /)",$doc:"Return a centered string of length width.\n\nPadding is done using the specified fill character (default is a space)."},count:{$meth:function(r,t,x){r=this.get$tgt(r);({start:t,end:x}=p(this,t,x));if(x int\n\nReturn the number of non-overlapping occurrences of substring sub in\nstring S[start:end]. Optional arguments start and end are\ninterpreted as in slice notation."},expandtabs:{$meth:function(r){if(Sk.builtin.checkInt(r))r=Sk.builtin.asnum$(r);else throw new Sk.builtin.TypeError("an integer is required, got type"+Sk.abstr.typeName(r));const t=Array(r+1).join(" "),x=this.v.replace(/([^\r\n\t]*)\t/g,(v,B)=>B+t.slice(B.length%r)); return new Sk.builtin.str(x)},$flags:{NamedArgs:["tabsize"],Defaults:[8]},$textsig:"($self, /, tabsize=8)",$doc:"Return a copy where all tab characters are expanded using spaces.\n\nIf tabsize is not given, a tab size of 8 characters is assumed."},find:{$meth:function(r,t,x){return new Sk.builtin.int_(this.find$left(r,t,x))},$flags:{MinArgs:1,MaxArgs:3},$textsig:null,$doc:"S.find(sub[, start[, end]]) -> int\n\nReturn the lowest index in S where substring sub is found,\nsuch that sub is contained within S[start:end]. Optional\narguments start and end are interpreted as in slice notation.\n\nReturn -1 on failure."}, partition:{$meth:f(!1),$flags:{OneArg:!0},$textsig:"($self, sep, /)",$doc:"Partition the string into three parts using the given separator.\n\nThis will search for the separator in the string. If the separator is found,\nreturns a 3-tuple containing the part before the separator, the separator\nitself, and the part after it.\n\nIf the separator is not found, returns a 3-tuple containing the original string\nand two empty strings."},index:{$meth:function(r,t,x){r=this.find$left(r,t,x);if(-1===r)throw new Sk.builtin.ValueError("substring not found"); return new Sk.builtin.int_(r)},$flags:{MinArgs:1,MaxArgs:3},$textsig:null,$doc:"S.index(sub[, start[, end]]) -> int\n\nReturn the lowest index in S where substring sub is found, \nsuch that sub is contained within S[start:end]. Optional\narguments start and end are interpreted as in slice notation.\n\nRaises ValueError when the substring is not found."},ljust:{$meth:h(!1,!1),$flags:{MinArgs:1,MaxArgs:2},$textsig:"($self, width, fillchar=' ', /)",$doc:"Return a left-justified string of length width.\n\nPadding is done using the specified fill character (default is a space)."}, lower:{$meth(){return new Sk.builtin.str(this.v.toLowerCase())},$flags:{NoArgs:!0},$textsig:"($self, /)",$doc:"Return a copy of the string converted to lowercase."},lstrip:{$meth:d(/^\s+/g,r=>"^["+r+"]+"),$flags:{MinArgs:0,MaxArgs:1},$textsig:"($self, chars=None, /)",$doc:"Return a copy of the string with leading whitespace removed.\n\nIf chars is given and not None, remove characters in chars instead."},rfind:{$meth(r,t,x){return new Sk.builtin.int_(this.find$right(r,t,x))},$flags:{MinArgs:1,MaxArgs:3}, $textsig:null,$doc:"S.rfind(sub[, start[, end]]) -> int\n\nReturn the highest index in S where substring sub is found,\nsuch that sub is contained within S[start:end]. Optional\narguments start and end are interpreted as in slice notation.\n\nReturn -1 on failure."},rindex:{$meth:function(r,t,x){r=this.find$right(r,t,x);if(-1===r)throw new Sk.builtin.ValueError("substring not found");return new Sk.builtin.int_(r)},$flags:{MinArgs:1,MaxArgs:3},$textsig:null,$doc:"S.rindex(sub[, start[, end]]) -> int\n\nReturn the highest index in S where substring sub is found,\nsuch that sub is contained within S[start:end]. Optional\narguments start and end are interpreted as in slice notation.\n\nRaises ValueError when the substring is not found."}, rjust:{$meth:h(!0,!1),$flags:{MinArgs:1,MaxArgs:2},$textsig:"($self, width, fillchar=' ', /)",$doc:"Return a right-justified string of length width.\n\nPadding is done using the specified fill character (default is a space)."},rstrip:{$meth:d(/\s+$/g,r=>"["+r+"]+$"),$flags:{MinArgs:0,MaxArgs:1},$textsig:"($self, chars=None, /)",$doc:"Return a copy of the string with trailing whitespace removed.\n\nIf chars is given and not None, remove characters in chars instead."},rpartition:{$meth:f(!0),$flags:{OneArg:!0}, $textsig:"($self, sep, /)",$doc:"Partition the string into three parts using the given separator.\n\nThis will search for the separator in the string, starting at the end. If\nthe separator is found, returns a 3-tuple containing the part before the\nseparator, the separator itself, and the part after it.\n\nIf the separator is not found, returns a 3-tuple containing two empty strings\nand the original string."},splitlines:{$meth:function(r){r=Sk.misceval.isTrue(r);const t=this.v,x=[],v=t.length;var B= 0;for(let M=0;M"^["+r+"]+|["+r+"]+$"),$flags:{MinArgs:0,MaxArgs:1},$textsig:"($self, chars=None, /)",$doc:"Return a copy of the string with leading and trailing whitespace remove.\n\nIf chars is given and not None, remove characters in chars instead."},swapcase:{$meth(){const r=this.v.replace(/[a-z]/gi,t=>{const x=t.toLowerCase();return x===t?t.toUpperCase():x});return new Sk.builtin.str(r)},$flags:{NoArgs:!0},$textsig:"($self, /)",$doc:"Convert uppercase characters to lowercase and lowercase characters to uppercase."}, upper:{$meth(){return new Sk.builtin.str(this.v.toUpperCase())},$flags:{NoArgs:!0},$textsig:"($self, /)",$doc:"Return a copy of the string converted to uppercase."},startswith:{$meth:a("startswith",(r,t)=>0===r.indexOf(t)),$flags:{MinArgs:1,MaxArgs:3},$textsig:null,$doc:"S.startswith(prefix[, start[, end]]) -> bool\n\nReturn True if S starts with the specified prefix, False otherwise.\nWith optional start, test S beginning at that position.\nWith optional end, stop comparing S at that position.\nprefix can also be a tuple of strings to try."}, endswith:{$meth:a("endswith",(r,t)=>-1!==r.indexOf(t,r.length-t.length)),$flags:{MinArgs:1,MaxArgs:3},$textsig:null,$doc:"S.endswith(suffix[, start[, end]]) -> bool\n\nReturn True if S ends with the specified suffix, False otherwise.\nWith optional start, test S beginning at that position.\nWith optional end, stop comparing S at that position.\nsuffix can also be a tuple of strings to try."},isascii:{$meth(){return new Sk.builtin.bool(/^[\x00-\x7F]*$/.test(this.v))},$flags:{NoArgs:!0},$textsig:"($self, /)", $doc:"Return True if all characters in the string are ASCII, False otherwise.\n\nASCII characters have code points in the range U+0000-U+007F.\nEmpty string is ASCII too."},islower:{$meth:function(){return new Sk.builtin.bool(this.v.length&&/[a-z]/.test(this.v)&&!/[A-Z]/.test(this.v))},$flags:{NoArgs:!0},$textsig:"($self, /)",$doc:"Return True if the string is a lowercase string, False otherwise.\n\nA string is lowercase if all cased characters in the string are lowercase and\nthere is at least one cased character in the string."}, isupper:{$meth:function(){return new Sk.builtin.bool(this.v.length&&!/[a-z]/.test(this.v)&&/[A-Z]/.test(this.v))},$flags:{NoArgs:!0},$textsig:"($self, /)",$doc:"Return True if the string is an uppercase string, False otherwise.\n\nA string is uppercase if all cased characters in the string are uppercase and\nthere is at least one cased character in the string."},istitle:{$meth:function(){const r=this.v;let t=!1,x=!1,v;for(let B=0;B str\n\nReturn a formatted version of S, using substitutions from args and kwargs.\nThe substitutions are identified by braces ('{' and '}')."}, __format__:{$meth:Sk.formatting.formatString,$flags:{OneArg:!0},$textsig:"($self, format_spec, /)",$doc:"Return a formatted version of the string as described by format_spec."},__getnewargs__:{$meth(){return new Sk.builtin.tuple(new Sk.builtin.str(this.v))},$flags:{NoArgs:!0},$textsig:null,$doc:null}}});Sk.exportSymbol("Sk.builtin.str",Sk.builtin.str);var k=/^[A-Za-z0-9]+$/,u=/([.*+?=|\\\/()\[\]\{\}^$])/g,l=/^[\s\xa0]+/;Sk.builtin.str.$py2decode=new Sk.builtin.method_descriptor(Sk.builtin.str,{$name:"decode", $meth(r,t){const x=new Sk.builtin.bytes(this.v);return Sk.builtin.bytes.$decode.call(x,r,t)},$flags:{NamedArgs:["encoding","errors"]}});var q=Sk.abstr.buildIteratorClass("str_iterator",{constructor:function(r){this.$index=0;r.$hasAstralCodePoints()?(this.$seq=r.codepoints,this.tp$iternext=()=>{const t=this.$seq[this.$index];if(void 0!==t)return new Sk.builtin.str(r.v.substring(t,this.$seq[++this.$index]))}):(this.$seq=r.v,this.tp$iternext=()=>{const t=this.$seq[this.$index++];if(void 0!==t)return new Sk.builtin.str(t)})}, iternext(){return this.tp$iternext()},methods:{__length_hint__:Sk.generic.iterLengthHintWithArrayMethodDef},flags:{sk$unacceptableBase:!0}}),z={abstract:!0,as:!0,boolean:!0,break:!0,byte:!0,case:!0,catch:!0,char:!0,class:!0,continue:!0,const:!0,debugger:!0,default:!0,delete:!0,do:!0,double:!0,else:!0,enum:!0,export:!0,extends:!0,false:!0,final:!0,finally:!0,float:!0,for:!0,function:!0,goto:!0,if:!0,implements:!0,import:!0,in:!0,instanceof:!0,int:!0,interface:!0,is:!0,long:!0,namespace:!0,native:!0, new:!0,null:!0,package:!0,private:!0,protected:!0,public:!0,return:!0,short:!0,static:!0,super:!0,switch:!0,synchronized:!0,this:!0,throw:!0,throws:!0,transient:!0,true:!0,try:!0,typeof:!0,use:!0,var:!0,void:!0,volatile:!0,while:!0,with:!0,constructor:!0,__defineGetter__:!0,__defineSetter__:!0,apply:!0,arguments:!0,call:!0,caller:!0,eval:!0,hasOwnProperty:!0,isPrototypeOf:!0,__lookupGetter__:!0,__lookupSetter__:!0,__noSuchMethod__:!0,propertyIsEnumerable:!0,prototype:!0,toSource:!0,toLocaleString:!0, toString:!0,unwatch:!0,valueOf:!0,watch:!0,length:!0,name:!0};Sk.builtin.str.reservedWords_=z;Sk.builtin.str.$fixReserved=c},function(F,P){Sk.builtin.func=Sk.abstr.buildNativeClass("function",{constructor:function(b,e,d,f){Sk.asserts.assert(this instanceof Sk.builtin.func,"builtin func should be called as a class with `new`");this.func_code=b;this.func_globals=e||null;this.$name=b.co_name&&b.co_name.v||b.name||"";this.$d=Sk.builtin.dict?new Sk.builtin.dict:void 0;this.$doc=b.co_docstring|| Sk.builtin.none.none$;this.$module=Sk.globals&&Sk.globals.__name__||Sk.builtin.none.none$;this.$qualname=b.co_qualname&&b.co_qualname.v||this.$name;if(void 0!==f)for(let h in f)d[h]=f[h];this.func_closure=d;this.func_annotations=null;this.$memoiseFlags();this.memoised=b.co_fastcall||null;this.tp$call=b.co_fastcall?b.bind(this):Sk.builtin.func.prototype.tp$call.bind(this)},slots:{tp$getattr:Sk.generic.getAttr,tp$descr_get(b,e){return null===b?this:new Sk.builtin.method(this,b)},$r(){return new Sk.builtin.str("")},tp$call(b,e){this.memoised||(this.$memoiseFlags(),this.memoised=!0);if(void 0===this.co_argcount&&void 0===this.co_varnames&&!this.co_kwargs&&!this.func_closure){if(e&&0!==e.length)throw new Sk.builtin.TypeError(this.$name+"() takes no keyword arguments");return this.func_code.apply(this.func_globals,b)}b=this.$resolveArgs(b,e);this.func_closure&&b.push(this.func_closure);return this.func_code.apply(this.func_globals,b)}},getsets:{__name__:{$get(){return new Sk.builtin.str(this.$name)}, $set(b){if(!Sk.builtin.checkString(b))throw new Sk.builtin.TypeError("__name__ must be set to a string object");this.$name=b.$jsstr()}},__qualname__:{$get(){return new Sk.builtin.str(this.$qualname)},$set(b){if(!Sk.builtin.checkString(b))throw new Sk.builtin.TypeError("__qualname__ must be set to a string object");this.$qualname=b.$jsstr()}},__dict__:Sk.generic.getSetDict,__annotations__:{$get(){null===this.func_annotations?this.func_annotations=new Sk.builtin.dict([]):Array.isArray(this.func_annotations)&& (this.func_annotations=Sk.abstr.keywordArrayToPyDict(this.func_annotations));return this.func_annotations},$set(b){if(void 0===b||Sk.builtin.checkNone(b))this.func_annotations=new Sk.builtin.dict([]);else if(b instanceof Sk.builtin.dict)this.func_annotations=b;else throw new Sk.builtin.TypeError("__annotations__ must be set to a dict object");}},__defaults__:{$get(){return null==this.$defaults?Sk.builtin.none.none$:new Sk.builtin.tuple(this.$defaults)},$set(b){if(void 0===b||Sk.builtin.checkNone(b))this.$defaults= null;else if(b instanceof Sk.builtin.tuple)this.$defaults=b.valueOf();else throw new Sk.builtin.TypeError("__defaults__ must be set to a tuple object");}},__doc__:{$get(){return this.$doc},$set(b){this.$doc=b||Sk.builtin.none.none$}},__module__:{$get(){return this.$module},$set(b){this.$module=b||Sk.builtin.none.none$}}},proto:{$memoiseFlags(){this.co_varnames=this.func_code.co_varnames;this.co_argcount=this.func_code.co_argcount;void 0===this.co_argcount&&this.co_varnames&&(this.co_argcount=this.co_varnames.length); this.co_kwonlyargcount=this.func_code.co_kwonlyargcount||0;this.co_varargs=this.func_code.co_varargs;this.co_kwargs=this.func_code.co_kwargs;this.$defaults=this.func_code.$defaults;this.$kwdefs=this.func_code.$kwdefs||[]},$resolveArgs:function(b,e){var d=this.co_argcount;void 0===d&&(d=this.co_varnames?this.co_varnames.length:b.length);var f=this.co_varnames||[],h=this.co_kwonlyargcount||0;let p=d+h;if(!(0!==h||this.co_kwargs||e&&0!==e.length||this.co_varargs)){if(b.length==d)return b;if(0===b.length&& this.$defaults&&this.$defaults.length===d){for(f=0;f!=this.$defaults.length;f++)b[f]=this.$defaults[f];return b}}let g;this.co_kwargs&&(g=[]);var a=b.length;let c=b.length<=d?b:b.slice(0,d);if(this.co_varargs)b=b.length>c.length?b.slice(c.length):[],c[p]=new Sk.builtin.tuple(b);else if(a>d)throw new Sk.builtin.TypeError(`${this.$name}"() takes ${d} positional ${1==d?"argument":"arguments"} but ${a} ${1==a?"was":"were"} given`);if(e){if(this.func_code.no_kw)throw new Sk.builtin.TypeError(this.$name+ "() takes no keyword arguments");for(b=0;b"'"+k+"'").join(", ")));for(;bf.indexOf(".")&&0>f.indexOf("e")&&0>f.indexOf("E"))return f;var h=0;if(0<=f.indexOf("e")){var p=f.substr(0,f.indexOf("e"));h=f.substr(f.indexOf("e")+1)}else 0<=f.indexOf("E")?(p=f.substr(0,f.indexOf("e")),h=f.substr(f.indexOf("E")+1)):p=f;h=parseInt(h, 10);f=p.indexOf(".");if(0>f){if(0<=h){for(;0-h?p.substr(0,p.length+h):0}p=0===f?p.substr(1):fp.length;)p+="0";return p=0>=f?0:p.substr(0,f)};Sk.exportSymbol("Sk.builtin.asnum$nofloat",Sk.builtin.asnum$nofloat);Sk.builtin.round=function(f,h){if(void 0===f)throw new Sk.builtin.TypeError("a float is required");if(!Sk.__future__.dunder_round){if(!Sk.builtin.checkNumber(f))throw new Sk.builtin.TypeError("a float is required"); if(f.round$)return f.round$(h);throw new Sk.builtin.AttributeError(Sk.abstr.typeName(f)+" instance has no attribute '__float__'");}if(void 0!==h&&!Sk.builtin.checkNone(h)&&!Sk.misceval.isIndex(h))throw new Sk.builtin.TypeError("'"+Sk.abstr.typeName(h)+"' object cannot be interpreted as an index");f=Sk.abstr.lookupSpecial(f,Sk.builtin.str.$round);if(void 0!==f)return void 0!==h?Sk.misceval.callsimArray(f,[h]):Sk.misceval.callsimArray(f,[]);throw new Sk.builtin.TypeError("a float is required");};Sk.builtin.len= function(f){if(f.sq$length)f=f.sq$length(!0);else throw new Sk.builtin.TypeError("object of type '"+Sk.abstr.typeName(f)+"' has no len()");return Sk.misceval.chain(f,h=>new Sk.builtin.int_(h))};Sk.builtin.min=function(f,h){let p;const g=f.length;if(!g)throw new Sk.builtin.TypeError("min expected 1 argument, got 0");const [a,c]=Sk.abstr.copyKeywordsToNamedArgs("min",["default","key"],[],h,[null,Sk.builtin.none.none$]);if(1{n=m;if(void 0!==n)return Sk.builtin.checkNone(c)?Sk.misceval.iterFor(p,k=>{Sk.misceval.richCompareBool(k,n,"Lt")&&(n=k)}):Sk.misceval.chain(Sk.misceval.callsimOrSuspendArray(c,[n]),k=>Sk.misceval.iterFor(p,u=>Sk.misceval.chain(Sk.misceval.callsimOrSuspendArray(c, [u]),l=>{Sk.misceval.richCompareBool(l,k,"Lt")&&(n=u,k=l)})))},()=>{if(void 0===n){if(null===a)throw new Sk.builtin.ValueError("min() arg is an empty sequence");n=a}return n})};Sk.builtin.max=function(f,h){let p;const g=f.length;if(!g)throw new Sk.builtin.TypeError("max expected 1 argument, got 0");const [a,c]=Sk.abstr.copyKeywordsToNamedArgs("max",["default","key"],[],h,[null,Sk.builtin.none.none$]);if(1{n=m;if(void 0!==n)return Sk.builtin.checkNone(c)?Sk.misceval.iterFor(p,k=>{Sk.misceval.richCompareBool(k,n,"Gt")&&(n=k)}):Sk.misceval.chain(Sk.misceval.callsimOrSuspendArray(c,[n]),k=>Sk.misceval.iterFor(p,u=>Sk.misceval.chain(Sk.misceval.callsimOrSuspendArray(c, [u]),l=>{Sk.misceval.richCompareBool(l,k,"Gt")&&(n=u,k=l)})))},()=>{if(void 0===n){if(null===a)throw new Sk.builtin.ValueError("max() arg is an empty sequence");n=a}return n})};Sk.builtin.min.co_fastcall=Sk.builtin.max.co_fastcall=1;Sk.builtin.any=function(f){return Sk.misceval.chain(Sk.misceval.iterFor(Sk.abstr.iter(f),function(h){if(Sk.misceval.isTrue(h))return new Sk.misceval.Break(Sk.builtin.bool.true$)}),h=>h||Sk.builtin.bool.false$)};Sk.builtin.all=function(f){return Sk.misceval.chain(Sk.misceval.iterFor(Sk.abstr.iter(f), function(h){if(!Sk.misceval.isTrue(h))return new Sk.misceval.Break(Sk.builtin.bool.false$)}),h=>h||Sk.builtin.bool.true$)};Sk.builtin.sum=function(f,h){function p(){return Sk.misceval.iterFor(c,m=>{if(m.constructor===Sk.builtin.int_)n=n.nb$add(m);else{if(m.constructor===Sk.builtin.float_)return n=n.nb$float().nb$add(m),new Sk.misceval.Break("float");n=Sk.abstr.numberBinOp(n,m,"Add");return new Sk.misceval.Break("slow")}})}function g(){return Sk.misceval.iterFor(c,m=>{if(m.constructor===Sk.builtin.float_|| m.constructor===Sk.builtin.int_)n=n.nb$add(m);else return n=Sk.abstr.numberBinOp(n,m,"Add"),new Sk.misceval.Break("slow")})}function a(){return Sk.misceval.iterFor(c,m=>{n=Sk.abstr.numberBinOp(n,m,"Add")})}const c=Sk.abstr.iter(f);if(void 0===h)var n=new Sk.builtin.int_(0);else{if(Sk.builtin.checkString(h))throw new Sk.builtin.TypeError("sum() can't sum strings [use ''.join(seq) instead]");n=h}f=void 0===h||h.constructor===Sk.builtin.int_?p():h.constructor===Sk.builtin.float_?"float":"slow";return Sk.misceval.chain(f, m=>"float"===m?g():m,m=>{if("slow"===m)return a()},()=>n)};Sk.builtin.zip=function(){var f,h;if(0===arguments.length)return new Sk.builtin.list([]);var p=[];for(h=0;hf||1114112<=f)throw new Sk.builtin.ValueError("chr() arg not in range(0x110000)");}else if(0>f||256<=f)throw new Sk.builtin.ValueError("chr() arg not in range(256)");return new Sk.builtin.str(String.fromCodePoint(f))}; Sk.builtin.unichr=function(f){Sk.builtin.pyCheckArgsLen("unichr",arguments.length,1,1);if(!Sk.builtin.checkInt(f))throw new Sk.builtin.TypeError("an integer is required");f=Sk.builtin.asnum$(f);try{return new Sk.builtin.str(String.fromCodePoint(f))}catch(h){if(h instanceof RangeError)throw new Sk.builtin.ValueError(h.message);throw h;}};Sk.builtin.int2str_=function(f,h,p){let g=Sk.misceval.asIndexOrThrow(f),a=g.toString(h);a=0>g?"-"+p+a.slice(1):p+a;2!==h&&!Sk.__future__.python3&&(f instanceof Sk.builtin.lng|| JSBI.__isBigInt(g))&&(a+="L");return new Sk.builtin.str(a)};Sk.builtin.hex=function(f){if(!Sk.misceval.isIndex(f))throw new Sk.builtin.TypeError("hex() argument can't be converted to hex");return Sk.builtin.int2str_(f,16,"0x")};Sk.builtin.oct=function(f){if(!Sk.misceval.isIndex(f))throw new Sk.builtin.TypeError("oct() argument can't be converted to hex");return Sk.__future__.octal_number_literal?Sk.builtin.int2str_(f,8,"0o"):Sk.builtin.int2str_(f,8,"0")};Sk.builtin.bin=function(f){if(!Sk.misceval.isIndex(f))throw new Sk.builtin.TypeError("'"+ Sk.abstr.typeName(f)+"' object can't be interpreted as an index");return Sk.builtin.int2str_(f,2,"0b")};Sk.builtin.dir=function(f){if(void 0!==f)return f=Sk.abstr.lookupSpecial(f,Sk.builtin.str.$dir),Sk.misceval.chain(Sk.misceval.callsimOrSuspendArray(f,[]),h=>Sk.builtin.sorted(h));throw new Sk.builtin.NotImplementedError("skulpt does not yet support dir with no args");};Sk.builtin.repr=function(f){return f.$r()};Sk.builtin.ascii=function(f){return Sk.misceval.chain(f.$r(),h=>{let p,g;for(g=0;g=c?(a=c.toString(16),2>a.length&&(a="0"+a),p+="\\x"+a):127c||57344<=c?p+="\\u"+("000"+c.toString(16)).slice(-4):55296<=c?(a=h.v.codePointAt(g),g++,a=a.toString(16),c="0000000"+a.toString(16),p=4f.tp$getattr(h,!0), a=>{if(!(a instanceof Sk.builtin.AttributeError))throw a;});return Sk.misceval.chain(g,a=>{if(void 0===a){if(void 0!==p)return p;throw new Sk.builtin.AttributeError(f.sk$attrError()+" has no attribute "+Sk.misceval.objectRepr(h));}return a})};Sk.builtin.setattr=function(f,h,p){if(!Sk.builtin.checkString(h))throw new Sk.builtin.TypeError("attribute name must be string");return Sk.misceval.chain(f.tp$setattr(h,p,!0),()=>Sk.builtin.none.none$)};Sk.builtin.raw_input=function(f){var h=f?f:"";return Sk.misceval.chain(Sk.importModule("sys", !1,!0),function(p){return Sk.inputfunTakesPrompt?Sk.builtin.file.$readline(p.$d.stdin,null,h):Sk.misceval.chain(void 0,function(){return Sk.misceval.callsimOrSuspendArray(p.$d.stdout.write,[p.$d.stdout,new Sk.builtin.str(h)])},function(){return Sk.misceval.callsimOrSuspendArray(p.$d.stdin.readline,[p.$d.stdin])})})};Sk.builtin.input=Sk.builtin.raw_input;Sk.builtin.jseval=function(f){f=Sk.global.eval(Sk.ffi.remapToJs(f));return Sk.ffi.remapToPy(f)};Sk.builtin.jsmillis=function(){console.warn("jsmillis is deprecated"); return(new Date).valueOf()};const b=Sk.abstr.buildNativeClass("code",{constructor:function(f,h){this.compiled=h;this.code=h.code;this.filename=f},slots:{tp$new(f,h){throw new Sk.builtin.NotImplementedError("cannot construct a code object in skulpt");},$r(){return new Sk.builtin.str(", file "+this.filename+">")}}});Sk.builtin.compile=function(f,h,p,g,a,c){Sk.builtin.pyCheckType("source","str",Sk.builtin.checkString(f));Sk.builtin.pyCheckType("filename","str",Sk.builtin.checkString(h)); Sk.builtin.pyCheckType("mode","str",Sk.builtin.checkString(p));f=f.$jsstr();h=h.$jsstr();p=p.$jsstr();return Sk.misceval.chain(Sk.compile(f,h,p,!0),n=>new b(h,n))};Sk.builtin.exec=function(f,h,p){let g=h&&h.__file__;g=void 0!==g&&Sk.builtin.checkString(g)?g.toString():"";if(Sk.builtin.checkString(f))f=Sk.compile(f.$jsstr(),g,"exec",!0);else if("string"===typeof f)f=Sk.compile(f,g,"exec",!0);else if(!(f instanceof b))throw new Sk.builtin.TypeError("exec() arg 1 must be a string, bytes or code object"); Sk.asserts.assert(void 0===h||h.constructor===Object,"internal calls to exec should be called with a javascript object for globals");Sk.asserts.assert(void 0===p||p.constructor===Object,"internal calls to exec should be called with a javascript object for locals");const a=Sk.globals;h=h||a;return Sk.misceval.chain(f,c=>Sk.global.eval(c.code)(h,p),c=>{Sk.globals=a;return c})};Sk.builtin.eval=function(f,h,p){if(Sk.builtin.checkString(f))f=f.$jsstr();else if(Sk.builtin.checkBytes(f))throw new Sk.builtin.NotImplementedError("bytes for eval is not yet implemented in skulpt"); if("string"===typeof f){f=f.trim();var g=Sk.parse("?",f);g=Sk.astFromParse(g.cst,"?",g.flags);if(1{const c=a.__final_res__||Sk.builtin.none.none$;delete a.__final_res__;return c})};Sk.builtin.map=function(f,h){var p= [],g,a;Sk.builtin.pyCheckArgsLen("map",arguments.length,2);if(2{a=new Sk.builtin.list(a);a.list$sort(h,p,g);return a})};Sk.builtin.filter=function(f,h){var p;Sk.builtin.pyCheckArgsLen("filter",arguments.length, 2,2);if(!Sk.builtin.checkIterable(h))throw new Sk.builtin.TypeError("'"+Sk.abstr.typeName(h)+"' object is not iterable");var g=function(){return[]};var a=function(k,u){k.push(u);return k};var c=function(k){return new Sk.builtin.list(k)};h.ob$type===Sk.builtin.str?(g=function(){return new Sk.builtin.str("")},a=function(k,u){return k.sq$concat(u)},c=function(k){return k}):h.ob$type===Sk.builtin.tuple&&(c=function(k){return new Sk.builtin.tuple(k)});var n=g();var m=Sk.abstr.iter(h);for(p=m.tp$iternext();void 0!== p;p=m.tp$iternext())g=f===Sk.builtin.none.none$?new Sk.builtin.bool(p):Sk.misceval.callsimArray(f,[p]),Sk.misceval.isTrue(g)&&(n=a(n,p));return c(n)};Sk.builtin.hasattr=function(f,h){if(!Sk.builtin.checkString(h))throw new Sk.builtin.TypeError("hasattr(): attribute name must be string");const p=Sk.misceval.tryCatch(()=>f.tp$getattr(h,!0),g=>{if(!(g instanceof Sk.builtin.AttributeError))throw g;});return Sk.misceval.chain(p,g=>void 0===g?Sk.builtin.bool.false$:Sk.builtin.bool.true$)};Sk.builtin.pow= function(f,h,p){if(void 0===p||Sk.builtin.checkNone(p))return Sk.abstr.numberBinOp(f,h,"Pow");if(!(Sk.builtin.checkInt(f)&&Sk.builtin.checkInt(h)&&Sk.builtin.checkInt(p))){if(Sk.builtin.checkFloat(f)||Sk.builtin.checkComplex(f))return f.nb$power(h,p);throw new Sk.builtin.TypeError("unsupported operand type(s) for ** or pow(): '"+Sk.abstr.typeName(f)+"', '"+Sk.abstr.typeName(h)+"', '"+Sk.abstr.typeName(p)+"'");}return f.nb$power(h,p)};Sk.builtin.quit=function(f){f=(new Sk.builtin.str(f)).v;throw new Sk.builtin.SystemExit(f); };Sk.builtin.issubclass=function(f,h){if(!Sk.builtin.checkClass(f))throw new Sk.builtin.TypeError("issubclass() arg 1 must be a class");var p=Sk.builtin.checkClass(h);if(!(p||h instanceof Sk.builtin.tuple))throw new Sk.builtin.TypeError("issubclass() arg 2 must be a class or tuple of classes");if(p)return f.$isSubType(h)?Sk.builtin.bool.true$:Sk.builtin.bool.false$;for(p=0;p{if(void 0===p){if(h)return h;p=f.gi$ret;if(void 0!==p&&p!==Sk.builtin.none.none$)throw new Sk.builtin.StopIteration(p); throw new Sk.builtin.StopIteration;}return p})};Sk.builtin.reload=function(){throw new Sk.builtin.NotImplementedError("reload is not yet implemented");};Sk.builtin.vars=function(){throw new Sk.builtin.NotImplementedError("vars is not yet implemented");};Sk.builtin.apply_=function(){throw new Sk.builtin.NotImplementedError("apply is not yet implemented");};Sk.builtin.buffer=function(){throw new Sk.builtin.NotImplementedError("buffer is not yet implemented");};Sk.builtin.coerce=function(){throw new Sk.builtin.NotImplementedError("coerce is not yet implemented"); };Sk.builtin.intern=function(){throw new Sk.builtin.NotImplementedError("intern is not yet implemented");}},function(F,P){function b(V,Z){Z=new this.constructor;this.ht$type&&p.call(Z);Z.args=new Sk.builtin.tuple(V.slice(0));return Z}function e(V,Z){Sk.abstr.checkNoKwargs(Sk.abstr.typeName(this),Z);this.args=new Sk.builtin.tuple(V.slice(0))}function d(){return 1>=this.args.v.length?new Sk.builtin.str(this.args.v[0]):this.args.$r()}function f(V,Z,fa,qa,pa,D){pa||(pa=[]);const w=qa?{}:{sk$solidBase:!1}; fa={tp$init:qa||e,tp$doc:fa};D&&(fa.tp$str=D);return Sk.abstr.buildNativeClass(Z,{base:V,constructor:function(...C){V.apply(this,C);pa.forEach((G,L)=>{this["$"+G]=Sk.ffi.remapToPy(C[L])})},slots:fa,getsets:Object.fromEntries(pa.map(C=>[C,{$get(){return this["$"+C]||Sk.builtin.none.none$},$set(G){this["$"+C]=G||Sk.builtin.none.none$}}])),flags:w})}function h(V,Z,fa){const qa=V.prototype.tp$init;fa={tp$doc:fa,tp$init:qa};qa===e&&(fa.tp$new=b);return Sk.abstr.buildNativeClass(Z,{base:V,constructor:function(...pa){V.apply(this, pa)},slots:fa,flags:{sk$solidBase:!1}})}const p=Sk.abstr.buildNativeClass("BaseException",{constructor:function qa(Z,...fa){Sk.asserts.assert(this instanceof qa,"bad call to exception constructor, use 'new'");"string"===typeof Z&&(Z=new Sk.builtin.str(Z));this.args=new Sk.builtin.tuple(Z?[Z]:[]);this.traceback=2<=fa.length?[{filename:fa[0]||"",lineno:fa[1]}]:[];this.context=this.cause=null;this.$d=new Sk.builtin.dict},slots:{tp$getattr:Sk.generic.getAttr,tp$doc:"Common base class for all exceptions", tp$new:b,tp$init:e,$r(){let Z=this.tp$name;Z+="("+this.args.v.map(fa=>Sk.misceval.objectRepr(fa)).join(", ")+")";return new Sk.builtin.str(Z)},tp$str:d},getsets:{args:{$get(){return this.args},$set(Z){if(void 0===Z)throw new Sk.builtin.TypeError("args may not be deleted");this.args=new Sk.builtin.tuple(Z)}},__cause__:{$get(){return this.$cause||Sk.builtin.none.none$},$set(Z){if(!(Sk.builtin.checkNone(Z)||Z instanceof Sk.builtin.BaseException))throw new ia("exception cause must be None or derive from BaseException"); this.$cause=Z}},__dict__:Sk.generic.getSetDict},proto:{toString(){let Z=this.tp$name;Z+=": "+this.tp$str().v;return Z=0!==this.traceback.length?Z+(" on line "+this.traceback[0].lineno):Z+" at "}}});F=h(p,"SystemExit","Request to exit from the interpreter.");P=h(p,"KeyboardInterrupt","Program interrupted by user.");const g=h(p,"GeneratorExit","Request that a generator exit."),a=h(p,"Exception","Common base class for all non-exit exceptions."),c=f(a,"StopIteration","Signal the end from iterator.__next__().", function(Z,fa){e.call(this,Z,fa);this.$value=Z[0]||Sk.builtin.none.none$},["value"]),n=h(a,"StopAsyncIteration","Signal the end from iterator.__anext__()."),m=h(a,"ArithmeticError","Base class for arithmetic errors."),k=h(m,"FloatingPointError","Floating point operation failed."),u=h(m,"OverflowError","Result too large to be represented."),l=h(m,"ZeroDivisionError","Second argument to a division or modulo operation was zero."),q=h(a,"AssertionError","Assertion failed."),z=h(a,"AttributeError","Attribute not found."), r=h(a,"BufferError","Buffer error."),t=h(a,"EOFError","Read beyond end of file."),x=f(a,"ImportError","Import can't find module, or can't find name in module.",function(Z,fa){e.call(this,Z);const [qa,pa]=Sk.abstr.copyKeywordsToNamedArgs("ImportError",["name","path"],[],fa);this.$name=qa;this.$path=pa;1===Z.length&&(this.$msg=Z[0])},["msg","name","path"],function(){return Sk.builtin.checkString(this.$msg)?this.$msg:d.call(this)}),v=h(x,"ModuleNotFoundError","Module not found."),B=h(a,"LookupError", "Base class for lookup errors."),I=h(B,"IndexError","Sequence index out of range."),M=f(B,"KeyError","Mapping key not found.",null,null,function(){return 1===this.args.v.length?this.args.v[0].$r():d.call(this)}),S=h(a,"MemoryError","Out of memory."),E=h(a,"NameError","Name not found globally."),H=h(E,"UnboundLocalError","Local name referenced but not bound to a value."),y=f(a,"OSError","Base class for I/O related errors.",function(Z,fa){e.call(this,Z,fa)}),A=h(y,"FileNotFoundError","File not found."), J=h(y,"TimeoutError","Timeout expired."),Q=h(a,"ReferenceError","Weak ref proxy used after referent went away."),X=h(a,"RuntimeError","Unspecified run-time error."),aa=h(X,"NotImplementedError","Method or function hasn't been implemented yet."),ea=h(X,"RecursionError","Recursion limit exceeded."),na=f(a,"SyntaxError","Invalid syntax.",function(Z,fa){e.call(this,Z,fa);1<=Z.length&&(this.$msg=Z[0]);2===Z.length&&(Z=(new Sk.builtin.tuple(Z[1])).v,this.$filename=Z[0],this.$lineno=Z[1],this.$offset=Z[2], this.$text=Z[3])},["msg","filename","lineno","offset","text"],function(){return d.call(this)}),oa=h(na,"IndentationError","Improper indentation."),ca=h(oa,"TabError","Improper mixture of spaces and tabs."),la=h(a,"SystemError","Internal error in the Skulpt interpreter."),ia=h(a,"TypeError","Inappropriate argument type."),ka=h(a,"ValueError","Inappropriate argument value (of correct type)."),U=h(ka,"UnicodeError","Unicode related error."),ja=h(U,"UnicodeDecodeError","Unicode decoding error."),O=h(U, "UnicodeEncodeError","Unicode encoding error.");Object.assign(Sk.builtin,{BaseException:p,SystemExit:F,KeyboardInterrupt:P,GeneratorExit:g,Exception:a,StopIteration:c,StopAsyncIteration:n,ArithmeticError:m,FloatingPointError:k,OverflowError:u,ZeroDivisionError:l,AssertionError:q,AttributeError:z,BufferError:r,EOFError:t,ImportError:x,ModuleNotFoundError:v,LookupError:B,IndexError:I,KeyError:M,MemoryError:S,NameError:E,UnboundLocalError:H,OSError:y,IOError:y,FileNotFoundError:A,TimeoutError:J,ReferenceError:Q, RuntimeError:X,NotImplementedError:aa,RecursionError:ea,SyntaxError:na,IndentationError:oa,TabError:ca,SystemError:la,TypeError:ia,ValueError:ka,UnicodeError:U,UnicodeDecodeError:ja,UnicodeEncodeError:O});Sk.builtin.SuspensionError=h(a,"SuspensionError","Unsupported Suspension in code.");Sk.builtin.ExternalError=Sk.abstr.buildNativeClass("ExternalError",{constructor:function(...Z){this.nativeError=Z[0];if(!Sk.builtin.checkString(this.nativeError)&&(Z[0]=this.nativeError.toString(),Z[0].startsWith("RangeError: Maximum call")))return Z[0]= "Maximum call stack size exceeded",new ea(...Z);a.apply(this,Z)},base:a});Sk.builtin.getExcInfo=function(Z){return new Sk.builtin.tuple([Z.ob$type||Sk.builtin.none.none$,Z,Sk.builtin.none.none$])}},function(F,P){Sk.builtin.method=Sk.abstr.buildNativeClass("method",{constructor:function(b,e){Sk.asserts.assert(this instanceof Sk.builtin.method,"bad call to method constructor, use 'new'");this.im_func=b;this.im_self=e;this.im_call=b.tp$call},slots:{$r(){let b=this.im_func.tp$getattr(Sk.builtin.str.$qualname)|| this.im_func.tp$getattr(Sk.builtin.str.$name);b=b&&b.v||"?";return new Sk.builtin.str("")},tp$hash(){const b=Sk.abstr.objectHash(this.im_self),e=Sk.abstr.objectHash(this.im_func);return b+e},tp$call(b,e){var d=this.im_call;if(void 0===d)throw new Sk.builtin.TypeError("'"+Sk.abstr.typeName(this.im_func)+"' object is not callable");b=[this.im_self,...b];return d.call(this.im_func,b,e)},tp$new(b,e){Sk.abstr.checkNoKwargs("method",e);Sk.abstr.checkArgsLen("method", b,2,2);e=b[0];b=b[1];if(!Sk.builtin.checkCallable(e))throw new Sk.builtin.TypeError("first argument must be callable");if(Sk.builtin.checkNone(b))throw new Sk.builtin.TypeError("self must not be None");return new Sk.builtin.method(e,b)},tp$richcompare(b,e){if("Eq"!=e&&"NotEq"!=e||!(b instanceof Sk.builtin.method))return Sk.builtin.NotImplemented.NotImplemented$;let d;try{d=Sk.misceval.richCompareBool(this.im_self,b.im_self,"Eq",!1)&&this.im_func==b.im_func}catch(f){d=!1}return"Eq"==e?d:!d},tp$descr_get(b, e){return this},tp$getattr(b,e){const d=Sk.abstr.lookupSpecial(this,b);return void 0!==d?d:this.im_func.tp$getattr(b,e)}},getsets:{__func__:{$get(){return this.im_func}},__self__:{$get(){return this.im_self}},__doc__:{$get(){return this.im_func.tp$getattr(Sk.builtin.str.$doc)}}},flags:{sk$unacceptableBase:!0}})},function(F,P){function b(p){if(null!==p&&void 0!==p){if(!0===p.sk$int)return p.v;if(void 0!==p.nb$index)return p.nb$index();if("number"===typeof p&&Number.isInteger(p))return p}}function e(p, g){const a=b(p);if(void 0!==a)return a;g=(g||"'{tp$name}' object cannot be interpreted as an integer").replace("{tp$name}",Sk.abstr.typeName(p));throw new Sk.builtin.TypeError(g);}function d(){const p=(Sk.global.navigator||{}).userAgent||"";return-1{c=c.ob$type;if(!a.$isSubType(c))if(c.$isSubType(a))a=c;else throw new Sk.builtin.TypeError("metaclass conflict: the metaclass of a derived class must be a (non-strict) subclass of the metaclasses of all its bases"); });return a}function h(p,g,a,c,n){const m=p.tp$getattr(Sk.builtin.str.$prepare);let k,u=null;if(void 0===m)return[u,k];u=Sk.misceval.callsimArray(m,[g,a],c);if(!Sk.builtin.checkMapping(u))throw new Sk.builtin.TypeError(n?p.prototype.tp$name:".__prepare__() must return a mapping not '"+Sk.abstr.typeName(u)+"'");k={get(l,q){try{return Sk.abstr.objectGetItem(l,new Sk.builtin.str(Sk.unfixReserved(q)))}catch(z){if(!(z instanceof Sk.builtin.KeyError))throw z;}},set(l,q,z){Sk.abstr.objectSetItem(l, new Sk.builtin.str(Sk.unfixReserved(q)),z);return!0}};return[u,k]}Sk.misceval={};Sk.misceval.Suspension=function(p,g,a){this.$isSuspension=!0;void 0!==p&&void 0!==g&&(this.resume=function(){return p(g.resume())});this.child=g;this.optional=void 0!==g&&g.optional;this.data=void 0===a&&void 0!==g?g.data:a};Sk.exportSymbol("Sk.misceval.Suspension",Sk.misceval.Suspension);Sk.misceval.retryOptionalSuspensionOrThrow=function(p,g){for(;p instanceof Sk.misceval.Suspension;){if(!p.optional){g=new Sk.builtin.SuspensionError(g|| "Cannot call a function that blocks or suspends here");const a=[];for(;null!=p;)p.$lineno&&a.push({filename:p.$filename,lineno:p.$lineno,colno:p.$colno}),p=p.child;a.reverse();g.traceback.push(...a);throw g;}p=p.resume()}return p};Sk.exportSymbol("Sk.misceval.retryOptionalSuspensionOrThrow",Sk.misceval.retryOptionalSuspensionOrThrow);Sk.misceval.isIndex=function(p){return null!==p&&void 0!==p&&(void 0!==p.nb$index||"number"===typeof p&&Number.isInteger(p))};Sk.exportSymbol("Sk.misceval.isIndex",Sk.misceval.isIndex); Sk.misceval.asIndex=b;Sk.misceval.asIndexSized=function(p,g,a){a=e(p,a);if("number"===typeof a)return a;if(null==g)return JSBI.lessThan(a,JSBI.__ZERO)?-Number.MAX_SAFE_INTEGER:Number.MAX_SAFE_INTEGER;throw new g("cannot fit '"+Sk.abstr.typeName(p)+"' into an index-sized integer");};Sk.misceval.asIndexOrThrow=e;Sk.misceval.applySlice=function(p,g,a,c){return Sk.abstr.objectGetItem(p,new Sk.builtin.slice(g,a,null),c)};Sk.exportSymbol("Sk.misceval.applySlice",Sk.misceval.applySlice);Sk.misceval.assignSlice= function(p,g,a,c,n){g=new Sk.builtin.slice(g,a);return null===c?Sk.abstr.objectDelItem(p,g):Sk.abstr.objectSetItem(p,g,c,n)};Sk.exportSymbol("Sk.misceval.assignSlice",Sk.misceval.assignSlice);Sk.misceval.arrayFromArguments=function(p){var g;if(1!=p.length)return p;var a=p[0];a instanceof Sk.builtin.set?a=a.tp$iter().$obj:a instanceof Sk.builtin.dict&&(a=Sk.builtin.dict.prototype.keys.func_code(a));if(a instanceof Sk.builtin.list||a instanceof Sk.builtin.tuple)return a.v;if(Sk.builtin.checkIterable(a)){p= [];a=Sk.abstr.iter(a);for(g=a.tp$iternext();void 0!==g;g=a.tp$iternext())p.push(g);return p}throw new Sk.builtin.TypeError("'"+Sk.abstr.typeName(a)+"' object is not iterable");};Sk.exportSymbol("Sk.misceval.arrayFromArguments",Sk.misceval.arrayFromArguments);Sk.misceval.iterator=Sk.abstr.buildIteratorClass("iterator",{constructor:function(p,g){this.tp$iternext=g?p:function(a){let c=p();return a||void 0===c||!c.$isSuspension?c:Sk.misceval.retryOptionalSuspensionOrThrow(c)}},iternext:function(p){return this.tp$iternext(p)}, flags:{sk$unacceptableBase:!0}});Sk.misceval.swappedOp_={Eq:"Eq",NotEq:"NotEq",Lt:"Gt",LtE:"GtE",Gt:"Lt",GtE:"LtE"};Sk.misceval.opSymbols={Eq:"==",NotEq:"!=",Lt:"<",LtE:"<=",Gt:">",GtE:">=",Is:"is",IsNot:"is not",In_:"in",NotIn:"not in"};Sk.misceval.richCompareBool=function(p,g,a,c){Sk.asserts.assert(p.sk$object&&g.sk$object,"JS object passed to richCompareBool");var n=p.ob$type,m=g.ob$type,k=m!==n&&void 0===m.sk$baseClass&&m.$isSubType(n);if(!Sk.__future__.python3&&n!==m&&("GtE"===a||"Gt"===a||"LtE"=== a||"Lt"===a)){var u=[Sk.builtin.float_,Sk.builtin.int_,Sk.builtin.lng,Sk.builtin.bool];const q=[Sk.builtin.dict,Sk.builtin.enumerate,Sk.builtin.filter_,Sk.builtin.list,Sk.builtin.map_,Sk.builtin.str,Sk.builtin.tuple,Sk.builtin.zip_];var l=u.indexOf(n);n=q.indexOf(n);u=u.indexOf(m);m=q.indexOf(m);if(p===Sk.builtin.none.none$)switch(a){case "Lt":return!0;case "LtE":return!0;case "Gt":return!1;case "GtE":return!1}if(g===Sk.builtin.none.none$)switch(a){case "Lt":return!1;case "LtE":return!1;case "Gt":return!0; case "GtE":return!0}if(-1!==l&&-1!==m)switch(a){case "Lt":return!0;case "LtE":return!0;case "Gt":return!1;case "GtE":return!1}if(-1!==n&&-1!==u)switch(a){case "Lt":return!1;case "LtE":return!1;case "Gt":return!0;case "GtE":return!0}if(-1!==n&&-1!==m)switch(a){case "Lt":return nm;case "GtE":return n>=m}}if("Is"===a)return p===g;if("IsNot"===a)return p!==g;if("In"===a)return Sk.misceval.chain(Sk.abstr.sequenceContains(g,p,c),Sk.misceval.isTrue);if("NotIn"=== a)return Sk.misceval.chain(Sk.abstr.sequenceContains(g,p,c),function(q){return!Sk.misceval.isTrue(q)});m={Eq:"ob$eq",NotEq:"ob$ne",Gt:"ob$gt",GtE:"ob$ge",Lt:"ob$lt",LtE:"ob$le"};l=m[a];if(k&&(c=m[Sk.misceval.swappedOp_[a]],(c=g[c](p))!==Sk.builtin.NotImplemented.NotImplemented$)||(c=p[l](g))!==Sk.builtin.NotImplemented.NotImplemented$||!k&&(c=m[Sk.misceval.swappedOp_[a]],(c=g[c](p))!==Sk.builtin.NotImplemented.NotImplemented$))return Sk.misceval.isTrue(c);if(!Sk.__future__.python3){if(k=Sk.abstr.lookupSpecial(p, Sk.builtin.str.$cmp))try{c=Sk.misceval.callsimArray(k,[g]);if(Sk.builtin.checkNumber(c)){c=Sk.builtin.asnum$(c);if("Eq"===a)return 0===c;if("NotEq"===a)return 0!==c;if("Lt"===a)return 0>c;if("Gt"===a)return 0=c;if("GtE"===a)return 0<=c}if(c!==Sk.builtin.NotImplemented.NotImplemented$)throw new Sk.builtin.TypeError("comparison did not return an int");}catch(q){throw new Sk.builtin.TypeError("comparison did not return an int");}if(k=Sk.abstr.lookupSpecial(g,Sk.builtin.str.$cmp))try{c= Sk.misceval.callsimArray(k,[p]);if(Sk.builtin.checkNumber(c)){c=Sk.builtin.asnum$(c);if("Eq"===a)return 0===c;if("NotEq"===a)return 0!==c;if("Lt"===a)return 0c;if("LtE"===a)return 0<=c;if("GtE"===a)return 0>=c}if(c!==Sk.builtin.NotImplemented.NotImplemented$)throw new Sk.builtin.TypeError("comparison did not return an int");}catch(q){throw new Sk.builtin.TypeError("comparison did not return an int");}if(p===Sk.builtin.none.none$&&g===Sk.builtin.none.none$){if("Eq"===a)return p.v=== g.v;if("NotEq"===a)return p.v!==g.v;if("Gt"===a)return p.v>g.v;if("GtE"===a)return p.v>=g.v;if("Lt"===a)return p.v";throw g;}};Sk.exportSymbol("Sk.misceval.objectRepr",Sk.misceval.objectRepr);Sk.misceval.opAllowsEquality=function(p){switch(p){case "LtE":case "Eq":case "GtE":return!0}return!1};Sk.exportSymbol("Sk.misceval.opAllowsEquality",Sk.misceval.opAllowsEquality);Sk.misceval.isTrue=function(p){return!0===p||p===Sk.builtin.bool.true$?!0:!1===p|| p===Sk.builtin.bool.false$||null===p||void 0===p?!1:p.nb$bool?p.nb$bool():p.sq$length?0!==p.sq$length():!!p};Sk.exportSymbol("Sk.misceval.isTrue",Sk.misceval.isTrue);Sk.misceval.softspace_=!1;Sk.misceval.print_=function(p){Sk.misceval.softspace_&&("\n"!==p&&Sk.output(" "),Sk.misceval.softspace_=!1);var g=new Sk.builtin.str(p);return Sk.misceval.chain(Sk.importModule("sys",!1,!0),function(a){return Sk.misceval.apply(a.$d.stdout.write,void 0,void 0,void 0,[a.$d.stdout,g])},function(){var a;(a=0===g.v.length)|| (a=g.v[g.v.length-1],a=!("\n"===a||"\t"===a||"\r"===a));if(a||" "===g.v[g.v.length-1])Sk.misceval.softspace_=!0})};Sk.exportSymbol("Sk.misceval.print_",Sk.misceval.print_);Sk.misceval.loadname=function(p,g){g=g[p];if(void 0!==g)return g;g=Sk.builtins[p];if(void 0!==g)return g;throw new Sk.builtin.NameError("name '"+Sk.unfixReserved(p)+"' is not defined");};Sk.exportSymbol("Sk.misceval.loadname",Sk.misceval.loadname);Sk.misceval.call=function(p,g,a,c,n){n=Array.prototype.slice.call(arguments,4);return Sk.misceval.apply(p, g,a,c,n)};Sk.exportSymbol("Sk.misceval.call",Sk.misceval.call);Sk.misceval.callAsync=function(p,g,a,c,n,m){m=Array.prototype.slice.call(arguments,5);return Sk.misceval.applyAsync(p,g,a,c,n,m)};Sk.exportSymbol("Sk.misceval.callAsync",Sk.misceval.callAsync);Sk.misceval.callOrSuspend=function(p,g,a,c,n){n=Array.prototype.slice.call(arguments,4);return Sk.misceval.applyOrSuspend(p,g,a,c,n)};Sk.exportSymbol("Sk.misceval.callOrSuspend",Sk.misceval.callOrSuspend);Sk.misceval.callsim=function(p,g){g=Array.prototype.slice.call(arguments, 1);return Sk.misceval.apply(p,void 0,void 0,void 0,g)};Sk.exportSymbol("Sk.misceval.callsim",Sk.misceval.callsim);Sk.misceval.callsimArray=function(p,g,a){g=g||[];return Sk.misceval.retryOptionalSuspensionOrThrow(Sk.misceval.callsimOrSuspendArray(p,g,a))};Sk.exportSymbol("Sk.misceval.callsimArray",Sk.misceval.callsimArray);Sk.misceval.callsimAsync=function(p,g,a){a=Array.prototype.slice.call(arguments,2);return Sk.misceval.applyAsync(p,g,void 0,void 0,void 0,a)};Sk.exportSymbol("Sk.misceval.callsimAsync", Sk.misceval.callsimAsync);Sk.misceval.callsimOrSuspend=function(p,g){g=Array.prototype.slice.call(arguments,1);return Sk.misceval.applyOrSuspend(p,void 0,void 0,void 0,g)};Sk.exportSymbol("Sk.misceval.callsimOrSuspend",Sk.misceval.callsimOrSuspend);Sk.misceval.callsimOrSuspendArray=function(p,g,a){g=g||[];return void 0!==p&&p.tp$call?p.tp$call(g,a):Sk.misceval.applyOrSuspend(p,void 0,void 0,a,g)};Sk.exportSymbol("Sk.misceval.callsimOrSuspendArray",Sk.misceval.callsimOrSuspendArray);Sk.misceval.apply= function(p,g,a,c,n){p=Sk.misceval.applyOrSuspend(p,g,a,c,n);return p instanceof Sk.misceval.Suspension?Sk.misceval.retryOptionalSuspensionOrThrow(p):p};Sk.exportSymbol("Sk.misceval.apply",Sk.misceval.apply);Sk.misceval.asyncToPromise=function(p,g){return new Promise(function(a,c){try{(function k(m){try{for(var u=function(){try{k(m.resume())}catch(t){c(t)}},l=function(t){try{m.data.result=t,u()}catch(x){c(x)}},q=function(t){try{m.data.error=t,u()}catch(x){c(x)}};m instanceof Sk.misceval.Suspension;){var z= g&&(g[m.data.type]||g["*"]);if(z){var r=z(m);if(r){r.then(k,c);return}}if("Sk.promise"==m.data.type){m.data.promise.then(l,q);return}if("Sk.yield"==m.data.type){Sk.global.setImmediate(u);return}if("Sk.delay"==m.data.type){Sk.global.setImmediate(u);return}if(m.optional)m=m.resume();else throw new Sk.builtin.SuspensionError("Unhandled non-optional suspension of type '"+m.data.type+"'");}a(m)}catch(t){c(t)}})(p())}catch(n){c(n)}})};Sk.exportSymbol("Sk.misceval.asyncToPromise",Sk.misceval.asyncToPromise); Sk.misceval.applyAsync=function(p,g,a,c,n,m){return Sk.misceval.asyncToPromise(function(){return Sk.misceval.applyOrSuspend(g,a,c,n,m)},p)};Sk.exportSymbol("Sk.misceval.applyAsync",Sk.misceval.applyAsync);Sk.misceval.chain=function(p,g){for(var a=1,c=p,n,m;;){if(a==arguments.length)return c;if(c&&c.$isSuspension)break;c=arguments[a](c);a++}m=Array(arguments.length-a);for(n=0;np[c++]},g,a)};Sk.misceval.arrayFromIterable=function(p,g){if(void 0===p)return[]; if(void 0===p.ht$type&&void 0!==p.sk$asarray)return p.sk$asarray();const a=[];p=Sk.misceval.chain(Sk.misceval.iterFor(Sk.abstr.iter(p),c=>{a.push(c)}),()=>a);return g?p:Sk.misceval.retryOptionalSuspensionOrThrow(p)};Sk.misceval.Break=function(p){if(!(this instanceof Sk.misceval.Break))return new Sk.misceval.Break(p);this.brValue=p};Sk.exportSymbol("Sk.misceval.Break",Sk.misceval.Break);Sk.misceval.applyOrSuspend=function(p,g,a,c,n){var m;if(null==p||p===Sk.builtin.none.none$)throw new Sk.builtin.TypeError("'"+ Sk.abstr.typeName(p)+"' object is not callable");"function"===typeof p&&void 0===p.tp$call&&(p=new Sk.builtin.func(p));var k=p.tp$call;if(void 0!==k){if(a)for(a=a.tp$iter(),m=a.tp$iternext();void 0!==m;m=a.tp$iternext())n.push(m);if(g)for(a=Sk.abstr.iter(g),m=a.tp$iternext();void 0!==m;m=a.tp$iternext()){if(!Sk.builtin.checkString(m))throw new Sk.builtin.TypeError("Function keywords must be strings");c.push(m.v);c.push(Sk.abstr.objectGetItem(g,m,!1))}return k.call(p,n,c,g)}k=p.__call__;if(void 0!== k)return n.unshift(p),Sk.misceval.apply(k,g,a,c,n);throw new Sk.builtin.TypeError("'"+Sk.abstr.typeName(p)+"' object is not callable");};Sk.exportSymbol("Sk.misceval.applyOrSuspend",Sk.misceval.applyOrSuspend);Sk.misceval.promiseToSuspension=function(p){var g=new Sk.misceval.Suspension;g.resume=function(){if(g.data.error)throw g.data.error;return g.data.result};g.data={type:"Sk.promise",promise:p};return g};Sk.exportSymbol("Sk.misceval.promiseToSuspension",Sk.misceval.promiseToSuspension);Sk.misceval.buildClass= function(p,g,a,c,n,m){a=new Sk.builtin.str(a);const k=new Sk.builtin.tuple(c);m=m||[];c=c||[];let u;var l=!0;const q=m.indexOf("metaclass");-1{Sk.abstr.objectSetItem(z,new Sk.builtin.str(x),r[x])});return Sk.misceval.callsimOrSuspendArray(u,[a,k,z],m)};Sk.exportSymbol("Sk.misceval.buildClass",Sk.misceval.buildClass)},function(F,P){Sk.builtin.callable_iter_=Sk.abstr.buildIteratorClass("callable_iterator",{constructor:function(b, e){if(!Sk.builtin.checkCallable(b))throw new Sk.builtin.TypeError("iter(v, w): v must be callable");this.$callable=b;this.$sentinel=e;this.$flag=!1},iternext(b){if(!0!==this.$flag){if(b)return b=Sk.misceval.callsimOrSuspendArray(this.$callable,[]),Sk.misceval.chain(b,e=>{if(Sk.misceval.richCompareBool(e,this.$sentinel,"Eq",!0))this.$flag=!0;else return e});b=Sk.misceval.callsimArray(this.$callable,[]);if(Sk.misceval.richCompareBool(b,this.$sentinel,"Eq",!1))this.$flag=!0;else return b}},flags:{sk$unacceptableBase:!0}}); Sk.builtin.seq_iter_=Sk.abstr.buildIteratorClass("iterator",{constructor:function(b){this.$index=0;this.$seq=b},iternext(b){let e;e=Sk.misceval.tryCatch(()=>this.$seq.mp$subscript(new Sk.builtin.int_(this.$index++),b),d=>{if(d instanceof Sk.builtin.IndexError||d instanceof Sk.builtin.StopIteration)this.gi$ret=d.$value||Sk.builtin.none.none$;else throw d;});return b?e:Sk.misceval.retryOptionalSuspensionOrThrow(e)},methods:{__length_hint__:{$flags:{NoArgs:!0},$meth(){if(this.$seq.sq$length)return this.$seq.sq$length()- this.$index;throw new Sk.builtin.NotImplementedError("len is not implemented for "+Sk.abstr.typeName(this.$seq));}}},flags:{sk$unacceptableBase:!0}});Sk.exportSymbol("Sk.builtin.callable_iter_",Sk.builtin.callable_iter_)},function(F,P){Sk.builtin.list=Sk.abstr.buildNativeClass("list",{constructor:function(d){void 0===d?d=[]:Array.isArray(d)||(d=Sk.misceval.arrayFromIterable(d));Sk.asserts.assert(this instanceof Sk.builtin.list,"bad call to list, use 'new' with an Array of python objects");this.v= d;this.in$repr=!1},slots:{tp$getattr:Sk.generic.getAttr,tp$as_sequence_or_mapping:!0,tp$hash:Sk.builtin.none.none$,tp$doc:"Built-in mutable sequence.\n\nIf no argument is given, the constructor creates a new empty list.\nThe argument must be an iterable if specified.",tp$new:Sk.generic.new,tp$init(d,f){Sk.abstr.checkNoKwargs("list",f);Sk.abstr.checkArgsLen("list",d,0,1);return Sk.misceval.chain(Sk.misceval.arrayFromIterable(d[0],!0),h=>{this.v=h})},$r(){if(this.in$repr)return new Sk.builtin.str("[...]"); this.in$repr=!0;const d=this.v.map(f=>Sk.misceval.objectRepr(f));this.in$repr=!1;return new Sk.builtin.str("["+d.join(", ")+"]")},tp$richcompare:Sk.generic.seqCompare,tp$iter(){return new b(this)},sq$length(){return this.v.length},sq$concat(d){if(!(d instanceof Sk.builtin.list))throw new Sk.builtin.TypeError("can only concatenate list to list");return new Sk.builtin.list(this.v.concat(d.v))},sq$contains(d){for(let f=this.tp$iter(),h=f.tp$iternext();void 0!==h;h=f.tp$iternext())if(h===d||Sk.misceval.richCompareBool(h, d,"Eq"))return!0;return!1},sq$repeat(d){if(!Sk.misceval.isIndex(d))throw new Sk.builtin.TypeError("can't multiply sequence by non-int of type '"+Sk.abstr.typeName(d)+"'");d=Sk.misceval.asIndexSized(d,Sk.builtin.OverflowError);if(d*this.v.length>Number.MAX_SAFE_INTEGER)throw new Sk.builtin.OverflowError;const f=[];for(let h=0;h{f.push(this.v[h])});return new Sk.builtin.list(f)}throw new Sk.builtin.TypeError("list indices must be integers or slices, not "+Sk.abstr.typeName(d));},mp$ass_subscript(d,f){void 0===f?this.del$subscript(d):this.ass$subscript(d,f)},sq$inplace_concat(d){return d===this?(this.v.push(...this.v),this):Sk.misceval.chain(Sk.misceval.iterFor(Sk.abstr.iter(d),f=>{this.v.push(f)}), ()=>this)},sq$inplace_repeat(d){if(!Sk.misceval.isIndex(d))throw new Sk.builtin.TypeError("can't multiply sequence by non-int of type '"+Sk.abstr.typeName(d)+"'");d=Sk.misceval.asIndexSized(d,Sk.builtin.OverflowError);const f=this.v.length;if(0>=d)this.v.length=0;else if(d*f>Number.MAX_SAFE_INTEGER)throw new Sk.builtin.OverflowError;for(let h=1;h{this.v.push(f)}),()=>Sk.builtin.none.none$)},$flags:{OneArg:!0},$textsig:"($self, iterable, /)",$doc:"Extend list by appending elements from the iterable."}, pop:{$meth(d){d=void 0===d?this.v.length-1:Sk.misceval.asIndexSized(d,Sk.builtin.OverflowError);d=this.list$inRange(d,"pop index out of range");const f=this.v[d];this.v.splice(d,1);return f},$flags:{MinArgs:0,MaxArgs:1},$textsig:"($self, index=-1, /)",$doc:"Remove and return item at index (default last).\n\nRaises IndexError if list is empty or index is out of range."},remove:{$meth(d){d=this.list$indexOf(d);if(-1===d)throw new Sk.builtin.ValueError("list.remove(x): x not in list");this.v.splice(d, 1);return Sk.builtin.none.none$},$flags:{OneArg:!0},$textsig:"($self, value, /)",$doc:"Remove first occurrence of value.\n\nRaises ValueError if the value is not present."},sort:{$meth(d,f){if(d.length)throw new Sk.builtin.TypeError("sort() takes no positional arguments");const [h,p]=Sk.abstr.copyKeywordsToNamedArgs("sort",["key","reverse"],d,f,[Sk.builtin.none.none$,Sk.builtin.bool.false$]);return this.list$sort(void 0,h,p)},$flags:{FastCall:!0},$textsig:"($self, /, *, key=None, reverse=False)", $doc:"Stable sort *IN PLACE*."},index:{$meth(d,f,h){if(void 0!==f&&!Sk.misceval.isIndex(f)||void 0!==h&&!Sk.misceval.isIndex(h))throw new Sk.builtin.TypeError("slice indices must be integers or have an __index__ method");f=this.list$indexOf(d,f,h);if(-1===f)throw new Sk.builtin.ValueError(Sk.misceval.objectRepr(d)+" is not in list");return new Sk.builtin.int_(f)},$flags:{MinArgs:1,MaxArgs:3},$textsig:"($self, value, start=0, stop=sys.maxsize, /)",$doc:"Return first index of value.\n\nRaises ValueError if the value is not present."}, count:{$meth(d){let f=0;const h=this.v.length;for(let p=0;pd&&(d+=this.v.length);if(0<=d&&d{h.push(p)});if(!Sk.builtin.checkIterable(f))throw new Sk.builtin.TypeError("must assign iterable to extended slice"); d=Sk.misceval.arrayFromIterable(f);if(h.length!==d.length)throw new Sk.builtin.ValueError("attempt to assign sequence of size "+d.length+" to extended slice of size "+h.length);for(f=0;f{this.v.splice(p-h,1);h+=f})},valueOf(){return this.v}}});Sk.exportSymbol("Sk.builtin.list",Sk.builtin.list);Sk.builtin.list.py2$methods={sort:{$name:"sort",$meth(d,f){const [h,p,g]=Sk.abstr.copyKeywordsToNamedArgs("sort",["cmp","key","reverse"], d,f,[Sk.builtin.none.none$,Sk.builtin.none.none$,Sk.builtin.bool.false$]);return this.list$sort(h,p,g)},$flags:{FastCall:!0},$textsig:"($self, cmp=None, key=None, reverse=False)",$doc:"Stable sort *IN PLACE*."}};var b=Sk.abstr.buildIteratorClass("list_iterator",{constructor:function(d){this.$index=0;this.$seq=d.v},iternext:Sk.generic.iterNextWithArray,methods:{__length_hint__:Sk.generic.iterLengthHintWithArrayMethodDef},flags:{sk$unacceptableBase:!0}}),e=Sk.abstr.buildIteratorClass("list_reverseiterator", {constructor:function(d){this.$index=d.v.length-1;this.$seq=d.v},iternext(){const d=this.$seq[this.$index--];if(void 0===d)this.tp$iternext=()=>{};else return d},methods:{__length_hint__:Sk.generic.iterReverseLengthHintMethodDef},flags:{sk$unacceptableBase:!0}})},function(F,P,b){function e(E){var H=E.replace(v,"").replace(B,"_").toLowerCase();H=x[H];return void 0===H?E:H}function d(E,H,y){if(void 0===H)H="utf-8";else if(Sk.builtin.checkString(H))H=H.$jsstr();else throw new Sk.builtin.TypeError(E+ "() argument "+("bytesstr".includes(E)?2:1)+" must be str not "+Sk.abstr.typeName(H));if(void 0===y)y="strict";else if(Sk.builtin.checkString(y))y=y.$jsstr();else throw new Sk.builtin.TypeError(E+"() argument "+("bytesstr".includes(E)?3:2)+" must be str not "+Sk.abstr.typeName(y));return{encoding:H,errors:y}}function f(E,H,y){E=E.$jsstr();H=e(H);if("strict"!==y&&"ignore"!==y&&"replace"!==y)throw new Sk.builtin.NotImplementedError("'"+y+"' error handling not implemented in Skulpt");if("ascii"===H){H= [];for(A in E){const J=E.charCodeAt(A);if(127=E?"\\x":"\\u";E=E.toString(16);3===E.length&&(E=E.slice(1,3));return E=1===E.length? H+"0"+E:H+E}function p(E,H){({encoding:E,errors:H}=d("decode",E,H));E=e(E);if("strict"!==H&&"ignore"!==H&&"replace"!==H)throw new Sk.builtin.NotImplementedError("'"+H+"' error handling not implemented in Skulpt");if("ascii"===E){E=this.v;var y="";for(let A=0;A=y&&Hy)return new Sk.builtin.tuple([new Sk.builtin.bytes,new Sk.builtin.bytes,this])}else if(y=this.find$subleft(H,0,this.v.length), 0>y)return new Sk.builtin.tuple([this,new Sk.builtin.bytes,new Sk.builtin.bytes]);return new Sk.builtin.tuple([new Sk.builtin.bytes(this.v.subarray(0,y)),new Sk.builtin.bytes(H),new Sk.builtin.bytes(this.v.subarray(y+H.length))])}}function n(E,H){return function(y){var A=void 0===y||y===Sk.builtin.none.none$?new Uint8Array([9,10,11,12,13,32,133]):this.get$raw(y);y=0;var J=this.v.length;if(E)for(;yy&&A.includes(this.v[J-1]);)J--;A=new Uint8Array(J-y);for(J= 0;J=E||32===E}function u(E){return 97<=E&&122>=E}function l(E){return 65<=E&&90>=E}function q(E){return 48<=E&&57>=E}function z(E,H){return function(){return 0===this.v.length?H?Sk.builtin.bool.true$:Sk.builtin.bool.false$:this.v.every(y=>E(y))?Sk.builtin.bool.true$:Sk.builtin.bool.false$}}function r(E,H){return function(){let y=!1;for(let A= 0;A0<=H&&255>=H),"bad internal call to bytes with array"),this.v=new Uint8Array(E);else if("string"===typeof E){let H;const y=new Uint8Array(E.length),A=E.length;for(let J=0;J bytes\nbytes(string, encoding[, errors]) -> bytes\nbytes(bytes_or_buffer) -> immutable copy of bytes_or_buffer\nbytes(int) -> bytes object of size given by the parameter initialized with null bytes\nbytes() -> empty bytes object\n\nConstruct an immutable array of bytes from:\n - an iterable yielding integers in range(256)\n - a text string encoded using the specified encoding\n - any object implementing the buffer API.\n - an integer", tp$new(E,H){if(this!==Sk.builtin.bytes.prototype)return this.$subtype_new(E,H);H=H||[];let y;if(1>=E.length&&0===+H.length)E=E[0];else{[E,H,y]=Sk.abstr.copyKeywordsToNamedArgs("bytes",[null,"pySource","errors"],E,H);({encoding:H,errors:y}=d("bytes",H,y));if(!Sk.builtin.checkString(E))throw new Sk.builtin.TypeError("encoding or errors without a string argument");return f(E,H,y)}if(void 0===E)return new Sk.builtin.bytes;if(void 0!==(H=Sk.abstr.lookupSpecial(E,Sk.builtin.str.$bytes)))return E=Sk.misceval.callsimOrSuspendArray(H, []),Sk.misceval.chain(E,A=>{if(!Sk.builtin.checkBytes(A))throw new Sk.builtin.TypeError("__bytes__ returned non-bytes (type "+Sk.abstr.typeName(A)+")");return A});if(Sk.misceval.isIndex(E)){E=Sk.misceval.asIndexSized(E,Sk.builtin.OverflowError);if(0>E)throw new Sk.builtin.ValueError("negative count");return new Sk.builtin.bytes(E)}if(Sk.builtin.checkBytes(E))return new Sk.builtin.bytes(E.v);if(Sk.builtin.checkString(E))throw new Sk.builtin.TypeError("string argument without an encoding");if(Sk.builtin.checkIterable(E)){let A= [];E=Sk.misceval.iterFor(Sk.abstr.iter(E),J=>{J=Sk.misceval.asIndexSized(J);if(0>J||255new Sk.builtin.bytes(A))}throw new Sk.builtin.TypeError("cannot convert '"+Sk.abstr.typeName(E)+"' object into bytes");},$r(){let E,H="'";const y=-1!==this.v.indexOf(34);let A="";for(let J=0;JE||10E||13E||126E.length||y[A]>E[A];case "GtE":return A===J&&y.length>=E.length||y[A]>=E[A]}},tp$hash(){return(new Sk.builtin.str(this.$jsstr())).tp$hash()},tp$as_sequence_or_mapping:!0,mp$subscript(E){if(Sk.misceval.isIndex(E)){let H=Sk.misceval.asIndexSized(E, Sk.builtin.IndexError);if(void 0!==H){0>H&&(H=this.v.length+H);if(0>H||H>=this.v.length)throw new Sk.builtin.IndexError("index out of range");return new Sk.builtin.int_(this.v[H])}}else if(E instanceof Sk.builtin.slice){const H=[];E.sssiter$(this.v.length,y=>{H.push(this.v[y])});return new Sk.builtin.bytes(new Uint8Array(H))}throw new Sk.builtin.TypeError("byte indices must be integers or slices, not "+Sk.abstr.typeName(E));},sq$length(){return this.v.length},sq$concat(E){if(!(E instanceof Sk.builtin.bytes))throw new Sk.builtin.TypeError("can't concat "+ Sk.abstr.typeName(E)+" to bytes");const H=new Uint8Array(this.v.length+E.v.length);let y;for(y=0;yNumber.MAX_SAFE_INTEGER)throw new Sk.builtin.OverflowError;if(0>= E)return new Sk.builtin.bytes;E=new Uint8Array(H);let y=0;for(;yE||255H?Infinity:H;E=Sk.builtin.checkNone(E)?null:this.get$raw(E);if(null!==E&&!E.length)throw new Sk.builtin.ValueError("empty separator");return{sep:E,maxsplit:H}},find$left:a(!1), find$right:a(!0),find$subleft:function(E,H,y){y=y-E.length+1;let A=H;for(;AJ===this.v[A+Q]))return A;A++}return-1},find$subright(E,H,y){let A=y-E.length;for(;A>=H;){if(E.every((J,Q)=>J===this.v[A+Q]))return A;A--}return-1},$subtype_new(E,H){const y=new this.constructor;E=Sk.builtin.bytes.prototype.tp$new(E,H);y.v=E.v;return y},sk$asarray(){const E=[];this.v.forEach(H=>{E.push(new Sk.builtin.int_(H))});return E},valueOf(){return this.v}},flags:{str$encode:f,$decode:p,check$encodeArgs:d}, methods:{__getnewargs__:{$meth(){return new Sk.builtin.tuple(new Sk.builtin.bytes(this.v))},$flags:{NoArgs:!0},$textsig:null,$doc:null},capitalize:{$meth(){const E=this.v.length;if(0===E)return new Sk.builtin.bytes(this.v);const H=new Uint8Array(E);let y=this.v[0];H[0]=u(y)?y-32:y;for(let A=1;A copy of B\n\nReturn a copy of B with only its first character capitalized (ASCII)\nand the rest lower-cased."}, center:{$meth:m("center",!1,!0),$flags:{MinArgs:1,MaxArgs:2},$textsig:null,$doc:"B.center(width[, fillchar]) -> copy of B\n\nReturn B centered in a string of length width. Padding is\ndone using the specified fill character (default is a space)."},count:{$meth(E,H,y){E=this.get$tgt(E);({start:H,end:y}=Sk.builtin.slice.startEnd$wrt(this,H,y));let A=0;if("number"===typeof E)for(;HQ===this.v[J+X])&&(A++,J+=E.length-1)}return new Sk.builtin.int_(A)}, $flags:{MinArgs:1,MaxArgs:3},$textsig:null,$doc:"B.count(sub[, start[, end]]) -> int\n\nReturn the number of non-overlapping occurrences of subsection sub in\nbytes B[start:end]. Optional arguments start and end are interpreted\nas in slice notation."},decode:{$meth:p,$flags:{NamedArgs:["encoding","errors"]},$textsig:"($self, /, encoding='utf-8', errors='strict')",$doc:"Decode the bytes using the codec registered for encoding.\n\n encoding\n The encoding with which to decode the bytes.\n errors\n The error handling scheme to use for the handling of decoding errors.\n The default is 'strict' meaning that decoding errors raise a\n UnicodeDecodeError. Other possible values are 'ignore' and 'replace'\n as well as any other name registered with codecs.register_error that\n can handle UnicodeDecodeErrors."}, endswith:{$meth:g("endswith",(E,H)=>{const y=E.length-H.length;return 0<=y&&H.every((A,J)=>A===E[y+J])}),$flags:{MinArgs:1,MaxArgs:3},$textsig:null,$doc:"B.endswith(suffix[, start[, end]]) -> bool\n\nReturn True if B ends with the specified suffix, False otherwise.\nWith optional start, test B beginning at that position.\nWith optional end, stop comparing B at that position.\nsuffix can also be a tuple of bytes to try."},expandtabs:{$meth(E){E=Sk.misceval.asIndexSized(E,Sk.builtin.OverflowError,"an integer is required (got type {tp$nam})"); const H=[];let y=0;for(let J=0;J copy of B\n\nReturn a copy of B where all tab characters are expanded using spaces.\nIf tabsize is not given, a tab size of 8 characters is assumed."},find:{$meth:function(E,H,y){return new Sk.builtin.int_(this.find$left(E, H,y))},$flags:{MinArgs:1,MaxArgs:3},$textsig:null,$doc:"B.find(sub[, start[, end]]) -> int\n\nReturn the lowest index in B where subsection sub is found,\nsuch that sub is contained within B[start,end]. Optional\narguments start and end are interpreted as in slice notation.\n\nReturn -1 on failure."},hex:{$meth(){let E="";for(let H=0;H string\n\nCreate a string of hexadecimal numbers from a bytes object.\nExample: b'\\xb9\\x01\\xef'.hex() -> 'b901ef'."}, index:{$meth:function(E,H,y){E=this.find$left(E,H,y);if(-1===E)throw new Sk.builtin.ValueError("subsection not found");return new Sk.builtin.int_(E)},$flags:{MinArgs:1,MaxArgs:3},$textsig:null,$doc:"B.index(sub[, start[, end]]) -> int\n\nReturn the lowest index in B where subsection sub is found,\nsuch that sub is contained within B[start,end]. Optional\narguments start and end are interpreted as in slice notation.\n\nRaises ValueError when the subsection is not found."},isalnum:{$meth:z(E=>q(E)|| u(E)||l(E)),$flags:{NoArgs:!0},$textsig:null,$doc:"B.isalnum() -> bool\n\nReturn True if all characters in B are alphanumeric\nand there is at least one character in B, False otherwise."},isalpha:{$meth:z(E=>65<=E&&90>=E||97<=E&&122>=E),$flags:{NoArgs:!0},$textsig:null,$doc:"B.isalpha() -> bool\n\nReturn True if all characters in B are alphabetic\nand there is at least one character in B, False otherwise."},isascii:{$meth:z(E=>0<=E&&127>=E,!0),$flags:{NoArgs:!0},$textsig:null,$doc:"B.isascii() -> bool\n\nReturn True if B is empty or all characters in B are ASCII,\nFalse otherwise."}, isdigit:{$meth:z(q),$flags:{NoArgs:!0},$textsig:null,$doc:"B.isdigit() -> bool\n\nReturn True if all characters in B are digits\nand there is at least one character in B, False otherwise."},islower:{$meth:r(u,l),$flags:{NoArgs:!0},$textsig:null,$doc:"B.islower() -> bool\n\nReturn True if all cased characters in B are lowercase and there is\nat least one cased character in B, False otherwise."},isspace:{$meth:z(k),$flags:{NoArgs:!0},$textsig:null,$doc:"B.isspace() -> bool\n\nReturn True if all characters in B are whitespace\nand there is at least one character in B, False otherwise."}, istitle:{$meth:function(){let E=!1,H=!1;for(let y=0;y bool\n\nReturn True if B is a titlecased string and there is at least one\ncharacter in B, i.e. uppercase characters may only follow uncased\ncharacters and lowercase characters only cased ones. Return False\notherwise."}, isupper:{$meth:r(l,u),$flags:{NoArgs:!0},$textsig:null,$doc:"B.isupper() -> bool\n\nReturn True if all cased characters in B are uppercase and there is\nat least one cased character in B, False otherwise."},join:{$meth(E){const H=[];let y=0;return Sk.misceval.chain(Sk.misceval.iterFor(Sk.abstr.iter(E),A=>{if(!(A instanceof Sk.builtin.bytes))throw new Sk.builtin.TypeError("sequence item "+y+": expected a bytes-like object, "+Sk.abstr.typeName(A)+" found");y++;H.length&&H.push(...this.v);H.push(...A.v)}), ()=>new Sk.builtin.bytes(new Uint8Array(H)))},$flags:{OneArg:!0},$textsig:"($self, iterable_of_bytes, /)",$doc:"Concatenate any number of bytes objects.\n\nThe bytes whose method is called is inserted in between each pair.\n\nThe result is returned as a new bytes object.\n\nExample: b'.'.join([b'ab', b'pq', b'rs']) -> b'ab.pq.rs'."},ljust:{$meth:m("ljust",!1,!1),$flags:{MinArgs:1,MaxArgs:2},$textsig:null,$doc:"B.ljust(width[, fillchar]) -> copy of B\n\nReturn B left justified in a string of length width. Padding is\ndone using the specified fill character (default is a space)."}, lower:{$meth:t(E=>l(E)?E+32:E),$flags:{NoArgs:!0},$textsig:null,$doc:"B.lower() -> copy of B\n\nReturn a copy of B with all ASCII characters converted to lowercase."},lstrip:{$meth:n(!0,!1),$flags:{MinArgs:0,MaxArgs:1},$textsig:"($self, bytes=None, /)",$doc:"Strip leading bytes contained in the argument.\n\nIf the argument is omitted or None, strip leading ASCII whitespace."},partition:{$meth:c(!1),$flags:{OneArg:!0},$textsig:"($self, sep, /)",$doc:"Partition the bytes into three parts using the given separator.\n\nThis will search for the separator sep in the bytes. If the separator is found,\nreturns a 3-tuple containing the part before the separator, the separator\nitself, and the part after it.\n\nIf the separator is not found, returns a 3-tuple containing the original bytes\nobject and two empty bytes objects."}, replace:{$meth(E,H,y){E=this.get$raw(E);H=this.get$raw(H);y=void 0===y?-1:Sk.misceval.asIndexSized(y,Sk.builtin.OverflowError);y=0>y?Infinity:y;const A=[];let J=0;for(var Q=0;Q int\n\nReturn the highest index in B where subsection sub is found,\nsuch that sub is contained within B[start,end]. Optional\narguments start and end are interpreted as in slice notation.\n\nReturn -1 on failure."},rindex:{$meth:function(E,H,y){E=this.find$right(E,H,y);if(-1===E)throw new Sk.builtin.ValueError("subsection not found");return new Sk.builtin.int_(E)}, $flags:{MinArgs:1,MaxArgs:3},$textsig:null,$doc:"B.rindex(sub[, start[, end]]) -> int\n\nReturn the highest index in B where subsection sub is found,\nsuch that sub is contained within B[start,end]. Optional\narguments start and end are interpreted as in slice notation.\n\nRaise ValueError when the subsection is not found."},rjust:{$meth:m("rjust",!0,!1),$flags:{MinArgs:1,MaxArgs:2},$textsig:null,$doc:"B.rjust(width[, fillchar]) -> copy of B\n\nReturn B right justified in a string of length width. Padding is\ndone using the specified fill character (default is a space)"}, rpartition:{$meth:c(!0),$flags:{OneArg:!0},$textsig:"($self, sep, /)",$doc:"Partition the bytes into three parts using the given separator.\n\nThis will search for the separator sep in the bytes, starting at the end. If\nthe separator is found, returns a 3-tuple containing the part before the\nseparator, the separator itself, and the part after it.\n\nIf the separator is not found, returns a 3-tuple containing two empty bytes\nobjects and the original bytes object."},rsplit:{$meth:function(E,H){({sep:E, maxsplit:H}=this.get$splitArgs(E,H));const y=[];let A=0,J=this.v.length;if(null!==E){for(;0<=J&&AJ)break;E=J+1;for(J--;0<=J&&!k(this.v[J]);)J--;y.push(new Sk.builtin.bytes(this.v.subarray(J+1,E)));A++}if(0<=J){for(;k(this.v[J]);)J--;0<=J&&y.push(new Sk.builtin.bytes(this.v.subarray(0, J+1)))}}return new Sk.builtin.list(y.reverse())},$flags:{NamedArgs:["sep","maxsplit"],Defaults:[Sk.builtin.none.none$,-1]},$textsig:"($self, /, sep=None, maxsplit=-1)",$doc:"Return a list of the sections in the bytes, using sep as the delimiter.\n\n sep\n The delimiter according which to split the bytes.\n None (the default value) means split on ASCII whitespace characters\n (space, tab, return, newline, formfeed, vertical tab).\n maxsplit\n Maximum number of splits to do.\n -1 (the default value) means no limit.\n\nSplitting is done starting at the end of the bytes and working to the front."}, rstrip:{$meth:n(!1,!0),$flags:{MinArgs:0,MaxArgs:1},$textsig:"($self, bytes=None, /)",$doc:"Strip trailing bytes contained in the argument.\n\nIf the argument is omitted or None, strip trailing ASCII whitespace."},split:{$meth:function(E,H){({sep:E,maxsplit:H}=this.get$splitArgs(E,H));const y=[],A=this.v.length;let J=0,Q=0;if(null!==E){for(;QH.length<=E.length&&H.every((y,A)=>y===E[A])),$flags:{MinArgs:1,MaxArgs:3},$textsig:null,$doc:"B.startswith(prefix[, start[, end]]) -> bool\n\nReturn True if B starts with the specified prefix, False otherwise.\nWith optional start, test B beginning at that position.\nWith optional end, stop comparing B at that position.\nprefix can also be a tuple of bytes to try."},strip:{$meth:n(!0,!0),$flags:{MinArgs:0,MaxArgs:1},$textsig:"($self, bytes=None, /)",$doc:"Strip leading and trailing bytes contained in the argument.\n\nIf the argument is omitted or None, strip leading and trailing ASCII whitespace."}, swapcase:{$meth:t(E=>l(E)?E+32:u(E)?E-32:E),$flags:{NoArgs:!0},$textsig:null,$doc:"B.swapcase() -> copy of B\n\nReturn a copy of B with uppercase ASCII characters converted\nto lowercase ASCII and vice versa."},title:{$meth(){const E=this.v.length,H=new Uint8Array(E);let y=!1;for(let A=0;A copy of B\n\nReturn a titlecased version of B, i.e. ASCII words start with uppercase\ncharacters, all remaining cased characters have lowercase."}, upper:{$meth:t(E=>u(E)?E-32:E),$flags:{NoArgs:!0},$textsig:null,$doc:"B.upper() -> copy of B\n\nReturn a copy of B with all ASCII characters converted to uppercase."},zfill:{$meth(E){E=Sk.misceval.asIndexSized(E,Sk.builtin.IndexError);const H=E-this.v.length;if(0>=H)return new Sk.builtin.bytes(this.v);const y=new Uint8Array(E);let A=0,J;if(43===this.v[0]||45===this.v[0])y[0]=this.v[0],A++;y.fill(48,A,A+H);J=A;for(A+=H;A copy of B\n\nPad a numeric string B with zeros on the left, to fill a field\nof the specified width. B is never truncated."}},classmethods:{fromhex:{$meth:function(E){function H(aa){for(let ea=Q;ea b'\\\\xb9\\\\x01\\\\xef'."}}});var S=Sk.abstr.buildIteratorClass("bytes_iterator",{constructor:function(E){this.$index=0;this.$seq=E.v},iternext(){const E= this.$seq[this.$index++];if(void 0!==E)return new Sk.builtin.int_(E)},methods:{__length_hint__:Sk.generic.iterLengthHintWithArrayMethodDef},flags:{sk$unacceptableBase:!0}});Sk.exportSymbol("Sk.builtin.bytes",Sk.builtin.bytes)},function(F,P,b){(function(e){(function(d){function f(){}function h(){}var p=String.fromCharCode,g={}.toString,a=g.call(d.SharedArrayBuffer),c=g(),n=d.Uint8Array,m=n||Array,k=n?ArrayBuffer:m,u=k.isView||function(r){return r&&"length"in r},l=g.call(k.prototype);k=h.prototype; var q=d.TextEncoder,z=new (n?Uint16Array:m)(32);f.prototype.decode=function(r){if(!u(r)){var t=g.call(r);if(t!==l&&t!==a&&t!==c)throw TypeError("Failed to execute 'decode' on 'TextDecoder': The provided value is not of type '(ArrayBuffer or ArrayBufferView)'");r=n?new m(r):r||[]}for(var x=t="",v=0,B=r.length|0,I=B-32|0,M,S,E=0,H=0,y,A=0,J=-1;v>4){case 15:y=r[v=v+1|0]&255;if(2!==y>>6||247>6?H+4|0:24,S=S+256&768;case 13:case 12:y=r[v=v+1|0]&255,E<<=6,E|=(S&31)<<6|y&63,H=H+7|0,v>6&&E>>H&&1114112>E?(S=E,E=E-65536|0,0<=E&&(J=(E>>10)+55296|0,S=(E&1023)+56320|0,31>A?(z[A]=J,A=A+1|0,J=-1):(y=J,J=S,S=y))):(S>>=8,v=v-S-1|0,S=65533),E=H=0,M=v<=I?32:B-v|0;default:z[A]=S;continue;case 11:case 10:case 9:case 8:}z[A]=65533}x+=p(z[0],z[1],z[2],z[3],z[4],z[5],z[6],z[7],z[8],z[9],z[10],z[11],z[12],z[13],z[14],z[15],z[16],z[17],z[18],z[19],z[20], z[21],z[22],z[23],z[24],z[25],z[26],z[27],z[28],z[29],z[30],z[31]);32>A&&(x=x.slice(0,A-32|0));if(v>>31,J=-1,x.length=M)x[B]=M;else{if(2047>=M)x[B]=192|M>>6;else{a:{if(55296<=M)if(56319>=M){var S=r.charCodeAt(v=v+1|0)|0;if(56320<=S&&57343>=S){M=(M<<10)+S-56613888|0;if(65535< M){x[B]=240|M>>18;x[B=B+1|0]=128|M>>12&63;x[B=B+1|0]=128|M>>6&63;x[B=B+1|0]=128|M&63;continue}break a}M=65533}else 57343>=M&&(M=65533);!I&&v<<1>12;x[B=B+1|0]=128|M>>6&63}x[B=B+1|0]=128|M&63}}return n?x.subarray(0,B):x.slice(0,B)};q||(d.TextDecoder=f,d.TextEncoder=h)})("undefined"==typeof e?"undefined"==typeof self?this:self:e)}).call(this,b(0))},function(F,P){Sk.builtin.tuple=Sk.abstr.buildNativeClass("tuple",{constructor:function(e){void 0=== e?e=[]:Array.isArray(e)||(e=Sk.misceval.arrayFromIterable(e));Sk.asserts.assert(this instanceof Sk.builtin.tuple,"bad call to tuple, use 'new' with an Array of python objects");this.v=e;this.in$repr=!1},slots:{tp$getattr:Sk.generic.getAttr,tp$as_sequence_or_mapping:!0,tp$doc:"Built-in immutable sequence.\n\nIf no argument is given, the constructor returns an empty tuple.\nIf iterable is specified the tuple is initialized from iterable's items.\n\nIf the argument is a tuple, the return value is the same object.", $r(){if(this.in$repr)return new Sk.builtin.str("(...)");this.in$repr=!0;let e=this.v.map(d=>Sk.misceval.objectRepr(d));this.in$repr=!1;e=e.join(", ");1===this.v.length&&(e+=",");return new Sk.builtin.str("("+e+")")},tp$new(e,d){if(this!==Sk.builtin.tuple.prototype)return this.$subtype_new(e,d);Sk.abstr.checkNoKwargs("tuple",d);Sk.abstr.checkArgsLen("tuple",e,0,1);e=e[0];return void 0===e?new Sk.builtin.tuple([]):e.constructor===Sk.builtin.tuple?e:Sk.misceval.chain(Sk.misceval.arrayFromIterable(e, !0),f=>new Sk.builtin.tuple(f))},tp$hash(){let e,d=3430008,f=1000003;const h=this.v.length;for(let p=0;pe&&(e=this.v.length+e);if(0>e||e>=this.v.length)throw new Sk.builtin.IndexError("tuple index out of range");return this.v[e]}if(e instanceof Sk.builtin.slice){const d=[];e.sssiter$(this.v.length,f=>{d.push(this.v[f])});return new Sk.builtin.tuple(d)}throw new Sk.builtin.TypeError("tuple indices must be integers or slices, not "+Sk.abstr.typeName(e));},sq$length(){return this.v.length},sq$repeat(e){e=Sk.misceval.asIndexSized(e,Sk.builtin.OverflowError);if(1===e&&this.constructor===Sk.builtin.tuple)return this;const d=[];for(let f=0;f{this.$seq=v.$items();this.$version=v.$version;x&&(this.$seq=this.$seq.reverse());this.tp$iternext=this.constructor.prototype.tp$iternext;return this.tp$iternext()}},iternext:t,methods:{__length_hint__:Sk.generic.iterLengthHintWithArrayMethodDef}, flags:{sk$unacceptableBase:!0},proto:{next$item:p}})}function p(){if(this.$version!==this.$orig.$version){if(this.$seq.length!==this.$orig.get$size())throw new Sk.builtin.RuntimeError("dict changed size during iteration");throw new Sk.builtin.RuntimeError("dictionary keys changed during iteration");}return this.$seq[this.$index++]}Sk.builtin.dict=Sk.abstr.buildNativeClass("dict",{constructor:function(r){void 0===r&&(r=[]);Sk.asserts.assert(Array.isArray(r)&&0===r.length%2&&this instanceof Sk.builtin.dict, "bad call to dict constructor");this.size=0;this.entries=Object.create(null);this.buckets={};for(let t=0;t new empty dictionary\ndict(mapping) -> new dictionary initialized from a mapping object's\n (key, value) pairs\ndict(iterable) -> new dictionary initialized as if via:\n d = {}\n for k, v in iterable:\n d[k] = v\ndict(**kwargs) -> new dictionary initialized with the name=value pairs\n in the keyword argument list. For example: dict(one=1, two=2)", $r(){if(this.in$repr)return new Sk.builtin.str("{...}");this.in$repr=!0;const r=this.$items().map(t=>{var [x,v]=t;return Sk.misceval.objectRepr(x)+": "+Sk.misceval.objectRepr(v)});this.in$repr=!1;return new Sk.builtin.str("{"+r.join(", ")+"}")},tp$new:Sk.generic.new,tp$init(r,t){return this.update$common(r,t,"dict")},tp$iter(){return new m(this)},tp$richcompare(r,t){let x;if(!(r instanceof Sk.builtin.dict)||"Eq"!==t&&"NotEq"!==t)return Sk.builtin.NotImplemented.NotImplemented$;if(r===this)x=!0;else if(this.size!== r.size)x=!1;else{let v;x=this.$items().every(B=>{var [I,M]=B;v=r.mp$lookup(I);return void 0!==v&&(v===M||Sk.misceval.richCompareBool(M,v,"Eq"))})}return"Eq"===t?x:!x},nb$or(r){if(!(r instanceof Sk.builtin.dict))return Sk.builtin.NotImplemented.NotImplemented$;const t=this.dict$copy();t.dict$merge(r);return t},nb$reflected_or(r){if(!(r instanceof Sk.builtin.dict))return Sk.builtin.NotImplemented.NotImplemented$;r=r.dict$copy();r.dict$merge(this);return r},nb$inplace_or(r){return Sk.misceval.chain(this.update$onearg(r), ()=>this)},sq$length(){return this.get$size()},sq$contains(r){return void 0!==this.mp$lookup(r)},mp$subscript(r,t){var x=this.mp$lookup(r);if(void 0!==x)return x;x=Sk.abstr.lookupSpecial(this,Sk.builtin.str.$missing);if(void 0!==x)return r=Sk.misceval.callsimOrSuspendArray(x,[r]),t?r:Sk.misceval.retryOptionalSuspensionOrThrow(r);throw new Sk.builtin.KeyError(r);},mp$ass_subscript(r,t){if(void 0===t){if(void 0===this.pop$item(r))throw new Sk.builtin.KeyError(r);}else this.set$item(r,t)}},methods:{__reversed__:{$meth(){return new l(this)}, $flags:{NoArgs:!0},$textsig:null,$doc:"Return a reverse iterator over the dict keys."},get:{$meth(r,t){return this.mp$lookup(r)||t||Sk.builtin.none.none$},$flags:{MinArgs:1,MaxArgs:2},$textsig:"($self, key, default=None, /)",$doc:"Return the value for key if key is in the dictionary, else default."},setdefault:{$meth(r,t){let x;const v=b(r);x="string"===typeof v?this.entries[v]:this.get$bucket_item(r,v);if(void 0!==x)return x[1];t=t||Sk.builtin.none.none$;"string"===typeof v?this.entries[v]=[r,t]: this.set$bucket_item(r,t,v);this.size++;this.$version++;return t},$flags:{MinArgs:1,MaxArgs:2},$textsig:"($self, key, default=None, /)",$doc:"Insert key with a value of default if key is not in the dictionary.\n\nReturn the value for key if key is in the dictionary, else default."},pop:{$meth(r,t){const x=this.pop$item(r);if(void 0!==x)return x[1];if(void 0!==t)return t;throw new Sk.builtin.KeyError(r);},$flags:{MinArgs:1,MaxArgs:2},$textsig:null,$doc:"D.pop(k[,d]) -> v, remove specified key and return the corresponding value.\nIf key is not found, d is returned if given, otherwise KeyError is raised"}, popitem:{$meth(){const r=this.get$size();if(0===r)throw new Sk.builtin.KeyError("popitem(): dictionary is empty");const [t,x]=this.$items()[r-1];this.pop$item(t);return new Sk.builtin.tuple([t,x])},$flags:{NoArgs:!0},$textsig:null,$doc:"D.popitem() -> (k, v), remove and return some (key, value) pair as a\n2-tuple; but raise KeyError if D is empty."},keys:{$meth(){return new a(this)},$flags:{NoArgs:!0},$textsig:null,$doc:"D.keys() -> a set-like object providing a view on D's keys"},items:{$meth(){return new n(this)}, $flags:{NoArgs:!0},$textsig:null,$doc:"D.items() -> a set-like object providing a view on D's items"},values:{$meth(){return new c(this)},$flags:{NoArgs:!0},$textsig:null,$doc:"D.values() -> an object providing a view on D's values"},update:{$meth(r,t){return Sk.misceval.chain(this.update$common(r,t,"update"),()=>Sk.builtin.none.none$)},$flags:{FastCall:!0},$textsig:null,$doc:"D.update([E, ]**F) -> None. Update D from dict/iterable E and F.\nIf E is present and has a .keys() method, then does: for k in E: D[k] = E[k]\nIf E is present and lacks a .keys() method, then does: for k, v in E: D[k] = v\nIn either case, this is followed by: for k in F: D[k] = F[k]"}, clear:{$meth(){this.size=0;this.$version++;this.entries=Object.create(null);this.buckets={}},$flags:{NoArgs:!0},$textsig:null,$doc:"D.clear() -> None. Remove all items from D."},copy:{$meth(){return this.dict$copy()},$flags:{NoArgs:!0},$textsig:null,$doc:"D.copy() -> a shallow copy of D"}},classmethods:Object.assign({fromkeys:{$meth:function(r,t){t=t||Sk.builtin.none.none$;let x=this===Sk.builtin.dict?new this:this.tp$call([],[]);return Sk.misceval.chain(x,v=>{x=v;return Sk.misceval.iterFor(Sk.abstr.iter(r), B=>x.mp$ass_subscript(B,t,!0))},()=>x)},$flags:{MinArgs:1,MaxArgs:2},$textsig:"($type, iterable, value=None, /)",$doc:"Create a new dictionary with keys from iterable and values set to value."}},Sk.generic.classGetItem),proto:{quick$lookup:function(r){r=this.entries[r.$savedKeyHash];if(void 0!==r)return r[1]},mp$lookup:function(r){const t=b(r);r="string"===typeof t?this.entries[t]:this.get$bucket_item(r,t);if(void 0!==r)return r[1]},get$size(){return this.size},sk$asarray(){return Object.values(this.entries).map(r=> r[0])},update$common:function(r,t,x){Sk.abstr.checkArgsLen(x,r,0,1);r=r[0];let v;void 0!==r&&(v=this.update$onearg(r));return Sk.misceval.chain(v,()=>{if(t)for(let B=0;Bvoid 0===I)&&delete this.buckets[t],v},set$bucket_item:function(r,t,x){let v=this.buckets[x];r=[r,t];void 0===v?(this.buckets[x]= [r],x="#"+x+"_0"):(t=v.indexOf(void 0),-1!==t?(x="#"+x+"_"+t,v[t]=r):(x="#"+x+"_"+v.length,v.push(r)));this.entries[x]=r},pop$item:function(r){const t=b(r);"string"===typeof t?(r=this.entries[t],delete this.entries[t]):r=this.pop$bucket_item(r,t);if(void 0!==r)return this.size--,this.$version++,r},dict$merge:function(r){if(r.tp$iter===Sk.builtin.dict.prototype.tp$iter){var t=r.tp$iter();for(let x=t.tp$iternext();void 0!==x;x=t.tp$iternext()){const v=r.mp$subscript(x);this.set$item(x,v)}}else{t=Sk.abstr.lookupSpecial(r, Sk.builtin.str.$keys);if(void 0===t)throw new Sk.builtin.TypeError("'"+Sk.abstr.typeName(r)+"' object is not a mapping");return Sk.misceval.chain(Sk.misceval.callsimOrSuspendArray(t),x=>Sk.misceval.iterFor(Sk.abstr.iter(x),v=>Sk.misceval.chain(Sk.abstr.objectGetItem(r,v,!0),B=>{this.set$item(v,B)})))}},dict$merge_seq:function(r){let t=0;return Sk.misceval.iterFor(Sk.abstr.iter(r),x=>{if(!Sk.builtin.checkIterable(x))throw new Sk.builtin.TypeError("cannot convert dictionary update sequence element #"+ t+" to a sequence");x=Sk.misceval.arrayFromIterable(x);if(2!==x.length)throw new Sk.builtin.ValueError("dictionary update sequence element #"+t+" has length "+x.length+"; 2 is required");this.set$item(x[0],x[1]);t++})}}});const g={tp$getattr:Sk.generic.getAttr,tp$as_number:!0,tp$as_sequence_or_mapping:!0,tp$hash:Sk.builtin.none.none$,$r(){if(this.in$repr)return new Sk.builtin.str("...");this.in$repr=!0;let r=Sk.misceval.arrayFromIterable(this);r=r.map(t=>Sk.misceval.objectRepr(t));this.in$repr=!1; return new Sk.builtin.str(Sk.abstr.typeName(this)+"(["+r.join(", ")+"])")},tp$richcompare(r,t){if(!(Sk.builtin.checkAnySet(r)||r instanceof a||r instanceof n))return Sk.builtin.NotImplemented.NotImplemented$;const x=this.sq$length(),v=r.sq$length();switch(t){case "NotEq":case "Eq":let B;this===r?B=!0:x===v&&(B=d(this,r));return"NotEq"===t?!B:B;case "Lt":return xv&&d(r,this);case "GtE":return x>=v&&d(r,this)}},nb$subtract(r){const t= e(this);return t.difference.$meth.call(t,r)},nb$and(r){const t=e(this);return t.intersection.$meth.call(t,r)},nb$or(r){const t=e(this);return t.union.$meth.call(t,r)},nb$xor(r){const t=e(this);return t.symmetric_difference.$meth.call(t,r)},sq$length(){return this.dict.get$size()}};var a=f("dict_keys",{sq$contains(r){return void 0!==this.dict.mp$lookup(r)},tp$iter(){return new m(this.dict)}},function(){return new l(this.dict)}),c=f("dict_values",{tp$iter(){return new u(this.dict)}},function(){return new z(this.dict)}), n=f("dict_items",{sq$contains(r){if(!(r instanceof Sk.builtin.tuple&&2===r.sq$length()))return!1;var t=r.mp$subscript(new Sk.builtin.int_(0));r=r.mp$subscript(new Sk.builtin.int_(1));t=this.dict.mp$lookup(t);return void 0===t?!1:t===r||Sk.misceval.richCompareBool(t,r,"Eq")},tp$iter(){return new k(this.dict)}},function(){return new q(this.dict)}),m=h("dict_keyiterator",function(){const r=this.next$item();return r&&r[0]}),k=h("dict_itemiterator",function(){const r=this.next$item();return r&&new Sk.builtin.tuple([r[0], r[1]])}),u=h("dict_valueiterator",function(){const r=this.next$item();return r&&r[1]}),l=h("dict_reversekeyiterator",m.prototype.tp$iternext,!0),q=h("dict_reverseitemiterator",k.prototype.tp$iternext,!0),z=h("dict_reversevalueiterator",u.prototype.tp$iternext,!0);Sk.builtin.dict.py2$methods={has_key:{$name:"has_key",$flags:{OneArg:!0},$meth(r){return new Sk.builtin.bool(this.sq$contains(r))},$doc:"D.has_key(k) -> True if D has a key k, else False"},keys:{$name:"keys",$meth(){return new Sk.builtin.list(this.sk$asarray())}, $flags:{NoArgs:!0},$textsig:null,$doc:"D.keys() -> a set-like object providing a view on D's keys"},items:{$name:"items",$meth(){return new Sk.builtin.list(this.$items().map(r=>{var [t,x]=r;return new Sk.builtin.tuple([t,x])}))},$flags:{NoArgs:!0},$textsig:null,$doc:"D.items() -> a set-like object providing a view on D's items"},values:{$name:"values",$meth(){return new Sk.builtin.list(this.$items().map(r=>{[,r]=r;return r}))},$flags:{NoArgs:!0},$textsig:null,$doc:"D.values() -> an object providing a view on D's values"}}}, function(F,P){function b(e,d){Object.defineProperties(e,{entries:{get:()=>{const f=Object.create(null);Object.entries(d).forEach(h=>{var [p,g]=h;p=Sk.unfixReserved(p);p.includes("$")||(p=new Sk.builtin.str(p),f[p.$savedKeyHash]=[p,g])});return f},configurable:!0},size:{get:()=>Object.keys(d).map(f=>Sk.unfixReserved(f)).filter(f=>!f.includes("$")).length,configurable:!0}})}Sk.builtin.mappingproxy=Sk.abstr.buildNativeClass("mappingproxy",{constructor:function(e){Sk.asserts.assert(this instanceof Sk.builtin.mappingproxy, "bad call to mapping proxy, use 'new'");if(void 0!==e){const d=e.constructor;d===Object||null===d||e.hasOwnProperty("sk$object")?(this.mapping=new Sk.builtin.dict([]),b(this.mapping,e)):Sk.builtin.checkMapping(e)?this.mapping=e:Sk.asserts.fail("unhandled case for mappingproxy")}},slots:{tp$getattr:Sk.generic.getAttr,tp$as_sequence_or_mapping:!0,tp$hash:Sk.builtin.none.none$,tp$new(e,d){Sk.abstr.checkNoKwargs("mappingproxy",d);Sk.abstr.checkOneArg("mappingproxy",e,d);e=e[0];if(!Sk.builtin.checkMapping(e))throw new Sk.builtin.TypeError("mappingproxy() argument must be a mapping, not "+ Sk.abstr.typeName(e));d=new Sk.builtin.mappingproxy;d.mapping=e;return d},tp$richcompare(e,d){return Sk.misceval.richCompareBool(this.mapping,e,d)},tp$str(){return this.mapping.tp$str()},$r(){return new Sk.builtin.str("mappingproxy("+Sk.misceval.objectRepr(this.mapping)+")")},mp$subscript(e,d){return this.mapping.mp$subscript(e,d)},sq$contains(e){return this.mapping.sq$contains(e)},sq$length(){return this.mapping.sq$length()},tp$iter(){return this.mapping.tp$iter()},tp$as_number:!0,nb$or(e){e instanceof Sk.builtin.mappingproxy&&(e=e.mapping);return Sk.abstr.numberBinOp(this.mapping,e,"BitOr")},nb$reflected_or(e){e instanceof Sk.builtin.mappingproxy&&(e=e.mapping);return Sk.abstr.numberBinOp(e,this.mapping,"BitOr")},nb$inplace_or(e){throw new Sk.builtin.TypeError("'|=' is not supported by "+Sk.abstr.typeName(this)+"; use '|' instead");}},methods:{get:{$meth(e,d){return Sk.misceval.callsimArray(this.mapping.tp$getattr(this.str$get),e,d)},$flags:{FastCall:!0},$textsig:null,$doc:"D.get(k[,d]) -> D[k] if k in D, else d. d defaults to None."}, keys:{$meth(){return Sk.misceval.callsimArray(this.mapping.tp$getattr(this.str$keys),[])},$flags:{NoArgs:!0},$textsig:null,$doc:"D.keys() -> a set-like object providing a view on D's keys"},items:{$meth(){return Sk.misceval.callsimArray(this.mapping.tp$getattr(this.str$items),[])},$flags:{NoArgs:!0},$textsig:null,$doc:"D.items() -> a set-like object providing a view on D's items"},values:{$meth(){return Sk.misceval.callsimArray(this.mapping.tp$getattr(this.str$values),[])},$flags:{NoArgs:!0},$textsig:null, $doc:"D.values() -> a set-like object providing a view on D's values"},copy:{$meth(){return Sk.misceval.callsimArray(this.mapping.tp$getattr(this.str$copy),[])},$flags:{NoArgs:!0},$textsig:null,$doc:"D.copy() -> a shallow copy of D"}},classmethods:Sk.generic.classGetItem,proto:{str$get:new Sk.builtin.str("get"),str$copy:new Sk.builtin.str("copy"),str$keys:new Sk.builtin.str("keys"),str$items:new Sk.builtin.str("items"),str$values:new Sk.builtin.str("values"),mp$lookup(e){return this.mapping.mp$lookup(e)}}, flags:{sk$unacceptableBase:!0}})},function(F,P){Sk.builtin.property=Sk.abstr.buildNativeClass("property",{constructor:function(b,e,d,f){this.prop$get=b||Sk.builtin.none.none$;this.prop$set=e||Sk.builtin.none.none$;this.prop$del=d||Sk.builtin.none.none$;this.prop$doc=f||b&&b.$doc||Sk.builtin.none.none$},slots:{tp$getattr:Sk.generic.getAttr,tp$new:Sk.generic.new,tp$init(b,e){b=Sk.abstr.copyKeywordsToNamedArgs("property",["fget","fset","fdel","doc"],b,e,Array(4).fill(Sk.builtin.none.none$));this.prop$get= b[0];this.prop$set=b[1];this.prop$del=b[2];Sk.builtin.checkNone(b[3])?Sk.builtin.checkNone(b[0])||(this.prop$doc=b[0].$doc||b[3]):this.prop$doc=b[3]},tp$doc:"Property attribute.\n\n fget\n function to be used for getting an attribute value\n fset\n function to be used for setting an attribute value\n fdel\n function to be used for del'ing an attribute\n doc\n docstring\n\nTypical use is to define a managed attribute x:\n\nclass C(object):\n def getx(self): return self._x\n def setx(self, value): self._x = value\n def delx(self): del self._x\n x = property(getx, setx, delx, 'I'm the 'x' property.')\n\nDecorators make defining new properties or modifying existing ones easy:\n\nclass C(object):\n @property\n def x(self):\n 'I am the 'x' property.'\n return self._x\n @x.setter\n def x(self, value):\n self._x = value\n @x.deleter\n def x(self):\n del self._x", tp$descr_get(b,e,d){if(null===b)return this;if(void 0===this.prop$get)throw new Sk.builtin.AttributeError("unreadable attribute");b=Sk.misceval.callsimOrSuspendArray(this.prop$get,[b]);return d?b:Sk.misceval.retryOptionalSuspensionOrThrow(b)},tp$descr_set(b,e,d){let f;f=null==e?this.prop$del:this.prop$set;if(Sk.builtin.checkNone(f))throw new Sk.builtin.AttributeError("can't "+(null==e?"delete":"set")+" attribute");if(!f.tp$call)throw new Sk.builtin.TypeError("'"+Sk.abstr.typeName(f)+"' is not callable"); b=null==e?f.tp$call([b]):f.tp$call([b,e]);return d?b:Sk.misceval.retryOptionalSuspensionOrThrow(b)}},methods:{getter:{$meth(b){return new Sk.builtin.property(b,this.prop$set,this.prop$del,this.prop$doc)},$flags:{OneArg:!0}},setter:{$meth(b){return new Sk.builtin.property(this.prop$get,b,this.prop$del,this.prop$doc)},$flags:{OneArg:!0}},deleter:{$meth(b){return new Sk.builtin.property(this.prop$get,this.prop$set,b,this.prop$doc)},$flags:{OneArg:!0}}},getsets:{fget:{$get(){return this.prop$get}},fset:{$get(){return this.prop$set}}, fdel:{$get(){return this.prop$del}},__doc__:{$get(){return this.prop$doc},$set(b){this.prop$doc=b=b||Sk.builtin.none.none$}}}});Sk.builtin.classmethod=Sk.abstr.buildNativeClass("classmethod",{constructor:function(b){this.cm$callable=b;this.$d=new Sk.builtin.dict},slots:{tp$getattr:Sk.generic.getAttr,tp$new:Sk.generic.new,tp$init(b,e){Sk.abstr.checkNoKwargs("classmethod",e);Sk.abstr.checkArgsLen("classmethod",b,1,1);this.cm$callable=b[0]},tp$doc:"classmethod(function) -> method\n\nConvert a function to be a class method.\n\nA class method receives the class as implicit first argument,\njust like an instance method receives the instance.\nTo declare a class method, use this idiom:\n\n class C:\n @classmethod\n def f(cls, arg1, arg2, ...):\n ...\n\nIt can be called either on the class (e.g. C.f()) or on an instance\n(e.g. C().f()). The instance is ignored except for its class.\nIf a class method is called for a derived class, the derived class\nobject is passed as the implied first argument.\n\nClass methods are different than C++ or Java static methods.\nIf you want those, see the staticmethod builtin.", tp$descr_get(b,e,d){const f=this.cm$callable;if(void 0===f)throw new Sk.builtin.RuntimeError("uninitialized classmethod object");void 0===e&&(e=b.ob$type);return(b=f.tp$descr_get)?b.call(f,e,d):new Sk.builtin.method(f,e)}},getsets:{__func__:{$get(){return this.cm$callable}},__dict__:Sk.generic.getSetDict}});Sk.builtin.staticmethod=Sk.abstr.buildNativeClass("staticmethod",{constructor:function(b){this.sm$callable=b;this.$d=new Sk.builtin.dict},slots:{tp$getattr:Sk.generic.getAttr,tp$new:Sk.generic.new, tp$init(b,e){Sk.abstr.checkNoKwargs("staticmethod",e);Sk.abstr.checkArgsLen("staticmethod",b,1,1);this.sm$callable=b[0]},tp$doc:"staticmethod(function) -> method\n\nConvert a function to be a static method.\n\nA static method does not receive an implicit first argument.\nTo declare a static method, use this idiom:\n\n class C:\n @staticmethod\n def f(arg1, arg2, ...):\n ...\n\nIt can be called either on the class (e.g. C.f()) or on an instance\n(e.g. C().f()). The instance is ignored except for its class.\n\nStatic methods in Python are similar to those found in Java or C++.\nFor a more advanced concept, see the classmethod builtin.", tp$descr_get(b,e){if(void 0===this.sm$callable)throw new Sk.builtin.RuntimeError("uninitialized staticmethod object");return this.sm$callable}},getsets:{__func__:{$get(){return this.sm$callable}},__dict__:Sk.generic.getSetDict}})},function(F,P){function b(y,A){return function(J){if(!(J instanceof Sk.builtin.int_))return Sk.builtin.NotImplemented.NotImplemented$;let Q=this.v;J=J.v;if("number"===typeof Q&&"number"===typeof J){const X=y(Q,J);if(n(X))return new Sk.builtin.int_(X)}Q=k(Q);J=k(J);return new Sk.builtin.int_(A(Q, J))}}function e(y,A){return function(J){if(!(J instanceof Sk.builtin.int_))return Sk.builtin.NotImplemented.NotImplemented$;let Q=this.v;J=J.v;if("number"===typeof Q&&"number"===typeof J)return y(Q,J);Q=k(Q);J=k(J);return A(Q,J)}}function d(y,A){return function(){let J=this.v;if("number"===typeof J){const Q=y(J);if(void 0!==Q)return new Sk.builtin.int_(Q);J=k(J)}return new Sk.builtin.int_(A(J))}}function f(){return new Sk.builtin.int_(this.v)}function h(y,A){return function(J){if(!(J instanceof Sk.builtin.int_))return Sk.builtin.NotImplemented.NotImplemented$; let Q=this.v;J=J.v;if(0===J)throw new Sk.builtin.ZeroDivisionError("integer division or modulo by zero");if("number"===typeof Q&&"number"===typeof J)return new Sk.builtin.int_(y(Q,J));Q=k(Q);J=k(J);return new Sk.builtin.int_(JSBI.numberIfSafe(A(Q,J)))}}function p(y,A){return function(J){if(!(J instanceof Sk.builtin.int_))return Sk.builtin.NotImplemented.NotImplemented$;if(J.nb$isnegative())throw new Sk.builtin.ValueError("negative shift count");let Q=this.v;if(0===Q)return new Sk.builtin.int_(0); J=J.v;if("number"===typeof Q&&"number"===typeof J&&53>J){const X=y(Q,J);if(void 0!==X)return new Sk.builtin.int_(X)}Q=k(Q);J=k(J);return new Sk.builtin.int_(A(Q,J))}}function g(y,A){return function(J){if(!(J instanceof Sk.builtin.int_))return Sk.builtin.NotImplemented.NotImplemented$;let Q=this.v;J=J.v;if("number"===typeof Q&&"number"===typeof J&&Math.abs(Q)=-Number.MAX_SAFE_INTEGER}function m(y){return y<=Number.MAX_SAFE_INTEGER&&y>=-Number.MAX_SAFE_INTEGER?+y:JSBI.BigInt(y)}function k(y){return"number"===typeof y?JSBI.BigInt(y): y}function u(y,A){A=A!==Sk.builtin.none.none$?Sk.misceval.asIndexOrThrow(A):null;if(y instanceof Sk.builtin.str)return null===A&&(A=10),new Sk.builtin.int_(Sk.str2number(y.v,A));if(null!==A)throw new Sk.builtin.TypeError("int() can't convert non-string with explicit base");if(void 0!==y.nb$int)return y.nb$int();if(void 0!==y.nb$index)return new Sk.builtin.int_(y.nb$index());if(A=Sk.abstr.lookupSpecial(y,Sk.builtin.str.$trunc)){A=Sk.misceval.callsimArray(A,[]);if(!Sk.builtin.checkInt(A))throw new Sk.builtin.TypeError(Sk.builtin.str.$trunc.$jsstr()+ " returned non-Integral (type "+Sk.abstr.typeName(y)+")");return new Sk.builtin.int_(A.v)}throw new Sk.builtin.TypeError("int() argument must be a string, a bytes-like object or a number, not '"+Sk.abstr.typeName(y)+"'");}function l(y){if(!Sk.builtin.checkString(y))throw new Sk.builtin.TypeError("'byteorder' must be str, not "+Sk.abstr.typeName(y));y=y.toString();if("little"===y)return 1;if("big"===y)return 0;throw new Sk.builtin.ValueError("byteorder must be either 'little' or 'big'");}Sk.builtin.int_= Sk.abstr.buildNativeClass("int",{constructor:function(y){Sk.asserts.assert(this instanceof Sk.builtin.int_,"bad call to int use 'new'");let A;if("number"===typeof y){if(-6y)return S[y];A=y}else if(JSBI.__isBigInt(y))A=y;else{if(void 0===y)return E;if("string"===typeof y)A=m(y);else{if(y.nb$int)return y.nb$int();Sk.asserts.fail("bad argument to int constructor")}}this.v=A},slots:{tp$as_number:!0,tp$doc:"int(x=0) -> integer\nint(x, base=10) -> integer\n\nConvert a number or string to an integer, or return 0 if no arguments\nare given. If x is a number, return x.__int__(). For floating point\nnumbers, this truncates towards zero.\n\nIf x is not a number or if base is given, then x must be a string,\nbytes, or bytearray instance representing an integer literal in the\ngiven base. The literal can be preceded by '+' or '-' and be surrounded\nby whitespace. The base defaults to 10. Valid bases are 0 and 2-36.\nBase 0 means to interpret the base from the string as an integer literal.\n>>> int('0b100', base=0)\n4", $r(){return new Sk.builtin.str(this.v.toString())},tp$hash(){var y=this.v;if("number"===typeof y){if(-1===y)return-2;if(536870911>y&&-536870911y==A,JSBI.equal),ob$ne:e((y,A)=>y!=A,JSBI.notEqual),ob$gt:e((y,A)=>y>A,JSBI.greaterThan),ob$ge:e((y,A)=>y>=A,JSBI.greaterThanOrEqual),ob$lt:e((y,A)=>yy<=A,JSBI.lessThanOrEqual),nb$int:f,nb$index(){return this.v},nb$float(){var y=this.v;if("number"===typeof y)return new Sk.builtin.float_(y);y=parseFloat(JSBI.toNumber(y));if(Infinity===y||-Infinity===y)throw new Sk.builtin.OverflowError("int too large to convert to float");return new Sk.builtin.float_(y)}, nb$isnegative(){const y=this.v;return"number"===typeof y?0>y:JSBI.lessThan(y,JSBI.__ZERO)},nb$ispositive(){const y=this.v;return"number"===typeof y?0<=y:JSBI.greaterThanOrEqual(y,JSBI.__ZERO)},nb$bool(){return 0!==this.v},nb$positive:f,nb$negative:d(y=>-y,JSBI.unaryMinus),nb$add:b((y,A)=>y+A,(y,A)=>JSBI.numberIfSafe(JSBI.add(y,A))),nb$subtract:b((y,A)=>y-A,(y,A)=>JSBI.numberIfSafe(JSBI.subtract(y,A))),nb$multiply:b((y,A)=>y*A,(y,A)=>y===JSBI.__ZERO||A===JSBI.__ZERO?0:JSBI.multiply(y,A)),nb$divide:function(y){if(!Sk.__future__.python3)return this.nb$floor_divide(y); if(!(y instanceof Sk.builtin.int_))return Sk.builtin.NotImplemented.NotImplemented$;var A=this.v,J=y.v;if(0===J)throw new Sk.builtin.ZeroDivisionError("division by zero");if("number"===typeof A&&"number"===typeof J)return new Sk.builtin.float_(A/J);A=k(A);J=k(J);y=JSBI.lessThan(JSBI.bitwiseXor(A,J),JSBI.__ZERO);if(JSBI.equal(A,JSBI.__ZERO))return new Sk.builtin.float_(y?-0:0);A=a(A);J=a(J);if(JSBI.greaterThanOrEqual(A,JSBI.multiply(v,J)))throw new Sk.builtin.OverflowError("int/int too large to represent as a float"); var Q=A.toString(2).length-J.toString(2).length,X=JSBI.BigInt(0>Q?-Q:Q);if(0<=Q&&JSBI.greaterThanOrEqual(A,JSBI.multiply(JSBI.exponentiate(t,X),J))||0>Q&&JSBI.greaterThanOrEqual(JSBI.multiply(A,JSBI.exponentiate(t,X)),J))Q+=1;Q=Math.max(Q,r)-z;A=JSBI.leftShift(A,JSBI.BigInt(Math.max(-Q,0)));J=JSBI.leftShift(J,JSBI.BigInt(Math.max(Q,0)));X=JSBI.divide(A,J);A=JSBI.remainder(A,J);A=JSBI.multiply(t,A);if(JSBI.greaterThan(A,J)||JSBI.equal(A,J)&&JSBI.equal(JSBI.remainder(X,t),x))X=JSBI.add(X,x);X=JSBI.toNumber(X); if(Infinity===X||-Infinity===X)throw new Sk.builtin.OverflowError("int/int too large to represent as a float");J=X*Math.pow(2,Q);return new Sk.builtin.float_(y?-J:J)},nb$floor_divide:h((y,A)=>Math.floor(y/A),c),nb$remainder:h((y,A)=>y-Math.floor(y/A)*A,(y,A)=>JSBI.subtract(y,JSBI.multiply(A,c(y,A)))),nb$divmod(y){const A=this.nb$floor_divide(y);y=this.nb$remainder(y);return A===Sk.builtin.NotImplemented.NotImplemented$||y===Sk.builtin.NotImplemented.NotImplemented$?Sk.builtin.NotImplemented.NotImplemented$: new Sk.builtin.tuple([A,y])},nb$and:g((y,A)=>y&A,JSBI.bitwiseAnd),nb$or:g((y,A)=>y|A,JSBI.bitwiseOr),nb$xor:g((y,A)=>y^A,JSBI.bitwiseXor),nb$abs:d(Math.abs,a),nb$lshift:p((y,A)=>{y=2*y*I[A];if(n(y))return y},JSBI.leftShift),nb$rshift:p((y,A)=>{Math.floor(y/I[A+1])},(y,A)=>JSBI.numberIfSafe(JSBI.signedRightShift(y,A))),nb$invert:d(y=>Math.abs(y)JSBI.numberIfSafe(JSBI.bitwiseNot(y))),nb$power(y,A){let J;void 0!==A&&Sk.builtin.checkNone(A)&&(A=void 0);if(!(y instanceof Sk.builtin.int_&& (void 0===A||A instanceof Sk.builtin.int_)))return Sk.builtin.NotImplemented.NotImplemented$;const Q=y.nb$isnegative();if(Q&&void 0===A)return this.nb$float().nb$power(y.nb$float());let X=this.v;y=y.v;if("number"===typeof X&&"number"===typeof y){const aa=Math.pow(X,y);if(n(aa)&&(J=new Sk.builtin.int_(aa),void 0===A))return J}if(void 0!==A){if(Q)throw new Sk.builtin.ValueError("pow() 2nd argument cannot be negative when 3rd argument specified");if(0===A.v)throw new Sk.builtin.ValueError("pow() 3rd argument cannot be 0"); return void 0!==J?J.nb$remainder(A):new Sk.builtin.int_(JSBI.numberIfSafe(JSBI.powermod(k(X),k(y),k(A.v))))}return new Sk.builtin.int_(JSBI.exponentiate(k(X),k(y)))},nb$long(){return new Sk.builtin.lng(this.v)}},getsets:{real:{$get:f,$doc:"the real part of a complex number"},imag:{$get(){return E},$doc:"the imaginary part of a complex number"},numerator:{$get:f},denominator:{$get(){return H}}},classmethods:{from_bytes:{$meth(y,A){Sk.abstr.checkArgsLen("from_bytes",y,0,2);let [J,Q,X]=Sk.abstr.copyKeywordsToNamedArgs("from_bytes", ["bytes","byteorder","signed"],y,A,[Sk.builtin.bool.false$]);y=l(Q);J instanceof Sk.builtin.bytes||(J=Sk.misceval.callsimArray(Sk.builtin.bytes,[J]));if(Sk.misceval.isTrue(X))throw new Sk.builtin.NotImplementedError("from_bytes with signed=True is not yet implemented in Skulpt");const aa=[];J.valueOf().forEach(ea=>{aa.push(ea.toString(16).padStart(2,"0"))});y&&aa.reverse();y=new Sk.builtin.int_(JSBI.numberIfSafe(JSBI.BigInt("0x"+(aa.join("")||"0"))));return this===Sk.builtin.int_?y:Sk.misceval.callsimArray(this, [y])},$flags:{FastCall:!0}}},methods:{conjugate:{$meth:f,$flags:{NoArgs:!0},$textsig:null,$doc:"Returns self, the complex conjugate of any int."},bit_length:{$meth(){let y=this.v;if(0===y)return new Sk.builtin.int_(0);y="number"===typeof y?Math.abs(y):a(y);return new Sk.builtin.int_(y.toString(2).length)},$flags:{NoArgs:!0},$textsig:"($self, /)",$doc:"Number of bits necessary to represent self in binary.\n\n>>> bin(37)\n'0b100101'\n>>> (37).bit_length()\n6"},to_bytes:{$meth(y,A){Sk.abstr.checkArgsLen("to_bytes", y,0,2);let [J,Q,X]=Sk.abstr.copyKeywordsToNamedArgs("to_bytes",["length","byteorder","signed"],y,A,[Sk.builtin.bool.false$]);y=l(Q);J=Sk.misceval.asIndexSized(J,Sk.builtin.OverflowError);if(0>J)throw new Sk.builtin.ValueError("length argument must be non-negative");if(Sk.misceval.isTrue(X))throw new Sk.builtin.NotImplementedError("to_bytes with signed=True is not yet implemented in Skulpt");if(this.nb$isnegative())throw new Sk.builtin.OverflowError("can't convert negative int to unsigned");A=JSBI.BigInt(this.v).toString(16); A.length%2&&(A="0"+A);var aa=A.length/2;if(aa>J){if(0===J&&"00"===A)return new Sk.builtin.bytes;throw new Sk.builtin.OverflowError("int too big to convert");}const ea=Array(J).fill(0);aa=J-aa;let na=0;for(;aaMath.abs(A))return new Sk.builtin.int_(0);if(!Sk.__future__.bankers_rounding)return new Sk.builtin.int_(Math.round(A/ y)*y);A/=y;J=Math.round(A);return new Sk.builtin.int_((.5===(0A||36= 2 and <= 36");"string"===typeof A&&(A=Number(A));if("0x"===y.substring(0,2).toLowerCase())if(16===A||0===A)y=y.substring(2),A=16;else{if(34>A)throw new Sk.builtin.ValueError("invalid literal for int() with base "+A+": '"+J+"'");}else if("0b"=== y.substring(0,2).toLowerCase())if(2===A||0===A)y=y.substring(2),A=2;else{if(12>A)throw new Sk.builtin.ValueError("invalid literal for int() with base "+A+": '"+J+"'");}else if("0o"===y.substring(0,2).toLowerCase())if(8===A||0===A)y=y.substring(2),A=8;else{if(25>A)throw new Sk.builtin.ValueError("invalid literal for int() with base "+A+": '"+J+"'");}else if("0"===y.charAt(0)){if("0"===y)return 0;if(8===A||0===A)A=8}0===A&&(A=10);if(-1!==y.indexOf("_")){if(-1!==y.indexOf("__"))throw new Sk.builtin.ValueError("invalid literal for int() with base "+ A+": '"+J+"'");y=10!==A?y.replace(B,""):y.charAt(0)+y.substring(1).replace(B,"")}if(0===y.length)throw new Sk.builtin.ValueError("invalid literal for int() with base "+A+": '"+J+"'");for(X=0;X=aa?ea=aa-48:65<=aa&&90>=aa?ea=aa-65+10:97<=aa&&122>=aa&&(ea=aa-97+10);if(ea>=A)throw new Sk.builtin.ValueError("invalid literal for int() with base "+A+": '"+J+"'");}Q&&(y="-"+y);ea=parseInt(y,A);if(n(ea))return ea;J=!1;"-"===y[0]&&(J=!0,y=y.substring(1)); A=JSBI.BigInt(A);Q=x;X=JSBI.__ZERO;for(aa=y.length-1;0<=aa;aa--)ea=y.charCodeAt(aa),48<=ea&&57>=ea?ea-=48:65<=ea&&90>=ea?ea=ea-65+10:97<=ea&&122>=ea&&(ea=ea-97+10),ea=JSBI.multiply(JSBI.BigInt(ea),Q),X=JSBI.add(X,ea),Q=JSBI.multiply(Q,A);J&&(X=JSBI.multiply(X,JSBI.BigInt(-1)));return y=X};Sk.builtin.int_.py2$methods={};Sk.longFromStr=function(y,A){if(Sk.__future__.python3)return new Sk.builtin.int_(m(y));y=Sk.str2number(y,A);return new Sk.builtin.lng(y)};Sk.exportSymbol("Sk.longFromStr",Sk.longFromStr); Sk.builtin.int_.withinThreshold=n;Sk.builtin.int_.stringToNumberOrBig=m;const I=[.5,1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768,65536,131072,262144,524288,1048576,2097152,4194304,8388608,16777216,33554432,67108864,134217728,268435456,536870912,1073741824,2147483648,4294967296,8589934592,17179869184,34359738368,68719476736,137438953472,274877906944,549755813888,1099511627776,2199023255552,4398046511104,8796093022208,17592186044416,35184372088832,70368744177664,0x800000000000,281474976710656, 562949953421312,0x4000000000000,0x8000000000000,4503599627370496,9007199254740992];Sk.builtin.lng=Sk.abstr.buildNativeClass("long",{base:Sk.builtin.int_,constructor:function(y){y=Sk.builtin.int_.call(this,y);void 0!==y&&(this.v=y.v)},slots:{$r(){return new Sk.builtin.str(this.v.toString()+"L")},tp$as_number:!0,nb$negative(){return new Sk.builtin.lng(M.nb$negative.call(this).v)},nb$positive(){return new Sk.builtin.lng(M.nb$positive.call(this).v)}}});const M=Sk.builtin.int_.prototype,S=[];for(F=-5;257> F;F++)S[F]=Object.create(Sk.builtin.int_.prototype,{v:{value:F}});const E=S[0],H=S[1]},function(F,P){const b=Sk.builtin.int_.prototype;Sk.builtin.bool=Sk.abstr.buildNativeClass("bool",{constructor:function(e){return Sk.misceval.isTrue(e)?Sk.builtin.bool.true$:Sk.builtin.bool.false$},base:Sk.builtin.int_,slots:{tp$doc:"bool(x) -> bool\n\nReturns True when the argument x is true, False otherwise.\nThe builtins True and False are the only two instances of the class bool.\nThe class bool is a subclass of the class int, and cannot be subclassed.", tp$new(e,d){Sk.abstr.checkNoKwargs("bool",d);Sk.abstr.checkArgsLen("bool",e,0,1);return new Sk.builtin.bool(e[0])},$r(){return this.v?this.str$True:this.str$False},tp$as_number:!0,nb$and(e){return e.ob$type===Sk.builtin.bool?new Sk.builtin.bool(this.v&e.v):b.nb$and.call(this,e)},nb$or(e){return e.ob$type===Sk.builtin.bool?new Sk.builtin.bool(this.v|e.v):b.nb$or.call(this,e)},nb$xor(e){return e.ob$type===Sk.builtin.bool?new Sk.builtin.bool(this.v^e.v):b.nb$xor.call(this,e)}},flags:{sk$unacceptableBase:!0}, methods:{__format__:{$meth(){return this.$r()},$flags:{OneArg:!0}}},proto:{str$False:new Sk.builtin.str("False"),str$True:new Sk.builtin.str("True"),valueOf(){return!!this.v}}});Sk.exportSymbol("Sk.builtin.bool",Sk.builtin.bool);Sk.builtin.bool.true$=Object.create(Sk.builtin.bool.prototype,{v:{value:1,enumerable:!0}});Sk.builtin.bool.false$=Object.create(Sk.builtin.bool.prototype,{v:{value:0,enumerable:!0}})},function(F,P){function b(k){const u=[k,0];if(0===k)return u;var l=Math.abs(k);let q=Math.max(-1023, Math.floor(Math.log2(l))+1);for(l*=Math.pow(2,-q);.5>l;)l*=2,q--;for(;1<=l;)l*=.5,q++;0>k&&(l=-l);u[0]=l;u[1]=q;return u}function e(){return new Sk.builtin.float_(this.v)}function d(k){return function(u){const l=this.v;u=u.v;if("number"!==typeof u)if(JSBI.__isBigInt(u)){if(u=parseFloat(JSBI.toNumber(u)),Infinity==u||-Infinity==u)throw new Sk.builtin.OverflowError("int too large to convert to float");}else return Sk.builtin.NotImplemented.NotImplemented$;return k(l,u)}}function f(k,u){return function(l){const q= this.v;l=l.v;if("number"!==typeof l){if(!JSBI.__isBigInt(l))return Sk.builtin.NotImplemented.NotImplemented$;if(void 0!==u)return u(q,l)}return k(q,l)}}function h(k){const u=d(k);return function(l,q){if(void 0!==q&&!Sk.builtin.checkNone(q))throw new Sk.builtin.TypeError("pow() 3rd argument not allowed unless all arguments are integers");return u.call(this,l)}}function p(k,u){if(0===u)throw new Sk.builtin.ZeroDivisionError("integer division or modulo by zero");return Infinity===k?Infinity===u||-Infinity=== k?new Sk.builtin.float_(NaN):0>u?new Sk.builtin.float_(-Infinity):new Sk.builtin.float_(Infinity):-Infinity===k?Infinity===u||-Infinity===k?new Sk.builtin.float_(NaN):0>u?new Sk.builtin.float_(Infinity):new Sk.builtin.float_(-Infinity):new Sk.builtin.float_(k/u)}function g(k,u){if(Infinity===k||-Infinity===k)return new Sk.builtin.float_(NaN);if(0===u)throw new Sk.builtin.ZeroDivisionError("integer division or modulo by zero");return Infinity===u?0>k?new Sk.builtin.float_(-1):new Sk.builtin.float_(0): -Infinity===u?0>k||0!==k?new Sk.builtin.float_(0):new Sk.builtin.float_(-1):new Sk.builtin.float_(Math.floor(k/u))}function a(k,u){if(0===u)throw new Sk.builtin.ZeroDivisionError("integer division or modulo by zero");if(0===k)return new Sk.builtin.float_(0);if(Infinity===u)return Infinity===k||-Infinity===k?new Sk.builtin.float_(NaN):0k?0l&&(l+=u):0>u&&0!==l&&(l+=u);0===l&&(0>u?l=-0:-Infinity===Infinity/l&&(l=0));return new Sk.builtin.float_(l)} function c(k,u){if(0>k&&0!==u%1)return(new Sk.builtin.complex(k,0)).nb$power(new Sk.builtin.complex(u,0));if(0===k&&0>u)throw new Sk.builtin.ZeroDivisionError("0.0 cannot be raised to a negative power");const l=Math.pow(k,u);if(Infinity===Math.abs(l)&&Infinity!==Math.abs(k)&&Infinity!==Math.abs(u))throw new Sk.builtin.OverflowError("Numerical result out of range");return new Sk.builtin.float_(l)}Sk.builtin.float_=Sk.abstr.buildNativeClass("float",{constructor:function(k){Sk.asserts.assert(this instanceof Sk.builtin.float_,"bad call to float use 'new'");if("number"===typeof k)this.v=k;else if(void 0===k)this.v=0;else if("string"===typeof k)this.v=parseFloat(k);else{if(k.nb$float)return k.nb$float();Sk.asserts.fail("bad argument to float constructor")}},slots:{tp$getattr:Sk.generic.getAttr,tp$as_number:!0,tp$doc:"Convert a string or number to a floating point number, if possible.",tp$hash(){var k=this.v;if(!Number.isFinite(k))return Number.isNaN(k)?0:0u&&(k=-1, u=-u);let q=0,z;for(;u;)q=q<<28&536870911|q>>1,u*=268435456,l-=28,z=Math.trunc(u),u-=z,q+=z,536870911<=q&&(q-=536870911);l=0<=l?l%29:28-(-1-l)%29;q=(q<>29-l)*k;return-1===q?-2:q},$r(){return new Sk.builtin.str(this.str$(10,!0))},tp$new(k,u){if(u&&u.length)throw new Sk.builtin.TypeError("float() takes no keyword arguments");if(k&&1k?Math.ceil(k): Math.floor(k);return Sk.builtin.int_.withinThreshold(k)?new Sk.builtin.int_(k):new Sk.builtin.int_(JSBI.BigInt(k))},nb$float:e,nb$long(){return new Sk.builtin.lng(this.nb$int().v)},nb$add:d((k,u)=>new Sk.builtin.float_(k+u)),nb$subtract:d((k,u)=>new Sk.builtin.float_(k-u)),nb$reflected_subtract:d((k,u)=>new Sk.builtin.float_(u-k)),nb$multiply:d((k,u)=>new Sk.builtin.float_(k*u)),nb$divide:d(p),nb$reflected_divide:d((k,u)=>p(u,k)),nb$floor_divide:d(g),nb$reflected_floor_divide:d((k,u)=>g(u,k)),nb$remainder:d(a), nb$reflected_remainder:d((k,u)=>a(u,k)),nb$divmod:d((k,u)=>new Sk.builtin.tuple([g(k,u),a(k,u)])),nb$reflected_divmod:d((k,u)=>new Sk.builtin.tuple([g(u,k),a(u,k)])),nb$power:h(c),nb$reflected_power:h((k,u)=>c(u,k)),nb$abs(){return new Sk.builtin.float_(Math.abs(this.v))},nb$negative(){return new Sk.builtin.float_(-this.v)},nb$positive(){return new Sk.builtin.float_(this.v)},nb$bool(){return 0!==this.v},nb$isnegative(){return 0>this.v},nb$ispositive(){return 0<=this.v},ob$eq:f((k,u)=>k==u,JSBI.EQ), ob$ne:f((k,u)=>k!=u,JSBI.NE),ob$gt:f((k,u)=>k>u,JSBI.GT),ob$ge:f((k,u)=>k>=u,JSBI.GE),ob$lt:f((k,u)=>kk<=u,JSBI.LE)},getsets:{real:{$get:e,$doc:"the real part of a complex number"},imag:{$get(){return new Sk.builtin.float_(0)},$doc:"the imaginary part of a complex number"}},methods:{conjugate:{$meth:e,$flags:{NoArgs:!0},$textsig:"($self, /)",$doc:"Return self, the complex conjugate of any float."},__trunc__:{$meth(){return this.nb$int()},$flags:{NoArgs:!0},$textsig:"($self, /)", $doc:"Return the Integral closest to x between 0 and x."},__round__:{$meth(k){return this.round$(k)},$flags:{MinArgs:0,MaxArgs:1},$textsig:"($self, ndigits=None, /)",$doc:"Return the Integral closest to x, rounding half toward even.\n\nWhen an argument is passed, work like built-in round(x, ndigits)."},as_integer_ratio:{$meth(){if(!Number.isFinite(this.v)){if(Number.isNaN(this.v))throw new Sk.builtin.ValueError("cannot convert NaN to integer ratio");throw new Sk.builtin.OverflowError("cannot convert Infinity to integer ratio"); }let [k,u]=b(this.v);for(var l=0;300>l&&k!=Math.floor(k);l++)k*=2,u--;l=new Sk.builtin.int_(Math.abs(u));let q=new Sk.builtin.int_(k),z=new Sk.builtin.int_(1);0>> (10.0).as_integer_ratio()\n(10, 1)\n>>> (0.0).as_integer_ratio()\n(0, 1)\n>>> (-.25).as_integer_ratio()\n(-1, 4)"}, is_integer:{$meth(){return new Sk.builtin.bool(Number.isInteger(this.v))},$flags:{NoArgs:!0},$textsig:"($self, /)",$doc:"Return True if the float is an integer."},__getnewargs__:{$meth(){return new Sk.builtin.tuple([this])},$flags:{NoArgs:!0},$textsig:"($self, /)",$doc:Sk.builtin.none.none$},__format__:{$meth:Sk.formatting.mkNumber__format__(!0),$flags:{OneArg:!0},$textsig:"($self, format_spec, /)",$doc:Sk.builtin.none.none$}},proto:{valueOf(){return this.v}}});const n=/_[eE]|[eE]_|\._|_\.|[+-]_|__/, m=/_(?=[^_])/g;Sk.builtin.float_.PyFloat_Check=function(k){return void 0===k?!1:Sk.builtin.checkNumber(k)||Sk.builtin.checkFloat(k)||k.ob$type.$isSubType(Sk.builtin.float_)?!0:!1};Sk.builtin.float_.prototype.toFixed=function(k){k=Sk.builtin.asnum$(k);return this.v.toFixed(k)};Sk.builtin.float_.prototype.round$=function(k){var u=Sk.builtin.asnum$(this);var l=void 0===k?0:Sk.misceval.asIndexSized(k);if(Sk.__future__.bankers_rounding){u*=Math.pow(10,l);var q=Math.round(u);l=(.5===(0l.length?u.toExponential():u.toExponential(11));if(0>l.indexOf("e")&&0<=l.indexOf(".")){for(;"0"==l.charAt(l.length-1);)l=l.substring(0,l.length-1);"."==l.charAt(l.length-1)&&(l+="0")}l=l.replace(/\.0+e/,"e","i");l=l.replace(/(e[-+])([1-9])$/,"$10$2");l=l.replace(/0+(e.*)/,"$1")}else l=u.toString(k);0===this.v&&-Infinity===1/this.v&&(l="-"+l);0>l.indexOf(".")&&0>l.indexOf("E")&&0>l.indexOf("e")&&(l+= ".0");return l};Sk.builtin.float_.py2$methods={}},function(F,P){function b(l){let q=l.v;if("number"===typeof q)return q;l.nb$float&&(q=l.nb$float());if(void 0===q)throw new Sk.builtin.TypeError("a float is required");return q.v}function e(l,q,z){if(z===Sk.builtin.complex.prototype)return new Sk.builtin.complex(l,q);z=new z.constructor;Sk.builtin.complex.call(z,l,q);return z}function d(l,q){return function(z){const r=this.real,t=this.imag;var x=z.real;const v=z.v;if("number"===typeof x)z=z.imag;else if("number"=== typeof v)x=v,z=0;else if(JSBI.__isBigInt(v)){if(void 0===q){if(x=parseFloat(JSBI.toNumber(v)),Infinity==x||-Infinity==x)throw new Sk.builtin.OverflowError("int too large to convert to float");}else x=v.toString();z=0}else return Sk.builtin.NotImplemented.NotImplemented$;return l(r,t,x,z)}}function f(l,q,z,r){var t=Math.abs(z);const x=Math.abs(r);if(t>=x){if(0===t)throw new Sk.builtin.ZeroDivisionError("complex division by zero");t=r/z;z+=r*t;r=(l+q*t)/z;l=(q-l*t)/z}else x>=t?(t=z/r,z=z*t+r,Sk.asserts.assert(0!== r),r=(l*t+q)/z,l=(q*t-l)/z):l=r=NaN;return new Sk.builtin.complex(r,l)}function h(l,q,z,r){if(0===z&&0===r){r=1;var t=0}else if(0===l&&0===q){if(0!==r||0>z)throw new Sk.builtin.ZeroDivisionError("complex division by zero");t=r=0}else{const x=Math.hypot(l,q);t=Math.pow(x,z);l=Math.atan2(q,l);z*=l;0!==r&&(t/=Math.exp(l*r),z+=r*Math.log(x));r=t*Math.cos(z);t*=Math.sin(z)}return new Sk.builtin.complex(r,t)}function p(l,q,z){let r=1;var t=new Sk.builtin.complex(1,0);for(l=new Sk.builtin.complex(l,q);0< r&&z>=r;)z&r&&(t=new Sk.builtin.complex(t.real*l.real-t.imag*l.imag,t.real*l.imag+l.real*t.imag)),r<<=1,l=new Sk.builtin.complex(l.real*l.real-l.imag*l.imag,2*l.real*l.imag);return t}function g(l,q,z,r,t){t=!1;switch(q){case "e":case "f":case "g":break;case "E":t=!0;q="e";break;case "F":t=!0;q="f";break;case "r":if(0!==z)throw Error("Bad internall call");z=17;q="g";break;default:throw Error("Bad internall call");}if(isNaN(l))l="nan";else if(Infinity===l)l="inf";else if(-Infinity===l)l="-inf";else{r& g.Py_DTSF_ADD_DOT_0&&(q="g");var x="%"+(r&g.Py_DTSF_ALT?"#":"");null!=z&&(x=x+"."+z);x=new Sk.builtin.str(x+q);l=x.nb$remainder(new Sk.builtin.float_(l));l=l.v}r&g.Py_DTSF_SIGN&&"-"!==l[0]&&(l="+"+l);t&&(l=l.toUpperCase());return l}Sk.builtin.complex=Sk.abstr.buildNativeClass("complex",{constructor:function(l,q){Sk.asserts.assert(this instanceof Sk.builtin.complex,"bad call to complex constructor, use 'new'");this.real=l;this.imag=q},slots:{tp$as_number:!0,tp$doc:"Create a complex number from a real part and an optional imaginary part.\n\nThis is equivalent to (real + imag*1j) where imag defaults to 0.", tp$hash(){var l=(new Sk.builtin.float_(this.real)).tp$hash();l=1003*(new Sk.builtin.float_(this.imag)).tp$hash()+l;return Sk.builtin.int_.withinThreshold(l)?l:(new Sk.builtin.int_(JSBI.BigInt(l))).tp$hash()},tp$getattr:Sk.generic.getAttr,tp$new(l,q){l=Sk.abstr.copyKeywordsToNamedArgs("complex",["real","imag"],l,q,[null,null]);{var z=l[1],r;let x=q=!1;var t=l[0];if(null!=t&&t.constructor===Sk.builtin.complex&&null==z)q=t;else if(Sk.builtin.checkString(t)){if(null!=z)throw new Sk.builtin.TypeError("complex() can't take second arg if first is a string"); q=Sk.builtin.complex.complex_subtype_from_string(t,this)}else{if(null!=z&&Sk.builtin.checkString(z))throw new Sk.builtin.TypeError("complex() second arg can't be a string");null==t?l=null:(l=Sk.abstr.lookupSpecial(t,Sk.builtin.str.$complex),l=void 0!==l?Sk.misceval.callsimArray(l,[]):null);if(null!=l&&l!==Sk.builtin.NotImplemented.NotImplemented$){if(!a(l))throw new Sk.builtin.TypeError("__complex__ should return a complex object");t=l}if(null!=t&&void 0===t.nb$float)throw new Sk.builtin.TypeError("complex() first argument must be a string or a number, not '"+ Sk.abstr.typeName(t)+"'");if(null!=z&&void 0===z.nb$float)throw new Sk.builtin.TypeError("complex() second argument must be a number, not '"+Sk.abstr.typeName(t)+"'");null==t?t=l=0:a(t)?(l=t.real,t=t.imag,q=!0):(l=b(t),t=0);null==z?z=r=0:a(z)?(r=z.real,z=z.imag,x=!0):(r=b(z),z=0);!0===x&&(l-=z);!0===q&&(r+=t);q=e(l,r,this)}}return q},tp$richcompare(l,q){if("Eq"!==q&&"NotEq"!==q){if(Sk.builtin.checkNumber(l)||a(l))throw new Sk.builtin.TypeError("no ordering relation is defined for complex numbers"); return Sk.builtin.NotImplemented.NotImplemented$}return d(function(z,r,t,x){z=z==t&&r==x;return"Eq"===q?z:!z},!0).call(this,l)},$r(){{var l,q;let t=l="";var z=this.real;var r=this.imag;if(q=0===z)q=1==(z?0>z?-1:1:0>1/z?-1:1);q?(z="",q=g(r,"g",null,0,null)):(z=l=g(z,"g",null,0,null),q=g(r,"g",null,g.Py_DTSF_SIGN,null),0===r&&-Infinity===1/r&&q&&"-"!==q[0]&&(q="-"+q),l="(",t=")");r=new Sk.builtin.str(""+l+z+q+"j"+t)}return r},nb$int(){throw new Sk.builtin.TypeError("can't convert complex to int");}, nb$long(){throw new Sk.builtin.TypeError("can't convert complex to long");},nb$float(){throw new Sk.builtin.TypeError("can't convert complex to float");},nb$positive(){return new Sk.builtin.complex(this.real,this.imag)},nb$negative(){return new Sk.builtin.complex(-this.real,-this.imag)},nb$bool(){return this.real||this.imag},nb$add:d((l,q,z,r)=>new Sk.builtin.complex(l+z,q+r)),nb$subtract:d((l,q,z,r)=>new Sk.builtin.complex(l-z,q-r)),nb$reflected_subtract:d((l,q,z,r)=>new Sk.builtin.complex(z-l,r- q)),nb$multiply:d((l,q,z,r)=>new Sk.builtin.complex(z*l-r*q,l*r+q*z)),nb$divide:d(f),nb$reflected_divide:d((l,q,z,r)=>f(z,r,l,q)),nb$floor_divide(l){throw new Sk.builtin.TypeError("can't take floor of complex number.");},nb$reflected_floor_divide(l){throw new Sk.builtin.TypeError("can't take floor of complex number.");},nb$remainder(l){throw new Sk.builtin.TypeError("can't mod complex numbers.");},nb$reflected_remainder(l){throw new Sk.builtin.TypeError("can't mod complex numbers.");},nb$divmod(l){throw new Sk.builtin.TypeError("can't take floor or mod of complex number."); },nb$power(l,q){if(null!=q&&!Sk.builtin.checkNone(q))throw new Sk.builtin.ValueError("complex modulo");return k.call(this,l)},nb$reflected_power(l,q){if(null!=q&&!Sk.builtin.checkNone(q))throw new Sk.builtin.ValueError("complex modulo");return u.call(this,l)},nb$abs(){var l=this.real;const q=this.imag;if(!Number.isFinite(l)||!Number.isFinite(q))return Infinity===l||-Infinity===l?new Sk.builtin.float_(Math.abs(l)):Infinity===q||-Infinity===q?new Sk.builtin.float_(Math.abs(q)):new Sk.builtin.float_(NaN); l=Math.hypot(l,q);if(!Number.isFinite(l))throw new Sk.builtin.OverflowError("absolute value too large");return new Sk.builtin.float_(l)}},getsets:{real:{$get(){return new Sk.builtin.float_(this.real)},$doc:"the real part of a complex number"},imag:{$get(){return new Sk.builtin.float_(this.imag)},$doc:"the imaginary part of a complex number"}},methods:{conjugate:{$meth(){return new Sk.builtin.complex(this.real,-this.imag)},$flags:{NoArgs:!0},$textsig:null,$doc:"complex.conjugate() -> complex\n\nReturn the complex conjugate of its argument. (3-4j).conjugate() == 3+4j."}, __getnewargs__:{$meth(){return new Sk.builtin.tuple([new Sk.builtin.float_(this.real),new Sk.builtin.float_(this.imag)])},$flags:{NoArgs:!0},$textsig:null,$doc:Sk.builtin.none.none$},__format__:{$meth(l){if(Sk.builtin.checkString(l))throw new Sk.builtin.NotImplementedError("__format__ is not implemented for complex type.");throw new Sk.builtin.TypeError("__format__ requires str");},$flags:{OneArg:!0},$textsig:null,$doc:"complex.__format__() -> str\n\nConvert to a string according to format_spec."}}}); Sk.exportSymbol("Sk.builtin.complex",Sk.builtin.complex);const a=Sk.builtin.checkComplex,c=/_[eE]|[eE]_|\._|_\.|[+-]_|_j|j_/,n=/_(?=[^_])/g;Sk.builtin.complex.complex_subtype_from_string=function(l,q){q=q||Sk.builtin.complex.prototype;var z=0,r=0,t=!1;if(Sk.builtin.checkString(l))l=Sk.ffi.remapToJs(l);else if("string"!==typeof l)throw new TypeError("provided unsupported string-alike argument");if(-1!==l.indexOf("\x00")||0===l.length||""===l)throw new Sk.builtin.ValueError("complex() arg is a malformed string"); var x=0;l=l.replace(/inf|infinity/gi,"Infinity");for(l=l.replace(/nan/gi,"NaN");" "===l[x];)x++;if("("===l[x])for(t=!0,x++;" "===l[x];)x++;if(-1!==l.indexOf("_")){if(c.test(l))throw new Sk.builtin.ValueError("could not convert string to complex: '"+l+"'");l=l.charAt(0)+l.substring(1).replace(n,"")}var v=/^(?:[+-]?(?:(?:(?:\d*\.\d+)|(?:\d+\.?))(?:[eE][+-]?\d+)?|NaN|Infinity))/;var B=l.substr(x);var I=B.match(v);if(null!==I)if(x+=I[0].length,"j"===l[x]||"J"===l[x])r=parseFloat(I[0]),x++;else if("+"=== l[x]||"-"===l[x]){z=parseFloat(I[0]);I=l.substr(x).match(v);null!==I?(r=parseFloat(I[0]),x+=I[0].length):(r="+"===l[x]?1:-1,x++);if("j"!==l[x]&&"J"!==l[x])throw new Sk.builtin.ValueError("complex() arg is malformed string");x++}else z=parseFloat(I[0]);else I=I=B.match(/^([+-]?[jJ])/),null!==I&&(r=1===I[0].length?1:"+"===I[0][0]?1:-1,x+=I[0].length);for(;" "===l[x];)x++;if(t){if(")"!==l[x])throw new Sk.builtin.ValueError("complex() arg is malformed string");for(x++;" "===l[x];)x++}if(l.length!==x)throw new Sk.builtin.ValueError("complex() arg is malformed string"); return e(z,r,q)};const m=(l,q,z,r)=>{const t=z|0;return 0===r&&z===t?(100t?l=h(l,q,t,0):0m(z,r,l,q));g.Py_DTSF_SIGN=1;g.Py_DTSF_ADD_DOT_0=2;g.Py_DTSF_ALT=4;g.Py_DTST_FINITE=0;g.Py_DTST_INFINITE=1;g.Py_DTST_NAN=2},function(F,P){Sk.builtin.slice=Sk.abstr.buildNativeClass("slice",{constructor:function(b,e,d){void 0===e&&void 0===d&&(e=b,b=Sk.builtin.none.none$);void 0===e&&(e=Sk.builtin.none.none$);void 0=== d&&(d=Sk.builtin.none.none$);this.start=b;this.stop=e;this.step=d},slots:{tp$getattr:Sk.generic.getAttr,tp$doc:"slice(stop)\nslice(start, stop[, step])\n\nCreate a slice object. This is used for extended slicing (e.g. a[0:10:2]).",tp$hash:Sk.builtin.none.none$,tp$new(b,e){Sk.abstr.checkNoKwargs("slice",e);Sk.abstr.checkArgsLen("slice",b,1,3);return new Sk.builtin.slice(...b)},$r(){const b=Sk.misceval.objectRepr(this.start),e=Sk.misceval.objectRepr(this.stop),d=Sk.misceval.objectRepr(this.step);return new Sk.builtin.str("slice("+ b+", "+e+", "+d+")")},tp$richcompare(b,e){if(b.ob$type!==Sk.builtin.slice)return Sk.builtin.NotImplemented.NotImplemented$;const d=new Sk.builtin.tuple([this.start,this.stop,this.step]);b=new Sk.builtin.tuple([b.start,b.stop,b.step]);return d.tp$richcompare(b,e)}},getsets:{start:{$get(){return this.start}},step:{$get(){return this.step}},stop:{$get(){return this.stop}}},methods:{indices:{$meth:function(b){b=Sk.misceval.asIndexSized(b,Sk.builtin.OverflowError);if(0>b)throw new Sk.builtin.TypeError("length should not be negative"); const {start:e,stop:d,step:f}=this.slice$indices(b);return new Sk.builtin.tuple([new Sk.builtin.int_(e),new Sk.builtin.int_(d),new Sk.builtin.int_(f)])},$doc:"S.indices(len) -> (start, stop, stride)\n\nAssuming a sequence of length len, calculate the start and stop\nindices, and the stride length of the extended slice described by\nS. Out of bounds indices are clipped in a manner consistent with the\nhandling of normal slices.",$textsig:null,$flags:{OneArg:!0}}},proto:{slice$as_indices(b){let e;var d= b?f=>Sk.misceval.asIndexSized(f,null,"slice indices must be integers or None or have an __index__ method"):f=>Sk.misceval.asIndexOrThrow(f,"slice indices must be integers or None or have an __index__ method");if(Sk.builtin.checkNone(this.step))e=1;else if(e=d(this.step),0===e)throw new Sk.builtin.ValueError("slice step cannot be zero");b=Sk.builtin.checkNone(this.start)?null:d(this.start);d=Sk.builtin.checkNone(this.stop)?null:d(this.stop);return{start:b,stop:d,step:e}},$wrt(b,e,d,f,h){h=h?p=>JSBI.__isBigInt(p)? JSBI.add(p,JSBI.BigInt(b)):p+b:p=>p+b;0e&&(e=h(e),0>e&&(e=0)),null===d?d=b:d>b?d=b:0>d&&(d=h(d))):(null===e?e=b-1:e>=b?e=b-1:0>e&&(e=h(e)),null===d?d=-1:0>d&&(d=h(d),0>d&&(d=-1)));return{start:e,stop:d,step:f}},slice$indices(b,e){let {start:d,stop:f,step:h}=this.slice$as_indices(!0,e);return this.$wrt(b,d,f,h,e)},sssiter$(b,e){let {start:d,stop:f,step:h}=this.slice$indices(b,!0);if(0f;b+=h)e(b)}},flags:{sk$unacceptableBase:!0}});Sk.builtin.slice.startEnd$wrt= function(b,e,d){b=b.sq$length();void 0===e||Sk.builtin.checkNone(e)?e=0:(e=Sk.misceval.asIndexSized(e,null,"slice indices must be integers or have an __index__ method"),0>e&&(e+=b,0>e&&(e=0)));void 0===d||Sk.builtin.checkNone(d)?d=b:(d=Sk.misceval.asIndexSized(d,null,"slice indices must be integers or have an __index__ method"),0>d?(d+=b,0>d&&(d=0)):d>b&&(d=b));return{start:e,end:d}}},function(F,P){function b(f){return function(h){return Sk.builtin.checkAnySet(h)?f.call(this,h):Sk.builtin.NotImplemented.NotImplemented$}} function e(f){f instanceof Sk.builtin.set&&f.tp$hash===Sk.builtin.none.none$&&(f=new Sk.builtin.frozenset(Sk.misceval.arrayFromIterable(f)));return f}F={};Sk.builtin.set=Sk.abstr.buildNativeClass("set",{constructor:function(f){void 0===f?f=[]:Array.isArray(f)||(f=Sk.misceval.arrayFromIterable(f));Sk.asserts.assert(this instanceof Sk.builtin.set,"Bad call to set - must be called with an Array and 'new'");const h=[];for(let p=0;p new empty set object\nset(iterable) -> new set object\n\nBuild an unordered collection of unique elements.",tp$init(f,h){Sk.abstr.checkNoKwargs("set",h);Sk.abstr.checkArgsLen("set",f,0,1);this.set$clear();return(f=f[0])&&this.set$update(f)},tp$new:Sk.generic.new,$r(){if(this.in$repr)return new Sk.builtin.str(Sk.abstr.typeName(this)+"(...)");this.in$repr=!0;const f=this.sk$asarray().map(h=> Sk.misceval.objectRepr(h));this.in$repr=!1;return Sk.__future__.python3?0===f.length?new Sk.builtin.str(Sk.abstr.typeName(this)+"()"):this.ob$type!==Sk.builtin.set?new Sk.builtin.str(Sk.abstr.typeName(this)+"({"+f.join(", ")+"})"):new Sk.builtin.str("{"+f.join(", ")+"}"):new Sk.builtin.str(Sk.abstr.typeName(this)+"(["+f.join(", ")+"])")},tp$iter(){return new d(this)},tp$richcompare(f,h){if(!Sk.builtin.checkAnySet(f))return Sk.builtin.NotImplemented.NotImplemented$;switch(h){case "NotEq":case "Eq":return f= this===f?!0:this.get$size()!==f.get$size()?!1:Sk.misceval.isTrue(this.set$issubset(f)),"Eq"===h?f:!f;case "LtE":return this===f||Sk.misceval.isTrue(this.set$issubset(f));case "GtE":return this===f||Sk.misceval.isTrue(f.set$issubset(this));case "Lt":return this.get$size()f.get$size()&&Sk.misceval.isTrue(f.set$issubset(this))}},nb$subtract:b(function(f){return this.difference.$meth.call(this,f)}),nb$and:b(function(f){return this.intersection.$meth.call(this, f)}),nb$or:b(function(f){return this.union.$meth.call(this,f)}),nb$xor:b(function(f){return this.symmetric_difference.$meth.call(this,f)}),nb$inplace_subtract:b(function(f){f===this&&(f=f.set$copy());return Sk.misceval.chain(this.difference_update.$meth.call(this,f),()=>this)}),nb$inplace_and:b(function(f){return Sk.misceval.chain(this.intersection_update.$meth.call(this,f),()=>this)}),nb$inplace_or:b(function(f){return Sk.misceval.chain(this.update.$meth.call(this,f),()=>this)}),nb$inplace_xor:b(function(f){f=== this&&(f=f.set$copy());return Sk.misceval.chain(this.symmetric_difference_update.$meth.call(this,f),()=>this)}),sq$length(){return this.get$size()},sq$contains(f){f=e(f);return this.v.sq$contains(f)}},methods:{add:{$meth(f){this.set$add(f);return Sk.builtin.none.none$},$flags:{OneArg:!0},$textsig:null,$doc:"Add an element to a set.\n\nThis has no effect if the element is already present."},clear:{$meth(){this.set$clear();return Sk.builtin.none.none$},$flags:{NoArgs:!0},$textsig:null,$doc:"Remove all elements from this set."}, copy:{$meth(){return this.set$copy()},$flags:{NoArgs:!0},$textsig:null,$doc:"Return a shallow copy of a set."},discard:{$meth(f){f=e(f);this.set$discard(f);return Sk.builtin.none.none$},$flags:{OneArg:!0},$textsig:null,$doc:"Remove an element from a set if it is a member.\n\nIf the element is not a member, do nothing."},difference:{$meth(...f){const h=this.set$copy();return Sk.misceval.chain(Sk.misceval.iterArray(f,p=>h.set$difference_update(p)),()=>h)},$flags:{MinArgs:0},$textsig:null,$doc:"Return the difference of two or more sets as a new set.\n\n(i.e. all elements that are in this set but not the others.)"}, difference_update:{$meth(...f){return Sk.misceval.chain(Sk.misceval.iterArray(f,h=>this.set$difference_update(h)),()=>Sk.builtin.none.none$)},$flags:{MinArgs:0},$textsig:null,$doc:"Remove all elements of another set from this set."},intersection:{$meth(...f){return this.set$intersection_multi(...f)},$flags:{MinArgs:0},$textsig:null,$doc:"Return the intersection of two sets as a new set.\n\n(i.e. all elements that are in both sets.)"},intersection_update:{$meth(...f){return Sk.misceval.chain(this.set$intersection_multi(...f), h=>{this.swap$bodies(h);return Sk.builtin.none.none$})},$flags:{MinArgs:0},$textsig:null,$doc:"Update a set with the intersection of itself and another."},isdisjoint:{$meth(f){return Sk.misceval.chain(Sk.misceval.iterFor(Sk.abstr.iter(f),h=>{if(this.sq$contains(h))return new Sk.misceval.Break(Sk.builtin.bool.false$)}),h=>h||Sk.builtin.bool.true$)},$flags:{OneArg:!0},$textsig:null,$doc:"Return True if two sets have a null intersection."},issubset:{$meth(f){Sk.builtin.checkAnySet(f)||(f=this.set$make_basetype(f)); return Sk.misceval.chain(f,h=>this.set$issubset(h))},$flags:{OneArg:!0},$textsig:null,$doc:"Report whether another set contains this set."},issuperset:{$meth(f){Sk.builtin.checkAnySet(f)||(f=this.set$make_basetype(f));return Sk.misceval.chain(f,h=>h.set$issubset(this))},$flags:{OneArg:!0},$textsig:null,$doc:"Report whether this set contains another set."},pop:{$meth(){if(0===this.get$size())throw new Sk.builtin.KeyError("pop from an empty set");return Sk.misceval.callsimArray(this.v.popitem,[this.v]).v[0]}, $flags:{NoArgs:!0},$textsig:null,$doc:"Remove and return an arbitrary set element.\nRaises KeyError if the set is empty."},remove:{$meth(f){const h=e(f);if(this.v.mp$lookup(h))return this.v.mp$ass_subscript(h),Sk.builtin.none.none$;throw new Sk.builtin.KeyError(f);},$flags:{OneArg:!0},$textsig:null,$doc:"Remove an element from a set; it must be a member.\n\nIf the element is not a member, raise a KeyError."},symmetric_difference:{$meth(f){let h;return Sk.misceval.chain(this.set$make_basetype(f),p=> {h=p;return h.set$symmetric_diff_update(this)},()=>h)},$flags:{OneArg:!0},$textsig:null,$doc:"Return the symmetric difference of two sets as a new set.\n\n(i.e. all elements that are in exactly one of the sets.)"},symmetric_difference_update:{$meth(f){Sk.builtin.checkAnySet(f)||(f=this.set$make_basetype(f));return Sk.misceval.chain(f,h=>this.set$symmetric_diff_update(h),()=>Sk.builtin.none.none$)},$flags:{OneArg:!0},$textsig:null,$doc:"Update a set with the symmetric difference of itself and another."}, union:{$meth(...f){const h=this.set$copy();return Sk.misceval.chain(Sk.misceval.iterArray(f,p=>h.set$update(p)),()=>h)},$flags:{MinArgs:0},$textsig:null,$doc:"Return the union of sets as a new set.\n\n(i.e. all elements that are in either set.)"},update:{$meth(...f){return Sk.misceval.chain(Sk.misceval.iterArray(f,h=>this.set$update(h)),()=>Sk.builtin.none.none$)},$flags:{MinArgs:0},$textsig:null,$doc:"Update a set with the union of itself and others."}},classmethods:Sk.generic.classGetItem,proto:Object.assign(F, {sk$asarray(){return this.v.sk$asarray()},get$size(){return this.v.sq$length()},set$add(f){this.v.mp$ass_subscript(f,!0)},set$make_basetype(f){return Sk.misceval.chain(Sk.misceval.arrayFromIterable(f,!0),h=>new this.sk$builtinBase(h))},set$discard(f){return this.v.pop$item(f)},set$clear(){this.v=new Sk.builtin.dict([])},set$copy(){const f=new this.sk$builtinBase;f.v=this.v.dict$copy();return f},set$difference_update(f){return Sk.misceval.iterFor(Sk.abstr.iter(f),h=>{this.set$discard(h)})},set$intersection(f){const h= new this.sk$builtinBase;return Sk.misceval.chain(Sk.misceval.iterFor(Sk.abstr.iter(f),p=>{this.sq$contains(p)&&h.set$add(p)}),()=>h)},set$intersection_multi(...f){if(!f.length)return this.set$copy();let h=this;return Sk.misceval.chain(Sk.misceval.iterArray(f,p=>Sk.misceval.chain(h.set$intersection(p),g=>{h=g})),()=>h)},set$issubset(f){const h=this.get$size(),p=f.get$size();if(h>p)return Sk.builtin.bool.false$;for(let g=this.tp$iter(),a=g.tp$iternext();void 0!==a;a=g.tp$iternext())if(!f.sq$contains(a))return Sk.builtin.bool.false$; return Sk.builtin.bool.true$},set$symmetric_diff_update(f){return Sk.misceval.iterFor(Sk.abstr.iter(f),h=>{void 0===this.set$discard(h)&&this.set$add(h)})},set$update(f){return Sk.misceval.iterFor(Sk.abstr.iter(f),h=>{this.set$add(h)})},swap$bodies(f){this.v=f.v}})});Sk.exportSymbol("Sk.builtin.set",Sk.builtin.set);P=Sk.builtin.set.prototype;Sk.builtin.frozenset=Sk.abstr.buildNativeClass("frozenset",{constructor:function(f){void 0===f?f=[]:Array.isArray(f)||(f=Sk.misceval.arrayFromIterable(f));Sk.asserts.assert(this instanceof Sk.builtin.frozenset,"bad call to frozen set - must be called with 'new'");const h=[];for(let p=0;p empty frozenset object\nfrozenset(iterable) -> frozenset object\n\nBuild an immutable unordered collection of unique elements.",tp$hash(){let f=1927868237;const h=this.sk$asarray();f*=h.length+1;for(let p=0;pp.length?new Sk.builtin.frozenset(p):Sk.builtin.frozenset.$emptyset)},$r:P.$r,tp$iter:P.tp$iter,tp$richcompare:P.tp$richcompare,nb$subtract:P.nb$subtract, nb$and:P.nb$and,nb$or:P.nb$or,nb$xor:P.nb$xor,sq$length:P.sq$length,sq$contains:P.sq$contains},methods:{copy:Object.assign({},P.copy.d$def,{$meth(){return this.constructor===this.sk$builtinBase?this:new Sk.builtin.frozenset(this.sk$asarray())}}),difference:P.difference.d$def,intersection:P.intersection.d$def,isdisjoint:P.isdisjoint.d$def,issubset:P.issubset.d$def,issuperset:P.issuperset.d$def,symmetric_difference:P.symmetric_difference.d$def,union:P.union.d$def},classmethods:Sk.generic.classGetItem, proto:Object.assign({$subtype_new(f,h){const p=new this.constructor;return Sk.misceval.chain(Sk.builtin.frozenset.prototype.tp$new(f),g=>{p.v=g.v;return p})}},F)});Sk.builtin.frozenset.$emptyset=new Sk.builtin.frozenset([]);Sk.exportSymbol("Sk.builtin.frozenset",Sk.builtin.frozenset);var d=Sk.abstr.buildIteratorClass("set_iterator",{constructor:function(f){this.$index=0;this.$seq=f.sk$asarray();this.$orig=f},iternext:Sk.generic.iterNextWithArrayCheckSize,methods:{__length_hint__:Sk.generic.iterLengthHintWithArrayMethodDef}, flags:{sk$unacceptableBase:!0}})},function(F,P){Sk.builtin.print=function(b,e){let [d,f,h]=Sk.abstr.copyKeywordsToNamedArgs("print",["sep","end","file","flush"],[],e);if(void 0===d||Sk.builtin.checkNone(d))d=" ";else if(Sk.builtin.checkString(d))d=d.$jsstr();else throw new Sk.builtin.TypeError("sep must be None or a string, not "+Sk.abstr.typeName(d));if(void 0===f||Sk.builtin.checkNone(f))f="\n";else if(Sk.builtin.checkString(f))f=f.$jsstr();else throw new Sk.builtin.TypeError("end must be None or a string, not "+ Sk.abstr.typeName(f));let p;if(void 0!==h&&!Sk.builtin.checkNone(h)&&(p=Sk.abstr.lookupSpecial(h,Sk.builtin.str.$write),void 0===p))throw new Sk.builtin.AttributeError("'"+Sk.abstr.typeName(h)+"' object has no attribute 'write'");const g=new Sk.builtin.str(b.map(a=>(new Sk.builtin.str(a)).toString()).join(d)+f);if(void 0!==p)Sk.misceval.callsimArray(p,[g]);else return Sk.misceval.chain(Sk.importModule("sys",!1,!0),a=>(p=Sk.abstr.lookupSpecial(a.$d.stdout,Sk.builtin.str.$write))&&Sk.misceval.callsimOrSuspendArray(p, [g]))};Sk.builtin.print.co_fastcall=1},function(F,P){Sk.builtin.module=Sk.abstr.buildNativeClass("module",{constructor:function(){this.$d={}},slots:{tp$doc:"Create a module object.\n\nThe name must be a string; the optional doc argument can have any type.",tp$getattr(b,e){var d=this.$d[b.$mangled];if(void 0!==d)return d;d=this.ob$type.$typeLookup(b);if(void 0!==d){const h=d.tp$descr_get;return h?h.call(d,this,this.ob$type,e):d}const f=this.$d.__getattr__;if(void 0!==f)return d=Sk.misceval.tryCatch(()=> Sk.misceval.callsimOrSuspendArray(f,[b]),h=>{if(!(h instanceof Sk.builtin.AttributeError))throw h;}),e?d:Sk.misceval.retryOptionalSuspensionOrThrow(d)},tp$setattr:Sk.generic.setAttr,tp$new:Sk.generic.new,tp$init(b,e){const [d,f]=Sk.abstr.copyKeywordsToNamedArgs("module",["name","doc"],b,e,[Sk.builtin.none.none$]);Sk.builtin.pyCheckType("module","string",d);this.init$dict(d,f)},$r(){let b=this.get$name();if(void 0!==b){var e=this.get$mod_reprf();if(void 0!==e)return Sk.misceval.callsimOrSuspendArray(e, [this])}b=void 0===b?"'?'":b;e=this.from$file();e=void 0===e?this.empty_or$loader():e;return new Sk.builtin.str("")}},getsets:{__dict__:{$get(){return new Sk.builtin.mappingproxy(this.$d)}}},methods:{__dir__:{$meth(){const b=this.tp$getattr(Sk.builtin.str.$dict);if(!Sk.builtin.checkMapping(b))throw new Sk.builtin.TypeError("__dict__ is not a dictionary");const e=b.mp$lookup(Sk.builtin.str.$dir);return void 0!==e?Sk.misceval.callsimOrSuspendArray(e,[]):new Sk.builtin.list(Sk.misceval.arrayFromIterable(b))}, $flags:{NoArgs:!0},$doc:"__dir__() -> list\nspecialized dir() implementation"}},proto:{sk$hasDict:!0,init$dict(b,e){this.$d.__name__=b;this.$d.__doc__=e;this.$d.__package__=Sk.builtin.none.none$;this.$d.__spec__=Sk.builtin.none.none$;this.$d.__loader__=Sk.builtin.none.none$},sk$attrError(){let b=this.get$name();b=void 0===b?"module":"module "+b;this.$initializing&&(b="(most likely due to a circular import) partially initialized "+b);return b},get$name(){const b=this.tp$getattr(Sk.builtin.str.$name); return b&&Sk.misceval.objectRepr(b)},from$file(){const b=this.tp$getattr(Sk.builtin.str.$file);return b&&" from "+Sk.misceval.objectRepr(b)},empty_or$loader(){if(this.$js&&this.$js.includes("$builtinmodule"))return" (built-in)";const b=this.tp$getattr(Sk.builtin.str.$loader);return void 0===b||Sk.builtin.checkNone(b)?"":" ("+Sk.misceval.objectRepr(b)+")"},get$mod_reprf(){const b=this.tp$getattr(Sk.builtin.str.$loader);return b&&b.tp$getattr(this.str$mod_repr)},str$mod_repr:new Sk.builtin.str("module_repr")}}); Sk.exportSymbol("Sk.builtin.module",Sk.builtin.module)},function(F,P){Sk.builtin.structseq_types={};Sk.builtin.make_structseq=function(b,e,d,f,h){f=void 0===f?{}:f;h=void 0===h?null:h;const p=b+"."+e,g=[],a={};Object.keys(d).forEach((k,u)=>{g.push(k);a[k]={$get(){return this.v[u]},$doc:d[k]}});const c=g.length;let n=c;Object.keys(f).forEach((k,u)=>{a[k]={$get(){return this.$hidden[u]||Sk.builtin.none.none$},$doc:f[k]};n++});var m=Sk.abstr.buildNativeClass(p,{constructor:function(k,u){Sk.asserts.assert(this instanceof m);Sk.builtin.tuple.call(this,k);this.$hidden=u||[]},base:Sk.builtin.tuple,slots:{tp$new(k,u){Sk.abstr.checkOneArg(p,k,u);k=Sk.misceval.arrayFromIterable(k[0]);if(k.lengthn)throw new Sk.builtin.TypeError(p+"() takes an at most "+n+"-sequence ("+k.length+"-sequence given)");return new m(k.slice(0,c),k.slice(c))},tp$doc:h?h:Sk.builtin.none.none$,$r(){var k;if(0===this.v.length)return new Sk.builtin.str(p+ "()");var u=[];for(k=0;k")}},iternext(b,e){var d=this;if(this.gi$running)throw new Sk.builtin.ValueError("generator already executing");this.gi$running=!0;void 0===e&&(e=Sk.builtin.none.none$);this.gi$sentvalue=e;e=[this];this.func_closure&&e.push(this.func_closure);return function p(h){if(h instanceof Sk.misceval.Suspension){if(b)return new Sk.misceval.Suspension(p,h);h=Sk.misceval.retryOptionalSuspensionOrThrow(h)}d.gi$running=!1;Sk.asserts.assert(void 0!==h);if(Array.isArray(h))return d.gi$resumeat= h[0],h=h[1];d.gi$ret=h}(this.func_code.apply(this.func_globals,e))},methods:{send:{$meth(b){return Sk.misceval.chain(this.tp$iternext(!0,b),e=>{if(void 0===e)throw e=this.gi$ret,void 0!==e&&e!==Sk.builtin.none.none$?new Sk.builtin.StopIteration(e):new Sk.builtin.StopIteration;return e})},$flags:{OneArg:!0},$doc:"send(arg) -> send 'arg' into generator,\nreturn next yielded value or raise StopIteration."}}});Sk.exportSymbol("Sk.builtin.generator",Sk.builtin.generator);Sk.builtin.makeGenerator=function(b, e){var d,f=new Sk.builtin.generator(null,null,null);f.tp$iternext=b;for(d in e)e.hasOwnProperty(d)&&(f[d]=e[d]);return f};Sk.exportSymbol("Sk.builtin.makeGenerator",Sk.builtin.makeGenerator)},function(F,P){Sk.builtin.file=function(b,e,d){var f;if(!(this instanceof Sk.builtin.file))return new Sk.builtin.file(b,e,d);this.mode=e;this.name=Sk.ffi.remapToJs(b);this.closed=!1;if("/dev/stdout"===this.name)this.data$=Sk.builtin.none.none$,this.fileno=1;else if("/dev/stdin"===this.name)this.fileno=0;else if("/dev/stderr"=== this.name)this.fileno=2;else{if(Sk.inBrowser)if(this.fileno=10,d=document.getElementById(b.v),null==d)if("w"==e.v||"a"==e.v)this.data$="";else throw new Sk.builtin.IOError("[Errno 2] No such file or directory: '"+b.v+"'");else"textarea"==d.nodeName.toLowerCase()?this.data$=d.value:this.data$=d.textContent;else this.fileno=11,this.data$=Sk.read(b.v);this.lineList=this.data$.split("\n");this.lineList=this.lineList.slice(0,-1);for(f in this.lineList)this.lineList[f]+="\n";this.currentLine=0}this.pos$= 0;Sk.fileopen&&10<=this.fileno&&Sk.fileopen(this);return this};Sk.abstr.setUpInheritance("file",Sk.builtin.file,Sk.builtin.object);Sk.abstr.setUpBuiltinMro(Sk.builtin.file);Sk.builtin.file.prototype.$r=function(){return new Sk.builtin.str("<"+(this.closed?"closed":"open")+"file '"+this.name+"', mode '"+Sk.ffi.remapToJs(this.mode)+"'>")};Sk.builtin.file.prototype.tp$iter=function(){var b={tp$iter:function(){return b},$obj:this,$index:this.currentLine,$lines:this.lineList,tp$iternext:function(){if(!(b.$index>= b.$lines.length))return new Sk.builtin.str(b.$lines[b.$index++])}};return b};Sk.abstr.setUpSlots(Sk.builtin.file);Sk.builtin.file.prototype.__enter__=new Sk.builtin.func(function(b){return b});Sk.builtin.file.prototype.__exit__=new Sk.builtin.func(function(b){return Sk.misceval.callsimArray(Sk.builtin.file.prototype.close,[b])});Sk.builtin.file.prototype.close=new Sk.builtin.func(function(b){b.closed=!0;return Sk.builtin.none.none$});Sk.builtin.file.prototype.flush=new Sk.builtin.func(function(b){}); Sk.builtin.file.prototype.fileno=new Sk.builtin.func(function(b){return this.fileno});Sk.builtin.file.prototype.isatty=new Sk.builtin.func(function(b){return!1});Sk.builtin.file.prototype.read=new Sk.builtin.func(function(b,e){var d=b.data$.length;if(b.closed)throw new Sk.builtin.ValueError("I/O operation on closed file");var f=void 0===e?d:Sk.ffi.remapToJs(e);f=new Sk.builtin.str(b.data$.substr(b.pos$,f));b.pos$=void 0===e?d:b.pos$+Sk.ffi.remapToJs(e);b.pos$>=d&&(b.pos$=d);return f});Sk.builtin.file.$readline= function(b,e,d){if(0===b.fileno){b=Sk.ffi.remapToJs(d);b=Sk.inputfun(b?b:"");if(b instanceof Promise||b&&"function"===typeof b.then){var f=new Sk.misceval.Suspension;f.resume=function(){if(f.data.error)throw f.data.error;return new Sk.builtin.str(f.data.result)};f.data={type:"Sk.promise",promise:b};return f}return new Sk.builtin.str(b)}e="";b.currentLineb(M,B)));if("object"===I){I=v.constructor;if(I===Object&&Object.getPrototypeOf(v)===c||void 0===I)return B.dictHook?B.dictHook(v):g(v,B);if(I===Uint8Array)return new Sk.builtin.bytes(v);if(I===Set)return p(v,B);if(I===Map){const M=new Sk.builtin.dict;v.forEach((S, E)=>{M.mp$ass_subscript(b(E,B),b(S,B))});return M}return I===Sk.misceval.Suspension?v:B.proxyHook?B.proxyHook(v):a(v)}if(B.unhandledHook)return B.unhandledHook(v);Sk.asserts.fail("unhandled remap case of type "+I)}function e(v,B){if(void 0===v||null===v)return v;const I=v.valueOf();if(null===I)return I;const M=typeof I;B=B||{};if("string"===M)return B.stringHook?B.stringHook(I):I;if("boolean"===M)return I;if("number"===M)return B.numberHook?B.numberHook(I,v):I;if(JSBI.__isBigInt(I))return B.bigintHook? B.bigintHook(I,v):I;if(Array.isArray(I))return B.arrayHook?B.arrayHook(I,v):I.map(S=>e(S,B));if(I.sk$object)return v instanceof Sk.builtin.dict?B.dictHook?B.dictHook(v):f(v,B):v instanceof Sk.builtin.set?B.setHook?B.setHook(v):new Set(d(v,B)):B.unhandledHook?B.unhandledHook(v):void 0;if("object"===M)return B.objectHook?B.objectHook(I,v):I;if("function"===M)return B.funcHook?B.funcHook(I,v):I;Sk.asserts.fail("unhandled type "+M)}function d(v,B){return Array.from(v,I=>e(I,B))}function f(v,B){const I= {};v.$items().forEach(M=>{var [S,E]=M;I[S.valueOf()]=e(E,B)});return I}function h(v){return Number.isInteger(v)?Math.abs(v)b(I,B)))}function g(v,B){const I=new Sk.builtin.dict;Object.entries(v).forEach(M=>{var [S,E]=M;I.mp$ass_subscript(new Sk.builtin.str(S),b(E,B))});return I}function a(v,B){if(null===v||void 0===v)return Sk.builtin.none.none$; var I=typeof v;if("object"!==I&&"function"!==I)return b(v);B=B||{};if(I=k.get(v)){if(B.bound===I.$bound)return I;B.name||(B.name=I.$name)}B=new z(v,B);k.set(v,B);return B}Sk.ffi={remapToPy:b,remapToJs:e,toPy:b,toJs:e,isTrue:function(v){return null!=v&&v.nb$bool?v.nb$bool():v.sq$length?0!==v.sq$length():!!v},toJsString:function(v){return String(v)},toJsNumber:function(v){return Number(v)},toJsArray:d,toJsHashMap:f,toPyDict:g,toPyFloat:function(v){return new Sk.builtin.float_(Number(v))},toPyInt:function(v){if("number"=== typeof v)return v=Math.trunc(v),Math.abs(v)b(I,B)))},toPyTuple:function(v,B){return new Sk.builtin.tuple(Array.from(v,I=>b(I,B)))},toPySet:p,numberToPy:h,proxy:a};const c=Object.prototype,n=Function.prototype,m=/^-?\d+$/,k=new WeakMap,u={dictHook:v=>a(v),unhandledHook:v=>String(v)},l=(v,B)=>({dictHook:I=>a(I),funcHook:I=>a(I,{bound:v,name:B}),unhandledHook:I=>String(I)}),q={unhandledHook:v=> {var B=k.get(v);if(B)return B;B={v,$isPyWrapped:!0,unwrap:()=>v};if(void 0===v.tp$call)return k.set(v,B),B;const I=(...M)=>{M=M.map(E=>b(E,u));let S=Sk.misceval.tryCatch(()=>Sk.misceval.chain(v.tp$call(M),E=>e(E,q)),E=>{if(Sk.uncaughtException)Sk.uncaughtException(E);else throw E;});for(;S instanceof Sk.misceval.Suspension;){if(!S.optional)return Sk.misceval.asyncToPromise(()=>S);S=S.resume()}return S};k.set(v,Object.assign(I,B));return I}},z=Sk.abstr.buildNativeClass("Proxy",{constructor:function(v, B){if(void 0===v)throw new Sk.builtin.TypeError("Proxy cannot be called from python");this.js$wrapped=v;this.$module=null;this.$methods=Object.create(null);this.in$repr=!1;B||(B={});Object.defineProperties(this,this.memoized$slots);"function"===typeof v?(this.is$callable=!0,this.$bound=B.bound,this.$name=B.name||v.name||"(native JS)",2>=this.$name.length&&(this.$name+=" (native JS)")):(this.is$callable=!1,delete this.is$type,this.is$type=!1,this.$name=B.name)},slots:{tp$doc:"proxy for a javascript object", tp$hash(){return Sk.builtin.object.prototype.tp$hash.call(this.js$wrapped)},tp$getattr(v){return this.$lookup(v)||Sk.generic.getAttr.call(this,v)},tp$setattr(v,B){v=v.toString();void 0===B?delete this.js$wrapped[v]:this.js$wrapped[v]=e(B,q)},$r(){if(this.is$callable){if(this.is$type||!this.$bound)return new Sk.builtin.str("<"+this.tp$name+" '"+this.$name+"'>");var v=Sk.misceval.objectRepr(a(this.$bound));return new Sk.builtin.str("")}if(this.js$proto=== c){if(this.in$repr)return new Sk.builtin.str("{...}");this.in$repr=!0;v=Object.entries(this.js$wrapped).map(B=>{var [I,M]=B;M=b(M,l(this.js$wrapped,I));return"'"+I+"': "+Sk.misceval.objectRepr(M)});v=new Sk.builtin.str("proxyobject({"+v.join(", ")+"})");this.in$repr=!1;return v}return new Sk.builtin.str("<"+this.tp$name+" "+("proxyobject"===this.tp$name?"object":"proxyobject")+">")},tp$as_sequence_or_mapping:!0,mp$subscript(v){const B=this.$lookup(v);if(void 0===B)throw new Sk.builtin.LookupError(v); return B},mp$ass_subscript(v,B){return this.tp$setattr(v,B)},sq$contains(v){return e(v)in this.js$wrapped},ob$eq(v){return this.js$wrapped===v.js$wrapped},ob$ne(v){return this.js$wrapped!==v.js$wrapped},tp$as_number:!0,nb$bool(){return this.js$proto===c?0new Sk.builtin.str(B))))}, $flags:{NoArgs:!0}},__new__:{$meth(v,...B){if(!(v instanceof z))throw new Sk.builtin.TypeError("expected a proxy object as the first argument not "+Sk.abstr.typeName(v));try{return v.$new(B)}catch(I){if(I instanceof TypeError&&I.message.includes("not a constructor"))throw new Sk.builtin.TypeError(Sk.misceval.objectRepr(v)+" is not a constructor");throw I;}},$flags:{MinArgs:1}},__call__:{$meth(v,B){if("function"!==typeof this.js$wrapped)throw new Sk.builtin.TypeError("'"+this.tp$name+"' object is not callable"); return this.$call(v,B)},$flags:{FastCall:!0}},keys:{$meth(){return new Sk.builtin.list(Object.keys(this.js$wrapped).map(v=>new Sk.builtin.str(v)))},$flags:{NoArgs:!0}},get:{$meth(v,B){return this.$lookup(v)||B||Sk.builtin.none.none$},$flags:{MinArgs:1,MaxArgs:2}}},getsets:{__class__:{$get(){return b(this.js$wrapped.constructor,u)},$set(){throw new Sk.builtin.TypeError("not writable");}},__name__:{$get(){return new Sk.builtin.str(this.$name)}},__module__:{$get(){return this.$module||Sk.builtin.none.none$}, $set(v){this.$module=v}}},proto:{valueOf(){return this.js$wrapped},$new(v,B){Sk.abstr.checkNoKwargs("__new__",B);return b(new this.js$wrapped(...v.map(I=>e(I,q))),{dictHook:I=>a(I),proxyHook:I=>a(I,{name:this.$name})})},$call(v,B){Sk.abstr.checkNoKwargs("__call__",B);return Sk.misceval.chain(this.js$wrapped.apply(this.$bound,v.map(I=>e(I,q))),I=>I instanceof Promise?Sk.misceval.promiseToSuspension(I):I,I=>b(I,u))},$lookup(v){v=v.toString();const B=this.js$wrapped[v];if(void 0!==B)return b(B,l(this.js$wrapped, v));if(v in this.js$wrapped)return Sk.builtin.none.none$},memoized$slots:{js$proto:{configurable:!0,get(){delete this.js$proto;return this.js$proto=Object.getPrototypeOf(this.js$wrapped)}},$dir:{configurable:!0,get(){const v=[];let B=this.js$wrapped;for(;null!=B&&B!==c&&B!==n;)v.push(...Object.getOwnPropertyNames(B)),B=Object.getPrototypeOf(B);return new Set(v)}},tp$iter:{configurable:!0,get(){delete this.tp$iter;return void 0!==this.js$wrapped[Symbol.iterator]?this.tp$iter=()=>a(this.js$wrapped[Symbol.iterator]()): this.tp$iter=()=>{throw new Sk.builtin.TypeError(Sk.misceval.objectRepr(this)+" is not iterable");}}},tp$iternext:{configurable:!0,get(){delete this.tp$iternext;if(void 0!==this.js$wrapped.next)return this.tp$iternext=()=>{const v=this.js$wrapped.next().value;return v&&b(v,u)}}},sq$length:{configurable:!0,get(){delete this.sq$length;if(!this.is$callable&&void 0!==this.js$wrapped.length)return this.sq$length=()=>this.js$wrapped.length}},tp$call:{configurable:!0,get(){delete this.tp$call;if(this.is$callable)return this.tp$call= this.is$type?this.$new:this.$call}},tp$name:{configurable:!0,get(){delete this.tp$name;if(this.is$callable)return this.tp$name=this.is$type?"proxyclass":this.$bound?"proxymethod":"proxyfunction";{const v=this.js$wrapped;let B=v[Symbol.toStringTag]||this.$name||v.constructor&&v.constructor.name||"proxyobject";"Object"===B?B="proxyobject":2>=B.length&&(B=a(v.constructor).$name);return this.tp$name=B}}},is$type:{configurable:!0,get(){delete this.is$type;var v=this.js$wrapped;const B=v.prototype;if(void 0=== B)return this.is$type=v===Sk.global.Proxy;{const I=t.call(v).match(r);v=null===I?null:"class"===I[0]?!0:!x.has(v)}return!0===v?this.is$type=!0:!1===v?this.is$type=!1:1p;c+=g)a.push(new Sk.builtin.int_(c));else{h=c=JSBI.BigInt(h); g=JSBI.BigInt(g);p=JSBI.BigInt(p);if(JSBI.greaterThan(g,JSBI.__ZERO))for(;JSBI.lessThan(c,p);)a.push(new Sk.builtin.int_(e(c))),c=JSBI.add(c,g);else for(;JSBI.greaterThan(c,p);)a.push(new Sk.builtin.int_(e(c))),c=JSBI.add(c,g);h=e(h);g=e(g);p=e(p)}return new Sk.builtin.range_(h,p,g,a)}function e(h){return JSBI.lessThan(h,JSBI.__MAX_SAFE)&&JSBI.greaterThan(h,JSBI.__MIN_SAFE)?JSBI.toNumber(h):h}Sk.builtin.range_=Sk.abstr.buildNativeClass("range",{constructor:function(h,p,g,a){this.start=h;this.stop= p;this.step=g;this.v=a},slots:{tp$getattr:Sk.generic.getAttr,tp$as_sequence_or_mapping:!0,tp$doc:"range(stop) -> range object\nrange(start, stop[, step]) -> range object\n\nReturn an object that produces a sequence of integers from start (inclusive)\nto stop (exclusive) by step. range(i, j) produces i, i+1, i+2, ..., j-1.\nstart defaults to 0, and stop is omitted! range(4) produces 0, 1, 2, 3.\nThese are exactly the valid indices for a list of 4 elements.\nWhen step is given, it specifies the increment (or decrement).", tp$new(h,p){Sk.abstr.checkNoKwargs("range",p);Sk.abstr.checkArgsLen("range",h,1,3);return b(h[0],h[1],h[2])},$r(){let h="range("+this.start+", "+this.stop;1!=this.step&&(h+=", "+this.step);return new Sk.builtin.str(h+")")},tp$richcompare(h,p){if("Eq"!==p&&"NotEq"!==p||h.ob$type!==Sk.builtin.range_)return Sk.builtin.NotImplemented.NotImplemented$;h=new Sk.builtin.list(h.v);return(new Sk.builtin.list(this.v)).tp$richcompare(h,p)},tp$iter(){return new d(this)},nb$bool(){return 0!==this.v.length},sq$contains(h){const p= this.v;for(let g=0;gh&&(h=this.v.length+h);if(0>h||h>=this.v.length)throw new Sk.builtin.IndexError("range object index out of range");return this.v[h]}if(h.constructor===Sk.builtin.slice){const p=[],g=this.v;h.sssiter$(g.length,m=>{p.push(g[m])});let {start:a,stop:c,step:n}=h.slice$indices(g.length);a=Sk.misceval.asIndex(g[a])|| this.start;c=Sk.misceval.asIndex(g[c])||this.stop;n="number"===typeof this.step?n*this.step:JSBI.multiply(this.step,JSBI.BigInt(n));return new Sk.builtin.range_(a,c,n,p)}throw new Sk.builtin.TypeError("range indices must be integers or slices, not "+Sk.abstr.typeName(h));}},getsets:{start:{$get(){return new Sk.builtin.int_(this.start)}},step:{$get(){return new Sk.builtin.int_(this.step)}},stop:{$get(){return new Sk.builtin.int_(this.stop)}}},methods:{__reversed__:{$meth(){return new f(this)},$flags:{NoArgs:!0}, $textsig:null,$doc:"Return a reverse iterator."},count:{$meth(h){let p=0;for(let g=0;g integer -- return number of occurrences of value"},index:{$meth(h){for(let p=0;p integer -- return index of value.\nRaise ValueError if the value is not present."}},proto:{sk$asarray(){return this.v.slice(0)}},flags:{sk$unacceptableBase:!0}});var d=Sk.abstr.buildIteratorClass("range_iterator",{constructor:function(h){this.$index=0;this.$seq=h.v},iternext(){return this.$seq[this.$index++]},methods:{__length_hint__:Sk.generic.iterLengthHintWithArrayMethodDef},flags:{sk$unacceptableBase:!0}}),f= Sk.abstr.buildIteratorClass("range_reverseiterator",{constructor:function(h){this.$seq=h.v;this.$index=this.$seq.length-1},iternext(){return this.$seq[this.$index--]},methods:{__length_hint__:Sk.generic.iterReverseLengthHintMethodDef},flags:{sk$unacceptableBase:!0}});Sk.builtin.range=Sk.builtin.xrange=function(h,p,g){h=b(h,p,g);return new Sk.builtin.list(h.v)}},function(F,P){Sk.builtin.enumerate=Sk.abstr.buildIteratorClass("enumerate",{constructor:function(b,e){if(!(this instanceof Sk.builtin.enumerate))throw TypeError("Failed to construct 'enumerate': Please use the 'new' operator"); this.$iterable=b;this.$index=e;return this},iternext(b){const e=Sk.misceval.chain(this.$iterable.tp$iternext(b),d=>{if(void 0!==d)return new Sk.builtin.tuple([new Sk.builtin.int_(this.$index++),d])});return b?e:Sk.misceval.retryOptionalSuspensionOrThrow(e)},slots:{tp$doc:"Return an enumerate object.\n\n iterable\n an object supporting iteration\n\nThe enumerate object yields pairs containing a count (from start, which\ndefaults to zero) and a value yielded by the iterable argument.\n\nenumerate is useful for obtaining an indexed list:\n (0, seq[0]), (1, seq[1]), (2, seq[2]), ...", tp$new(b,e){let [d,f]=Sk.abstr.copyKeywordsToNamedArgs("enumerate",["iterable","start"],b,e,[new Sk.builtin.int_(0)]);d=Sk.abstr.iter(d);f=Sk.misceval.asIndexOrThrow(f);if(this===Sk.builtin.enumerate.prototype)return new Sk.builtin.enumerate(d,f);b=new this.constructor;Sk.builtin.enumerate.call(b,d,f);return b}},classmethods:Sk.generic.classGetItem});Sk.exportSymbol("Sk.builtin.enumerate",Sk.builtin.enumerate)},function(F,P){Sk.builtin.filter_=Sk.abstr.buildIteratorClass("filter",{constructor:function(b, e){this.$func=b;this.$iterable=e},iternext(b){const e=Sk.misceval.iterFor(this.$iterable,d=>Sk.misceval.chain(this.check$filter(d),f=>f?new Sk.misceval.Break(f):void 0));return b?e:Sk.misceval.retryOptionalSuspensionOrThrow(e)},slots:{tp$doc:"Return an iterator yielding those items of iterable for which function(item)\nis true. If function is None, return the items that are true.",tp$new(b,e){let [d,f]=Sk.abstr.copyKeywordsToNamedArgs("filter",["predicate","iterable"],b,e,[]);d=Sk.builtin.checkNone(d)? null:d;f=Sk.abstr.iter(f);if(this===Sk.builtin.filter_.prototype)return new Sk.builtin.filter_(d,f);b=new this.constructor;Sk.builtin.filter_.call(b,d,f);return b}},proto:{check$filter(b){let e;e=null===this.$func?b:Sk.misceval.callsimOrSuspendArray(this.$func,[b]);return Sk.misceval.chain(e,d=>Sk.misceval.isTrue(d)?b:void 0)}}});Sk.exportSymbol("Sk.builtin.filter_",Sk.builtin.filter_)},function(F,P){Sk.builtin.map_=Sk.abstr.buildIteratorClass("map",{constructor:function(b,e){this.$func=b;this.$iters= e},iternext(b){const e=[],d=Sk.misceval.chain(Sk.misceval.iterArray(this.$iters,f=>Sk.misceval.chain(f.tp$iternext(b),h=>{if(void 0===h)return new Sk.misceval.Break(!0);e.push(h)})),f=>f?void 0:Sk.misceval.callsimOrSuspendArray(this.$func,e));return b?d:Sk.misceval.retryOptionalSuspensionOrThrow(d)},slots:{tp$doc:"map(func, *iterables) --\x3e map object\n\nMake an iterator that computes the function using arguments from\neach of the iterables. Stops when the shortest iterable is exhausted.",tp$new(b, e){this===Sk.builtin.map_.prototype&&Sk.abstr.checkNoKwargs("map",e);Sk.abstr.checkArgsLen("map",b,2);e=b[0];const d=[];for(let f=1;fthis.$idx)){var e=Sk.misceval.tryCatch(()=>Sk.abstr.objectGetItem(this.$seq,new Sk.builtin.int_(this.$idx--),b),d=>{if(d instanceof Sk.builtin.IndexError)this.$idx=-1;else throw d;});return b?e:Sk.misceval.retryOptionalSuspensionOrThrow(e)}},slots:{tp$doc:"Return a reverse iterator over the values of the given sequence.",tp$new(b,e){this===Sk.builtin.reversed.prototype&&Sk.abstr.checkNoKwargs("reversed",e);Sk.abstr.checkArgsLen("reversed",b,1,1);b=b[0];e=Sk.abstr.lookupSpecial(b, Sk.builtin.str.$reversed);if(void 0!==e)return Sk.misceval.callsimArray(e,[]);if(!Sk.builtin.checkSequence(b)||void 0===Sk.abstr.lookupSpecial(b,Sk.builtin.str.$len))throw new Sk.builtin.TypeError("'"+Sk.abstr.typeName(b)+"' object is not a sequence");if(this===Sk.builtin.reversed.prototype)return new Sk.builtin.reversed(b);e=new this.constructor;Sk.builtin.reversed.call(e,b);return e}},methods:{__length_hint__:{$meth:function(){return 0<=this.$idx?new Sk.builtin.int_(this.$idx):new Sk.builtin.int_(0)}, $flags:{NoArgs:!0}}}})},function(F,P){Sk.builtin.zip_=Sk.abstr.buildIteratorClass("zip",{constructor:function(b){this.$iters=b;0===b.length&&(this.tp$iternext=()=>{})},iternext(b){const e=[],d=Sk.misceval.chain(Sk.misceval.iterArray(this.$iters,f=>Sk.misceval.chain(f.tp$iternext(b),h=>{if(void 0===h)return new Sk.misceval.Break(!0);e.push(h)})),f=>f?void 0:new Sk.builtin.tuple(e));return b?d:Sk.misceval.retryOptionalSuspensionOrThrow(d)},slots:{tp$doc:"zip(iter1 [,iter2 [...]]) --\x3e zip object\n\nReturn a zip object whose .__next__() method returns a tuple where\nthe i-th element comes from the i-th iterable argument. The .__next__()\nmethod continues until the shortest iterable in the argument sequence\nis exhausted and then it raises StopIteration.", tp$new(b,e){this===Sk.builtin.zip_.prototype&&Sk.abstr.checkNoKwargs("zip",e);e=[];for(let d=0;d":b.T_RARROW,".":b.T_DOT,"...":b.T_ELLIPSIS,"/":b.T_SLASH,"//":b.T_DOUBLESLASH,"//=":b.T_DOUBLESLASHEQUAL,"/=":b.T_SLASHEQUAL,":":b.T_COLON,";":b.T_SEMI,"<":b.T_LESS,"<<":b.T_LEFTSHIFT,"<<=":b.T_LEFTSHIFTEQUAL,"<=":b.T_LESSEQUAL,"=":b.T_EQUAL,"==":b.T_EQEQUAL,">":b.T_GREATER,">=":b.T_GREATEREQUAL,">>":b.T_RIGHTSHIFT,">>=":b.T_RIGHTSHIFTEQUAL,"@":b.T_AT,"@=":b.T_ATEQUAL,"[":b.T_LSQB,"]":b.T_RSQB,"^":b.T_CIRCUMFLEX,"^=":b.T_CIRCUMFLEXEQUAL,"{":b.T_LBRACE, "|":b.T_VBAR,"|=":b.T_VBAREQUAL,"}":b.T_RBRACE,"~":b.T_TILDE};var e={};(function(){for(var d in b)e[b[d]]=d})();["tok_name","ISTERMINAL","ISNONTERMINAL","ISEOF"].concat(Object.keys(e).map(function(d){return e[d]}));Sk.token={};Sk.token.tokens=b;Sk.token.tok_name=e;Sk.token.EXACT_TOKEN_TYPES=F;Sk.token.ISTERMINAL=function(d){return d=b.T_NT_OFFSET};Sk.token.ISEOF=function(d){return d==b.T_ENDMARKER};Sk.exportSymbol("Sk.token",Sk.token);Sk.exportSymbol("Sk.token.tokens", Sk.token.tokens);Sk.exportSymbol("Sk.token.tok_name",Sk.token.tok_name);Sk.exportSymbol("Sk.token.EXACT_TOKEN_TYPES");Sk.exportSymbol("Sk.token.ISTERMINAL",Sk.token.ISTERMINAL);Sk.exportSymbol("Sk.token.ISNONTERMINAL",Sk.token.ISNONTERMINAL);Sk.exportSymbol("Sk.token.ISEOF",Sk.token.ISEOF)},function(F,P){Sk.OpMap={"(":Sk.token.tokens.T_LPAR,")":Sk.token.tokens.T_RPAR,"[":Sk.token.tokens.T_LSQB,"]":Sk.token.tokens.T_RSQB,":":Sk.token.tokens.T_COLON,",":Sk.token.tokens.T_COMMA,";":Sk.token.tokens.T_SEMI, "+":Sk.token.tokens.T_PLUS,"-":Sk.token.tokens.T_MINUS,"*":Sk.token.tokens.T_STAR,"/":Sk.token.tokens.T_SLASH,"|":Sk.token.tokens.T_VBAR,"&":Sk.token.tokens.T_AMPER,"<":Sk.token.tokens.T_LESS,">":Sk.token.tokens.T_GREATER,"=":Sk.token.tokens.T_EQUAL,".":Sk.token.tokens.T_DOT,"%":Sk.token.tokens.T_PERCENT,"`":Sk.token.tokens.T_BACKQUOTE,"{":Sk.token.tokens.T_LBRACE,"}":Sk.token.tokens.T_RBRACE,"@":Sk.token.tokens.T_AT,"@=":Sk.token.tokens.T_ATEQUAL,"==":Sk.token.tokens.T_EQEQUAL,"!=":Sk.token.tokens.T_NOTEQUAL, "<>":Sk.token.tokens.T_NOTEQUAL,"<=":Sk.token.tokens.T_LESSEQUAL,">=":Sk.token.tokens.T_GREATEREQUAL,"~":Sk.token.tokens.T_TILDE,"^":Sk.token.tokens.T_CIRCUMFLEX,"<<":Sk.token.tokens.T_LEFTSHIFT,">>":Sk.token.tokens.T_RIGHTSHIFT,"**":Sk.token.tokens.T_DOUBLESTAR,"+=":Sk.token.tokens.T_PLUSEQUAL,"-=":Sk.token.tokens.T_MINEQUAL,"*=":Sk.token.tokens.T_STAREQUAL,"/=":Sk.token.tokens.T_SLASHEQUAL,"%=":Sk.token.tokens.T_PERCENTEQUAL,"&=":Sk.token.tokens.T_AMPEREQUAL,"|=":Sk.token.tokens.T_VBAREQUAL,"^=":Sk.token.tokens.T_CIRCUMFLEXEQUAL, "<<=":Sk.token.tokens.T_LEFTSHIFTEQUAL,">>=":Sk.token.tokens.T_RIGHTSHIFTEQUAL,"**=":Sk.token.tokens.T_DOUBLESTAREQUAL,"//":Sk.token.tokens.T_DOUBLESLASH,"//=":Sk.token.tokens.T_DOUBLESLASHEQUAL,"->":Sk.token.tokens.T_RARROW,"...":Sk.token.tokens.T_ELLIPSIS};Sk.ParseTables={sym:{and_expr:257,and_test:258,annassign:259,arglist:260,argument:261,arith_expr:262,assert_stmt:263,async_funcdef:264,async_stmt:265,atom:266,atom_expr:267,augassign:268,break_stmt:269,classdef:270,comp_for:271,comp_if:272,comp_iter:273, comp_op:274,comparison:275,compound_stmt:276,continue_stmt:277,debugger_stmt:278,decorated:279,decorator:280,decorators:281,del_stmt:282,dictorsetmaker:283,dotted_as_name:284,dotted_as_names:285,dotted_name:286,encoding_decl:287,eval_input:288,except_clause:289,expr:290,expr_stmt:291,exprlist:292,factor:293,file_input:294,flow_stmt:295,for_stmt:296,funcdef:297,global_stmt:298,if_stmt:299,import_as_name:300,import_as_names:301,import_from:302,import_name:303,import_stmt:304,lambdef:305,lambdef_nocond:306, nonlocal_stmt:307,not_test:308,or_test:309,parameters:310,pass_stmt:311,power:312,print_stmt:313,raise_stmt:314,return_stmt:315,shift_expr:316,simple_stmt:317,single_input:256,sliceop:318,small_stmt:319,star_expr:320,stmt:321,subscript:322,subscriptlist:323,suite:324,term:325,test:326,test_nocond:327,testlist:328,testlist_comp:329,testlist_star_expr:330,tfpdef:331,trailer:332,try_stmt:333,typedargslist:334,varargslist:335,vfpdef:336,while_stmt:337,with_item:338,with_stmt:339,xor_expr:340,yield_arg:341, yield_expr:342,yield_stmt:343},number2symbol:{256:"single_input",257:"and_expr",258:"and_test",259:"annassign",260:"arglist",261:"argument",262:"arith_expr",263:"assert_stmt",264:"async_funcdef",265:"async_stmt",266:"atom",267:"atom_expr",268:"augassign",269:"break_stmt",270:"classdef",271:"comp_for",272:"comp_if",273:"comp_iter",274:"comp_op",275:"comparison",276:"compound_stmt",277:"continue_stmt",278:"debugger_stmt",279:"decorated",280:"decorator",281:"decorators",282:"del_stmt",283:"dictorsetmaker", 284:"dotted_as_name",285:"dotted_as_names",286:"dotted_name",287:"encoding_decl",288:"eval_input",289:"except_clause",290:"expr",291:"expr_stmt",292:"exprlist",293:"factor",294:"file_input",295:"flow_stmt",296:"for_stmt",297:"funcdef",298:"global_stmt",299:"if_stmt",300:"import_as_name",301:"import_as_names",302:"import_from",303:"import_name",304:"import_stmt",305:"lambdef",306:"lambdef_nocond",307:"nonlocal_stmt",308:"not_test",309:"or_test",310:"parameters",311:"pass_stmt",312:"power",313:"print_stmt", 314:"raise_stmt",315:"return_stmt",316:"shift_expr",317:"simple_stmt",318:"sliceop",319:"small_stmt",320:"star_expr",321:"stmt",322:"subscript",323:"subscriptlist",324:"suite",325:"term",326:"test",327:"test_nocond",328:"testlist",329:"testlist_comp",330:"testlist_star_expr",331:"tfpdef",332:"trailer",333:"try_stmt",334:"typedargslist",335:"varargslist",336:"vfpdef",337:"while_stmt",338:"with_item",339:"with_stmt",340:"xor_expr",341:"yield_arg",342:"yield_expr",343:"yield_stmt"},dfas:{256:[[[[1,1], [2,1],[3,2]],[[0,1]],[[2,1]]],{2:1,4:1,5:1,6:1,7:1,8:1,9:1,10:1,11:1,12:1,13:1,14:1,15:1,16:1,17:1,18:1,19:1,20:1,21:1,22:1,23:1,24:1,25:1,26:1,27:1,28:1,29:1,30:1,31:1,32:1,33:1,34:1,35:1,36:1,37:1,38:1,39:1,40:1,41:1,42:1,43:1}],257:[[[[44,1]],[[45,0],[0,1]]],{6:1,7:1,9:1,11:1,12:1,19:1,22:1,25:1,29:1,30:1,33:1,35:1,38:1,43:1}],258:[[[[46,1]],[[47,0],[0,1]]],{6:1,7:1,8:1,9:1,11:1,12:1,19:1,22:1,25:1,29:1,30:1,33:1,35:1,38:1,43:1}],259:[[[[48,1]],[[49,2]],[[50,3],[0,2]],[[49,4]],[[0,4]]],{48:1}], 260:[[[[51,1]],[[52,2],[0,1]],[[51,1],[0,2]]],{6:1,7:1,8:1,9:1,11:1,12:1,14:1,15:1,19:1,22:1,25:1,29:1,30:1,33:1,35:1,38:1,43:1,53:1}],261:[[[[49,1],[15,2],[53,2]],[[50,2],[54,3],[0,1]],[[49,3]],[[0,3]]],{6:1,7:1,8:1,9:1,11:1,12:1,14:1,15:1,19:1,22:1,25:1,29:1,30:1,33:1,35:1,38:1,43:1,53:1}],262:[[[[55,1]],[[30,0],[43,0],[0,1]]],{6:1,7:1,9:1,11:1,12:1,19:1,22:1,25:1,29:1,30:1,33:1,35:1,38:1,43:1}],263:[[[[24,1]],[[49,2]],[[52,3],[0,2]],[[49,4]],[[0,4]]],{24:1}],264:[[[[10,1]],[[56,2]],[[0,2]]],{10:1}], 265:[[[[10,1]],[[57,2],[56,2],[58,2]],[[0,2]]],{10:1}],266:[[[[6,1],[25,1],[33,1],[9,1],[11,1],[12,2],[35,3],[38,4],[19,1],[7,5]],[[0,1]],[[59,1],[60,6]],[[61,1],[62,7],[63,7]],[[64,1],[63,8]],[[7,5],[0,5]],[[59,1]],[[61,1]],[[64,1]]],{6:1,7:1,9:1,11:1,12:1,19:1,25:1,33:1,35:1,38:1}],267:[[[[29,1],[65,2]],[[65,2]],[[66,2],[0,2]]],{6:1,7:1,9:1,11:1,12:1,19:1,25:1,29:1,33:1,35:1,38:1}],268:[[[[67,1],[68,1],[69,1],[70,1],[71,1],[72,1],[73,1],[74,1],[75,1],[76,1],[77,1],[78,1],[79,1]],[[0,1]]],{67:1, 68:1,69:1,70:1,71:1,72:1,73:1,74:1,75:1,76:1,77:1,78:1,79:1}],269:[[[[39,1]],[[0,1]]],{39:1}],270:[[[[13,1]],[[25,2]],[[48,3],[35,4]],[[80,5]],[[61,6],[81,7]],[[0,5]],[[48,3]],[[61,6]]],{13:1}],271:[[[[10,1],[34,2]],[[34,2]],[[82,3]],[[83,4]],[[84,5]],[[85,6],[0,5]],[[0,6]]],{10:1,34:1}],272:[[[[37,1]],[[86,2]],[[85,3],[0,2]],[[0,3]]],{37:1}],273:[[[[87,1],[54,1]],[[0,1]]],{10:1,34:1,37:1}],274:[[[[88,1],[89,1],[8,2],[90,1],[88,1],[83,1],[91,1],[92,3],[93,1],[94,1]],[[0,1]],[[83,1]],[[8,1],[0,3]]], {8:1,83:1,88:1,89:1,90:1,91:1,92:1,93:1,94:1}],275:[[[[95,1]],[[96,0],[0,1]]],{6:1,7:1,9:1,11:1,12:1,19:1,22:1,25:1,29:1,30:1,33:1,35:1,38:1,43:1}],276:[[[[97,1],[98,1],[58,1],[99,1],[57,1],[100,1],[56,1],[101,1],[102,1]],[[0,1]]],{4:1,10:1,13:1,20:1,21:1,34:1,37:1,41:1,42:1}],277:[[[[40,1]],[[0,1]]],{40:1}],278:[[[[17,1]],[[0,1]]],{17:1}],279:[[[[103,1]],[[56,2],[104,2],[99,2]],[[0,2]]],{41:1}],280:[[[[41,1]],[[105,2]],[[2,4],[35,3]],[[61,5],[81,6]],[[0,4]],[[2,4]],[[61,5]]],{41:1}],281:[[[[106, 1]],[[106,1],[0,1]]],{41:1}],282:[[[[27,1]],[[82,2]],[[0,2]]],{27:1}],283:[[[[49,1],[107,2],[53,3]],[[48,4],[54,5],[52,6],[0,1]],[[54,5],[52,6],[0,2]],[[95,7]],[[49,7]],[[0,5]],[[49,8],[107,8],[0,6]],[[54,5],[52,9],[0,7]],[[52,6],[0,8]],[[49,10],[53,11],[0,9]],[[48,12]],[[95,13]],[[49,13]],[[52,9],[0,13]]],{6:1,7:1,8:1,9:1,11:1,12:1,14:1,15:1,19:1,22:1,25:1,29:1,30:1,33:1,35:1,38:1,43:1,53:1}],284:[[[[105,1]],[[108,2],[0,1]],[[25,3]],[[0,3]]],{25:1}],285:[[[[109,1]],[[52,0],[0,1]]],{25:1}],286:[[[[25, 1]],[[110,0],[0,1]]],{25:1}],287:[[[[25,1]],[[0,1]]],{25:1}],288:[[[[111,1]],[[2,1],[112,2]],[[0,2]]],{6:1,7:1,8:1,9:1,11:1,12:1,14:1,19:1,22:1,25:1,29:1,30:1,33:1,35:1,38:1,43:1}],289:[[[[113,1]],[[49,2],[0,1]],[[108,3],[52,3],[0,2]],[[49,4]],[[0,4]]],{113:1}],290:[[[[114,1]],[[115,0],[0,1]]],{6:1,7:1,9:1,11:1,12:1,19:1,22:1,25:1,29:1,30:1,33:1,35:1,38:1,43:1}],291:[[[[116,1]],[[117,2],[50,3],[118,4],[0,1]],[[111,4],[62,4]],[[116,5],[62,5]],[[0,4]],[[50,3],[0,5]]],{6:1,7:1,8:1,9:1,11:1,12:1,14:1, 15:1,19:1,22:1,25:1,29:1,30:1,33:1,35:1,38:1,43:1}],292:[[[[95,1],[107,1]],[[52,2],[0,1]],[[95,1],[107,1],[0,2]]],{6:1,7:1,9:1,11:1,12:1,15:1,19:1,22:1,25:1,29:1,30:1,33:1,35:1,38:1,43:1}],293:[[[[119,2],[30,1],[22,1],[43,1]],[[120,2]],[[0,2]]],{6:1,7:1,9:1,11:1,12:1,19:1,22:1,25:1,29:1,30:1,33:1,35:1,38:1,43:1}],294:[[[[2,0],[112,1],[121,0]],[[0,1]]],{2:1,4:1,5:1,6:1,7:1,8:1,9:1,10:1,11:1,12:1,13:1,14:1,15:1,16:1,17:1,18:1,19:1,20:1,21:1,22:1,23:1,24:1,25:1,26:1,27:1,28:1,29:1,30:1,31:1,32:1,33:1, 34:1,35:1,36:1,37:1,38:1,39:1,40:1,41:1,42:1,43:1,112:1}],295:[[[[122,1],[123,1],[124,1],[125,1],[126,1]],[[0,1]]],{5:1,23:1,31:1,39:1,40:1}],296:[[[[34,1]],[[82,2]],[[83,3]],[[111,4]],[[48,5]],[[80,6]],[[127,7],[0,6]],[[48,8]],[[80,9]],[[0,9]]],{34:1}],297:[[[[4,1]],[[25,2]],[[128,3]],[[48,4],[129,5]],[[80,6]],[[49,7]],[[0,6]],[[48,4]]],{4:1}],298:[[[[26,1]],[[25,2]],[[52,1],[0,2]]],{26:1}],299:[[[[37,1]],[[49,2]],[[48,3]],[[80,4]],[[127,5],[130,1],[0,4]],[[48,6]],[[80,7]],[[0,7]]],{37:1}],300:[[[[25, 1]],[[108,2],[0,1]],[[25,3]],[[0,3]]],{25:1}],301:[[[[131,1]],[[52,2],[0,1]],[[131,1],[0,2]]],{25:1}],302:[[[[36,1]],[[105,2],[19,3],[110,3]],[[32,4]],[[105,2],[19,3],[32,4],[110,3]],[[132,5],[15,5],[35,6]],[[0,5]],[[132,7]],[[61,5]]],{36:1}],303:[[[[32,1]],[[133,2]],[[0,2]]],{32:1}],304:[[[[134,1],[135,1]],[[0,1]]],{32:1,36:1}],305:[[[[14,1]],[[48,2],[136,3]],[[49,4]],[[48,2]],[[0,4]]],{14:1}],306:[[[[14,1]],[[48,2],[136,3]],[[86,4]],[[48,2]],[[0,4]]],{14:1}],307:[[[[18,1]],[[25,2]],[[52,1],[0,2]]], {18:1}],308:[[[[8,1],[137,2]],[[46,2]],[[0,2]]],{6:1,7:1,8:1,9:1,11:1,12:1,19:1,22:1,25:1,29:1,30:1,33:1,35:1,38:1,43:1}],309:[[[[138,1]],[[139,0],[0,1]]],{6:1,7:1,8:1,9:1,11:1,12:1,19:1,22:1,25:1,29:1,30:1,33:1,35:1,38:1,43:1}],310:[[[[35,1]],[[61,2],[140,3]],[[0,2]],[[61,2]]],{35:1}],311:[[[[28,1]],[[0,1]]],{28:1}],312:[[[[141,1]],[[53,2],[0,1]],[[120,3]],[[0,3]]],{6:1,7:1,9:1,11:1,12:1,19:1,25:1,29:1,33:1,35:1,38:1}],313:[[[[16,1]],[[49,2],[142,3],[0,1]],[[52,4],[0,2]],[[49,5]],[[49,2],[0,4]], [[52,6],[0,5]],[[49,7]],[[52,8],[0,7]],[[49,7],[0,8]]],{16:1}],314:[[[[5,1]],[[49,2],[0,1]],[[36,3],[52,3],[0,2]],[[49,4]],[[52,5],[0,4]],[[49,6]],[[0,6]]],{5:1}],315:[[[[23,1]],[[111,2],[0,1]],[[0,2]]],{23:1}],316:[[[[143,1]],[[144,0],[142,0],[0,1]]],{6:1,7:1,9:1,11:1,12:1,19:1,22:1,25:1,29:1,30:1,33:1,35:1,38:1,43:1}],317:[[[[145,1]],[[2,2],[146,3]],[[0,2]],[[145,1],[2,2]]],{5:1,6:1,7:1,8:1,9:1,11:1,12:1,14:1,15:1,16:1,17:1,18:1,19:1,22:1,23:1,24:1,25:1,26:1,27:1,28:1,29:1,30:1,31:1,32:1,33:1,35:1, 36:1,38:1,39:1,40:1,43:1}],318:[[[[48,1]],[[49,2],[0,1]],[[0,2]]],{48:1}],319:[[[[147,1],[148,1],[149,1],[150,1],[151,1],[152,1],[153,1],[154,1],[155,1],[156,1]],[[0,1]]],{5:1,6:1,7:1,8:1,9:1,11:1,12:1,14:1,15:1,16:1,17:1,18:1,19:1,22:1,23:1,24:1,25:1,26:1,27:1,28:1,29:1,30:1,31:1,32:1,33:1,35:1,36:1,38:1,39:1,40:1,43:1}],320:[[[[15,1]],[[95,2]],[[0,2]]],{15:1}],321:[[[[1,1],[3,1]],[[0,1]]],{4:1,5:1,6:1,7:1,8:1,9:1,10:1,11:1,12:1,13:1,14:1,15:1,16:1,17:1,18:1,19:1,20:1,21:1,22:1,23:1,24:1,25:1,26:1, 27:1,28:1,29:1,30:1,31:1,32:1,33:1,34:1,35:1,36:1,37:1,38:1,39:1,40:1,41:1,42:1,43:1}],322:[[[[49,1],[48,2]],[[48,2],[0,1]],[[49,3],[157,4],[0,2]],[[157,4],[0,3]],[[0,4]]],{6:1,7:1,8:1,9:1,11:1,12:1,14:1,19:1,22:1,25:1,29:1,30:1,33:1,35:1,38:1,43:1,48:1}],323:[[[[158,1]],[[52,2],[0,1]],[[158,1],[0,2]]],{6:1,7:1,8:1,9:1,11:1,12:1,14:1,19:1,22:1,25:1,29:1,30:1,33:1,35:1,38:1,43:1,48:1}],324:[[[[1,1],[2,2]],[[0,1]],[[159,3]],[[121,4]],[[160,1],[121,4]]],{2:1,5:1,6:1,7:1,8:1,9:1,11:1,12:1,14:1,15:1,16:1, 17:1,18:1,19:1,22:1,23:1,24:1,25:1,26:1,27:1,28:1,29:1,30:1,31:1,32:1,33:1,35:1,36:1,38:1,39:1,40:1,43:1}],325:[[[[120,1]],[[161,0],[15,0],[162,0],[41,0],[163,0],[0,1]]],{6:1,7:1,9:1,11:1,12:1,19:1,22:1,25:1,29:1,30:1,33:1,35:1,38:1,43:1}],326:[[[[84,1],[164,2]],[[37,3],[0,1]],[[0,2]],[[84,4]],[[127,5]],[[49,2]]],{6:1,7:1,8:1,9:1,11:1,12:1,14:1,19:1,22:1,25:1,29:1,30:1,33:1,35:1,38:1,43:1}],327:[[[[165,1],[84,1]],[[0,1]]],{6:1,7:1,8:1,9:1,11:1,12:1,14:1,19:1,22:1,25:1,29:1,30:1,33:1,35:1,38:1,43:1}], 328:[[[[49,1]],[[52,2],[0,1]],[[49,1],[0,2]]],{6:1,7:1,8:1,9:1,11:1,12:1,14:1,19:1,22:1,25:1,29:1,30:1,33:1,35:1,38:1,43:1}],329:[[[[49,1],[107,1]],[[54,2],[52,3],[0,1]],[[0,2]],[[49,4],[107,4],[0,3]],[[52,3],[0,4]]],{6:1,7:1,8:1,9:1,11:1,12:1,14:1,15:1,19:1,22:1,25:1,29:1,30:1,33:1,35:1,38:1,43:1}],330:[[[[49,1],[107,1]],[[52,2],[0,1]],[[49,1],[107,1],[0,2]]],{6:1,7:1,8:1,9:1,11:1,12:1,14:1,15:1,19:1,22:1,25:1,29:1,30:1,33:1,35:1,38:1,43:1}],331:[[[[25,1]],[[48,2],[0,1]],[[49,3]],[[0,3]]],{25:1}], 332:[[[[35,1],[110,2],[38,3]],[[61,4],[81,5]],[[25,4]],[[166,6]],[[0,4]],[[61,4]],[[64,4]]],{35:1,38:1,110:1}],333:[[[[20,1]],[[48,2]],[[80,3]],[[167,4],[168,5]],[[48,6]],[[48,7]],[[80,8]],[[80,9]],[[167,4],[127,10],[168,5],[0,8]],[[0,9]],[[48,11]],[[80,12]],[[168,5],[0,12]]],{20:1}],334:[[[[15,1],[169,2],[53,3]],[[169,4],[52,5],[0,1]],[[50,6],[52,7],[0,2]],[[169,8]],[[52,5],[0,4]],[[169,9],[53,3],[0,5]],[[49,10]],[[15,11],[169,2],[53,3],[0,7]],[[52,12],[0,8]],[[50,13],[52,5],[0,9]],[[52,7],[0,10]], [[169,14],[52,15],[0,11]],[[0,12]],[[49,4]],[[52,15],[0,14]],[[169,16],[53,3],[0,15]],[[50,17],[52,15],[0,16]],[[49,14]]],{15:1,25:1,53:1}],335:[[[[15,1],[53,2],[170,3]],[[170,5],[52,4],[0,1]],[[170,6]],[[50,7],[52,8],[0,3]],[[53,2],[170,9],[0,4]],[[52,4],[0,5]],[[52,10],[0,6]],[[49,11]],[[15,12],[53,2],[170,3],[0,8]],[[50,13],[52,4],[0,9]],[[0,10]],[[52,8],[0,11]],[[52,15],[170,14],[0,12]],[[49,5]],[[52,15],[0,14]],[[53,2],[170,16],[0,15]],[[50,17],[52,15],[0,16]],[[49,14]]],{15:1,25:1,53:1}],336:[[[[25, 1]],[[0,1]]],{25:1}],337:[[[[21,1]],[[49,2]],[[48,3]],[[80,4]],[[127,5],[0,4]],[[48,6]],[[80,7]],[[0,7]]],{21:1}],338:[[[[49,1]],[[108,2],[0,1]],[[95,3]],[[0,3]]],{6:1,7:1,8:1,9:1,11:1,12:1,14:1,19:1,22:1,25:1,29:1,30:1,33:1,35:1,38:1,43:1}],339:[[[[42,1]],[[171,2]],[[48,3],[52,1]],[[80,4]],[[0,4]]],{42:1}],340:[[[[172,1]],[[173,0],[0,1]]],{6:1,7:1,9:1,11:1,12:1,19:1,22:1,25:1,29:1,30:1,33:1,35:1,38:1,43:1}],341:[[[[111,2],[36,1]],[[49,2]],[[0,2]]],{6:1,7:1,8:1,9:1,11:1,12:1,14:1,19:1,22:1,25:1,29:1, 30:1,33:1,35:1,36:1,38:1,43:1}],342:[[[[31,1]],[[174,2],[0,1]],[[0,2]]],{31:1}],343:[[[[62,1]],[[0,1]]],{31:1}]},states:[[[[1,1],[2,1],[3,2]],[[0,1]],[[2,1]]],[[[44,1]],[[45,0],[0,1]]],[[[46,1]],[[47,0],[0,1]]],[[[48,1]],[[49,2]],[[50,3],[0,2]],[[49,4]],[[0,4]]],[[[51,1]],[[52,2],[0,1]],[[51,1],[0,2]]],[[[49,1],[15,2],[53,2]],[[50,2],[54,3],[0,1]],[[49,3]],[[0,3]]],[[[55,1]],[[30,0],[43,0],[0,1]]],[[[24,1]],[[49,2]],[[52,3],[0,2]],[[49,4]],[[0,4]]],[[[10,1]],[[56,2]],[[0,2]]],[[[10,1]],[[57,2],[56, 2],[58,2]],[[0,2]]],[[[6,1],[25,1],[33,1],[9,1],[11,1],[12,2],[35,3],[38,4],[19,1],[7,5]],[[0,1]],[[59,1],[60,6]],[[61,1],[62,7],[63,7]],[[64,1],[63,8]],[[7,5],[0,5]],[[59,1]],[[61,1]],[[64,1]]],[[[29,1],[65,2]],[[65,2]],[[66,2],[0,2]]],[[[67,1],[68,1],[69,1],[70,1],[71,1],[72,1],[73,1],[74,1],[75,1],[76,1],[77,1],[78,1],[79,1]],[[0,1]]],[[[39,1]],[[0,1]]],[[[13,1]],[[25,2]],[[48,3],[35,4]],[[80,5]],[[61,6],[81,7]],[[0,5]],[[48,3]],[[61,6]]],[[[10,1],[34,2]],[[34,2]],[[82,3]],[[83,4]],[[84,5]],[[85, 6],[0,5]],[[0,6]]],[[[37,1]],[[86,2]],[[85,3],[0,2]],[[0,3]]],[[[87,1],[54,1]],[[0,1]]],[[[88,1],[89,1],[8,2],[90,1],[88,1],[83,1],[91,1],[92,3],[93,1],[94,1]],[[0,1]],[[83,1]],[[8,1],[0,3]]],[[[95,1]],[[96,0],[0,1]]],[[[97,1],[98,1],[58,1],[99,1],[57,1],[100,1],[56,1],[101,1],[102,1]],[[0,1]]],[[[40,1]],[[0,1]]],[[[17,1]],[[0,1]]],[[[103,1]],[[56,2],[104,2],[99,2]],[[0,2]]],[[[41,1]],[[105,2]],[[2,4],[35,3]],[[61,5],[81,6]],[[0,4]],[[2,4]],[[61,5]]],[[[106,1]],[[106,1],[0,1]]],[[[27,1]],[[82,2]], [[0,2]]],[[[49,1],[107,2],[53,3]],[[48,4],[54,5],[52,6],[0,1]],[[54,5],[52,6],[0,2]],[[95,7]],[[49,7]],[[0,5]],[[49,8],[107,8],[0,6]],[[54,5],[52,9],[0,7]],[[52,6],[0,8]],[[49,10],[53,11],[0,9]],[[48,12]],[[95,13]],[[49,13]],[[52,9],[0,13]]],[[[105,1]],[[108,2],[0,1]],[[25,3]],[[0,3]]],[[[109,1]],[[52,0],[0,1]]],[[[25,1]],[[110,0],[0,1]]],[[[25,1]],[[0,1]]],[[[111,1]],[[2,1],[112,2]],[[0,2]]],[[[113,1]],[[49,2],[0,1]],[[108,3],[52,3],[0,2]],[[49,4]],[[0,4]]],[[[114,1]],[[115,0],[0,1]]],[[[116,1]], [[117,2],[50,3],[118,4],[0,1]],[[111,4],[62,4]],[[116,5],[62,5]],[[0,4]],[[50,3],[0,5]]],[[[95,1],[107,1]],[[52,2],[0,1]],[[95,1],[107,1],[0,2]]],[[[119,2],[30,1],[22,1],[43,1]],[[120,2]],[[0,2]]],[[[2,0],[112,1],[121,0]],[[0,1]]],[[[122,1],[123,1],[124,1],[125,1],[126,1]],[[0,1]]],[[[34,1]],[[82,2]],[[83,3]],[[111,4]],[[48,5]],[[80,6]],[[127,7],[0,6]],[[48,8]],[[80,9]],[[0,9]]],[[[4,1]],[[25,2]],[[128,3]],[[48,4],[129,5]],[[80,6]],[[49,7]],[[0,6]],[[48,4]]],[[[26,1]],[[25,2]],[[52,1],[0,2]]],[[[37, 1]],[[49,2]],[[48,3]],[[80,4]],[[127,5],[130,1],[0,4]],[[48,6]],[[80,7]],[[0,7]]],[[[25,1]],[[108,2],[0,1]],[[25,3]],[[0,3]]],[[[131,1]],[[52,2],[0,1]],[[131,1],[0,2]]],[[[36,1]],[[105,2],[19,3],[110,3]],[[32,4]],[[105,2],[19,3],[32,4],[110,3]],[[132,5],[15,5],[35,6]],[[0,5]],[[132,7]],[[61,5]]],[[[32,1]],[[133,2]],[[0,2]]],[[[134,1],[135,1]],[[0,1]]],[[[14,1]],[[48,2],[136,3]],[[49,4]],[[48,2]],[[0,4]]],[[[14,1]],[[48,2],[136,3]],[[86,4]],[[48,2]],[[0,4]]],[[[18,1]],[[25,2]],[[52,1],[0,2]]],[[[8, 1],[137,2]],[[46,2]],[[0,2]]],[[[138,1]],[[139,0],[0,1]]],[[[35,1]],[[61,2],[140,3]],[[0,2]],[[61,2]]],[[[28,1]],[[0,1]]],[[[141,1]],[[53,2],[0,1]],[[120,3]],[[0,3]]],[[[16,1]],[[49,2],[142,3],[0,1]],[[52,4],[0,2]],[[49,5]],[[49,2],[0,4]],[[52,6],[0,5]],[[49,7]],[[52,8],[0,7]],[[49,7],[0,8]]],[[[5,1]],[[49,2],[0,1]],[[36,3],[52,3],[0,2]],[[49,4]],[[52,5],[0,4]],[[49,6]],[[0,6]]],[[[23,1]],[[111,2],[0,1]],[[0,2]]],[[[143,1]],[[144,0],[142,0],[0,1]]],[[[145,1]],[[2,2],[146,3]],[[0,2]],[[145,1],[2,2]]], [[[48,1]],[[49,2],[0,1]],[[0,2]]],[[[147,1],[148,1],[149,1],[150,1],[151,1],[152,1],[153,1],[154,1],[155,1],[156,1]],[[0,1]]],[[[15,1]],[[95,2]],[[0,2]]],[[[1,1],[3,1]],[[0,1]]],[[[49,1],[48,2]],[[48,2],[0,1]],[[49,3],[157,4],[0,2]],[[157,4],[0,3]],[[0,4]]],[[[158,1]],[[52,2],[0,1]],[[158,1],[0,2]]],[[[1,1],[2,2]],[[0,1]],[[159,3]],[[121,4]],[[160,1],[121,4]]],[[[120,1]],[[161,0],[15,0],[162,0],[41,0],[163,0],[0,1]]],[[[84,1],[164,2]],[[37,3],[0,1]],[[0,2]],[[84,4]],[[127,5]],[[49,2]]],[[[165,1], [84,1]],[[0,1]]],[[[49,1]],[[52,2],[0,1]],[[49,1],[0,2]]],[[[49,1],[107,1]],[[54,2],[52,3],[0,1]],[[0,2]],[[49,4],[107,4],[0,3]],[[52,3],[0,4]]],[[[49,1],[107,1]],[[52,2],[0,1]],[[49,1],[107,1],[0,2]]],[[[25,1]],[[48,2],[0,1]],[[49,3]],[[0,3]]],[[[35,1],[110,2],[38,3]],[[61,4],[81,5]],[[25,4]],[[166,6]],[[0,4]],[[61,4]],[[64,4]]],[[[20,1]],[[48,2]],[[80,3]],[[167,4],[168,5]],[[48,6]],[[48,7]],[[80,8]],[[80,9]],[[167,4],[127,10],[168,5],[0,8]],[[0,9]],[[48,11]],[[80,12]],[[168,5],[0,12]]],[[[15,1], [169,2],[53,3]],[[169,4],[52,5],[0,1]],[[50,6],[52,7],[0,2]],[[169,8]],[[52,5],[0,4]],[[169,9],[53,3],[0,5]],[[49,10]],[[15,11],[169,2],[53,3],[0,7]],[[52,12],[0,8]],[[50,13],[52,5],[0,9]],[[52,7],[0,10]],[[169,14],[52,15],[0,11]],[[0,12]],[[49,4]],[[52,15],[0,14]],[[169,16],[53,3],[0,15]],[[50,17],[52,15],[0,16]],[[49,14]]],[[[15,1],[53,2],[170,3]],[[170,5],[52,4],[0,1]],[[170,6]],[[50,7],[52,8],[0,3]],[[53,2],[170,9],[0,4]],[[52,4],[0,5]],[[52,10],[0,6]],[[49,11]],[[15,12],[53,2],[170,3],[0,8]], [[50,13],[52,4],[0,9]],[[0,10]],[[52,8],[0,11]],[[52,15],[170,14],[0,12]],[[49,5]],[[52,15],[0,14]],[[53,2],[170,16],[0,15]],[[50,17],[52,15],[0,16]],[[49,14]]],[[[25,1]],[[0,1]]],[[[21,1]],[[49,2]],[[48,3]],[[80,4]],[[127,5],[0,4]],[[48,6]],[[80,7]],[[0,7]]],[[[49,1]],[[108,2],[0,1]],[[95,3]],[[0,3]]],[[[42,1]],[[171,2]],[[48,3],[52,1]],[[80,4]],[[0,4]]],[[[172,1]],[[173,0],[0,1]]],[[[111,2],[36,1]],[[49,2]],[[0,2]]],[[[31,1]],[[174,2],[0,1]],[[0,2]]],[[[62,1]],[[0,1]]]],labels:[[0,"EMPTY"],[317, null],[4,null],[276,null],[1,"def"],[1,"raise"],[1,"True"],[3,null],[1,"not"],[1,"None"],[55,null],[2,null],[25,null],[1,"class"],[1,"lambda"],[16,null],[1,"print"],[1,"debugger"],[1,"nonlocal"],[52,null],[1,"try"],[1,"while"],[31,null],[1,"return"],[1,"assert"],[1,null],[1,"global"],[1,"del"],[1,"pass"],[54,null],[15,null],[1,"yield"],[1,"import"],[1,"False"],[1,"for"],[7,null],[1,"from"],[1,"if"],[9,null],[1,"break"],[1,"continue"],[49,null],[1,"with"],[14,null],[316,null],[19,null],[308,null], [1,"and"],[11,null],[326,null],[22,null],[261,null],[12,null],[35,null],[271,null],[325,null],[297,null],[339,null],[296,null],[26,null],[283,null],[8,null],[342,null],[329,null],[10,null],[266,null],[332,null],[45,null],[38,null],[40,null],[50,null],[46,null],[41,null],[42,null],[36,null],[43,null],[48,null],[44,null],[37,null],[39,null],[324,null],[260,null],[292,null],[1,"in"],[309,null],[273,null],[327,null],[272,null],[28,null],[21,null],[27,null],[29,null],[1,"is"],[30,null],[20,null],[290, null],[274,null],[333,null],[299,null],[270,null],[337,null],[279,null],[265,null],[281,null],[264,null],[286,null],[280,null],[320,null],[1,"as"],[284,null],[23,null],[328,null],[0,null],[1,"except"],[340,null],[18,null],[330,null],[268,null],[259,null],[312,null],[293,null],[321,null],[269,null],[277,null],[314,null],[315,null],[343,null],[1,"else"],[310,null],[51,null],[1,"elif"],[300,null],[301,null],[285,null],[303,null],[302,null],[335,null],[275,null],[258,null],[1,"or"],[334,null],[267,null], [34,null],[262,null],[33,null],[319,null],[13,null],[295,null],[263,null],[291,null],[311,null],[307,null],[313,null],[282,null],[298,null],[304,null],[278,null],[318,null],[322,null],[5,null],[6,null],[47,null],[17,null],[24,null],[305,null],[306,null],[323,null],[289,null],[1,"finally"],[331,null],[336,null],[338,null],[257,null],[32,null],[341,null]],keywords:{False:33,None:9,True:6,and:47,as:108,assert:24,"break":39,"class":13,"continue":40,"debugger":17,def:4,del:27,elif:130,"else":127,except:113, "finally":168,"for":34,from:36,global:26,"if":37,"import":32,"in":83,is:92,lambda:14,nonlocal:18,not:8,or:139,pass:28,print:16,raise:5,"return":23,"try":20,"while":21,"with":42,yield:31},tokens:{0:112,1:25,2:11,3:7,4:2,5:159,6:160,7:35,8:61,9:38,10:64,11:48,12:52,13:146,14:43,15:30,16:15,17:162,18:115,19:45,20:94,21:89,22:50,23:110,24:163,25:12,26:59,27:90,28:88,29:91,30:93,31:22,32:173,33:144,34:142,35:53,36:74,37:78,38:68,39:79,40:69,41:72,42:73,43:75,44:77,45:67,46:71,47:161,48:76,49:41,50:70, 51:129,52:19,54:29,55:10},start:256}},function(F,P){function b(d,f){this.filename=d;this.grammar=f;this.p_flags=0;return this}function e(d,f){void 0===f&&(f="file_input");d=new b(d,Sk.ParseTables);"file_input"===f?d.setup(Sk.ParseTables.sym.file_input):Sk.asserts.fail("todo;");return d}b.FUTURE_PRINT_FUNCTION="print_function";b.FUTURE_UNICODE_LITERALS="unicode_literals";b.FUTURE_DIVISION="division";b.FUTURE_ABSOLUTE_IMPORT="absolute_import";b.FUTURE_WITH_STATEMENT="with_statement";b.FUTURE_NESTED_SCOPES= "nested_scopes";b.FUTURE_GENERATORS="generators";b.CO_FUTURE_PRINT_FUNCTION=65536;b.CO_FUTURE_UNICODE_LITERALS=131072;b.CO_FUTURE_DIVISON=8192;b.CO_FUTURE_ABSOLUTE_IMPORT=16384;b.CO_FUTURE_WITH_STATEMENT=32768;b.prototype.setup=function(d){d=d||this.grammar.start;this.stack=[{dfa:this.grammar.dfas[d],state:0,node:{type:d,value:null,context:null,children:[]}}];this.used_names={}};b.prototype.addtoken=function(d,f,h){var p,g=this.classify(d,f,h);a:for(;;){var a=this.stack[this.stack.length-1];var c= a.dfa[0];var n=c[a.state];for(p=0;pu);this.shift(d,f,k,h);for(h=k;1===c[h].length&&0===c[h][0][0]&&c[h][0][1]===h;){this.pop();if(0===this.stack.length)return!0;a=this.stack[this.stack.length-1];h=a.state;c=a.dfa[0]}return!1}if(256<=u&&(m=this.grammar.dfas[u],m=m[1],m.hasOwnProperty(g))){this.push(u,this.grammar.dfas[u],k,h);continue a}}b:{c=[0,a.state];for(a=n.length;a--;)if(n[a][0]===c[0]&& n[a][1]===c[1]){n=!0;break b}n=!1}if(n){if(this.pop(),0===this.stack.length)throw new Sk.builtin.SyntaxError("too much input",this.filename);}else throw d=h[0][0],new Sk.builtin.SyntaxError("bad input",this.filename,d,h);}};b.prototype.classify=function(d,f,h){if(d===Sk.token.tokens.T_NAME){this.used_names[f]=!0;var p=this.grammar.keywords.hasOwnProperty(f)&&this.grammar.keywords[f];"print"===f&&(this.p_flags&b.CO_FUTURE_PRINT_FUNCTION||!0===Sk.__future__.print_function)&&(p=!1);if(p)return p}p=this.grammar.tokens.hasOwnProperty(d)&& this.grammar.tokens[d];if(!p){f="#"+d;for(let g in Sk.token.tokens)if(Sk.token.tokens[g]==d){f=g;break}throw new Sk.builtin.SyntaxError("bad token "+f,this.filename,h[0][0],h);}return p};b.prototype.shift=function(d,f,h,p){var g=this.stack[this.stack.length-1].dfa,a=this.stack[this.stack.length-1].node;a.children.push({type:d,value:f,lineno:p[0][0],col_offset:p[0][1],children:null});this.stack[this.stack.length-1]={dfa:g,state:h,node:a}};b.prototype.push=function(d,f,h,p){d={type:d,value:null,lineno:p[0][0], col_offset:p[0][1],children:[]};this.stack[this.stack.length-1]={dfa:this.stack[this.stack.length-1].dfa,state:h,node:this.stack[this.stack.length-1].node};this.stack.push({dfa:f,state:0,node:d})};b.prototype.pop=function(){var d=this.stack.pop().node;if(d)if(0!==this.stack.length){var f=this.stack[this.stack.length-1].node;f.children.push(d)}else this.rootnode=d,this.rootnode.used_names=this.used_names};Sk.parse=function(d,f){var h=Sk.token.tokens.T_COMMENT,p=Sk.token.tokens.T_NL,g=Sk.token.tokens.T_OP, a=Sk.token.tokens.T_ENDMARKER,c=Sk.token.tokens.T_ENCODING,n=!1,m=e(d);Sk._tokenize(d,function(k){var u=k.split("\n").reverse().map(function(l){return l+"\n"});return function(){if(0===u.length)throw new Sk.builtin.Exception("EOF");return u.pop()}}(f),"utf-8",function(k){var u=null;k.type!==h&&k.type!==p&&k.type!==c&&(k.type===g&&(u=Sk.OpMap[k.string]),m.addtoken(u||k.type,k.string,[k.start,k.end,k.line]),k.type===a&&(n=!0))});if(!n)throw new Sk.builtin.SyntaxError("incomplete input",this.filename); return{cst:m.rootnode,flags:m.p_flags}};Sk.parseTreeDump=function(d,f){var h;f=f||"";var p=""+f;if(256<=d.type)for(p+=Sk.ParseTables.number2symbol[d.type]+"\n",h=0;h=e(w)||L+ 2==e(w)&&d(w,L+1).type==V.T_COMMA)throw new Sk.builtin.SyntaxError("named arguments must follow bare *",D.c_filename,w.lineno);Y=d(w,L+1);Y.type==V.T_COMMA?(L+=2,L=S(D,w,L,R,W)):(T=M(D,Y),L+=3,LD.c_feature_version)return h(D,L,"Async functions are only supported in Python 3.5 and greater"),null;f(L,O.funcdef);var W=m(d(L,N));if(a(D,W,d(L,N),0))return null;var T=E(D,d(L,N+1));if(!T)return null;if(d(L,N+2).type==V.T_RARROW){K=U(D,d(L,N+3));if(!K)return null;N+=2}if(d(L,N+3).type==V.T_TYPE_COMMENT){R=V.T_NEW_TYPE_COMMENT(d(L,N+3));if(!R)return null;N+=1}var ba=q(D,d(L,N+3));if(!ba)return null;if(1":return Sk.astnodes.RShift; case "&":return Sk.astnodes.BitAnd;case "^":return Sk.astnodes.BitXor;case "|":return Sk.astnodes.BitOr;case "*":return"*"===w.value.charAt(1)?Sk.astnodes.Pow:Sk.astnodes.Mult;case "@":if(Sk.__future__.python3)return Sk.astnodes.MatMult;default:Sk.asserts.fail("invalid augassign")}}function aa(D,w){Sk.asserts.assert(0=w);Sk.asserts.assert("{"==D.charAt(w-1));Sk.asserts.assert("}"==D.charAt(C)||"!"==D.charAt(C)||":"==D.charAt(C));D=D.substring(w,C);/^\s*$/.test(D)&&h(G,L,"f-string: empty expression not allowed"); try{let N=Sk.parse("","("+D+")");var K=Sk.astFromParse(N.cst,"",N.flags)}catch(N){throw N.traceback&&N.traceback[0]&&(K=N.traceback[0],K.lineno=(K.lineno||1)-1+L.lineno,K.filename=G.c_filename),N;}Sk.asserts.assert(1==K.body.length&&K.body[0].constructor===Sk.astnodes.Expr);return K.body[0].value}function oa(D,w,C,G,L,K,N){Sk.asserts.assert("{"==D.charAt(w));w++;var R=w;let W=null,T=0,ba=0,Y,da,ma=()=>h(K,N,"f-string: expecting '}'");for(Sk.asserts.assert(w<=C);w=C&&ma(),da=D.charAt(w),w++,"s"!=da&&"r"!=da&&"a"!=da&&h(K,N,"f-string: invalid conversion character: expected 's', 'r', or 'a'"));w>=C&&ma();":"==D.charAt(w)&&(w++,w>=C&&ma(),[Y,w]=ca(D,w,C,G,L+1,K,N));(w>=C||"}"!=D.charAt(w))&&ma();w++;return[new Sk.astnodes.FormattedValue(R,da,Y,N.lineno,N.col_offset),w]}function ca(D,w,C,G,L,K,N){let R=[],W=T=>{if(-1!==T.indexOf("}")){if(/(^|[^}])}(}})*($|[^}])/.test(T))throw new Sk.builtin.SyntaxError("f-string: single '}' is not allowed", K.c_filename,N.lineno,N.col_offset);T=T.replace(/}}/g,"}")}R.push(new Sk.astnodes.Str(new Sk.builtin.str(T),N.lineno,N.col_offset,K.end_lineno,N.end_col_offset))};for(;wba&&(T=-1,C=ba))}if(-1===T){W(D.substring(w,C));w=C;break}else if(T+1=G.length){if("None"===G)return new Sk.astnodes.NameConstant(Sk.builtin.none.none$,w.lineno,w.col_offset);if("True"===G)return new Sk.astnodes.NameConstant(Sk.builtin.bool.true$,w.lineno,w.col_offset);if("False"===G)return new Sk.astnodes.NameConstant(Sk.builtin.bool.false$,w.lineno,w.col_offset)}D=m(G,D);return new Sk.astnodes.Name(D,Sk.astnodes.Load,w.lineno, w.col_offset,w.end_lineno,w.end_col_offset);case V.T_STRING:C=[];for(var L=0;L=da&&h(N,R,"Truncated \\xNN escape"), ma+=String.fromCharCode(parseInt(ba.substr(W+1,2),16)),W+=2):Y||"u"!==T?Y||"U"!==T?ma+="\\"+T:(W+8>=da&&h(N,R,"Truncated \\UXXXXXXXX escape"),ma+=String.fromCodePoint(parseInt(ba.substr(W+1,8),16)),W+=8):(W+4>=da&&h(N,R,"Truncated \\uXXXX escape"),ma+=String.fromCharCode(parseInt(ba.substr(W+1,4),16)),W+=4))):Y&&127G.charCodeAt(1)&&(G="0o"+G.substring(1));C=!0;if("l"===L||"L"===L)G=G.slice(0,-1),C=!1;L=Number(G);G=L>Number.MAX_SAFE_INTEGER?C?new Sk.builtin.int_(JSBI.BigInt(G)):new Sk.builtin.lng(JSBI.BigInt(G)):C?new Sk.builtin.int_(L):new Sk.builtin.lng(L)}return new D(G, w.lineno,w.col_offset);case V.T_ELLIPSIS:return new Sk.astnodes.Ellipsis(w.lineno,w.col_offset,w.end_lineno,w.end_col_offset);case V.T_LPAR:return C=d(w,1),C.type==V.T_RPAR?new Sk.astnodes.Tuple([],Sk.astnodes.Load,w.lineno,w.col_offset,w.end_lineno,w.end_col_offset):C.type==O.yield_expr?U(D,C):1==e(C)?aa(D,C):d(C,1).type==O.comp_for?u(t(D,C),w):u(aa(D,C),w);case V.T_LSQB:C=d(w,1);if(C.type==V.T_RSQB)return new Sk.astnodes.List([],Sk.astnodes.Load,w.lineno,w.col_offset,w.end_lineno,w.end_col_offset); f(C,O.testlist_comp);if(1==e(C)||d(C,1).type==V.T_COMMA)return(D=l(D,C))?new Sk.astnodes.List(D,Sk.astnodes.Load,w.lineno,w.col_offset,w.end_lineno,w.end_col_offset):null;G=C;Sk.asserts.assert(G.type==O.testlist_comp);D=Q(D,G,1);return u(D,w);case V.T_LBRACE:C=d(w,1);if(C.type==V.T_RBRACE)return new Sk.astnodes.Dict(null,null,w.lineno,w.col_offset,w.end_lineno,w.end_col_offset);G=d(C,0).type==V.T_DOUBLESTAR;if(1==e(C)||13-G&&d(C,3-G).type==O.comp_for){if(G)return h(D,w,"dict unpacking cannot be used in dict comprehension"),null;G=C;Sk.asserts.assert(3>11&7;this.__namespaces=c||[]}function e(g,a,c,n,m){this.symFlags={};this.name=a;this.varnames=[];this.children=[];this.blockType=c;this.returnsValue=this.varkeywords=this.varargs=this.generator=this.childHasFree=this.hasFree=this.isNested=!1;this.lineno=m;this.table=g;g.cur&&(g.cur.nested||"function"===g.cur.blockType)&&(this.isNested=!0);n.scopeId=p++;g.stss[n.scopeId]=this;this.symbols={}}function d(g){this.filename=g;this.top=this.cur=null;this.stack=[];this.curClass=this.global= null;this.tmpname=0;this.stss={}}function f(g,a){var c;for(c=0;c>11&7;return 3==g||2==g}));return this._funcGlobals};e.prototype.get_frees=function(){Sk.asserts.assert("function"==this.get_type(),"get_frees only valid for function scopes");this._funcFrees||(this._funcFrees= this._identsMatching(function(g){return 4==(g>>11&7)}));return this._funcFrees};e.prototype.get_methods=function(){var g;Sk.asserts.assert("class"==this.get_type(),"get_methods only valid for class scopes");if(!this._classMethods){var a=[];for(g=0;g>11&7};d.prototype.getStsForAst=function(g){Sk.asserts.assert(void 0!== g.scopeId,"ast wasn't added to st?");g=this.stss[g.scopeId];Sk.asserts.assert(void 0!==g,"unknown sym tab entry");return g};d.prototype.SEQStmt=function(g){var a,c;if(null!==g){Sk.asserts.assert(Sk.isArrayLike(g),"SEQ: nodes isn't array? got "+g.toString());var n=g.length;for(c=0;c","").replace(" ","_"))};var p=Sk.builtin.str.reservedWords_;b.prototype.makeConstant=function(a){var c,n="";for(c=0;c Sk.execLimit) {throw new Sk.builtin.TimeoutError(Sk.timeoutMsg())}"),null!==Sk.yieldLimit&&this.u.canSuspend&&(a=a+"if (!$waking && ($dateNow - Sk.lastYield > Sk.yieldLimit)) {var $susp = $saveSuspension({data: {type: 'Sk.yield'}, resume: function() {}}, '"+ (this.filename+"',$currLineNo,$currColNo);"),a+="$susp.$blk = $blk;$susp.optional = true;return $susp;}$waking = false;",this.u.doesSuspend=!0);return a};b.prototype._jumpfalse=function(a,c){a=this._gr("jfalse","(",a,"===false||!Sk.misceval.isTrue(",a,"))");h("if(",a,"){/*test failed */$blk=",c,";continue;}")};b.prototype._jumpundef=function(a,c){h("if(",a,"===undefined){$blk=",c,";continue;}")};b.prototype._jumpnotundef=function(a,c){h("if(",a,"!==undefined){$blk=",c,";continue;}")};b.prototype._jumptrue= function(a,c){a=this._gr("jtrue","(",a,"===true||Sk.misceval.isTrue(",a,"))");h("if(",a,"){/*test passed */$blk=",c,";continue;}")};b.prototype._jump=function(a){null===this.u.blocks[this.u.curblock]._next&&(h("$blk=",a,";"),this.u.blocks[this.u.curblock]._next=a)};b.prototype._checkSuspension=function(a){if(this.u.canSuspend){var c=this.newBlock("function return or resume suspension");this._jump(c);this.setBlock(c);a=a||{lineno:"$currLineNo",col_offset:"$currColNo"};h("if ($ret && $ret.$isSuspension) { return $saveSuspension($ret,'"+ this.filename+"',"+a.lineno+","+a.col_offset+"); }");this.u.doesSuspend=!0;this.u.tempsToSave=this.u.tempsToSave.concat(this.u.localtemps)}else h("if ($ret && $ret.$isSuspension) { $ret = Sk.misceval.retryOptionalSuspensionOrThrow($ret); }")};b.prototype.cunpackstarstoarray=function(a,c){if(!a||0==a.length)return"[]";let n=!1;for(let m of a){if(c&&n)throw new Sk.builtin.SyntaxError("Extended argument unpacking is not permitted in Python 2");m.constructor===Sk.astnodes.Starred&&(n=!0)}if(n){c=this._gr("unpack", "[]");for(let m of a)m.constructor!==Sk.astnodes.Starred?h(c,".push(",this.vexpr(m),");"):(h("$ret = Sk.misceval.iterFor(Sk.abstr.iter(",this.vexpr(m.value),"), function(e) { ",c,".push(e); });"),this._checkSuspension());return c}return"["+a.map(m=>this.vexpr(m)).join(",")+"]"};b.prototype.cunpackkwstoarray=function(a,c){var n="undefined";if(a&&0=n.length&&(n=this.vexpr(k),"dict"===a?(a=this.vexpr(u),h(c, ".mp$ass_subscript(",a,",",n,");")):"list"===a?h(c,".v.push(",n,");"):"set"===a&&h(c,".v.mp$ass_subscript(",n,", true);"),this._jump(z),this.setBlock(z));this._jump(q);this.setBlock(r);return c};b.prototype.cyield=function(a){if(this.u.ste.blockType!==Sk.SYMTAB_CONSTS.FunctionBlock)throw new Sk.builtin.SyntaxError("'yield' outside function",this.filename,a.lineno);var c="Sk.builtin.none.none$";a.value&&(c=this.vexpr(a.value));a=this.newBlock("after yield");h("return [/*resume*/",a,",/*ret*/",c,"];"); this.setBlock(a);return"$gen.gi$sentvalue"};b.prototype.cyieldfrom=function(a){if(this.u.ste.blockType!==Sk.SYMTAB_CONSTS.FunctionBlock)throw new Sk.builtin.SyntaxError("'yield' outside function",this.filename,a.lineno);var c=this.vexpr(a.value);c=this._gr("iter","Sk.abstr.iter(",c,")");h("$gen."+c+"=",c,";");var n=this.newBlock("after iter"),m=this.newBlock("after yield from");this._jump(n);this.setBlock(n);var k=this.gensym("retval");h(c,"=$gen.",c,";");h("var ",k,";");h("if ($gen.gi$sentvalue === Sk.builtin.none.none$ || "+ c+".constructor === Sk.builtin.generator) {");h("$ret=",c,".tp$iternext(true, $gen.gi$sentvalue);");h("} else {");var u=this.makeConstant("new Sk.builtin.str('send');");h("$ret=Sk.misceval.tryCatch(");h("function(){");h("return Sk.misceval.callsimOrSuspendArray(Sk.abstr.gattr(",c,",",u,"), [$gen.gi$sentvalue]);},");h("function (e) { ");h("if (e instanceof Sk.builtin.StopIteration) { ");h(c,".gi$ret = e.$value;");h("return undefined;");h("} else { throw e; }");h("}");h(");");h("}");this._checkSuspension(a); h(k,"=$ret;");h("if(",k,"===undefined) {");h("$gen.gi$sentvalue=$gen."+c+".gi$ret;");h("$blk=",m,";continue;");h("}");h("return [/*resume*/",n,",/*ret*/",k,"];");this.setBlock(m);return"$gen.gi$sentvalue"};b.prototype.ccompare=function(a){var c;Sk.asserts.assert(a.ops.length===a.comparators.length);var n=this.vexpr(a.left);var m=a.ops.length;var k=this.newBlock("done");var u=this._gr("compareres","null");for(c=0;cthis.u.lineno&&(this.u.lineno=a.lineno, this.u.linenoSet=!1);switch(a.constructor){case Sk.astnodes.BoolOp:return this.cboolop(a);case Sk.astnodes.BinOp:return this._gr("binop","Sk.abstr.numberBinOp(",this.vexpr(a.left),",",this.vexpr(a.right),",'",a.op.prototype._astname,"')");case Sk.astnodes.UnaryOp:return this._gr("unaryop","Sk.abstr.numberUnaryOp(",this.vexpr(a.operand),",'",a.op.prototype._astname,"')");case Sk.astnodes.Lambda:return this.clambda(a);case Sk.astnodes.IfExp:return this.cifexp(a);case Sk.astnodes.Dict:return this.cdict(a); case Sk.astnodes.ListComp:return this.clistcomp(a);case Sk.astnodes.DictComp:return this.cdictcomp(a);case Sk.astnodes.SetComp:return this.csetcomp(a);case Sk.astnodes.GeneratorExp:return this.cgenexp(a);case Sk.astnodes.Yield:return this.cyield(a);case Sk.astnodes.YieldFrom:return this.cyieldfrom(a);case Sk.astnodes.Compare:return this.ccompare(a);case Sk.astnodes.Call:return c=this.ccall(a),this.annotateSource(a),c;case Sk.astnodes.Num:if("number"===typeof a.n)return a.n;if(a.n instanceof Sk.builtin.lng)return this.makeConstant("new Sk.builtin.lng('"+ a.n.v.toString()+"')");if(a.n instanceof Sk.builtin.int_)return"number"===typeof a.n.v?this.makeConstant("new Sk.builtin.int_("+a.n.v+")"):this.makeConstant("new Sk.builtin.int_('"+a.n.v.toString()+"')");if(a.n instanceof Sk.builtin.float_)return a=0===a.n.v&&-Infinity===1/a.n.v?"-0":a.n.v,this.makeConstant("new Sk.builtin.float_("+a+")");if(a.n instanceof Sk.builtin.complex)return this.makeConstant("new Sk.builtin.complex("+(0===a.n.real&&-Infinity===1/a.n.real?"-0":a.n.real)+", "+(0===a.n.imag&& -Infinity===1/a.n.imag?"-0":a.n.imag)+")");Sk.asserts.fail("unhandled Num type");case Sk.astnodes.Bytes:if(Sk.__future__.python3){c=[];a=a.s.$jsstr();for(n=0;nm||127<=m&&256>m?n+("\\x"+("0"+m.toString(16)).substr(-2)):256<=m?n+("\\u"+("000"+m.toString(16)).substr(-4)): n+a.charAt(k);a=n+'"';return c.call(this,"new Sk.builtin.str(",a,")");case Sk.astnodes.Attribute:a.ctx!==Sk.astnodes.AugLoad&&a.ctx!==Sk.astnodes.AugStore&&(k=this.vexpr(a.value));m=a.attr.$r().v;m=m.substring(1,m.length-1);m=f(this.u.private_,new Sk.builtin.str(m)).v;m=this.makeConstant("new Sk.builtin.str('"+m+"')");switch(a.ctx){case Sk.astnodes.AugLoad:return h("$ret = ",n,".tp$getattr(",m,", true);"),this._checkSuspension(a),h("\nif ($ret === undefined) {"),h("\nthrow new Sk.builtin.AttributeError(", n,'.sk$attrError() + " has no attribute \'" + ',m,'.$jsstr() + "\'");'),h("\n};"),this._gr("lattr","$ret");case Sk.astnodes.Load:return h("$ret = ",k,".tp$getattr(",m,", true);"),this._checkSuspension(a),h("\nif ($ret === undefined) {"),h("\nthrow new Sk.builtin.AttributeError(",k,'.sk$attrError() + " has no attribute \'" + ',m,'.$jsstr() + "\'");'),h("\n};"),this._gr("lattr","$ret");case Sk.astnodes.AugStore:h("$ret = undefined;");h("if(",c,"!==undefined){");h("$ret = ",n,".tp$setattr(",m,",",c, ", true);");h("}");this._checkSuspension(a);break;case Sk.astnodes.Store:h("$ret = ",k,".tp$setattr(",m,",",c,", true);");this._checkSuspension(a);break;case Sk.astnodes.Del:h("$ret = ",k,".tp$setattr(",m,", undefined, true);");this._checkSuspension(a);break;default:Sk.asserts.fail("invalid attribute expression")}break;case Sk.astnodes.Subscript:switch(a.ctx){case Sk.astnodes.AugLoad:return h("$ret = Sk.abstr.objectGetItem(",n,",",m,", true);"),this._checkSuspension(a),this._gr("gitem","$ret");case Sk.astnodes.Load:case Sk.astnodes.Store:case Sk.astnodes.Del:return this.vslice(a.slice, a.ctx,this.vexpr(a.value),c);case Sk.astnodes.AugStore:h("$ret=undefined;");h("if(",c,"!==undefined){");h("$ret=Sk.abstr.objectSetItem(",n,",",m,",",c,", true)");h("}");this._checkSuspension(a);break;default:Sk.asserts.fail("invalid subscript expression")}break;case Sk.astnodes.Name:return this.nameop(a.id,a.ctx,c);case Sk.astnodes.NameConstant:if(a.ctx===Sk.astnodes.Store||a.ctx===Sk.astnodes.AugStore||a.ctx===Sk.astnodes.Del)throw new Sk.builtin.SyntaxError("can not assign to a constant name"); switch(a.value){case Sk.builtin.none.none$:return"Sk.builtin.none.none$";case Sk.builtin.bool.true$:return"Sk.builtin.bool.true$";case Sk.builtin.bool.false$:return"Sk.builtin.bool.false$";default:Sk.asserts.fail("invalid named constant")}break;case Sk.astnodes.List:return this.ctuplelistorset(a,c,"list");case Sk.astnodes.Tuple:return this.ctuplelistorset(a,c,"tuple");case Sk.astnodes.Set:return this.ctuplelistorset(a,c,"set");case Sk.astnodes.Starred:switch(a.ctx){case Sk.astnodes.Store:throw new Sk.builtin.SyntaxError("starred assignment target must be in a list or tuple", this.filename,a.lineno);default:throw new Sk.builtin.SyntaxError("can't use starred expression here",this.filename,a.lineno);}case Sk.astnodes.JoinedStr:return this.cjoinedstr(a);case Sk.astnodes.FormattedValue:return this.cformattedvalue(a);case Sk.astnodes.Ellipsis:return this.makeConstant("Sk.builtin.Ellipsis");default:Sk.asserts.fail("unhandled case "+a.constructor.name+" vexpr")}};b.prototype.vseqexpr=function(a,c){var n;Sk.asserts.assert(void 0===c||a.length===c.length);var m=[];for(n=0;n";this.u.blocks[c]._next=null;return c};b.prototype.setBlock=function(a){Sk.asserts.assert(0<=a&& a0) { $err=err; $blk=$exc.pop(); } else { throw err; } }};";l+="var $saveSuspension = function($child, $filename, $lineno, $colno) {var susp = new Sk.misceval.Suspension(); susp.child=$child;susp.resume=function(){"+ a.scopename+".$wakingSuspension=susp; return "+a.scopename+"("+(a.ste.generator?"$gen":"")+"); };susp.data=susp.child.data;susp.$blk=$blk;susp.$loc=$loc;susp.$gbl=$gbl;susp.$exc=$exc;susp.$err=$err;susp.$postfinally=$postfinally;susp.$filename=$filename;susp.$lineno=$lineno;susp.$colno=$colno;susp.optional=susp.child.optional;"+(u?"susp.$cell=$cell;":"");k={};for(c=0;cJ?this.vexpr(J):"undefined"));m&&m.vararg&&(x=m.vararg);m&&m.kwarg&&(v=m.kwarg);if(!Sk.__future__.python3&&m&&m.kwonlyargs&&0!=m.kwonlyargs.length)throw new Sk.builtin.SyntaxError("Keyword-only arguments are not supported in Python 2");var B=this.enterScope(c,a,a.lineno,this.canSuspend);var I=this.u.ste.generator; var M=this.u.ste.hasFree;var S=this.u.ste.childHasFree;var E=this.newBlock("codeobj entry");this.u.prefixCode="var "+B+"=(function "+this.niceName(c.v)+"$(";var H=[];if(I){if(v)throw new Sk.builtin.SyntaxError(c.v+"(): keyword arguments in generators not supported",this.filename,a.lineno);if(x)throw new Sk.builtin.SyntaxError(c.v+"(): variable number of arguments in generators not supported",this.filename,a.lineno);H.push("$gen")}else{v&&(H.push("$kwa"),this.u.tempsToSave.push("$kwa"));for(q=0;m&& q0) { $err = err; $blk=$exc.pop(); continue; } else { throw err; }} }});"; k.call(this,B);if(m){for(let J of m.args)l.push(J.arg.v);for(let J of m.kwonlyargs||[])l.push(J.arg.v);this.u.argnames=l}this.exitScope();0"),null,a.args,function(c){c=this.vexpr(a.body); h("return ",c,";")})};b.prototype.cifexp=function(a){var c=this.newBlock("next of ifexp"),n=this.newBlock("end of ifexp"),m=this._gr("res","null"),k=this.vexpr(a.test);this._jumpfalse(k,c);h(m,"=",this.vexpr(a.body),";");this._jump(n);this.setBlock(c);h(m,"=",this.vexpr(a.orelse),";");this._jump(n);this.setBlock(n);return m};b.prototype.cgenexpgen=function(a,c,n){var m=this.newBlock("start for "+c),k=this.newBlock("skip for "+c);this.newBlock("if cleanup for "+c);var u=this.newBlock("end for "+c), l=a[c];if(0===c)var q="$loc.$iter0";else{var z=this.vexpr(l.iter);q="$loc."+this.gensym("iter");h(q,"=","Sk.abstr.iter(",z,");")}this._jump(m);this.setBlock(m);this.annotateSource(n);h("$ret = Sk.abstr.iternext(",q,this.u.canSuspend?", true":", false",");");this._checkSuspension(n);z=this._gr("next","$ret");this._jumpundef(z,u);this.vexpr(l.target,z);var r=l.ifs?l.ifs.length:0;for(q=0;q=a.length&&(this.annotateSource(n),a=this.vexpr(n),h("return [",k,"/*resume*/,",a,"/*ret*/];"),this.setBlock(k));this._jump(m);this.setBlock(u);1===c&&h("return Sk.builtin.none.none$;")};b.prototype.cgenexp=function(a){var c=this.buildcodeobj(a,new Sk.builtin.str(""),null,null,function(n){this.cgenexpgen(a.generators,0,a.elt)});c=this._gr("gener","Sk.misceval.callsimArray(",c,");");h(c,".gi$locals.$iter0=Sk.abstr.iter(",this.vexpr(a.generators[0].iter),");");return c};b.prototype.cclass= function(a){Sk.asserts.assert(a instanceof Sk.astnodes.ClassDef);var c=this.vseqexpr(a.decorator_list);var n=this.vseqexpr(a.bases);let m=this.cunpackkwstoarray(a.keywords);var k=this.enterScope(a.name,a,a.lineno);var u=this.newBlock("class entry");this.u.prefixCode="var "+k+"=(function $"+a.name.v+"$class_outer($globals,$locals,$cell){var $gbl=$globals,$loc=$locals,$free=$globals;";this.u.switchCode+="(function $"+a.name.v+"$_closure($cell){";this.u.switchCode+="var $blk="+u+",$exc=[],$ret=undefined,$postfinally=undefined,$currLineNo=undefined,$currColNo=undefined;"; null!==Sk.execLimit&&(this.u.switchCode+="if (typeof Sk.execStart === 'undefined') {Sk.execStart = Date.now()}");null!==Sk.yieldLimit&&this.u.canSuspend&&(this.u.switchCode+="if (typeof Sk.lastYield === 'undefined') {Sk.lastYield = Date.now()}");this.u.switchCode+="while(true){try{";this.u.switchCode+=this.outputInterruptTest();this.u.switchCode+="switch($blk){";this.u.suffixCode="}}catch(err){ if (!(err instanceof Sk.builtin.BaseException)) { err = new Sk.builtin.ExternalError(err); } err.traceback.push({lineno: $currLineNo, colno: $currColNo, filename: '"+ this.filename+"'}); if ($exc.length>0) { $err = err; $blk=$exc.pop(); continue; } else { throw err; }}}";this.u.suffixCode+="}).call(null, $cell);});";this.u.private_=a.name;this.cbody(a.body,a.name);h("return;");this.exitScope();h("$ret = Sk.misceval.buildClass($gbl,",k,",",a.name.$r().v,",[",n,"], $cell, ",m,");");this._checkSuspension();for(let l of c.reverse())h("$ret = Sk.misceval.callsimOrSuspendArray(",l,", [$ret]);"),this._checkSuspension();this.nameop(a.name,Sk.astnodes.Store,"$ret")};b.prototype.ccontinue= function(a){var c=this.peekFinallyBlock();if(0==this.u.continueBlocks.length)throw new Sk.builtin.SyntaxError("'continue' outside loop",this.filename,a.lineno);a=this.u.continueBlocks[this.u.continueBlocks.length-1];Sk.asserts.assert(this.u.breakBlocks.length===this.u.continueBlocks.length);c&&c.breakDepth==this.u.continueBlocks.length?h("$postfinally={isBreak:true,gotoBlock:",a,"};"):this._jump(a)};b.prototype.cbreak=function(a){var c=this.peekFinallyBlock();if(0===this.u.breakBlocks.length)throw new Sk.builtin.SyntaxError("'break' outside loop", this.filename,a.lineno);a=this.u.breakBlocks[this.u.breakBlocks.length-1];c&&c.breakDepth==this.u.breakBlocks.length?h("$postfinally={isBreak:true,gotoBlock:",a,"};"):this._jump(a)};b.prototype.vstmt=function(a,c){this.u.lineno=a.lineno;this.u.linenoSet=!1;this.u.localtemps=[];if(Sk.debugging&&this.u.canSuspend){var n=this.newBlock("debug breakpoint for line "+a.lineno);h("if (Sk.breakpoints('"+this.filename+"',"+a.lineno+","+a.col_offset+")) {","var $susp = $saveSuspension({data: {type: 'Sk.debug'}, resume: function() {}}, '"+ this.filename+"',"+a.lineno+","+a.col_offset+");","$susp.$blk = "+n+";","$susp.optional = true;","return $susp;","}");this._jump(n);this.setBlock(n);this.u.doesSuspend=!0}this.annotateSource(a);switch(a.constructor){case Sk.astnodes.FunctionDef:this.cfunction(a,c);break;case Sk.astnodes.ClassDef:this.cclass(a);break;case Sk.astnodes.Return:if(this.u.ste.blockType!==Sk.SYMTAB_CONSTS.FunctionBlock)throw new Sk.builtin.SyntaxError("'return' outside function",this.filename,a.lineno);n=a.value?this.vexpr(a.value): "Sk.builtin.none.none$";0==this.u.finallyBlocks.length?h("return ",n,";"):(h("$postfinally={returning:",n,"};"),this._jump(this.peekFinallyBlock().blk));break;case Sk.astnodes.Delete:this.vseqexpr(a.targets);break;case Sk.astnodes.Assign:var m=a.targets.length;n=this.vexpr(a.value);for(c=0;c"!==a.name.v){var c=a.name.$r().v;c=c.substring(1,c.length-1);h(a.scopename,".co_name=new Sk.builtins['str']('",c,"');");this.stack.length&&"class"== this.u.ste.blockType&&h(a.scopename,".co_qualname=new Sk.builtins['str']('"+this.u.name.v+"."+c+"');")}for(var n in a.consts)a.consts.hasOwnProperty(n)&&(a.suffixCode+=n+" = "+a.consts[n]+";")};b.prototype.cbody=function(a,c){var n=0;const m=this.maybeCDocstringOfBody(a);null!==m&&(h("$loc.__doc__ = ",m,";"),n=1);for(;n"),a,0,this.canSuspend),n=this.newBlock("module entry");this.u.prefixCode="var "+c+"=(function($forcegbl, $forceloc){"; this.u.varDeclsCode="var $gbl = $forcegbl || {}, $blk="+n+",$exc=[],$loc=$forceloc || $gbl,$cell={},$err=undefined;var $ret=undefined,$postfinally=undefined,$currLineNo=undefined,$currColNo=undefined;";null!==Sk.execLimit&&(this.u.varDeclsCode+="if (typeof Sk.execStart === 'undefined') {Sk.execStart = Date.now()}");null!==Sk.yieldLimit&&this.u.canSuspend&&(this.u.varDeclsCode+="if (typeof Sk.lastYield === 'undefined') {Sk.lastYield = Date.now()}");this.u.varDeclsCode+="var $waking=false; if ("+c+ ".$wakingSuspension!==undefined) { $wakeFromSuspension(); $waking=true; }if (Sk.retainGlobals) { if (Sk.globals) { $gbl = Sk.globals; Sk.globals = $gbl; $loc = $gbl; } else { Sk.globals = $gbl; }} else { Sk.globals = $gbl; }";this.u.switchCode="while(true){try{";this.u.switchCode+=this.outputInterruptTest();this.u.switchCode+="switch($blk){";this.u.suffixCode="}";this.u.suffixCode+="}catch(err){ if (!(err instanceof Sk.builtin.BaseException)) { err = new Sk.builtin.ExternalError(err); } err.traceback.push({lineno: $currLineNo, colno: $currColNo, filename: '"+ this.filename+"'}); if ($exc.length>0) { $err = err; $blk=$exc.pop(); continue; } else { throw err; }} } });";switch(a.constructor){case Sk.astnodes.Module:this.cbody(a.body);h("return $loc;");break;default:Sk.asserts.fail("todo; unhandled case in compilerMod")}this.exitScope();this.result.push(this.outputAllUnits());return c};Sk.compile=function(a,c,n,m){n=Sk.__future__;Sk.__future__=Object.create(Sk.__future__);var k=Sk.parse(c,a),u=Sk.astFromParse(k.cst,c,k.flags);k=k.flags;var l=Sk.symboltable(u, c);a=new b(c,l,k,m,a);m=a.cmod(u);Sk.__future__=n;return{funcname:"$compiledmod",code:`var $compiledmod = function() {${a.result.join("")}\nreturn ${m};}();\n$compiledmod;`,filename:c}};Sk.exportSymbol("Sk.compile",Sk.compile);Sk.resetCompiler=function(){Sk.gensymcount=0};Sk.exportSymbol("Sk.resetCompiler",Sk.resetCompiler);Sk.fixReserved=d;Sk.exportSymbol("Sk.fixReserved",Sk.fixReserved);Sk.unfixReserved=function(a){return a.replace(/_\$rw\$$/,"")};Sk.exportSymbol("Sk.unfixReserved",Sk.unfixReserved); Sk.mangleName=f;Sk.exportSymbol("Sk.mangleName",Sk.mangleName);Sk.reservedWords_=p;Sk.exportSymbol("Sk.reservedWords_",Sk.reservedWords_)},function(F,P){Sk.sysmodules=new Sk.builtin.dict([]);Sk.realsyspath=void 0;Sk.importSearchPathForName=function(b,e,d){var f=b.replace(/\./g,"/"),h=function(p,g){return Sk.misceval.chain(Sk.misceval.tryCatch(function(){return Sk.read(p)},function(a){}),function(a){if(void 0!==a)return new Sk.misceval.Break({filename:p,code:a,packagePath:g})})};void 0===d&&(d=Sk.realsyspath); return Sk.misceval.iterFor(d.tp$iter(),function(p){return Sk.misceval.chain(h(p.v+"/"+f+e,!1),function(g){return g?g:h(p.v+"/"+f+"/__init__"+e,p.v+"/"+f)})})};Sk.importSetUpPath=function(b){if(!Sk.realsyspath){var e=[new Sk.builtin.str("src/builtin"),new Sk.builtin.str("src/lib"),new Sk.builtin.str(".")];for(b=0;bQ;++Q)y+=" ";J[A-1]="/* "+y+A+" */ "+J[A-1]}return J.join("\n")};B=I(B);Sk.debugout(B)}"$compiledmod"!==v.funcname&&(B+="\n"+v.funcname+";");var M=new Sk.builtin.str(d),S=new Sk.builtin.str(b);Sk.sysmodules.mp$ass_subscript(M,m);h&&h.tp$setattr(S,m);var E=Sk.global.eval(B);m.init$dict(M,Sk.builtin.none.none$);m.$d.__package__=v.packagePath?M:r?new Sk.builtin.str(l+ r):u?u:Sk.builtin.none.none$;v.packagePath&&(m.$d.__path__=new Sk.builtin.tuple([new Sk.builtin.str(v.packagePath)]));v.filename&&"$builtinmodule"!==v.funcname&&(m.$d.__file__=new Sk.builtin.str(v.filename));var H=h&&h.$initializing;m.$initializing=!0;h&&!H&&(h.$initializing=!0);return Sk.misceval.tryCatch(()=>Sk.misceval.chain(E(m.$d),y=>{m.$initializing=!1;h&&!H&&(h.$initializing=!1);return y}),y=>{try{Sk.abstr.objectDelItem(Sk.sysmodules,M)}catch(A){}if(h)try{h.tp$setattr(S,void 0)}catch(A){}m.$initializing= !1;h&&!H&&(h.$initializing=!1);throw y;})}},function(v){var B;if(void 0===v){if(p&&!k)return;throw new Sk.builtin.ModuleNotFoundError("No module named "+Sk.misceval.objectRepr(new Sk.builtin.str(b)));}if(v!==m.$d){for(B in m.$d)v[B]||(v[B]=m.$d[B]);m.$d=v}if(Sk.onAfterImport&&"function"===typeof Sk.onAfterImport)try{Sk.onAfterImport(b)}catch(I){}return k?(n.tp$setattr(new Sk.builtin.str(z[z.length-1]),m),k):m})});return g?t:Sk.misceval.retryOptionalSuspensionOrThrow(t)};Sk.importModule=function(b, e,d){return Sk.importModuleInternal_(b,e,void 0,void 0,void 0,!1,d)};Sk.importMain=function(b,e,d){Sk.dateSet=!1;Sk.filesLoaded=!1;Sk.sysmodules=new Sk.builtin.dict([]);Sk.realsyspath=void 0;Sk.resetCompiler();return Sk.importModuleInternal_(b,e,"__main__",void 0,void 0,!1,d)};Sk.importMainWithBody=function(b,e,d,f){Sk.dateSet=!1;Sk.filesLoaded=!1;Sk.sysmodules=new Sk.builtin.dict([]);Sk.realsyspath=void 0;Sk.resetCompiler();return Sk.importModuleInternal_(b,e,"__main__",d,void 0,!1,f)};Sk.importBuiltinWithBody= function(b,e,d,f){return Sk.importModuleInternal_(b,e,"__builtin__."+b,d,void 0,!1,f)};Sk.builtin.__import__=function(b,e,d,f,h){b=b.toString();var p=Sk.globals,g;null==h&&(h=Sk.__future__.absolute_import?0:-1);if(0!==h&&e.__package__&&e.__package__!==Sk.builtin.none.none$){if((g=e.__package__.v)&&0=e.length)throw new Sk.builtin.ImportError("Attempted relative import beyond toplevel package");e.length-=h-1;g=e.join(".")}var a=Sk.sysmodules.quick$lookup(new Sk.builtin.str(g))}if(0< h&&void 0===a)throw new Sk.builtin.ImportError("Attempted relative import in non-package");b.split(".");return Sk.misceval.chain(void 0,function(){if(0!==h&&void 0!==a)return""===b?a:Sk.importModuleInternal_(b,void 0,g+"."+b,void 0,a,-1==h,!0)},function(c){return void 0===c?(g=a=void 0,Sk.importModuleInternal_(b,void 0,void 0,void 0,void 0,!1,!0)):c},function(c){if(f&&0!==f.length){c=[null];const n=Sk.sysmodules.mp$subscript(new Sk.builtin.str((g||"")+(g&&b?".":"")+b));for(let m=0;mSk.importModuleInternal_(k,void 0,void 0,void 0,n,!0,!0))}return Sk.misceval.chain(...c,function(){Sk.asserts.assert(n);return n})}return c},function(c){p!==Sk.globals&&(Sk.globals=p);return c})};Sk.importStar=function(b,e,d){if(d=b.tp$getattr(new Sk.builtin.str("__all__")))for(let f=Sk.abstr.iter(d),h=f.tp$iternext();void 0!==h;h=f.tp$iternext())e[h.v]=Sk.abstr.gattr(b,h);else{d=Object.getOwnPropertyNames(b.$d);for(let f in d)"_"!= d[f].charAt(0)&&(e[d[f]]=b.$d[d[f]])}};Sk.exportSymbol("Sk.importMain",Sk.importMain);Sk.exportSymbol("Sk.importMainWithBody",Sk.importMainWithBody);Sk.exportSymbol("Sk.importBuiltinWithBody",Sk.importBuiltinWithBody);Sk.exportSymbol("Sk.builtin.__import__",Sk.builtin.__import__);Sk.exportSymbol("Sk.importStar",Sk.importStar)},function(F,P){Sk.builtin.timSort=function(b,e){this.list=new Sk.builtin.list(b.v);this.MIN_GALLOP=7;this.listlength=e?e:b.sq$length()};Sk.builtin.timSort.prototype.lt=function(b, e){return Sk.misceval.richCompareBool(b,e,"Lt")};Sk.builtin.timSort.prototype.le=function(b,e){return!this.lt(e,b)};Sk.builtin.timSort.prototype.setitem=function(b,e){this.list.v[b]=e};Sk.builtin.timSort.prototype.binary_sort=function(b,e){var d;for(d=b.base+e;d>1);this.lt(e,b.getitem(p))?h=p:f=p+1}Sk.asserts.assert(f===h);for(p=d;p>f;p--)b.setitem(p,b.getitem(p-1));b.setitem(f,e)}};Sk.builtin.timSort.prototype.count_run= function(b){var e;if(1>=b.len){var d=b.len;var f=!1}else if(d=2,this.lt(b.getitem(b.base+1),b.getitem(b.base)))for(f=!0,e=b.base+2;ee.len)){this.merge_init();for(b= this.merge_compute_minrun(e.len);0h&&(c=h);a+=d;c+=d}else{for(h=d+1;ch&&(c=h);g=d-a;a=d-c;c=g}Sk.asserts.assert(-1<=a>1),f(e.getitem(e.base+d),b)?a=d+1:c=d;Sk.asserts.assert(a== c);return c};Sk.builtin.timSort.prototype.merge_init=function(){this.min_gallop=this.MIN_GALLOP;this.pending=[]};Sk.builtin.timSort.prototype.merge_lo=function(b,e){var d,f,h;Sk.asserts.assert(0=p)break}else{this.setitem(g, b.popleft());g++;if(1==b.len)return;d++;f=0;if(d>=p)break}for(p+=1;;){this.min_gallop=p-=1=b.len)return;this.setitem(g,e.popleft());g++;if(0===e.len)return;f=this.gallop(b.getitem(b.base),e,0,!1);for(h=e.base;h=p)break}else{g--;this.setitem(g,c);e.len--;if(1==e.len)return;f++;d=0;if(f>=p)break}}for(p+=1;;){this.min_gallop=p-=1b.base+n-1;h--)g--,this.setitem(g,b.getitem(h));b.len-=d;if(0===b.len)return;g--;this.setitem(g,e.popright());if(1==e.len)return;a=b.getitem(b.base+b.len-1);n=this.gallop(a,e,e.len-1,!1);f=e.len-n; for(h=e.base+e.len-1;h>e.base+n-1;h--)g--,this.setitem(g,e.getitem(h));e.len-=f;if(1>=e.len)return;g--;this.setitem(g,b.popright());if(0===b.len)return;if(db.base-1;h--)g--,this.setitem(g,b.getitem(h));for(h=e.base+e.len-1;h>e.base-1;h--)g--,this.setitem(g,e.getitem(h))}};Sk.builtin.timSort.prototype.merge_at=function(b){0>b&&(b=this.pending.length+b);var e=this.pending[b]; var d=this.pending[b+1];Sk.asserts.assert(0>=1;return b+e};Sk.builtin.listSlice=function(b, e,d){this.list=b;this.base=e;this.len=d};Sk.builtin.listSlice.prototype.copyitems=function(){var b=this.base,e=this.base+this.len;Sk.asserts.assert(0<=b<=e);return new Sk.builtin.listSlice(new Sk.builtin.list(this.list.v.slice(b,e)),0,this.len)};Sk.builtin.listSlice.prototype.advance=function(b){this.base+=b;this.len-=b;Sk.asserts.assert(this.base<=this.list.sq$length())};Sk.builtin.listSlice.prototype.getitem=function(b){return this.list.v[b]};Sk.builtin.listSlice.prototype.setitem=function(b,e){this.list.v[b]= e};Sk.builtin.listSlice.prototype.popleft=function(){var b=this.list.v[this.base];this.base++;this.len--;return b};Sk.builtin.listSlice.prototype.popright=function(){this.len--;return this.list.v[this.base+this.len]};Sk.builtin.listSlice.prototype.reverse=function(){for(var b,e,d=this.list,f=this.base,h=f+this.len-1;f same as super(__class__, )\nsuper(type) -> unbound super object\nsuper(type, obj) -> bound super object; requires isinstance(obj, type)\nsuper(type, type2) -> bound super object; requires issubclass(type2, type)\nTypical use to call a cooperative superclass method:\nclass C(B):\n def meth(self, arg):\n super().meth(arg)\nThis works for class methods too:\nclass C(B):\n @classmethod\n def cmeth(cls, arg):\n super().cmeth(arg)\n", tp$new:Sk.generic.new,tp$init(b,e){Sk.abstr.checkNoKwargs("super",e);Sk.abstr.checkArgsLen("super",b,1,2);e=b[0];b=b[1];if(!Sk.builtin.checkClass(e))throw new Sk.builtin.TypeError("must be type, not "+Sk.abstr.typeName(e));this.obj=b;this.type=e;null!=this.obj&&(this.obj_type=this.$supercheck(e,this.obj))},$r(){return this.obj?new Sk.builtin.str(", <"+Sk.abstr.typeName(this.obj)+" object>>"):new Sk.builtin.str(", NULL>")},tp$getattr(b,e){let d=this.obj_type;if(null==d)return Sk.generic.getAttr.call(this,b,e);var f=d.prototype.tp$mro;const h=f.length;if(b===Sk.builtin.str.$class)return Sk.generic.getAttr.call(this,b,e);let p;for(p=0;p+1=h)return Sk.generic.getAttr.call(this,b,e);b=b.$mangled;let g;for(;p {e+=0{this.is$typevar(e)&&0>this.tuple$index(b,e)&&b.push(e)});this.$params=new Sk.builtin.tuple(b)},tuple$index(b,e){return b.indexOf(e)},is$typevar(b){if("TypeVar"!==b.tp$name)return!1;b=Sk.abstr.lookupSpecial(b,Sk.builtin.str.$module);if(void 0===b)throw Sk.builtin.RuntimeError("found object withought a __module__");return"typing"=== b.toString()},ga$repr(b){if(b===Sk.builtin.Ellipsis)return"...";if(Sk.abstr.lookupSpecial(b,this.str$orig)&&Sk.abstr.lookupSpecial(b,this.str$args))return Sk.misceval.objectRepr(b);const e=Sk.abstr.lookupSpecial(b,Sk.builtin.str.$qualname);if(void 0===e)return Sk.misceval.objectRepr(b);const d=Sk.abstr.lookupSpecial(b,Sk.builtin.str.$module);return void 0===d||Sk.builtin.checkNone(d)?Sk.misceval.objectRepr(b):"builtins"===d.toString()?e.toString():d.toString()+"."+e.toString()},str$orig:new Sk.builtin.str("__origin__"), str$args:new Sk.builtin.str("__args__"),attr$exc:"__origin__ __args__ __parameters__ __mro_entries__ __reduce_ex__ __reduce__".split(" ").map(b=>new Sk.builtin.str(b))}})},function(F,P){function b(f,h){let p=void 0;if(void 0===f||Sk.builtin.checkNone(f))f=void 0;else if(f instanceof Sk.builtin.dict)p={},f.$items().forEach(g=>{var [a,c]=g;Sk.builtin.checkString(a)&&(p[a.$mangled]=c)});else throw new Sk.builtin.TypeError(h+" must be a dict or None, not "+Sk.abstr.typeName(f));return p}function e(f, h){if(void 0!==f&&!Sk.builtin.checkNone(f))for(let p in h)f.mp$ass_subscript(new Sk.builtin.str(Sk.unfixReserved(p)),h[p])}Sk.builtins={round:null,len:null,min:null,max:null,sum:null,abs:null,fabs:null,ord:null,chr:null,hex:null,oct:null,bin:null,dir:null,repr:null,open:null,isinstance:null,hash:null,getattr:null,hasattr:null,id:null,sorted:null,any:null,all:null,enumerate:Sk.builtin.enumerate,filter:Sk.builtin.filter_,map:Sk.builtin.map_,range:Sk.builtin.range_,reversed:Sk.builtin.reversed,zip:Sk.builtin.zip_, BaseException:Sk.builtin.BaseException,AttributeError:Sk.builtin.AttributeError,ValueError:Sk.builtin.ValueError,Exception:Sk.builtin.Exception,ZeroDivisionError:Sk.builtin.ZeroDivisionError,AssertionError:Sk.builtin.AssertionError,ImportError:Sk.builtin.ImportError,ModuleNotFoundError:Sk.builtin.ModuleNotFoundError,IndentationError:Sk.builtin.IndentationError,IndexError:Sk.builtin.IndexError,LookupError:Sk.builtin.LookupError,KeyError:Sk.builtin.KeyError,TypeError:Sk.builtin.TypeError,UnicodeDecodeError:Sk.builtin.UnicodeDecodeError, UnicodeEncodeError:Sk.builtin.UnicodeEncodeError,NameError:Sk.builtin.NameError,UnboundLocalError:Sk.builtin.UnboundLocalError,IOError:Sk.builtin.IOError,NotImplementedError:Sk.builtin.NotImplementedError,SystemExit:Sk.builtin.SystemExit,OverflowError:Sk.builtin.OverflowError,OperationError:Sk.builtin.OperationError,NegativePowerError:Sk.builtin.NegativePowerError,RuntimeError:Sk.builtin.RuntimeError,RecursionError:Sk.builtin.RecursionError,StopIteration:Sk.builtin.StopIteration,SyntaxError:Sk.builtin.SyntaxError, SystemError:Sk.builtin.SystemError,KeyboardInterrupt:Sk.builtin.KeyboardInterrupt,float_$rw$:Sk.builtin.float_,int_$rw$:Sk.builtin.int_,bool:Sk.builtin.bool,complex:Sk.builtin.complex,dict:Sk.builtin.dict,file:Sk.builtin.file,frozenset:Sk.builtin.frozenset,"function":Sk.builtin.func,generator:Sk.builtin.generator,list:Sk.builtin.list,long_$rw$:Sk.builtin.lng,method:Sk.builtin.method,object:Sk.builtin.object,slice:Sk.builtin.slice,str:Sk.builtin.str,set:Sk.builtin.set,tuple:Sk.builtin.tuple,type:Sk.builtin.type, input:null,raw_input:new Sk.builtin.func(Sk.builtin.raw_input),setattr:null,jseval:Sk.builtin.jseval,jsmillis:Sk.builtin.jsmillis,quit:new Sk.builtin.func(Sk.builtin.quit),exit:new Sk.builtin.func(Sk.builtin.quit),print:null,divmod:null,format:null,globals:null,issubclass:null,iter:null,execfile:Sk.builtin.execfile,help:Sk.builtin.help,memoryview:Sk.builtin.memoryview,reload:Sk.builtin.reload,super_$rw$:Sk.builtin.super_,unichr:new Sk.builtin.func(Sk.builtin.unichr),vars:Sk.builtin.vars,apply_$rw$:Sk.builtin.apply_, buffer:Sk.builtin.buffer,coerce:Sk.builtin.coerce,intern:Sk.builtin.intern,property:Sk.builtin.property,classmethod:Sk.builtin.classmethod,staticmethod:Sk.builtin.staticmethod,Ellipsis:Sk.builtin.Ellipsis};F=Sk.builtin.none.none$;P=new Sk.builtin.tuple;const d=new Sk.builtin.int_(0);Sk.abstr.setUpModuleMethods("builtins",Sk.builtins,{__import__:{$meth(f,h,p,g,a){if(!Sk.builtin.checkString(f))throw new Sk.builtin.TypeError("__import__() argument 1 must be str, not "+f.tp$name);if(f===Sk.builtin.str.$empty&& 0===a.v)throw new Sk.builtin.ValueError("Empty module name");h=b(h,"globals")||{};g=Sk.ffi.remapToJs(g);a=Sk.ffi.remapToJs(a);return Sk.builtin.__import__(f,h,void 0,g,a)},$flags:{NamedArgs:["name","globals","locals","fromlist","level"],Defaults:[F,F,P,d]},$textsig:null,$doc:"__import__(name, globals=None, locals=None, fromlist=(), level=0) -> module\n\nImport a module. Because this function is meant for use by the Python\ninterpreter and not for general use, it is better to use\nimportlib.import_module() to programmatically import a module.\n\nThe globals argument is only used to determine the context;\nthey are not modified. The locals argument is unused. The fromlist\nshould be a list of names to emulate ``from name import ...'', or an\nempty list to emulate ``import name''.\nWhen importing a module from a package, note that __import__('A.B', ...)\nreturns package A when fromlist is empty, but its submodule B when\nfromlist is not empty. The level argument is used to determine whether to\nperform absolute or relative imports: 0 is absolute, while a positive number\nis the number of parent directories to search relative to the current module."}, abs:{$meth:Sk.builtin.abs,$flags:{OneArg:!0},$textsig:"($module, x, /)",$doc:"Return the absolute value of the argument."},all:{$meth:Sk.builtin.all,$flags:{OneArg:!0},$textsig:"($module, iterable, /)",$doc:"Return True if bool(x) is True for all values x in the iterable.\n\nIf the iterable is empty, return True."},any:{$meth:Sk.builtin.any,$flags:{OneArg:!0},$textsig:"($module, iterable, /)",$doc:"Return True if bool(x) is True for any x in the iterable.\n\nIf the iterable is empty, return False."}, ascii:{$meth:Sk.builtin.ascii,$flags:{OneArg:!0},$textsig:"($module, obj, /)",$doc:"Return an ASCII-only representation of an object.\n\nAs repr(), return a string containing a printable representation of an\nobject, but escape the non-ASCII characters in the string returned by\nrepr() using \\\\x, \\\\u or \\\\U escapes. This generates a string similar\nto that returned by repr() in Python 2."},bin:{$meth:Sk.builtin.bin,$flags:{OneArg:!0},$textsig:"($module, number, /)",$doc:"Return the binary representation of an integer.\n\n >>> bin(2796202)\n '0b1010101010101010101010'"}, callable:{$meth:Sk.builtin.callable,$flags:{OneArg:!0},$textsig:"($module, obj, /)",$doc:"Return whether the object is callable (i.e., some kind of function).\n\nNote that classes are callable, as are instances of classes with a\n__call__() method."},chr:{$meth:Sk.builtin.chr,$flags:{OneArg:!0},$textsig:"($module, i, /)",$doc:"Return a Unicode string of one character with ordinal i; 0 <= i <= 0x10ffff."},compile:{$meth:Sk.builtin.compile,$flags:{MinArgs:3,MaxArgs:6},$textsig:"($module, /, source, filename, mode, flags=0,\n dont_inherit=False, optimize=-1)", $doc:"Compile source into a code object that can be executed by exec() or eval().\n\nThe source code may represent a Python module, statement or expression.\nThe filename will be used for run-time error messages.\nThe mode must be 'exec' to compile a module, 'single' to compile a\nsingle (interactive) statement, or 'eval' to compile an expression.\nThe flags argument, if present, controls which future statements influence\nthe compilation of the code.\nThe dont_inherit argument, if true, stops the compilation inheriting\nthe effects of any future statements in effect in the code calling\ncompile; if absent or false these statements do influence the compilation,\nin addition to any features explicitly specified."}, delattr:{$meth:Sk.builtin.delattr,$flags:{MinArgs:2,MaxArgs:2},$textsig:"($module, obj, name, /)",$doc:"Deletes the named attribute from the given object.\n\ndelattr(x, 'y') is equivalent to ``del x.y''"},dir:{$meth:Sk.builtin.dir,$flags:{MinArgs:0,MaxArgs:1},$textsig:null,$doc:"dir([object]) -> list of strings\n\nIf called without an argument, return the names in the current scope.\nElse, return an alphabetized list of names comprising (some of) the attributes\nof the given object, and of attributes reachable from it.\nIf the object supplies a method named __dir__, it will be used; otherwise\nthe default dir() logic is used and returns:\n for a module object: the module's attributes.\n for a class object: its attributes, and recursively the attributes\n of its bases.\n for any other object: its attributes, its class's attributes, and\n recursively the attributes of its class's base classes."}, divmod:{$meth:Sk.builtin.divmod,$flags:{MinArgs:2,MaxArgs:2},$textsig:"($module, x, y, /)",$doc:"Return the tuple (x//y, x%y). Invariant: div*y + mod == x."},eval_$rw$:{$name:"eval",$meth:function(f,h,p){const g=b(h,"globals"),a=b(p,"locals");return Sk.misceval.chain(Sk.builtin.eval(f,g,a),c=>{e(h,g);e(p,a);return c})},$flags:{MinArgs:1,MaxArgs:3},$textsig:"($module, source, globals=None, locals=None, /)",$doc:"Evaluate the given source in the context of globals and locals.\n\nThe source may be a string representing a Python expression\nor a code object as returned by compile().\nThe globals must be a dictionary and locals can be any mapping,\ndefaulting to the current globals and locals.\nIf only globals is given, locals defaults to it."}, exec:{$meth:function(f,h,p){const g=b(h,"globals"),a=b(p,"locals");return Sk.misceval.chain(Sk.builtin.exec(f,g,a),c=>{e(h,g);e(p,a);return Sk.builtin.none.none$})},$flags:{MinArgs:1,MaxArgs:3},$textsig:"($module, source, globals=None, locals=None, /)",$doc:"Execute the given source in the context of globals and locals.\n\nThe source may be a string representing one or more Python statements\nor a code object as returned by compile().\nThe globals must be a dictionary and locals can be any mapping,\ndefaulting to the current globals and locals.\nIf only globals is given, locals defaults to it."}, format:{$meth:Sk.builtin.format,$flags:{MinArgs:1,MaxArgs:2},$textsig:"($module, value, format_spec='', /)",$doc:"Return value.__format__(format_spec)\n\nformat_spec defaults to the empty string.\nSee the Format Specification Mini-Language section of help('FORMATTING') for\ndetails."},getattr:{$meth:Sk.builtin.getattr,$flags:{MinArgs:2,MaxArgs:3},$textsig:null,$doc:"getattr(object, name[, default]) -> value\n\nGet a named attribute from an object; getattr(x, 'y') is equivalent to x.y.\nWhen a default argument is given, it is returned when the attribute doesn't\nexist; without it, an exception is raised in that case."}, globals:{$meth:Sk.builtin.globals,$flags:{NoArgs:!0},$textsig:"($module, /)",$doc:"Return the dictionary containing the current scope's global variables.\n\nNOTE: Updates to this dictionary *will* affect name lookups in the current\nglobal scope and vice-versa."},hasattr:{$meth:Sk.builtin.hasattr,$flags:{MinArgs:2,MaxArgs:2},$textsig:"($module, obj, name, /)",$doc:"Return whether the object has an attribute with the given name.\n\nThis is done by calling getattr(obj, name) and catching AttributeError."}, hash:{$meth:Sk.builtin.hash,$flags:{OneArg:!0},$textsig:"($module, obj, /)",$doc:"Return the hash value for the given object.\n\nTwo objects that compare equal must also have the same hash value, but the\nreverse is not necessarily true."},hex:{$meth:Sk.builtin.hex,$flags:{OneArg:!0},$textsig:"($module, number, /)",$doc:"Return the hexadecimal representation of an integer.\n\n >>> hex(12648430)\n '0xc0ffee'"},id:{$meth:Sk.builtin.id,$flags:{OneArg:!0},$textsig:"($module, obj, /)",$doc:"Return the identity of an object.\n\nThis is guaranteed to be unique among simultaneously existing objects.\n(CPython uses the object's memory address.)"}, input:{$meth:Sk.builtin.input,$flags:{MinArgs:0,MaxArgs:1},$textsig:"($module, prompt=None, /)",$doc:"Read a string from standard input. The trailing newline is stripped.\n\nThe prompt string, if given, is printed to standard output without a\ntrailing newline before reading input.\n\nIf the user hits EOF (*nix: Ctrl-D, Windows: Ctrl-Z+Return), raise EOFError.\nOn *nix systems, readline is used if available."},isinstance:{$meth:Sk.builtin.isinstance,$flags:{MinArgs:2,MaxArgs:2},$textsig:"($module, obj, class_or_tuple, /)", $doc:"Return whether an object is an instance of a class or of a subclass thereof.\n\nA tuple, as in ``isinstance(x, (A, B, ...))``, may be given as the target to\ncheck against. This is equivalent to ``isinstance(x, A) or isinstance(x, B)\nor ...`` etc."},issubclass:{$meth:Sk.builtin.issubclass,$flags:{MinArgs:2,MaxArgs:2},$textsig:"($module, cls, class_or_tuple, /)",$doc:"Return whether 'cls' is a derived from another class or is the same class.\n\nA tuple, as in ``issubclass(x, (A, B, ...))``, may be given as the target to\ncheck against. This is equivalent to ``issubclass(x, A) or issubclass(x, B)\nor ...`` etc."}, iter:{$meth:Sk.builtin.iter,$flags:{MinArgs:1,MaxArgs:2},$textsig:"($module, iterable /)",$doc:"iter(iterable) -> iterator\niter(callable, sentinel) -> iterator\n\nGet an iterator from an object. In the first form, the argument must\nsupply its own iterator, or be a sequence.\nIn the second form, the callable is called until it returns the sentinel."},len:{$meth:Sk.builtin.len,$flags:{OneArg:!0},$textsig:"($module, obj, /)",$doc:"Return the number of items in a container."},locals:{$meth:Sk.builtin.locals, $flags:{NoArgs:!0},$textsig:"($module, /)",$doc:"Return a dictionary containing the current scope's local variables.\n\nNOTE: Whether or not updates to this dictionary will affect name lookups in\nthe local scope and vice-versa is *implementation dependent* and not\ncovered by any backwards compatibility guarantees."},max:{$meth:Sk.builtin.max,$flags:{FastCall:!0},$textsig:null,$doc:"max(iterable, *[, default=obj, key=func]) -> value\nmax(arg1, arg2, *args, *[, key=func]) -> value\n\nWith a single iterable argument, return its biggest item. The\ndefault keyword-only argument specifies an object to return if\nthe provided iterable is empty.\nWith two or more arguments, return the largest argument."}, min:{$meth:Sk.builtin.min,$flags:{FastCall:!0},$textsig:null,$doc:"min(iterable, *[, default=obj, key=func]) -> value\nmin(arg1, arg2, *args, *[, key=func]) -> value\n\nWith a single iterable argument, return its smallest item. The\ndefault keyword-only argument specifies an object to return if\nthe provided iterable is empty.\nWith two or more arguments, return the smallest argument."},next:{$name:"next",$meth:Sk.builtin.next_,$flags:{MinArgs:1,MaxArgs:2},$textsig:null,$doc:"next(iterator[, default])\n\nReturn the next item from the iterator. If default is given and the iterator\nis exhausted, it is returned instead of raising StopIteration."}, oct:{$meth:Sk.builtin.oct,$flags:{OneArg:!0},$textsig:"($module, number, /)",$doc:"Return the octal representation of an integer.\n\n >>> oct(342391)\n '0o1234567'"},open:{$meth:Sk.builtin.open,$flags:{MinArgs:1,MaxArgs:3},$textsig:null,$doc:"open(name[, mode[, buffering]]) -> file object\n\nOpen a file using the file() type, returns a file object. This is the\npreferred way to open a file. See file.__doc__ for further information."},ord:{$meth:Sk.builtin.ord,$flags:{OneArg:!0},$textsig:"($module, c, /)", $doc:"Return the Unicode code point for a one-character string."},pow:{$meth:Sk.builtin.pow,$flags:{MinArgs:2,MaxArgs:3},$textsig:"($module, x, y, z=None, /)",$doc:"Equivalent to x**y (with two arguments) or x**y % z (with three arguments)\n\nSome types, such as ints, are able to use a more efficient algorithm when\ninvoked using the three argument form."},print:{$meth:Sk.builtin.print,$flags:{FastCall:!0},$textsig:null,$doc:"print(value, ..., sep=' ', end='\\n', file=sys.stdout, flush=False)\n\nPrints the values to a stream, or to sys.stdout by default.\nOptional keyword arguments:\nfile: a file-like object (stream); defaults to the current sys.stdout.\nsep: string inserted between values, default a space.\nend: string appended after the last value, default a newline.\nflush: whether to forcibly flush the stream."}, repr:{$meth:Sk.builtin.repr,$flags:{OneArg:!0},$textsig:"($module, obj, /)",$doc:"Return the canonical string representation of the object.\n\nFor many object types, including most builtins, eval(repr(obj)) == obj."},round:{$meth:Sk.builtin.round,$flags:{NamedArgs:["number","ndigits"]},$textsig:"($module, /, number, ndigits=None)",$doc:"Round a number to a given precision in decimal digits.\n\nThe return value is an integer if ndigits is omitted or None. Otherwise\nthe return value has the same type as the number. ndigits may be negative."}, setattr:{$meth:Sk.builtin.setattr,$flags:{MinArgs:3,MaxArgs:3},$textsig:"($module, obj, name, value, /)",$doc:"Sets the named attribute on the given object to the specified value.\n\nsetattr(x, 'y', v) is equivalent to ``x.y = v''"},sorted:{$meth:Sk.builtin.sorted,$flags:{NamedArgs:[null,"cmp","key","reverse"],Defaults:[Sk.builtin.none.none$,Sk.builtin.none.none$,Sk.builtin.bool.false$]},$textsig:"($module, iterable, /, *, key=None, reverse=False)",$doc:"Return a new list containing all items from the iterable in ascending order.\n\nA custom key function can be supplied to customize the sort order, and the\nreverse flag can be set to request the result in descending order."}, sum:{$meth:Sk.builtin.sum,$flags:{NamedArgs:[null,"start"],Defaults:[new Sk.builtin.int_(0)]},$textsig:"($module, iterable, /, start=0)",$doc:"Return the sum of a 'start' value (default: 0) plus an iterable of numbers\n\nWhen the iterable is empty, return the start value.\nThis function is intended specifically for use with numeric values and may\nreject non-numeric types."},vars:{$meth:Sk.builtin.vars,$flags:{MinArgs:0,MaxArgs:1},$textsig:null,$doc:"vars([object]) -> dictionary\n\nWithout arguments, equivalent to locals().\nWith an argument, equivalent to object.__dict__."}}); Sk.setupObjects=function(f){f?(Sk.builtins.filter=Sk.builtin.filter_,Sk.builtins.map=Sk.builtin.map_,Sk.builtins.zip=Sk.builtin.zip_,Sk.builtins.range=Sk.builtin.range_,delete Sk.builtins.reduce,delete Sk.builtins.xrange,delete Sk.builtins.StandardError,delete Sk.builtins.unicode,delete Sk.builtins.basestring,delete Sk.builtins.long_$rw$,Sk.builtin.int_.prototype.$r=function(){return new Sk.builtin.str(this.v.toString())},delete Sk.builtin.int_.prototype.tp$str,delete Sk.builtin.bool.prototype.tp$str, delete Sk.builtins.raw_input,delete Sk.builtins.unichr,delete Sk.builtin.str.prototype.decode,Sk.builtins.bytes=Sk.builtin.bytes,Sk.builtins.ascii=new Sk.builtin.sk_method({$meth:Sk.builtin.ascii,$flags:{OneArg:!0},$textsig:"($module, obj, /)",$doc:"Return an ASCII-only representation of an object.\n\nAs repr(), return a string containing a printable representation of an\nobject, but escape the non-ASCII characters in the string returned by\nrepr() using \\\\x, \\\\u or \\\\U escapes. This generates a string similar\nto that returned by repr() in Python 2."}, null,"builtins")):(Sk.builtins.range=new Sk.builtin.sk_method({$meth:Sk.builtin.range,$name:"range",$flags:{MinArgs:1,MaxArgs:3}},void 0,"builtins"),Sk.builtins.xrange=new Sk.builtin.sk_method({$meth:Sk.builtin.xrange,$name:"xrange",$flags:{MinArgs:1,MaxArgs:3}},null,"builtins"),Sk.builtins.reduce=new Sk.builtin.sk_method({$meth:Sk.builtin.reduce,$name:"reduce",$flags:{MinArgs:2,MaxArgs:3}},null,"builtins"),Sk.builtins.filter=new Sk.builtin.func(Sk.builtin.filter),Sk.builtins.map=new Sk.builtin.func(Sk.builtin.map), Sk.builtins.zip=new Sk.builtin.func(Sk.builtin.zip),Sk.builtins.StandardError=Sk.builtin.Exception,Sk.builtins.unicode=Sk.builtin.str,Sk.builtins.basestring=Sk.builtin.str,Sk.builtins.long_$rw$=Sk.builtin.lng,Sk.builtin.int_.prototype.$r=function(){const h=this.v;return"number"===typeof h?new Sk.builtin.str(h.toString()):new Sk.builtin.str(h.toString()+"L")},Sk.builtin.int_.prototype.tp$str=function(){return new Sk.builtin.str(this.v.toString())},Sk.builtin.bool.prototype.tp$str=function(){return this.$r()}, Sk.builtins.raw_input=new Sk.builtin.func(Sk.builtin.raw_input),Sk.builtins.unichr=new Sk.builtin.func(Sk.builtin.unichr),Sk.builtin.str.prototype.decode=Sk.builtin.str.$py2decode,delete Sk.builtins.bytes,delete Sk.builtins.ascii)};Sk.exportSymbol("Sk.setupObjects",Sk.setupObjects);Sk.exportSymbol("Sk.builtins",Sk.builtins)},function(F,P){Sk.builtin.str.$empty=new Sk.builtin.str("");Sk.builtin.str.$emptystr=Sk.builtin.str.$empty;Sk.builtin.str.$utf8=new Sk.builtin.str("utf-8");Sk.builtin.str.$ascii= new Sk.builtin.str("ascii");Sk.builtin.str.$default_factory=new Sk.builtin.str("default_factory");Sk.builtin.str.$imag=new Sk.builtin.str("imag");Sk.builtin.str.$real=new Sk.builtin.str("real");Sk.builtin.str.$abs=new Sk.builtin.str("__abs__");Sk.builtin.str.$bases=new Sk.builtin.str("__bases__");Sk.builtin.str.$bytes=new Sk.builtin.str("__bytes__");Sk.builtin.str.$call=new Sk.builtin.str("__call__");Sk.builtin.str.$class=new Sk.builtin.str("__class__");Sk.builtin.str.$class_getitem=new Sk.builtin.str("__class_getitem__"); Sk.builtin.str.$cmp=new Sk.builtin.str("__cmp__");Sk.builtin.str.$complex=new Sk.builtin.str("__complex__");Sk.builtin.str.$contains=new Sk.builtin.str("__contains__");Sk.builtin.str.$copy=new Sk.builtin.str("__copy__");Sk.builtin.str.$dict=new Sk.builtin.str("__dict__");Sk.builtin.str.$dir=new Sk.builtin.str("__dir__");Sk.builtin.str.$doc=new Sk.builtin.str("__doc__");Sk.builtin.str.$enter=new Sk.builtin.str("__enter__");Sk.builtin.str.$eq=new Sk.builtin.str("__eq__");Sk.builtin.str.$exit=new Sk.builtin.str("__exit__"); Sk.builtin.str.$index=new Sk.builtin.str("__index__");Sk.builtin.str.$init=new Sk.builtin.str("__init__");Sk.builtin.str.$initsubclass=new Sk.builtin.str("__init_subclass__");Sk.builtin.str.$int_=new Sk.builtin.str("__int__");Sk.builtin.str.$iter=new Sk.builtin.str("__iter__");Sk.builtin.str.$file=new Sk.builtin.str("__file__");Sk.builtin.str.$float_=new Sk.builtin.str("__float__");Sk.builtin.str.$format=new Sk.builtin.str("__format__");Sk.builtin.str.$ge=new Sk.builtin.str("__ge__");Sk.builtin.str.$getattr= new Sk.builtin.str("__getattr__");Sk.builtin.str.$getattribute=new Sk.builtin.str("__getattribute__");Sk.builtin.str.$getitem=new Sk.builtin.str("__getitem__");Sk.builtin.str.$gt=new Sk.builtin.str("__gt__");Sk.builtin.str.$keys=new Sk.builtin.str("keys");Sk.builtin.str.$le=new Sk.builtin.str("__le__");Sk.builtin.str.$len=new Sk.builtin.str("__len__");Sk.builtin.str.$length_hint=new Sk.builtin.str("__length_hint__");Sk.builtin.str.$loader=new Sk.builtin.str("__loader__");Sk.builtin.str.$lt=new Sk.builtin.str("__lt__"); Sk.builtin.str.$module=new Sk.builtin.str("__module__");Sk.builtin.str.$missing=new Sk.builtin.str("__missing__");Sk.builtin.str.$name=new Sk.builtin.str("__name__");Sk.builtin.str.$ne=new Sk.builtin.str("__ne__");Sk.builtin.str.$new=new Sk.builtin.str("__new__");Sk.builtin.str.$next=new Sk.builtin.str("__next__");Sk.builtin.str.$path=new Sk.builtin.str("__path__");Sk.builtin.str.$prepare=new Sk.builtin.str("__prepare__");Sk.builtin.str.$qualname=new Sk.builtin.str("__qualname__");Sk.builtin.str.$repr= new Sk.builtin.str("__repr__");Sk.builtin.str.$reversed=new Sk.builtin.str("__reversed__");Sk.builtin.str.$round=new Sk.builtin.str("__round__");Sk.builtin.str.$setattr=new Sk.builtin.str("__setattr__");Sk.builtin.str.$setitem=new Sk.builtin.str("__setitem__");Sk.builtin.str.$slots=new Sk.builtin.str("__slots__");Sk.builtin.str.$str=new Sk.builtin.str("__str__");Sk.builtin.str.$setname=new Sk.builtin.str("__set_name__");Sk.builtin.str.$trunc=new Sk.builtin.str("__trunc__");Sk.builtin.str.$write=new Sk.builtin.str("write"); Sk.misceval.op2method_={Eq:Sk.builtin.str.$eq,NotEq:Sk.builtin.str.$ne,Gt:Sk.builtin.str.$gt,GtE:Sk.builtin.str.$ge,Lt:Sk.builtin.str.$lt,LtE:Sk.builtin.str.$le}},function(F,P,b){function e(ca,la,ia,ka,U){this.type=ca;this.string=la;this.start=ia;this.end=ka;this.line=U}function d(ca){return"("+Array.prototype.slice.call(arguments).join("|")+")"}function f(ca){return d.apply(null,arguments)+"?"}function h(ca,la){for(var ia=ca.length;ia--;)if(ca[ia]===la)return!0;return!1}function p(ca){ca=ca.normalize("NFKC"); return E.test(ca)}function g(){return" FR RF Br BR Fr r B R b bR f rb rB F Rf U rF u RB br fR fr rf Rb".split(" ")}function a(ca){ca?delete Sk.token.EXACT_TOKEN_TYPES["<>"]:Sk.token.EXACT_TOKEN_TYPES["<>"]=Sk.token.tokens.T_NOTEQUAL;A=Object.keys(Sk.token.EXACT_TOKEN_TYPES).sort();J=d.apply(this,A.reverse().map(function(la){return la&&u.test(la)?la.replace(k,"\\$&"):la}));Q=d("\\r?\\n",J)}b.r(P);F={Cc:"\\0-\\x1F\\x7F-\\x9F",Cf:"\\xAD\\u0600-\\u0605\\u061C\\u06DD\\u070F\\u08E2\\u180E\\u200B-\\u200F\\u202A-\\u202E\\u2060-\\u2064\\u2066-\\u206F\\uFEFF\\uFFF9-\\uFFFB", Co:"\\uE000-\\uF8FF",Cs:"\\uD800-\\uDFFF",Ll:"a-z\\xB5\\xDF-\\xF6\\xF8-\\xFF\\u0101\\u0103\\u0105\\u0107\\u0109\\u010B\\u010D\\u010F\\u0111\\u0113\\u0115\\u0117\\u0119\\u011B\\u011D\\u011F\\u0121\\u0123\\u0125\\u0127\\u0129\\u012B\\u012D\\u012F\\u0131\\u0133\\u0135\\u0137\\u0138\\u013A\\u013C\\u013E\\u0140\\u0142\\u0144\\u0146\\u0148\\u0149\\u014B\\u014D\\u014F\\u0151\\u0153\\u0155\\u0157\\u0159\\u015B\\u015D\\u015F\\u0161\\u0163\\u0165\\u0167\\u0169\\u016B\\u016D\\u016F\\u0171\\u0173\\u0175\\u0177\\u017A\\u017C\\u017E-\\u0180\\u0183\\u0185\\u0188\\u018C\\u018D\\u0192\\u0195\\u0199-\\u019B\\u019E\\u01A1\\u01A3\\u01A5\\u01A8\\u01AA\\u01AB\\u01AD\\u01B0\\u01B4\\u01B6\\u01B9\\u01BA\\u01BD-\\u01BF\\u01C6\\u01C9\\u01CC\\u01CE\\u01D0\\u01D2\\u01D4\\u01D6\\u01D8\\u01DA\\u01DC\\u01DD\\u01DF\\u01E1\\u01E3\\u01E5\\u01E7\\u01E9\\u01EB\\u01ED\\u01EF\\u01F0\\u01F3\\u01F5\\u01F9\\u01FB\\u01FD\\u01FF\\u0201\\u0203\\u0205\\u0207\\u0209\\u020B\\u020D\\u020F\\u0211\\u0213\\u0215\\u0217\\u0219\\u021B\\u021D\\u021F\\u0221\\u0223\\u0225\\u0227\\u0229\\u022B\\u022D\\u022F\\u0231\\u0233-\\u0239\\u023C\\u023F\\u0240\\u0242\\u0247\\u0249\\u024B\\u024D\\u024F-\\u0293\\u0295-\\u02AF\\u0371\\u0373\\u0377\\u037B-\\u037D\\u0390\\u03AC-\\u03CE\\u03D0\\u03D1\\u03D5-\\u03D7\\u03D9\\u03DB\\u03DD\\u03DF\\u03E1\\u03E3\\u03E5\\u03E7\\u03E9\\u03EB\\u03ED\\u03EF-\\u03F3\\u03F5\\u03F8\\u03FB\\u03FC\\u0430-\\u045F\\u0461\\u0463\\u0465\\u0467\\u0469\\u046B\\u046D\\u046F\\u0471\\u0473\\u0475\\u0477\\u0479\\u047B\\u047D\\u047F\\u0481\\u048B\\u048D\\u048F\\u0491\\u0493\\u0495\\u0497\\u0499\\u049B\\u049D\\u049F\\u04A1\\u04A3\\u04A5\\u04A7\\u04A9\\u04AB\\u04AD\\u04AF\\u04B1\\u04B3\\u04B5\\u04B7\\u04B9\\u04BB\\u04BD\\u04BF\\u04C2\\u04C4\\u04C6\\u04C8\\u04CA\\u04CC\\u04CE\\u04CF\\u04D1\\u04D3\\u04D5\\u04D7\\u04D9\\u04DB\\u04DD\\u04DF\\u04E1\\u04E3\\u04E5\\u04E7\\u04E9\\u04EB\\u04ED\\u04EF\\u04F1\\u04F3\\u04F5\\u04F7\\u04F9\\u04FB\\u04FD\\u04FF\\u0501\\u0503\\u0505\\u0507\\u0509\\u050B\\u050D\\u050F\\u0511\\u0513\\u0515\\u0517\\u0519\\u051B\\u051D\\u051F\\u0521\\u0523\\u0525\\u0527\\u0529\\u052B\\u052D\\u052F\\u0560-\\u0588\\u10D0-\\u10FA\\u10FD-\\u10FF\\u13F8-\\u13FD\\u1C80-\\u1C88\\u1D00-\\u1D2B\\u1D6B-\\u1D77\\u1D79-\\u1D9A\\u1E01\\u1E03\\u1E05\\u1E07\\u1E09\\u1E0B\\u1E0D\\u1E0F\\u1E11\\u1E13\\u1E15\\u1E17\\u1E19\\u1E1B\\u1E1D\\u1E1F\\u1E21\\u1E23\\u1E25\\u1E27\\u1E29\\u1E2B\\u1E2D\\u1E2F\\u1E31\\u1E33\\u1E35\\u1E37\\u1E39\\u1E3B\\u1E3D\\u1E3F\\u1E41\\u1E43\\u1E45\\u1E47\\u1E49\\u1E4B\\u1E4D\\u1E4F\\u1E51\\u1E53\\u1E55\\u1E57\\u1E59\\u1E5B\\u1E5D\\u1E5F\\u1E61\\u1E63\\u1E65\\u1E67\\u1E69\\u1E6B\\u1E6D\\u1E6F\\u1E71\\u1E73\\u1E75\\u1E77\\u1E79\\u1E7B\\u1E7D\\u1E7F\\u1E81\\u1E83\\u1E85\\u1E87\\u1E89\\u1E8B\\u1E8D\\u1E8F\\u1E91\\u1E93\\u1E95-\\u1E9D\\u1E9F\\u1EA1\\u1EA3\\u1EA5\\u1EA7\\u1EA9\\u1EAB\\u1EAD\\u1EAF\\u1EB1\\u1EB3\\u1EB5\\u1EB7\\u1EB9\\u1EBB\\u1EBD\\u1EBF\\u1EC1\\u1EC3\\u1EC5\\u1EC7\\u1EC9\\u1ECB\\u1ECD\\u1ECF\\u1ED1\\u1ED3\\u1ED5\\u1ED7\\u1ED9\\u1EDB\\u1EDD\\u1EDF\\u1EE1\\u1EE3\\u1EE5\\u1EE7\\u1EE9\\u1EEB\\u1EED\\u1EEF\\u1EF1\\u1EF3\\u1EF5\\u1EF7\\u1EF9\\u1EFB\\u1EFD\\u1EFF-\\u1F07\\u1F10-\\u1F15\\u1F20-\\u1F27\\u1F30-\\u1F37\\u1F40-\\u1F45\\u1F50-\\u1F57\\u1F60-\\u1F67\\u1F70-\\u1F7D\\u1F80-\\u1F87\\u1F90-\\u1F97\\u1FA0-\\u1FA7\\u1FB0-\\u1FB4\\u1FB6\\u1FB7\\u1FBE\\u1FC2-\\u1FC4\\u1FC6\\u1FC7\\u1FD0-\\u1FD3\\u1FD6\\u1FD7\\u1FE0-\\u1FE7\\u1FF2-\\u1FF4\\u1FF6\\u1FF7\\u210A\\u210E\\u210F\\u2113\\u212F\\u2134\\u2139\\u213C\\u213D\\u2146-\\u2149\\u214E\\u2184\\u2C30-\\u2C5E\\u2C61\\u2C65\\u2C66\\u2C68\\u2C6A\\u2C6C\\u2C71\\u2C73\\u2C74\\u2C76-\\u2C7B\\u2C81\\u2C83\\u2C85\\u2C87\\u2C89\\u2C8B\\u2C8D\\u2C8F\\u2C91\\u2C93\\u2C95\\u2C97\\u2C99\\u2C9B\\u2C9D\\u2C9F\\u2CA1\\u2CA3\\u2CA5\\u2CA7\\u2CA9\\u2CAB\\u2CAD\\u2CAF\\u2CB1\\u2CB3\\u2CB5\\u2CB7\\u2CB9\\u2CBB\\u2CBD\\u2CBF\\u2CC1\\u2CC3\\u2CC5\\u2CC7\\u2CC9\\u2CCB\\u2CCD\\u2CCF\\u2CD1\\u2CD3\\u2CD5\\u2CD7\\u2CD9\\u2CDB\\u2CDD\\u2CDF\\u2CE1\\u2CE3\\u2CE4\\u2CEC\\u2CEE\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\uA641\\uA643\\uA645\\uA647\\uA649\\uA64B\\uA64D\\uA64F\\uA651\\uA653\\uA655\\uA657\\uA659\\uA65B\\uA65D\\uA65F\\uA661\\uA663\\uA665\\uA667\\uA669\\uA66B\\uA66D\\uA681\\uA683\\uA685\\uA687\\uA689\\uA68B\\uA68D\\uA68F\\uA691\\uA693\\uA695\\uA697\\uA699\\uA69B\\uA723\\uA725\\uA727\\uA729\\uA72B\\uA72D\\uA72F-\\uA731\\uA733\\uA735\\uA737\\uA739\\uA73B\\uA73D\\uA73F\\uA741\\uA743\\uA745\\uA747\\uA749\\uA74B\\uA74D\\uA74F\\uA751\\uA753\\uA755\\uA757\\uA759\\uA75B\\uA75D\\uA75F\\uA761\\uA763\\uA765\\uA767\\uA769\\uA76B\\uA76D\\uA76F\\uA771-\\uA778\\uA77A\\uA77C\\uA77F\\uA781\\uA783\\uA785\\uA787\\uA78C\\uA78E\\uA791\\uA793-\\uA795\\uA797\\uA799\\uA79B\\uA79D\\uA79F\\uA7A1\\uA7A3\\uA7A5\\uA7A7\\uA7A9\\uA7AF\\uA7B5\\uA7B7\\uA7B9\\uA7BB\\uA7BD\\uA7BF\\uA7C3\\uA7C8\\uA7CA\\uA7F6\\uA7FA\\uAB30-\\uAB5A\\uAB60-\\uAB68\\uAB70-\\uABBF\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFF41-\\uFF5A", Lm:"\\u02B0-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0374\\u037A\\u0559\\u0640\\u06E5\\u06E6\\u07F4\\u07F5\\u07FA\\u081A\\u0824\\u0828\\u0971\\u0E46\\u0EC6\\u10FC\\u17D7\\u1843\\u1AA7\\u1C78-\\u1C7D\\u1D2C-\\u1D6A\\u1D78\\u1D9B-\\u1DBF\\u2071\\u207F\\u2090-\\u209C\\u2C7C\\u2C7D\\u2D6F\\u2E2F\\u3005\\u3031-\\u3035\\u303B\\u309D\\u309E\\u30FC-\\u30FE\\uA015\\uA4F8-\\uA4FD\\uA60C\\uA67F\\uA69C\\uA69D\\uA717-\\uA71F\\uA770\\uA788\\uA7F8\\uA7F9\\uA9CF\\uA9E6\\uAA70\\uAADD\\uAAF3\\uAAF4\\uAB5C-\\uAB5F\\uAB69\\uFF70\\uFF9E\\uFF9F", Lo:"\\xAA\\xBA\\u01BB\\u01C0-\\u01C3\\u0294\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0620-\\u063F\\u0641-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u0800-\\u0815\\u0840-\\u0858\\u0860-\\u086A\\u08A0-\\u08B4\\u08B6-\\u08C7\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0972-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u09FC\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C60\\u0C61\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D04-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E45\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u1100-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16F1-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17DC\\u1820-\\u1842\\u1844-\\u1878\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C77\\u1CE9-\\u1CEC\\u1CEE-\\u1CF3\\u1CF5\\u1CF6\\u1CFA\\u2135-\\u2138\\u2D30-\\u2D67\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u3006\\u303C\\u3041-\\u3096\\u309F\\u30A1-\\u30FA\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u31A0-\\u31BF\\u31F0-\\u31FF\\u3400-\\u4DBF\\u4E00-\\u9FFC\\uA000-\\uA014\\uA016-\\uA48C\\uA4D0-\\uA4F7\\uA500-\\uA60B\\uA610-\\uA61F\\uA62A\\uA62B\\uA66E\\uA6A0-\\uA6E5\\uA78F\\uA7F7\\uA7FB-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA8FE\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9E0-\\uA9E4\\uA9E7-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA6F\\uAA71-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB\\uAADC\\uAAE0-\\uAAEA\\uAAF2\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF66-\\uFF6F\\uFF71-\\uFF9D\\uFFA0-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC", Lt:"\\u01C5\\u01C8\\u01CB\\u01F2\\u1F88-\\u1F8F\\u1F98-\\u1F9F\\u1FA8-\\u1FAF\\u1FBC\\u1FCC\\u1FFC",Lu:"A-Z\\xC0-\\xD6\\xD8-\\xDE\\u0100\\u0102\\u0104\\u0106\\u0108\\u010A\\u010C\\u010E\\u0110\\u0112\\u0114\\u0116\\u0118\\u011A\\u011C\\u011E\\u0120\\u0122\\u0124\\u0126\\u0128\\u012A\\u012C\\u012E\\u0130\\u0132\\u0134\\u0136\\u0139\\u013B\\u013D\\u013F\\u0141\\u0143\\u0145\\u0147\\u014A\\u014C\\u014E\\u0150\\u0152\\u0154\\u0156\\u0158\\u015A\\u015C\\u015E\\u0160\\u0162\\u0164\\u0166\\u0168\\u016A\\u016C\\u016E\\u0170\\u0172\\u0174\\u0176\\u0178\\u0179\\u017B\\u017D\\u0181\\u0182\\u0184\\u0186\\u0187\\u0189-\\u018B\\u018E-\\u0191\\u0193\\u0194\\u0196-\\u0198\\u019C\\u019D\\u019F\\u01A0\\u01A2\\u01A4\\u01A6\\u01A7\\u01A9\\u01AC\\u01AE\\u01AF\\u01B1-\\u01B3\\u01B5\\u01B7\\u01B8\\u01BC\\u01C4\\u01C7\\u01CA\\u01CD\\u01CF\\u01D1\\u01D3\\u01D5\\u01D7\\u01D9\\u01DB\\u01DE\\u01E0\\u01E2\\u01E4\\u01E6\\u01E8\\u01EA\\u01EC\\u01EE\\u01F1\\u01F4\\u01F6-\\u01F8\\u01FA\\u01FC\\u01FE\\u0200\\u0202\\u0204\\u0206\\u0208\\u020A\\u020C\\u020E\\u0210\\u0212\\u0214\\u0216\\u0218\\u021A\\u021C\\u021E\\u0220\\u0222\\u0224\\u0226\\u0228\\u022A\\u022C\\u022E\\u0230\\u0232\\u023A\\u023B\\u023D\\u023E\\u0241\\u0243-\\u0246\\u0248\\u024A\\u024C\\u024E\\u0370\\u0372\\u0376\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E\\u038F\\u0391-\\u03A1\\u03A3-\\u03AB\\u03CF\\u03D2-\\u03D4\\u03D8\\u03DA\\u03DC\\u03DE\\u03E0\\u03E2\\u03E4\\u03E6\\u03E8\\u03EA\\u03EC\\u03EE\\u03F4\\u03F7\\u03F9\\u03FA\\u03FD-\\u042F\\u0460\\u0462\\u0464\\u0466\\u0468\\u046A\\u046C\\u046E\\u0470\\u0472\\u0474\\u0476\\u0478\\u047A\\u047C\\u047E\\u0480\\u048A\\u048C\\u048E\\u0490\\u0492\\u0494\\u0496\\u0498\\u049A\\u049C\\u049E\\u04A0\\u04A2\\u04A4\\u04A6\\u04A8\\u04AA\\u04AC\\u04AE\\u04B0\\u04B2\\u04B4\\u04B6\\u04B8\\u04BA\\u04BC\\u04BE\\u04C0\\u04C1\\u04C3\\u04C5\\u04C7\\u04C9\\u04CB\\u04CD\\u04D0\\u04D2\\u04D4\\u04D6\\u04D8\\u04DA\\u04DC\\u04DE\\u04E0\\u04E2\\u04E4\\u04E6\\u04E8\\u04EA\\u04EC\\u04EE\\u04F0\\u04F2\\u04F4\\u04F6\\u04F8\\u04FA\\u04FC\\u04FE\\u0500\\u0502\\u0504\\u0506\\u0508\\u050A\\u050C\\u050E\\u0510\\u0512\\u0514\\u0516\\u0518\\u051A\\u051C\\u051E\\u0520\\u0522\\u0524\\u0526\\u0528\\u052A\\u052C\\u052E\\u0531-\\u0556\\u10A0-\\u10C5\\u10C7\\u10CD\\u13A0-\\u13F5\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1E00\\u1E02\\u1E04\\u1E06\\u1E08\\u1E0A\\u1E0C\\u1E0E\\u1E10\\u1E12\\u1E14\\u1E16\\u1E18\\u1E1A\\u1E1C\\u1E1E\\u1E20\\u1E22\\u1E24\\u1E26\\u1E28\\u1E2A\\u1E2C\\u1E2E\\u1E30\\u1E32\\u1E34\\u1E36\\u1E38\\u1E3A\\u1E3C\\u1E3E\\u1E40\\u1E42\\u1E44\\u1E46\\u1E48\\u1E4A\\u1E4C\\u1E4E\\u1E50\\u1E52\\u1E54\\u1E56\\u1E58\\u1E5A\\u1E5C\\u1E5E\\u1E60\\u1E62\\u1E64\\u1E66\\u1E68\\u1E6A\\u1E6C\\u1E6E\\u1E70\\u1E72\\u1E74\\u1E76\\u1E78\\u1E7A\\u1E7C\\u1E7E\\u1E80\\u1E82\\u1E84\\u1E86\\u1E88\\u1E8A\\u1E8C\\u1E8E\\u1E90\\u1E92\\u1E94\\u1E9E\\u1EA0\\u1EA2\\u1EA4\\u1EA6\\u1EA8\\u1EAA\\u1EAC\\u1EAE\\u1EB0\\u1EB2\\u1EB4\\u1EB6\\u1EB8\\u1EBA\\u1EBC\\u1EBE\\u1EC0\\u1EC2\\u1EC4\\u1EC6\\u1EC8\\u1ECA\\u1ECC\\u1ECE\\u1ED0\\u1ED2\\u1ED4\\u1ED6\\u1ED8\\u1EDA\\u1EDC\\u1EDE\\u1EE0\\u1EE2\\u1EE4\\u1EE6\\u1EE8\\u1EEA\\u1EEC\\u1EEE\\u1EF0\\u1EF2\\u1EF4\\u1EF6\\u1EF8\\u1EFA\\u1EFC\\u1EFE\\u1F08-\\u1F0F\\u1F18-\\u1F1D\\u1F28-\\u1F2F\\u1F38-\\u1F3F\\u1F48-\\u1F4D\\u1F59\\u1F5B\\u1F5D\\u1F5F\\u1F68-\\u1F6F\\u1FB8-\\u1FBB\\u1FC8-\\u1FCB\\u1FD8-\\u1FDB\\u1FE8-\\u1FEC\\u1FF8-\\u1FFB\\u2102\\u2107\\u210B-\\u210D\\u2110-\\u2112\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u2130-\\u2133\\u213E\\u213F\\u2145\\u2183\\u2C00-\\u2C2E\\u2C60\\u2C62-\\u2C64\\u2C67\\u2C69\\u2C6B\\u2C6D-\\u2C70\\u2C72\\u2C75\\u2C7E-\\u2C80\\u2C82\\u2C84\\u2C86\\u2C88\\u2C8A\\u2C8C\\u2C8E\\u2C90\\u2C92\\u2C94\\u2C96\\u2C98\\u2C9A\\u2C9C\\u2C9E\\u2CA0\\u2CA2\\u2CA4\\u2CA6\\u2CA8\\u2CAA\\u2CAC\\u2CAE\\u2CB0\\u2CB2\\u2CB4\\u2CB6\\u2CB8\\u2CBA\\u2CBC\\u2CBE\\u2CC0\\u2CC2\\u2CC4\\u2CC6\\u2CC8\\u2CCA\\u2CCC\\u2CCE\\u2CD0\\u2CD2\\u2CD4\\u2CD6\\u2CD8\\u2CDA\\u2CDC\\u2CDE\\u2CE0\\u2CE2\\u2CEB\\u2CED\\u2CF2\\uA640\\uA642\\uA644\\uA646\\uA648\\uA64A\\uA64C\\uA64E\\uA650\\uA652\\uA654\\uA656\\uA658\\uA65A\\uA65C\\uA65E\\uA660\\uA662\\uA664\\uA666\\uA668\\uA66A\\uA66C\\uA680\\uA682\\uA684\\uA686\\uA688\\uA68A\\uA68C\\uA68E\\uA690\\uA692\\uA694\\uA696\\uA698\\uA69A\\uA722\\uA724\\uA726\\uA728\\uA72A\\uA72C\\uA72E\\uA732\\uA734\\uA736\\uA738\\uA73A\\uA73C\\uA73E\\uA740\\uA742\\uA744\\uA746\\uA748\\uA74A\\uA74C\\uA74E\\uA750\\uA752\\uA754\\uA756\\uA758\\uA75A\\uA75C\\uA75E\\uA760\\uA762\\uA764\\uA766\\uA768\\uA76A\\uA76C\\uA76E\\uA779\\uA77B\\uA77D\\uA77E\\uA780\\uA782\\uA784\\uA786\\uA78B\\uA78D\\uA790\\uA792\\uA796\\uA798\\uA79A\\uA79C\\uA79E\\uA7A0\\uA7A2\\uA7A4\\uA7A6\\uA7A8\\uA7AA-\\uA7AE\\uA7B0-\\uA7B4\\uA7B6\\uA7B8\\uA7BA\\uA7BC\\uA7BE\\uA7C2\\uA7C4-\\uA7C7\\uA7C9\\uA7F5\\uFF21-\\uFF3A", M:"\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u07FD\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u08D3-\\u08E1\\u08E3-\\u0903\\u093A-\\u093C\\u093E-\\u094F\\u0951-\\u0957\\u0962\\u0963\\u0981-\\u0983\\u09BC\\u09BE-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CD\\u09D7\\u09E2\\u09E3\\u09FE\\u0A01-\\u0A03\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81-\\u0A83\\u0ABC\\u0ABE-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AE2\\u0AE3\\u0AFA-\\u0AFF\\u0B01-\\u0B03\\u0B3C\\u0B3E-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B55-\\u0B57\\u0B62\\u0B63\\u0B82\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD7\\u0C00-\\u0C04\\u0C3E-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81-\\u0C83\\u0CBC\\u0CBE-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CE2\\u0CE3\\u0D00-\\u0D03\\u0D3B\\u0D3C\\u0D3E-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4D\\u0D57\\u0D62\\u0D63\\u0D81-\\u0D83\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DF2\\u0DF3\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F3E\\u0F3F\\u0F71-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102B-\\u103E\\u1056-\\u1059\\u105E-\\u1060\\u1062-\\u1064\\u1067-\\u106D\\u1071-\\u1074\\u1082-\\u108D\\u108F\\u109A-\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4-\\u17D3\\u17DD\\u180B-\\u180D\\u1885\\u1886\\u18A9\\u1920-\\u192B\\u1930-\\u193B\\u1A17-\\u1A1B\\u1A55-\\u1A5E\\u1A60-\\u1A7C\\u1A7F\\u1AB0-\\u1AC0\\u1B00-\\u1B04\\u1B34-\\u1B44\\u1B6B-\\u1B73\\u1B80-\\u1B82\\u1BA1-\\u1BAD\\u1BE6-\\u1BF3\\u1C24-\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE8\\u1CED\\u1CF4\\u1CF7-\\u1CF9\\u1DC0-\\u1DF9\\u1DFB-\\u1DFF\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69E\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA823-\\uA827\\uA82C\\uA880\\uA881\\uA8B4-\\uA8C5\\uA8E0-\\uA8F1\\uA8FF\\uA926-\\uA92D\\uA947-\\uA953\\uA980-\\uA983\\uA9B3-\\uA9C0\\uA9E5\\uAA29-\\uAA36\\uAA43\\uAA4C\\uAA4D\\uAA7B-\\uAA7D\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEB-\\uAAEF\\uAAF5\\uAAF6\\uABE3-\\uABEA\\uABEC\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2F", Mc:"\\u0903\\u093B\\u093E-\\u0940\\u0949-\\u094C\\u094E\\u094F\\u0982\\u0983\\u09BE-\\u09C0\\u09C7\\u09C8\\u09CB\\u09CC\\u09D7\\u0A03\\u0A3E-\\u0A40\\u0A83\\u0ABE-\\u0AC0\\u0AC9\\u0ACB\\u0ACC\\u0B02\\u0B03\\u0B3E\\u0B40\\u0B47\\u0B48\\u0B4B\\u0B4C\\u0B57\\u0BBE\\u0BBF\\u0BC1\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCC\\u0BD7\\u0C01-\\u0C03\\u0C41-\\u0C44\\u0C82\\u0C83\\u0CBE\\u0CC0-\\u0CC4\\u0CC7\\u0CC8\\u0CCA\\u0CCB\\u0CD5\\u0CD6\\u0D02\\u0D03\\u0D3E-\\u0D40\\u0D46-\\u0D48\\u0D4A-\\u0D4C\\u0D57\\u0D82\\u0D83\\u0DCF-\\u0DD1\\u0DD8-\\u0DDF\\u0DF2\\u0DF3\\u0F3E\\u0F3F\\u0F7F\\u102B\\u102C\\u1031\\u1038\\u103B\\u103C\\u1056\\u1057\\u1062-\\u1064\\u1067-\\u106D\\u1083\\u1084\\u1087-\\u108C\\u108F\\u109A-\\u109C\\u17B6\\u17BE-\\u17C5\\u17C7\\u17C8\\u1923-\\u1926\\u1929-\\u192B\\u1930\\u1931\\u1933-\\u1938\\u1A19\\u1A1A\\u1A55\\u1A57\\u1A61\\u1A63\\u1A64\\u1A6D-\\u1A72\\u1B04\\u1B35\\u1B3B\\u1B3D-\\u1B41\\u1B43\\u1B44\\u1B82\\u1BA1\\u1BA6\\u1BA7\\u1BAA\\u1BE7\\u1BEA-\\u1BEC\\u1BEE\\u1BF2\\u1BF3\\u1C24-\\u1C2B\\u1C34\\u1C35\\u1CE1\\u1CF7\\u302E\\u302F\\uA823\\uA824\\uA827\\uA880\\uA881\\uA8B4-\\uA8C3\\uA952\\uA953\\uA983\\uA9B4\\uA9B5\\uA9BA\\uA9BB\\uA9BE-\\uA9C0\\uAA2F\\uAA30\\uAA33\\uAA34\\uAA4D\\uAA7B\\uAA7D\\uAAEB\\uAAEE\\uAAEF\\uAAF5\\uABE3\\uABE4\\uABE6\\uABE7\\uABE9\\uABEA\\uABEC", Me:"\\u0488\\u0489\\u1ABE\\u20DD-\\u20E0\\u20E2-\\u20E4\\uA670-\\uA672",Mn:"\\u0300-\\u036F\\u0483-\\u0487\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u07FD\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u08D3-\\u08E1\\u08E3-\\u0902\\u093A\\u093C\\u0941-\\u0948\\u094D\\u0951-\\u0957\\u0962\\u0963\\u0981\\u09BC\\u09C1-\\u09C4\\u09CD\\u09E2\\u09E3\\u09FE\\u0A01\\u0A02\\u0A3C\\u0A41\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81\\u0A82\\u0ABC\\u0AC1-\\u0AC5\\u0AC7\\u0AC8\\u0ACD\\u0AE2\\u0AE3\\u0AFA-\\u0AFF\\u0B01\\u0B3C\\u0B3F\\u0B41-\\u0B44\\u0B4D\\u0B55\\u0B56\\u0B62\\u0B63\\u0B82\\u0BC0\\u0BCD\\u0C00\\u0C04\\u0C3E-\\u0C40\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81\\u0CBC\\u0CBF\\u0CC6\\u0CCC\\u0CCD\\u0CE2\\u0CE3\\u0D00\\u0D01\\u0D3B\\u0D3C\\u0D41-\\u0D44\\u0D4D\\u0D62\\u0D63\\u0D81\\u0DCA\\u0DD2-\\u0DD4\\u0DD6\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F71-\\u0F7E\\u0F80-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102D-\\u1030\\u1032-\\u1037\\u1039\\u103A\\u103D\\u103E\\u1058\\u1059\\u105E-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108D\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4\\u17B5\\u17B7-\\u17BD\\u17C6\\u17C9-\\u17D3\\u17DD\\u180B-\\u180D\\u1885\\u1886\\u18A9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193B\\u1A17\\u1A18\\u1A1B\\u1A56\\u1A58-\\u1A5E\\u1A60\\u1A62\\u1A65-\\u1A6C\\u1A73-\\u1A7C\\u1A7F\\u1AB0-\\u1ABD\\u1ABF\\u1AC0\\u1B00-\\u1B03\\u1B34\\u1B36-\\u1B3A\\u1B3C\\u1B42\\u1B6B-\\u1B73\\u1B80\\u1B81\\u1BA2-\\u1BA5\\u1BA8\\u1BA9\\u1BAB-\\u1BAD\\u1BE6\\u1BE8\\u1BE9\\u1BED\\u1BEF-\\u1BF1\\u1C2C-\\u1C33\\u1C36\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DF9\\u1DFB-\\u1DFF\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302D\\u3099\\u309A\\uA66F\\uA674-\\uA67D\\uA69E\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA825\\uA826\\uA82C\\uA8C4\\uA8C5\\uA8E0-\\uA8F1\\uA8FF\\uA926-\\uA92D\\uA947-\\uA951\\uA980-\\uA982\\uA9B3\\uA9B6-\\uA9B9\\uA9BC\\uA9BD\\uA9E5\\uAA29-\\uAA2E\\uAA31\\uAA32\\uAA35\\uAA36\\uAA43\\uAA4C\\uAA7C\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEC\\uAAED\\uAAF6\\uABE5\\uABE8\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2F", Nd:"0-9\\u0660-\\u0669\\u06F0-\\u06F9\\u07C0-\\u07C9\\u0966-\\u096F\\u09E6-\\u09EF\\u0A66-\\u0A6F\\u0AE6-\\u0AEF\\u0B66-\\u0B6F\\u0BE6-\\u0BEF\\u0C66-\\u0C6F\\u0CE6-\\u0CEF\\u0D66-\\u0D6F\\u0DE6-\\u0DEF\\u0E50-\\u0E59\\u0ED0-\\u0ED9\\u0F20-\\u0F29\\u1040-\\u1049\\u1090-\\u1099\\u17E0-\\u17E9\\u1810-\\u1819\\u1946-\\u194F\\u19D0-\\u19D9\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1B50-\\u1B59\\u1BB0-\\u1BB9\\u1C40-\\u1C49\\u1C50-\\u1C59\\uA620-\\uA629\\uA8D0-\\uA8D9\\uA900-\\uA909\\uA9D0-\\uA9D9\\uA9F0-\\uA9F9\\uAA50-\\uAA59\\uABF0-\\uABF9\\uFF10-\\uFF19", Nl:"\\u16EE-\\u16F0\\u2160-\\u2182\\u2185-\\u2188\\u3007\\u3021-\\u3029\\u3038-\\u303A\\uA6E6-\\uA6EF",No:"\\xB2\\xB3\\xB9\\xBC-\\xBE\\u09F4-\\u09F9\\u0B72-\\u0B77\\u0BF0-\\u0BF2\\u0C78-\\u0C7E\\u0D58-\\u0D5E\\u0D70-\\u0D78\\u0F2A-\\u0F33\\u1369-\\u137C\\u17F0-\\u17F9\\u19DA\\u2070\\u2074-\\u2079\\u2080-\\u2089\\u2150-\\u215F\\u2189\\u2460-\\u249B\\u24EA-\\u24FF\\u2776-\\u2793\\u2CFD\\u3192-\\u3195\\u3220-\\u3229\\u3248-\\u324F\\u3251-\\u325F\\u3280-\\u3289\\u32B1-\\u32BF\\uA830-\\uA835",Pc:"_\\u203F\\u2040\\u2054\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFF3F", Pd:"\\-\\u058A\\u05BE\\u1400\\u1806\\u2010-\\u2015\\u2E17\\u2E1A\\u2E3A\\u2E3B\\u2E40\\u301C\\u3030\\u30A0\\uFE31\\uFE32\\uFE58\\uFE63\\uFF0D",Pe:"\\)\\]\\}\\u0F3B\\u0F3D\\u169C\\u2046\\u207E\\u208E\\u2309\\u230B\\u232A\\u2769\\u276B\\u276D\\u276F\\u2771\\u2773\\u2775\\u27C6\\u27E7\\u27E9\\u27EB\\u27ED\\u27EF\\u2984\\u2986\\u2988\\u298A\\u298C\\u298E\\u2990\\u2992\\u2994\\u2996\\u2998\\u29D9\\u29DB\\u29FD\\u2E23\\u2E25\\u2E27\\u2E29\\u3009\\u300B\\u300D\\u300F\\u3011\\u3015\\u3017\\u3019\\u301B\\u301E\\u301F\\uFD3E\\uFE18\\uFE36\\uFE38\\uFE3A\\uFE3C\\uFE3E\\uFE40\\uFE42\\uFE44\\uFE48\\uFE5A\\uFE5C\\uFE5E\\uFF09\\uFF3D\\uFF5D\\uFF60\\uFF63", Pf:"\\xBB\\u2019\\u201D\\u203A\\u2E03\\u2E05\\u2E0A\\u2E0D\\u2E1D\\u2E21",Pi:"\\xAB\\u2018\\u201B\\u201C\\u201F\\u2039\\u2E02\\u2E04\\u2E09\\u2E0C\\u2E1C\\u2E20",Po:"!-#%-'\\*,\\.\\/:;\\?@\\xA1\\xA7\\xB6\\xB7\\xBF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u09FD\\u0A76\\u0AF0\\u0C77\\u0C84\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u166E\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u1805\\u1807-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2016\\u2017\\u2020-\\u2027\\u2030-\\u2038\\u203B-\\u203E\\u2041-\\u2043\\u2047-\\u2051\\u2053\\u2055-\\u205E\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00\\u2E01\\u2E06-\\u2E08\\u2E0B\\u2E0E-\\u2E16\\u2E18\\u2E19\\u2E1B\\u2E1E\\u2E1F\\u2E2A-\\u2E2E\\u2E30-\\u2E39\\u2E3C-\\u2E3F\\u2E41\\u2E43-\\u2E4F\\u2E52\\u3001-\\u3003\\u303D\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFE10-\\uFE16\\uFE19\\uFE30\\uFE45\\uFE46\\uFE49-\\uFE4C\\uFE50-\\uFE52\\uFE54-\\uFE57\\uFE5F-\\uFE61\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF07\\uFF0A\\uFF0C\\uFF0E\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3C\\uFF61\\uFF64\\uFF65", Ps:"\\(\\[\\{\\u0F3A\\u0F3C\\u169B\\u201A\\u201E\\u2045\\u207D\\u208D\\u2308\\u230A\\u2329\\u2768\\u276A\\u276C\\u276E\\u2770\\u2772\\u2774\\u27C5\\u27E6\\u27E8\\u27EA\\u27EC\\u27EE\\u2983\\u2985\\u2987\\u2989\\u298B\\u298D\\u298F\\u2991\\u2993\\u2995\\u2997\\u29D8\\u29DA\\u29FC\\u2E22\\u2E24\\u2E26\\u2E28\\u2E42\\u3008\\u300A\\u300C\\u300E\\u3010\\u3014\\u3016\\u3018\\u301A\\u301D\\uFD3F\\uFE17\\uFE35\\uFE37\\uFE39\\uFE3B\\uFE3D\\uFE3F\\uFE41\\uFE43\\uFE47\\uFE59\\uFE5B\\uFE5D\\uFF08\\uFF3B\\uFF5B\\uFF5F\\uFF62", Sc:"\\$\\xA2-\\xA5\\u058F\\u060B\\u07FE\\u07FF\\u09F2\\u09F3\\u09FB\\u0AF1\\u0BF9\\u0E3F\\u17DB\\u20A0-\\u20BF\\uA838\\uFDFC\\uFE69\\uFF04\\uFFE0\\uFFE1\\uFFE5\\uFFE6",Sk:"\\^`\\xA8\\xAF\\xB4\\xB8\\u02C2-\\u02C5\\u02D2-\\u02DF\\u02E5-\\u02EB\\u02ED\\u02EF-\\u02FF\\u0375\\u0384\\u0385\\u1FBD\\u1FBF-\\u1FC1\\u1FCD-\\u1FCF\\u1FDD-\\u1FDF\\u1FED-\\u1FEF\\u1FFD\\u1FFE\\u309B\\u309C\\uA700-\\uA716\\uA720\\uA721\\uA789\\uA78A\\uAB5B\\uAB6A\\uAB6B\\uFBB2-\\uFBC1\\uFF3E\\uFF40\\uFFE3",Sm:"\\+<->\\|~\\xAC\\xB1\\xD7\\xF7\\u03F6\\u0606-\\u0608\\u2044\\u2052\\u207A-\\u207C\\u208A-\\u208C\\u2118\\u2140-\\u2144\\u214B\\u2190-\\u2194\\u219A\\u219B\\u21A0\\u21A3\\u21A6\\u21AE\\u21CE\\u21CF\\u21D2\\u21D4\\u21F4-\\u22FF\\u2320\\u2321\\u237C\\u239B-\\u23B3\\u23DC-\\u23E1\\u25B7\\u25C1\\u25F8-\\u25FF\\u266F\\u27C0-\\u27C4\\u27C7-\\u27E5\\u27F0-\\u27FF\\u2900-\\u2982\\u2999-\\u29D7\\u29DC-\\u29FB\\u29FE-\\u2AFF\\u2B30-\\u2B44\\u2B47-\\u2B4C\\uFB29\\uFE62\\uFE64-\\uFE66\\uFF0B\\uFF1C-\\uFF1E\\uFF5C\\uFF5E\\uFFE2\\uFFE9-\\uFFEC", So:"\\xA6\\xA9\\xAE\\xB0\\u0482\\u058D\\u058E\\u060E\\u060F\\u06DE\\u06E9\\u06FD\\u06FE\\u07F6\\u09FA\\u0B70\\u0BF3-\\u0BF8\\u0BFA\\u0C7F\\u0D4F\\u0D79\\u0F01-\\u0F03\\u0F13\\u0F15-\\u0F17\\u0F1A-\\u0F1F\\u0F34\\u0F36\\u0F38\\u0FBE-\\u0FC5\\u0FC7-\\u0FCC\\u0FCE\\u0FCF\\u0FD5-\\u0FD8\\u109E\\u109F\\u1390-\\u1399\\u166D\\u1940\\u19DE-\\u19FF\\u1B61-\\u1B6A\\u1B74-\\u1B7C\\u2100\\u2101\\u2103-\\u2106\\u2108\\u2109\\u2114\\u2116\\u2117\\u211E-\\u2123\\u2125\\u2127\\u2129\\u212E\\u213A\\u213B\\u214A\\u214C\\u214D\\u214F\\u218A\\u218B\\u2195-\\u2199\\u219C-\\u219F\\u21A1\\u21A2\\u21A4\\u21A5\\u21A7-\\u21AD\\u21AF-\\u21CD\\u21D0\\u21D1\\u21D3\\u21D5-\\u21F3\\u2300-\\u2307\\u230C-\\u231F\\u2322-\\u2328\\u232B-\\u237B\\u237D-\\u239A\\u23B4-\\u23DB\\u23E2-\\u2426\\u2440-\\u244A\\u249C-\\u24E9\\u2500-\\u25B6\\u25B8-\\u25C0\\u25C2-\\u25F7\\u2600-\\u266E\\u2670-\\u2767\\u2794-\\u27BF\\u2800-\\u28FF\\u2B00-\\u2B2F\\u2B45\\u2B46\\u2B4D-\\u2B73\\u2B76-\\u2B95\\u2B97-\\u2BFF\\u2CE5-\\u2CEA\\u2E50\\u2E51\\u2E80-\\u2E99\\u2E9B-\\u2EF3\\u2F00-\\u2FD5\\u2FF0-\\u2FFB\\u3004\\u3012\\u3013\\u3020\\u3036\\u3037\\u303E\\u303F\\u3190\\u3191\\u3196-\\u319F\\u31C0-\\u31E3\\u3200-\\u321E\\u322A-\\u3247\\u3250\\u3260-\\u327F\\u328A-\\u32B0\\u32C0-\\u33FF\\u4DC0-\\u4DFF\\uA490-\\uA4C6\\uA828-\\uA82B\\uA836\\uA837\\uA839\\uAA77-\\uAA79\\uFDFD\\uFFE4\\uFFE8\\uFFED\\uFFEE\\uFFFC\\uFFFD", Zl:"\\u2028",Zp:"\\u2029",Zs:" \\xA0\\u1680\\u2000-\\u200A\\u202F\\u205F\\u3000"};F.C=F.Cc+F.Cf+F.Cs+F.Co;F.L=F.Lu+F.Ll+F.Lt+F.Lm+F.Mn+F.Lo;F.LC=F.Lu+F.Ll+F.Lt;F.M=F.Mn+F.Mc+F.Me;F.N=F.Nd+F.Nl+F.No;F.P=F.Pc+F.Pd+F.Ps+F.Pe+F.Pi+F.Pf+F.Po;F.S=F.Sm+F.Sc+F.Sk+F.So;F.Z=F.Zs+F.Zl+F.Zp;F.w="_"+F.L+F.N;F.b="(?:["+F.w+"](?:[^"+F.w+"]|$)|(?:^|[^"+F.w+"])["+F.w+"])";F.bOut="(?=[^"+F.w+"]|$)";F.bIn="(?:^|[^"+F.w+"])";F.bInCapture="(?:^|([^"+F.w+"]))";F.B="(?:["+F.w+"]["+F.w+"]|[^"+F.w+"][^"+F.w+"])";F.d=F.N; var c=Sk.token.tokens;const n=Sk.builtin.SyntaxError,m=Sk.builtin.SyntaxError;e.prototype.exact_type=function(){return this.type==c.T_OP&&this.string in Sk.token.EXACT_TOKEN_TYPES?Sk.token.EXACT_TOKEN_TYPES[this.string]:this.type};var k=/[\\^$.*+?()[\]{}|]/g,u=RegExp(k.source);const {Lu:l,Ll:q,Lt:z,Lm:r,Lo:t,Nl:x,Mn:v,Mc:B,Nd:I,Pc:M}=F;F=l+q+z+r+t+x+"_\\u1885-\\u1886\\u2118\\u212E\\u309B-\\u309C";const S="["+F+"]+["+(F+v+B+I+M+"\\u00B7\\u0387\\u1369-\\u1371\\u19DA]*"),E=new RegExp("^"+S+"$");Sk.token.isIdentifier= p;(function(ca){return d.apply(null,arguments)+"*"})("\\\\\\r?\\n[ \\f\\t]*");f("#[^\\r\\n]*");F=d("[0-9](?:_?[0-9])*\\.(?:[0-9](?:_?[0-9])*)?","\\.[0-9](?:_?[0-9])*")+f("[eE][-+]?[0-9](?:_?[0-9])*");var H=d(F,"[0-9](?:_?[0-9])*[eE][-+]?[0-9](?:_?[0-9])*"),y=d("[0-9](?:_?[0-9])*[jJ]",H+"[jJ]");F=d.apply(null,g());P=d(F+"'''",F+'"""');d(F+"'[^\\n'\\\\]*(?:\\\\.[^\\n'\\\\]*)*'",F+'"[^\\n"\\\\]*(?:\\\\.[^\\n"\\\\]*)*"');var A,J,Q;a(!0);Sk.token.setupTokens=a;var X=d(F+"'[^\\n'\\\\]*(?:\\\\.[^\\n'\\\\]*)*"+ d("'","\\\\\\r?\\n"),F+'"[^\\n"\\\\]*(?:\\\\.[^\\n"\\\\]*)*'+d('"',"\\\\\\r?\\n")),aa=d("\\\\\\r?\\n|$","#[^\\r\\n]*",P),ea={};F=g();for(let ca of F)ea[ca+"'"]="^[^'\\\\]*(?:\\\\.[^'\\\\]*)*'",ea[ca+'"']='^[^"\\\\]*(?:\\\\.[^"\\\\]*)*"',ea[ca+"'''"]="^[^'\\\\]*(?:(?:\\\\.|'(?!''))[^'\\\\]*)*'''",ea[ca+'"""']='^[^"\\\\]*(?:(?:\\\\.|"(?!""))[^"\\\\]*)*"""';let na=[],oa=[];for(let ca of F)na.push(ca+'"'),na.push(ca+"'"),oa.push(ca+'"""'),oa.push(ca+"'''");Sk._tokenize=function(ca,la,ia,ka){var U=Sk.__future__.python3? "":"(?:L?)";U=d("0[xX](?:_?[0-9a-fA-F])+"+U,"0[bB](?:_?[01])+"+U,Sk.__future__.silent_octal_literal?"0([oO]?)(?:_?[0-7])+"+U:"0([oO])(?:_?[0-7])+"+U,"(?:0(?:_?0)*|[1-9](?:_?[0-9])*)"+U);U=d(y,H,U);U="[ \\f\\t]*"+d(aa,U,Q,X,S);U=new RegExp(U);var ja=0,O=0,V=0,Z="",fa=0,qa=null,pa=[0],D,w=void 0,C=void 0,G,L;void 0!==ia&&("utf-8-sig"==ia&&(ia="utf-8"),ka(new e(c.T_ENCODING,ia,[0,0],[0,0],"")));for(var K=ia="";;){try{ia=K,K=la()}catch(Y){K=""}ja+=1;var N=0,R=K.length;if(Z){if(!K)throw new n("EOF in multi-line string", ca,C[0],C[1]);w.lastIndex=0;var W=w.exec(K);if(W)N=G=W[0].length,ka(new e(c.T_STRING,Z+K.substring(0,G),C,[ja,G],qa+K)),Z="",fa=0,qa=null;else{fa&&"\\\n"!==K.substring(K.length-2)&&"\\\r\n"!==K.substring(K.length-3)?(ka(new e(c.T_ERRORTOKEN,Z+K,C,[ja,K.length],qa)),Z="",qa=null):(Z+=K,qa+=K);continue}}else if(0!=O||V){if(!K)throw new n("EOF in multi-line statement",ca,ja,0);V=0}else{if(!K)break;for(D=0;Npa[pa.length-1]&&(pa.push(D),ka(new e(c.T_INDENT,K.substring(N),[ja,0],[ja,N],K)));for(;D