Sk.builtinFiles={files: {
  "src/builtin/sys.js": "'use strict';var $builtinmodule=function(a){var c;a={};var d=[],e=Sk.getSysArgv();for(c=0;c<e.length;++c)d.push(new Sk.builtin.str(e[c]));a.argv=new Sk.builtins.list(d);a.copyright=new Sk.builtin.str(\"Copyright 2009-2010 Scott Graham.\\nAll Rights Reserved.\\n\");Sk.__future__.python3?(a.version=new Sk.builtin.str(\"3.7(ish) [Skulpt]\"),a.version_info=new Sk.builtin.tuple([new Sk.builtin.int_(3),new Sk.builtin.int_(7)])):(a.version=new Sk.builtin.str(\"2.7(ish) [Skulpt]\"),a.version_info=new Sk.builtin.tuple([new Sk.builtin.int_(2),\nnew Sk.builtin.int_(7)]));a.maxint=new Sk.builtin.int_(Math.pow(2,53)-1);a.maxsize=new Sk.builtin.int_(Math.pow(2,53)-1);a.modules=Sk.sysmodules;a.path=Sk.realsyspath;a.getdefaultencoding=new Sk.builtin.func(()=>new Sk.builtin.str(\"utf-8\"));a.getExecutionLimit=new Sk.builtin.func(function(){return null===Sk.execLimit?Sk.builtin.none.none$:new Sk.builtin.int_(Sk.execLimit)});a.setExecutionLimit=new Sk.builtin.func(function(b){if(null===Sk.execLimit)throw new Sk.builtin.NotImplementedError(\"Execution limiting is not enabled\");\nvoid 0!==b&&(Sk.execLimit=Sk.builtin.asnum$(b))});a.resetTimeout=new Sk.builtin.func(function(){Sk.execStart=new Date});a.getYieldLimit=new Sk.builtin.func(function(){return null===Sk.yieldLimit?Sk.builtin.none.none$:new Sk.builtin.int_(Sk.yieldLimit)});a.setYieldLimit=new Sk.builtin.func(function(b){if(null===Sk.yieldLimit)throw new Sk.builtin.NotImplementedError(\"Yielding is not enabled\");void 0!==b&&(Sk.yieldLimit=Sk.builtin.asnum$(b))});a.debug=new Sk.builtin.func(function(){return Sk.builtin.none.none$});\nc=Sk.builtin.make_structseq(\"sys\",\"float_info\",{max:\"DBL_MAX -- maximum representable finite float\",max_exp:\"DBL_MAX_EXP -- maximum int e such that radix**(e-1) is representable\",max_10_exp:\"DBL_MAX_10_EXP -- maximum int e such that 10**e is representable\",min:\"DBL_MIN -- Minimum positive normalized float\",min_exp:\"DBL_MIN_EXP -- minimum int e such that radix**(e-1) is a normalized float\",min_10_exp:\"DBL_MIN_10_EXP -- minimum int e such that 10**e is a normalized\",dig:\"DBL_DIG -- digits\",mant_dig:\"DBL_MANT_DIG -- mantissa digits\",\nepsilon:\"DBL_EPSILON -- Difference between 1 and the next representable float\",radix:\"FLT_RADIX -- radix of exponent\",rounds:\"FLT_ROUNDS -- rounding mode\"});a.float_info=new c([Number.MAX_VALUE,Math.floor(Math.log2(Number.MAX_VALUE)),Math.floor(Math.log10(Number.MAX_VALUE)),Number.MIN_VALUE,Math.ceil(Math.log2(Number.MIN_VALUE)),Math.ceil(Math.log10(Number.MIN_VALUE)),15,Math.log2(Number.MAX_SAFE_INTEGER),Number.EPSILON,2,1].map(b=>Sk.ffi.remapToPy(b)));c=Sk.builtin.make_structseq(\"sys\",\"int_info\",\n{bits_per_digit:\"size of a digit in bits\",sizeof_digit:\"size in bytes of the C type used to represent a digit\"});a.int_info=new c([30,4].map(b=>Sk.ffi.remapToPy(b)));c=Sk.builtin.make_structseq(\"sys\",\"hash_info\",{width:\"width of the type used for hashing, in bits\",modulus:\"prime number giving the modulus on which the hash function is based\",inf:\"value to be used for hash of a positive infinity\",nan:\"value to be used for hash of a nan\",imag:\"multiplier used for the imaginary part of a complex number\",\nalgorithm:\"name of the algorithm for hashing of str, bytes and memoryviews\",hash_bits:\"internal output size of hash algorithm\",seed_bits:\"seed size of hash algorithm\",cutoff:\"small string optimization cutoff\"});a.hash_info=new c([32,536870911,314159,0,1000003,\"siphash24\",32,128,0].map(b=>Sk.ffi.remapToPy(b)));a.__stdout__=new Sk.builtin.file(new Sk.builtin.str(\"/dev/stdout\"),new Sk.builtin.str(\"w\"));a.__stdin__=new Sk.builtin.file(new Sk.builtin.str(\"/dev/stdin\"),new Sk.builtin.str(\"r\"));a.__stderr__=\nnew Sk.builtin.file(new Sk.builtin.str(\"/dev/stderr\"),new Sk.builtin.str(\"w\"));a.stdout=a.__stdout__;a.stdin=a.__stdin__;a.stderr=a.__stderr__;return a};\n",
  "src/builtin/this.py": 3,
  "src/lib/BaseHTTPServer.py": 3,
  "src/lib/Bastion.py": 3,
  "src/lib/CGIHTTPServer.py": 3,
  "src/lib/ConfigParser.py": 3,
  "src/lib/Cookie.py": 3,
  "src/lib/DocXMLRPCServer.py": 3,
  "src/lib/HTMLParser.py": 3,
  "src/lib/MimeWriter.py": 3,
  "src/lib/Queue.py": 3,
  "src/lib/SimpleHTTPServer.py": 3,
  "src/lib/SimpleXMLRPCServer.py": 3,
  "src/lib/SocketServer.py": 3,
  "src/lib/StringIO.py": 3,
  "src/lib/UserDict.py": 3,
  "src/lib/UserList.py": 3,
  "src/lib/UserString.py": 3,
  "src/lib/_LWPCookieJar.py": 3,
  "src/lib/_MozillaCookieJar.py": 3,
  "src/lib/__future__.py": 3,
  "src/lib/__phello__.foo.py": 3,
  "src/lib/_abcoll.py": 3,
  "src/lib/_random.js": 1,
  "src/lib/_sk_fail.py": 3,
  "src/lib/_strptime.js": 2,
  "src/lib/_threading_local.py": 3,
  "src/lib/abc.py": 3,
  "src/lib/aifc.py": 3,
  "src/lib/antigravity.py": 3,
  "src/lib/anydbm.py": 3,
  "src/lib/array.js": 3,
  "src/lib/ast.py": 3,
  "src/lib/asynchat.py": 3,
  "src/lib/asyncore.py": 3,
  "src/lib/atexit.py": 3,
  "src/lib/audiodev.py": 3,
  "src/lib/base64.py": 3,
  "src/lib/bdb.py": 3,
  "src/lib/binhex.py": 3,
  "src/lib/bisect.py": 1,
  "src/lib/bsddb/__init__.py": 3,
  "src/lib/cProfile.py": 3,
  "src/lib/calendar.js": 2,
  "src/lib/cgi.py": 3,
  "src/lib/cgitb.py": 3,
  "src/lib/chunk.py": 3,
  "src/lib/cmd.py": 3,
  "src/lib/code.py": 3,
  "src/lib/codecs.py": 3,
  "src/lib/codeop.py": 3,
  "src/lib/collections.js": 1,
  "src/lib/colorsys.py": 3,
  "src/lib/commands.py": 3,
  "src/lib/compileall.py": 3,
  "src/lib/compiler/__init__.py": 3,
  "src/lib/config/__init__.py": 3,
  "src/lib/contextlib.py": 3,
  "src/lib/cookielib.py": 3,
  "src/lib/copy.py": 3,
  "src/lib/copy_reg.py": 3,
  "src/lib/csv.py": 3,
  "src/lib/ctypes/__init__.py": 3,
  "src/lib/ctypes/macholib/__init__.py": 3,
  "src/lib/curses/__init__.py": 3,
  "src/lib/datetime.js": "'use strict';function $builtinmodule(){function J(q,z){return v(q,z,\"DivMod\").v}function F(q,z){if(\"number\"!==typeof q||\"number\"!==typeof z)return q=JSBI.BigInt(q),z=JSBI.BigInt(z),[JSBI.toNumber(JSBI.divide(q,z)),JSBI.toNumber(JSBI.remainder(q,z))];if(0===z)throw new ea(\"integer division or modulo by zero\");return[Math.floor(q/z),q-Math.floor(q/z)*z]}function ka(q){q=la(q);const z=0>q?-1:1;q=Math.abs(q);return[new Q(z*(q-Math.floor(q))),new Q(z*Math.floor(q))]}function n(q,z=\"0\",Y=2){return q.toString().padStart(Y,\nz)}function fa(q){if(!bb.test(q))throw Error();return parseInt(q)}function Ka(q){q=t(q.tp$getattr(cb));if(!(q instanceof A))throw new y(\"unexpected return type from as_integer_ratio(): expected tuple, got '\"+M(q)+\"'\");q=q.v;if(2!==q.length)throw new x(\"as_integer_ratio() must return a 2-tuple\");return q}const {isTrue:S,richCompareBool:N,asIndexOrThrow:G,asIndexSized:V,objectRepr:ha,opAllowsEquality:db,callsimArray:t}=Sk.misceval,{numberBinOp:eb,typeName:M,buildNativeClass:W,checkArgsLen:ma,objectHash:T,\ncopyKeywordsToNamedArgs:U}=Sk.abstr,{int_:h,float_:Q,str:p,bytes:Z,tuple:A,bool:{true$:aa},none:{none$:f},NotImplemented:{NotImplemented$:H},TypeError:y,ValueError:x,OverflowError:R,ZeroDivisionError:ea,NotImplementedError:xa,checkNumber:fb,checkFloat:ia,checkString:O,checkInt:ya,asnum$:la,round:za,getattr:Aa}=Sk.builtin,{remapToPy:gb,remapToJs:La}=Sk.ffi,v=eb,Ma=new p(\"auto\"),B=new p(\"utcoffset\"),na=new p(\"tzname\"),cb=new p(\"as_integer_ratio\"),ja=new p(\"dst\"),Ba=new p(\"isoformat\"),X=new p(\"replace\"),\nNa=new p(\"fromtimestamp\"),hb=new p(\"fromordinal\"),ib=new p(\"utcfromtimestamp\"),Oa=new p(\"strftime\"),jb=new p(\"fromutc\"),C=new h(0),kb=new Q(0),lb=new h(7),mb=new h(60),nb=new h(3600),ob=new h(1E3),Ca=new h(1E6),Pa=new Q(1E6),oa=new h(86400),pb=new Q(86400);let pa=null;const bb=/^[0-9]+$/;return Sk.misceval.chain(Sk.importModule(\"time\",!1,!0),q=>{function z(a,b){for(let c=0;c<a.length;c++)if(a[c]!==b[c])return a[c]>b[c]?1:-1;return 0}function Y(a,b,c){a=a.$cmp(b,c);switch(c){case \"Lt\":return 0>a;case \"LtE\":return 0>=\na;case \"Eq\":return 0===a;case \"NotEq\":return 0!==a;case \"Gt\":return 0<a;case \"GtE\":return 0<=a}}function qa(a){return 0===a%4&&(0!==a%100||0===a%400)}function ra(a){--a;return 365*a+Math.floor(a/4)-Math.floor(a/100)+Math.floor(a/400)}function ba(a,b,c){return ra(a)+(sa[b]+(2<b&&qa(a)))+c}function Da(a){a=G(a);if(a>Number.MAX_SAFE_INTEGER)throw new R(\"Python int too large to convert to js number\");if(1>a)throw new x(\"ordinal must be >= 1\");--a;[b,a]=F(a,qb);var b=400*b+1;[c,a]=F(a,rb);[d,a]=F(a,sb);\n[e,a]=F(a,365);b+=100*c+4*d+e;if(4===e||4===c)return[b-1,12,31].map(g=>new h(g));var c=3===e&&(24!==d||3===c);var d=a+50>>5;var e=sa[d]+(2<d&&c);e>a&&(--d,e-=Ea[d]+(2===d&&c));return[b,d,a-e+1].map(g=>new h(g))}function Fa(a,b,c,d,e,g,l){const r=(ba(a,b,c)+6)%7,w=sa[b]+(2<b&&qa(a))+c;return P.struct_time.tp$call([new A([a,b,c,d,e,g,r,w,l].map(k=>new h(k)))])}function Qa(a,b,c,d,e=\"auto\"){if(\"string\"!==typeof e&&!O(e))throw new y(\"must be str, not \"+M(e));e=e.toString();\"auto\"===e?e=d?\"microseconds\":\n\"seconds\":\"milliseconds\"===e&&(d=Math.floor(d/1E3));e=tb[e];if(void 0===e)throw new x(\"Unknown timespec value\");return e(a,b,c,d)}function Ra(a){let b=\"\",c;if(a!==f){0>a.$days?(c=\"-\",a=new m(-a.$days,-a.$secs,-a.$micro)):c=\"+\";let d,e;[a,d]=J(a,ta);[d,e]=J(d,ca);b+=c+`${n(a)}:${n(d)}`;if(e.$secs||e.$micro)b+=\":\"+n(e.$secs,\"0\",2),e.$micro&&(b+=\".\"+n(e.$micro,\"0\",6));return b}}function Ga(a,b,c){let d=null;var e=null,g=null;let l=[],r=0;const w=b.length;for(;r<w;){var k=b[r];r+=1;if(\"%\"===k)if(r<w)if(k=\nb[r],r+=1,\"f\"===k)null===d&&(d=n(a.$micro||0,\"0\",6)),l.push(d);else if(\"z\"===k){if(null===e&&(e=\"\",k=a.tp$getattr(B),void 0!==k&&(k=t(k),k!==f))){e=\"+\";0>k.$days&&(k=new m(-k.$days,-k.$secs,-k.$micro),e=\"-\");let D,da;var u=void 0;[D,u]=J(k,ta);[da,u]=J(u,ca);u=u.$secs;e=(k=k.$micro)?e+n(D)+n(da)+n(u)+\".\"+n(k,\"0\",6):u?e+n(D)+n(da)+n(u):e+n(D)+n(da)}l.push(e)}else if(\"Z\"===k){if(null===g&&(g=\"\",k=a.tp$getattr(na),void 0!==k&&(k=t(k),k!==f&&(g=k.tp$getattr(X),g=t(g,[new p(\"%\"),new p(\"%%\")]),!O(g)))))throw new y(\"tzname.replace() did not return a string\");\nl.push(g)}else l.push(\"%\",k);else l.push(\"%\");else l.push(k)}l=l.join(\"\");return P.strftime.tp$call([new p(l),c])}function Sa(a){const b=fa(a.slice(0,4));if(\"-\"!==a[4])throw new x(\"Invalid date separator: \"+a[4]);const c=fa(a.slice(5,7));if(\"-\"!==a[7])throw new x(\"Invalid date separator: \"+a[7]);a=fa(a.slice(8,10));return[b,c,a].map(d=>new h(d))}function Ta(a){var b=a.length;const c=[0,0,0,0];let d=0;for(let e=0;3>e;e++){if(2>b-d)throw new x(\"Incomplete time component\");c[e]=fa(a.slice(d,d+2));d+=\n2;const g=a.substr(d,1);if(!g||2<=e)break;if(\":\"!==g)throw new x(\"Invalid time separator: \"+g);d+=1}if(d<b){if(\".\"!==a[d])throw new x(\"Invalid microsecond component\");d+=1;b-=d;if(3!==b&&6!==b)throw new x(\"Invalid microsecond component\");c[3]=fa(a.slice(d));3===b&&(c[3]*=1E3)}return c}function Ua(a){if(2>a.length)throw new x(\"Isoformat time too short\");const b=a.indexOf(\"-\")+1||a.indexOf(\"+\")+1;var c=0<b?a.slice(0,b-1):a;c=Ta(c);var d=f;if(0<b){d=a.slice(b);if(![5,8,15].includes(d.length))throw new x(\"Malformed time zone string\");\nd=Ta(d);d.every(e=>0===e)?d=K.prototype.utc:(a=\"-\"===a[b-1]?-1:1,a=new m(0,a*(3600*d[0]+60*d[1]+d[2]),a*d[3]),d=new K(a))}c=c.map(e=>new h(e));c.push(d);return c}function Va(a){if(a!==f&&!O(a))throw new y(\"tzinfo.tzname() must return None or string, not '\"+M(a)+\"'\");}function ua(a,b){if(b!==f){if(!(b instanceof m))throw new y(`tzinfo.${a}() must return None or timedelta, not '${M(b)}'`);if(!N(ub,b,\"Lt\")||!N(b,vb,\"Lt\"))throw new x(`${a}()=${b.toString()}, must be strictly between -timedelta(hours=24) and timedelta(hours=24)`);\n}}function Wa(a,b=null,c=null){if(null===b||null===c)throw new y(`function missing required argument '${null===c?\"day\":\"month\"}' (pos ${null===c?\"3\":\"2\"})`);a=G(a);b=G(b);c=G(c);if(!(1<=a&&9999>=a))throw new x(\"year must be in 1..9999\",new h(a));if(!(1<=b&&12>=b))throw new x(\"month must be in 1..12\",new h(b));var d=b;d=2===d&&qa(a)?29:Ea[d];if(!(1<=c&&c<=d))throw new x(\"day must be in 1..\"+d,new h(c));return[a,b,c]}function Xa(a,b,c,d,e){a=G(a);b=G(b);c=G(c);d=G(d);e=G(e);if(!(0<=a&&23>=a))throw new x(\"hour must be in 0..23\",\nnew h(a));if(!(0<=b&&59>=b))throw new x(\"minute must be in 0..59\",new h(b));if(!(0<=c&&59>=c))throw new x(\"second must be in 0..59\",new h(c));if(!(0<=d&&999999>=d))throw new x(\"microsecond must be in 0..999999\",new h(d));if(0!==e&&1!==e)throw new x(\"fold must be either 0 or 1\",new h(e));return[a,b,c,d,e]}function Ha(a){if(a!==f&&!(a instanceof Ia))throw new y(\"tzinfo argument must be None or of a tzinfo subclass\");}function Ja(a,b){let [c,d]=F(a,b);d*=2;if((0<b?d>b:d<b)||d===b&&1===Math.abs(c)%2)c+=\n1;return c}function va(a){var b=ba(a,1,1);a=(b+6)%7;b-=a;3<a&&(b+=7);return b}const P=q.$d;q={__name__:new p(\"datetime\"),__all__:new Sk.builtin.list(\"date datetime time timedelta timezone tzinfo MINYEAR MAXYEAR\".split(\" \").map(a=>new p(a)))};q.MINYEAR=new h(1);q.MAXYEAR=new h(9999);const Ea=[-1,31,28,31,30,31,30,31,31,30,31,30,31],sa=[-1];let Ya=0;Ea.slice(1).forEach(a=>{sa.push(Ya);Ya+=a});const qb=ra(401),rb=ra(101),sb=ra(5),Za=[null,\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\n\"Dec\"],$a=[null,\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\",\"Sun\"],tb={hours(a){return n(a)},minutes(a,b){return n(a)+\":\"+n(b)},seconds(a,b,c){return n(a)+\":\"+n(b)+\":\"+n(c)},milliseconds(a,b,c,d){return n(a)+\":\"+n(b)+\":\"+n(c)+\".\"+n(d,\"0\",3)},microseconds(a,b,c,d){return n(a)+\":\"+n(b)+\":\"+n(c)+\".\"+n(d,\"0\",6)}},m=q.timedelta=W(\"datetime.timedelta\",{constructor:function(a=0,b=0,c=0){var d;[d,c]=F(c,1E6);b+=d;[d,b]=F(b,86400);this.$days=a+=d;this.$secs=b;this.$micro=c;this.$hashcode=-1;if(999999999<Math.abs(a))throw new R(`days=${a}; must have magnitude <= 999999999`);\n},slots:{tp$new(a,b){let [c,d,e,g,l,r,w]=U(\"timedelta\",\"days seconds microseconds milliseconds minutes hours weeks\".split(\" \"),a,b,Array(7).fill(C));b=C;c=v(c,v(w,lb,\"Mult\"),\"Add\");d=v(d,v(v(l,mb,\"Mult\"),v(r,nb,\"Mult\"),\"Add\"),\"Add\");e=v(e,v(g,ob,\"Mult\"),\"Add\");if(ia(c))[a,c]=ka(c),[k,a]=ka(v(a,pb,\"Mult\")),b=new h(a),a=new h(c);else{var k=kb;a=c}if(ia(d)){[u,d]=ka(d);d=new h(d);var u=v(u,k,\"Add\")}else u=k;[c,d]=J(d,oa);a=v(a,c,\"Add\");b=v(b,new h(d),\"Add\");k=v(u,Pa,\"Mult\");ia(e)?(e=za(v(e,k,\"Add\")).nb$int(),\n[d,e]=J(e,Ca),[c,d]=J(d,oa),a=v(a,c,\"Add\"),b=v(b,d,\"Add\")):(e=new h(e),[d,e]=J(e,Ca),[c,d]=J(d,oa),a=v(a,c,\"Add\"),b=v(b,d,\"Add\"),e=za(v(e,k,\"Add\")).nb$int());[d,k]=J(e,Ca);b=v(b,d,\"Add\");[c,b]=J(b,oa);a=v(a,c,\"Add\");a=G(a);b=G(b);k=G(k);if(999999999<Math.abs(a))throw new R(\"timedelta # of days is too large: \"+c.toString());if(this===m.prototype)return new m(a,b,k);u=new this.constructor;m.call(u,a,b,k);return u},$r(){const a=[];this.$days&&a.push(`days=${this.$days}`);this.$secs&&a.push(`seconds=${this.$secs}`);\nthis.$micro&&a.push(`microseconds=${this.$micro}`);a.length||a.push(\"0\");return new p(`${this.tp$name}(${a.join(\", \")})`)},tp$str(){var a=this.$secs%60;let b=Math.floor(this.$secs/60);a=`${Math.floor(b/60)}:${n(b%60)}:${n(a)}`;this.$days&&(a=`${this.$days} day${1!==Math.abs(this.$days)&&\"s\"||\"\"}, `+a);this.$micro&&(a+=`.${n(this.$micro,\"0\",6)}`);return new p(a)},tp$as_number:!0,nb$add(a){return a instanceof m?new m(this.$days+a.$days,this.$secs+a.$secs,this.$micro+a.$micro):H},nb$subtract(a){return a instanceof\nm?new m(this.$days-a.$days,this.$secs-a.$secs,this.$micro-a.$micro):H},nb$positive(){return this},nb$negative(){return new m(-this.$days,-this.$secs,-this.$micro)},nb$abs(){return 0>this.$days?this.nb$negative():this},nb$multiply(a){if(ya(a))return a=V(a,R),new m(this.$days*a,this.$secs*a,this.$micro*a);if(ia(a)){const b=this.$toMicrosecs();let [c,d]=Ka(a);c=V(c,R);d=G(d);return new m(0,0,Ja(b*c,d))}return H},nb$floor_divide(a){const b=this.$toMicrosecs();if(a instanceof m){a=a.$toMicrosecs();if(0===\na)throw new ea(\"integer division or modulo by zero\");return new h(Math.floor(b/a))}if(ya(a)){a=V(a,R);if(0===a)throw new ea(\"integer division or modulo by zero\");return new m(0,0,Math.floor(b/a))}return H},nb$divide(a){const b=this.$toMicrosecs();if(a instanceof m){if(0===a.$toMicrosecs())throw new ea(\"integer division or modulo by zero\");return new Q(b/a.$toMicrosecs())}if(ya(a))return a=G(a),new m(0,0,Ja(b,a));if(ia(a)){let [c,d]=Ka(a);c=G(c);d=V(d,R);return new m(0,0,Ja(d*b,c))}return H},nb$remainder(a){if(!(a instanceof\nm))return H;const b=this.$toMicrosecs();a=a.$toMicrosecs();if(0===a)throw new ea(\"integer division or modulo by zero\");return new m(0,0,b-Math.floor(b/a)*a)},nb$divmod(a){if(!(a instanceof m))return H;const b=this.$toMicrosecs();a=a.$toMicrosecs();const [c,d]=F(b,a);return new A([new h(c),new m(0,0,d)])},tp$richcompare(a,b){return a instanceof m?Y(this,a,b):H},tp$hash(){-1===this.$hashcode&&(this.$hashcode=T(new A(this.$getState().map(a=>new h(a)))));return this.$hashcode},nb$bool(){return 0!==this.$days||\n0!==this.$secs||0!==this.$micro}},methods:{total_seconds:{$meth(){return new Q(((86400*this.$days+this.$secs)*10**6+this.$micro)/10**6)},$flags:{NoArgs:!0},$doc:\"Total seconds in the duration.\"},__reduce__:{$meth(){return new A([this.ob$type,new A(this.$getState().map(a=>gb(a)))])},$flags:{NoArgs:!0},$textsig:null,$doc:\"__reduce__() -> (cls, state)\"}},getsets:{days:{$get(){return new h(this.$days)},$doc:\"Number of days.\"},seconds:{$get(){return new h(this.$secs)},$doc:\"Number of seconds (>= 0 and less than 1 day).\"},\nmicroseconds:{$get(){return new h(this.$micro)},$doc:\"Number of microseconds (>= 0 and less than 1 second).\"}},proto:{$toMicrosecs(){return 1E6*(86400*this.$days+this.$secs)+this.$micro},$cmp(a){return z(this.$getState(),a.$getState())},$getState(){return[this.$days,this.$secs,this.$micro]}}});m.prototype.min=new m(-999999999);m.prototype.max=new m(999999999,86399,999999);m.prototype.resolution=new m(0,0,1);const vb=new m(1),ta=new m(0,3600),ca=new m(0,60),wa=new m(0,1),wb=new m(0),ub=new m(-1),I=\nq.date=W(\"datetime.date\",{constructor:function(a,b,c){this.$year=a;this.$month=b;this.$day=c;this.$hashcode=-1},slots:{tp$new(a,b){let [c,d,e]=U(\"date\",[\"year\",\"month\",\"day\"],a,b,[null,null]);var g;if(null===d&&c instanceof Z&&4===(g=c.valueOf()).length&&1<=g[2]&&12>=g[2])return a=new this.constructor,a.$setState(g),a;[c,d,e]=Wa(c,d,e);if(this===I.prototype)return new I(c,d,e);g=new this.constructor;I.call(g,c,d,e);return g},$r(){return new p(`${this.tp$name}(${this.$year}, ${this.$month}, ${this.$day})`)},\ntp$str(){return this.tp$getattr(Ba).tp$call([])},tp$richcompare(a,b){return a instanceof I?Y(this,a,b):H},tp$hash(){-1===this.$hashcode&&(this.$hashcode=T(this.$getState()));return this.$hashcode},tp$as_number:!0,nb$add(a){if(a instanceof m){a=this.$toOrdinal()+a.$days;if(0<a&&3652059>=a)return this.ob$type.tp$getattr(hb).tp$call([new h(a)]);throw new R(\"result out of range\");}return H},nb$subtract(a){if(a instanceof m)return v(this,new m(-a.$days),\"Add\");if(a instanceof I){const b=this.$toOrdinal();\na=a.$toOrdinal();return new m(b-a)}return H},nb$reflected_subtract:null},classmethods:{fromtimestamp:{$meth:function(a){const [b,c,d]=P.localtime.tp$call([a]).v;return this.tp$call([b,c,d])},$flags:{OneArg:!0},$textsig:null,$doc:\"timestamp -> local date from a POSIX timestamp (like time.time()).\"},fromordinal:{$meth:function(a){return this.tp$call(Da(a))},$flags:{OneArg:!0},$textsig:null,$doc:\"int -> date corresponding to a proleptic Gregorian ordinal.\"},fromisocalendar:{$meth:function(a,b,c){a=G(a);\nb=G(b);c=G(c);if(!(1<=a&&9999>=a))throw new x(`Year is out of range: ${a}`);let d,e;if(!(0<b&&53>b)&&(d=!0,53===b&&(e=ba(a,1,1)%7,4===e||3===e&&qa(a))&&(d=!1),d))throw new x(`Invalid week: ${b}`);if(!(0<c&&8>c))throw new x(`Invalid weekday: ${c} (range is [1, 7])`);b=7*(b-1)+(c-1);a=va(a);return this.tp$call(Da(a+b))},$flags:{NamedArgs:[\"year\",\"week\",\"day\"]},$textsig:null,$doc:\"int -> date corresponding to a proleptic Gregorian ordinal.\"},fromisoformat:{$meth:function(a){if(!O(a))throw new y(\"fromisoformat: argument must be str\");\na=a.toString();try{if(10!==a.length)throw Error();return this.tp$call(Sa(a))}catch(b){throw new x(\"Invalid isoformat string: '\"+a+\"'\");}},$flags:{OneArg:!0},$textsig:null,$doc:\"str -> Construct a date from the output of date.isoformat()\"},today:{$meth:function(){const a=P.time.tp$call([]);return this.tp$getattr(Na).tp$call([a])},$flags:{NoArgs:!0},$textsig:null,$doc:\"Current date or datetime:  same as self.__class__.fromtimestamp(time.time()).\"}},methods:{ctime:{$meth:function(){const a=this.$toOrdinal()%\n7||7;return new p(`${$a[a]} ${Za[this.$month]} ${n(this.$day,\" \",2)} 00:00:00 ${n(this.$year,\"0\",4)}`)},$flags:{NoArgs:!0},$textsig:null,$doc:\"Return ctime() style string.\"},strftime:{$meth:function(a){if(!O(a))throw new y(\"must be str, not \"+M(a));a=a.toString();return Ga(this,a,this.$timetuple())},$flags:{OneArg:!0},$textsig:null,$doc:\"format -> strftime() style string.\"},__format__:{$meth:function(a){if(!O(a))throw new y(\"must be str, not \"+M(a));return\"\"!==a.v?this.tp$getattr(Oa).tp$call([a]):\nthis.tp$str()},$flags:{OneArg:!0},$textsig:null,$doc:\"Formats self with strftime.\"},timetuple:{$meth:function(){return this.$timetuple()},$flags:{NoArgs:!0},$textsig:null,$doc:\"Return time tuple, compatible with time.localtime().\"},isocalendar:{$meth:function(){let a=this.$year,b=va(a);const c=ba(this.$year,this.$month,this.$day);let [d,e]=F(c-b,7);0>d?(--a,b=va(a),[d,e]=F(c-b,7)):52<=d&&c>=va(a+1)&&(a+=1,d=0);return new xb(new h(a),new h(d+1),new h(e+1))},$flags:{NoArgs:!0},$textsig:null,$doc:\"Return a 3-tuple containing ISO year, week number, and weekday.\"},\nisoformat:{$meth:function(){return this.$isoformat()},$flags:{NoArgs:!0},$textsig:null,$doc:\"Return string in ISO 8601 format, YYYY-MM-DD.\"},isoweekday:{$meth:function(){return new h(this.$toOrdinal()%7||7)},$flags:{NoArgs:!0},$textsig:null,$doc:\"Return the day of the week represented by the date.\\nMonday == 1 ... Sunday == 7\"},toordinal:{$meth:function(){return new h(this.$toOrdinal())},$flags:{NoArgs:!0},$textsig:null,$doc:\"Return proleptic Gregorian ordinal.  January 1 of year 1 is day 1.\"},weekday:{$meth:function(){return new h((this.$toOrdinal()+\n6)%7)},$flags:{NoArgs:!0},$textsig:null,$doc:\"Return the day of the week represented by the date.\\nMonday == 0 ... Sunday == 6\"},replace:{$meth:function(a,b,c){a===f&&(a=new h(this.$year));b===f&&(b=new h(this.$month));c===f&&(c=new h(this.$day));return this.ob$type.tp$call([a,b,c])},$flags:{NamedArgs:[\"year\",\"month\",\"day\"],Defaults:[f,f,f]},$textsig:null,$doc:\"Return date with new specified fields.\"},__reduce__:{$meth(){return new A([this.ob$type,new A([this.$getState()])])},$flags:{NoArgs:!0},$textsig:null,\n$doc:\"__reduce__() -> (cls, state)\"}},getsets:{year:{$get(){return new h(this.$year)},$doc:\"year (1-9999)\"},month:{$get(){return new h(this.$month)},$doc:\"month (1-12)\"},day:{$get(){return new h(this.$day)},$doc:\"day (1-31)\"}},proto:{$cmp(a){return z([this.$year,this.$month,this.$day],[a.$year,a.$month,a.$day])},$getState(){const [a,b]=F(this.$year,256);return new Z([a,b,this.$month,this.$day])},$setState(a){const [b,c,d,e]=a;this.$year=256*b+c;this.$month=d;this.$day=e},$toOrdinal(){return ba(this.$year,\nthis.$month,this.$day)},$isoformat(){return new p(`${n(this.$year,\"0\",4)}-${n(this.$month,\"0\",2)}-${n(this.$day,\"0\",2)}`)},$timetuple(){return Fa(this.$year,this.$month,this.$day,this.$hour||0,this.$min||0,this.$sec||0,-1)},$strftime(a=\"\"){return Ga(this,a.toString(),this.$timetuple())}}});I.prototype.min=new I(1,1,1);I.prototype.max=new I(9999,12,31);I.prototype.resolution=new m(1);const Ia=q.tzinfo=W(\"datetime.tzinfo\",{constructor:function(){},methods:{tzname:{$meth:function(a){throw new xa(\"tzinfo subclass must override tzname()\");\n},$flags:{OneArg:!0},$textsig:null,$doc:\"datetime -> string name of time zone.\"},utcoffset:{$meth:function(a){throw new xa(\"tzinfo subclass must override utcoffset()\");},$flags:{OneArg:!0},$textsig:null,$doc:\"datetime -> timedelta showing offset from UTC, negative values indicating West of UTC\"},dst:{$meth:function(a){throw new xa(\"tzinfo subclass must override dst()\");},$flags:{OneArg:!0},$textsig:null,$doc:\"datetime -> DST offset as timedelta positive east of UTC.\"},fromutc:{$meth:function(a){if(!(a instanceof\nE))throw new y(\"fromutc() requires a datetime argument\");if(a.$tzinfo!==this)throw new x(\"dt.tzinfo is not self\");var b=t(a.tp$getattr(B));if(b===f)throw new x(\"fromutc() requires a non-None utcoffset() result\");let c=t(a.tp$getattr(ja));if(c===f)throw new x(\"fromutc() requires a non-None dst() result\");b=v(b,c,\"Sub\");if(S(b)&&(a=v(a,b,\"Add\"),c=t(a.tp$getattr(ja)),c===f))throw new x(\"fromutc(): dt.dst gave inconsistent results; cannot convert\");return v(a,c,\"Add\")},$flags:{OneArg:!0},$textsig:null,\n$doc:\"datetime in UTC -> datetime in local time.\"},__reduce__:{$meth(){var a=Aa(this,new p(\"__getinitargs__\"),f);a=a!==f?t(a,[]):new A;var b=Aa(this,new p(\"__getstate__\"),f);b!==f?b=t(b,[]):(b=Aa(this,new p(\"__dict__\"),f),b=S(b)?b:f);return b===f?new A([this.ob$type,a]):new A([this.ob$type,a,b])},$flags:{NoArgs:!0},$textsig:null,$doc:\"-> (cls, state)\"}}}),xb=W(\"datetime.IsoCalendarDate\",{base:A,constructor:function(a,b,c){this.y=a;this.w=b;this.wd=c;A.call(this,[a,b,c])},slots:{tp$new(a,b){const [c,\nd,e]=U(\"IsoCalendarDate\",[\"year\",\"week\",\"weekday\"],a,b);return new this.constructor(c,d,e)},$r(){return new p(`${this.tp$name}(year=${this.y}, week=${this.w}, weekday=${this.wd})`)}},getsets:{year:{$get(){return this.y}},week:{$get(){return this.w}},weekday:{$get(){return this.wd}}}}),L=q.time=W(\"datetime.time\",{constructor:function(a=0,b=0,c=0,d=0,e=null,g=0){this.$hour=a;this.$min=b;this.$sec=c;this.$micro=d;this.$tzinfo=e||f;this.$fold=g;this.$hashcode=-1},slots:{tp$new(a,b){ma(\"time\",a,0,5);let [c,\nd,e,g,l,r]=U(\"time\",\"hour minute second microsecond tzinfo fold\".split(\" \"),a,b,[C,C,C,C,f,C]);var w;if(c instanceof Z&&6===(w=c.valueOf()).length&&24>(w[0]&127))return a=new this.constructor,a.$setState(w,d===C?f:d),a;[c,d,e,g,r]=Xa(c,d,e,g,r);Ha(l);if(this===L.prototype)return new L(c,d,e,g,l,r);w=new this.constructor;L.call(w,c,d,e,g,l,r);return w},tp$richcompare(a,b){return a instanceof L?Y(this,a,b):H},tp$hash(){if(-1===this.$hashcode){const a=this.$fold?t(this.tp$getattr(X),[],[\"fold\",C]):this,\nb=t(a.tp$getattr(B));if(S(b)){let [c,d]=J((new m(0,3600*this.$hour+60*this.$min)).nb$subtract(b),ta);d=d.nb$floor_divide(ca);0<=c&&24>=c?(c=la(c),d=la(d),this.$hashcode=T(new L(c,d,this.$sec,this.$micro))):this.$hashcode=T(new A([c,d,new h(this.$sec),new h(this.$micro)]))}else this.$hashcode=T(a.$getState()[0])}return this.$hashcode},$r(){let a;a=0!==this.$micro?`, ${this.$sec}, ${this.$micro}`:0!==this.$sec?`, ${this.$sec}`:\"\";a=`${this.tp$name}(${this.$hour}, ${this.$min}${a})`;this.$tzinfo!==f&&\n(a=a.slice(0,-1)+\", tzinfo=\"+ha(this.$tzinfo)+\")\");this.$fold&&(a=a.slice(0,-1)+\", fold=1)\");return new p(a)},tp$str(){return this.tp$getattr(Ba).tp$call([])}},methods:{isoformat:{$meth:function(a){a=Qa(this.$hour,this.$min,this.$sec,this.$micro,a);const b=this.$tzstr();b&&(a+=b);return new p(a)},$flags:{NamedArgs:[\"timespec\"],Defaults:[Ma]},$textsig:null,$doc:\"Return string in ISO 8601 format, [HH[:MM[:SS[.mmm[uuu]]]]][+HH:MM].\\n\\ntimespec specifies what components of the time to include.\\n\"},strftime:{$meth:function(a){if(!O(a))throw new y(\"must be str, not \"+\nM(a));a=a.toString();const b=new A([1900,1,1,this.$hour,this.$min,this.$sec,0,1,-1].map(c=>new h(c)));return Ga(this,a,b)},$flags:{OneArg:!0},$textsig:null,$doc:\"format -> strftime() style string.\"},__format__:{$meth:function(a){if(!O(a))throw new y(\"must be str, not \"+M(a));return\"\"!==a.v?this.tp$getattr(Oa).tp$call([a]):this.tp$str()},$flags:{OneArg:!0},$textsig:null,$doc:\"Formats self with strftime.\"},utcoffset:{$meth:function(){if(this.$tzinfo===f)return f;var a=this.$tzinfo.tp$getattr(B);a=t(a,\n[f]);ua(\"utcoffset\",a);return a},$flags:{NoArgs:!0},$textsig:null,$doc:\"Return self.tzinfo.utcoffset(self).\"},tzname:{$meth:function(){if(this.$tzinfo===f)return f;var a=this.$tzinfo.tp$getattr(na);a=t(a,[f]);Va(a);return a},$flags:{NoArgs:!0},$textsig:null,$doc:\"Return self.tzinfo.tzname(self).\"},dst:{$meth:function(){if(this.$tzinfo===f)return f;var a=this.$tzinfo.tp$getattr(ja);a=t(a,[f]);ua(\"dst\",a);return a},$flags:{NoArgs:!0},$textsig:null,$doc:\"Return self.tzinfo.dst(self).\"},replace:{$meth:function(a,\nb){ma(\"replace\",a,0,5);let [c,d,e,g,l,r]=U(\"replace\",\"hour minute second microsecond tzinfo fold\".split(\" \"),a,b,[f,f,f,f,aa,f]);c===f&&(c=new h(this.$hour));d===f&&(d=new h(this.$min));e===f&&(e=new h(this.$sec));g===f&&(g=new h(this.$micro));l===aa&&(l=this.$tzinfo);r===f&&(r=new h(this.$fold));return this.ob$type.tp$call([c,d,e,g,l],[\"fold\",r])},$flags:{FastCall:!0},$textsig:null,$doc:\"Return time with new specified fields.\"},__reduce_ex__:{$meth(a){return new A([this.ob$type,new A(this.$getState(La(a)))])},\n$flags:{OneArg:!0},$textsig:null,$doc:\"__reduce_ex__(proto) -> (cls, state)\"},__reduce__:{$meth(){return this.tp$getattr(new p(\"__reduce_ex__\")).tp$call([new h(2)])},$flags:{NoArgs:!0},$textsig:null,$doc:\"__reduce__() -> (cls, state)\"}},classmethods:{fromisoformat:{$meth:function(a){if(!O(a))throw new y(\"fromisoformat: argument must be str\");a=a.toString();try{return this.tp$call(Ua(a))}catch(b){throw new x(\"Invalid isofrmat string: '\"+a+\"'\");}},$flags:{OneArg:!0},$textsig:null,$doc:\"string -> time from time.isoformat() output\"}},\ngetsets:{hour:{$get(){return new h(this.$hour)}},minute:{$get(){return new h(this.$min)}},second:{$get(){return new h(this.$sec)}},microsecond:{$get(){return new h(this.$micro)}},tzinfo:{$get(){return this.$tzinfo}},fold:{$get(){return new h(this.$fold)}}},proto:{$cmp(a,b){var c=this.$tzinfo;const d=a.$tzinfo;let e;var g;e=g=f;c===d?c=!0:(e=t(this.tp$getattr(B)),g=t(a.tp$getattr(B)),c=N(e,g,\"Eq\"));if(c)return z([this.$hour,this.$min,this.$sec,this.$micro],[a.$hour,a.$min,a.$sec,a.$micro]);if(e===\nf||g===f){if(\"Eq\"===b||\"NotEq\"===b)return 2;throw new y(\"cannot compare naive and aware times\");}b=60*this.$hour+this.$min-V(e.nb$floor_divide(ca));g=60*a.$hour+a.$min-V(g.nb$floor_divide(ca));return z([b,this.$sec,this.$micro],[g,a.$sec,a.$micro])},$tzstr(){const a=t(this.tp$getattr(B));return Ra(a)},$getState(a=3){let [b,c]=F(this.$micro,256),[d,e]=F(b,256),g=this.$hour;this.$fold&&3<a&&(g+=128);a=new Z([g,this.$min,this.$sec,d,e,c]);return this.$tzinfo===f?[a]:[a,this.$tzinfo]},$setState(a,b){const [c,\nd,e,g,l,r]=a;127<c?(this.$fold=1,this.$hour=c-128):(this.$fold=0,this.$hour=c);this.$min=d;this.$sec=e;this.$micro=(g<<8|l)<<8|r;this.$tzinfo=b}}});L.prototype.min=new L(0,0,0);L.prototype.max=new L(23,59,59,999999);L.prototype.resolution=new m;const E=q.datetime=W(\"datetime.datetime\",{base:I,constructor:function(a,b,c,d=0,e=0,g=0,l=0,r=null,w=0){this.$year=a;this.$month=b;this.$day=c;this.$hour=d;this.$min=e;this.$sec=g;this.$micro=l;this.$tzinfo=r||f;this.$fold=w;this.$hashcode=-1},slots:{tp$new(a,\nb){ma(\"datetime\",a,0,9);let [c,d,e,g,l,r,w,k,u]=U(\"time\",\"year month day hour minute second microsecond tzinfo fold\".split(\" \"),a,b,[null,null,C,C,C,C,f,C]);var D;if(c instanceof Z&&10===(D=c.valueOf()).length&&12>=(D[2]&127))return a=new this.constructor,a.$setState(D,null===d?f:d),a;[c,d,e]=Wa(c,d,e);[g,l,r,w,u]=Xa(g,l,r,w,u);Ha(k);if(this===E.prototype)return new E(c,d,e,g,l,r,w,k,u);D=new this.constructor;E.call(D,c,d,e,g,l,r,w,k,u);return D},$r(){var a=[this.$year,this.$month,this.$day,this.$hour,\nthis.$min,this.$sec,this.$micro];0===a[a.length-1]&&a.pop();0===a[a.length-1]&&a.pop();a=`${this.tp$name}(${a.join(\", \")})`;this.$tzinfo!==f&&(a=a.slice(0,-1)+\", tzinfo=\"+ha(this.$tzinfo)+\")\");this.$fold&&(a=a.slice(0,-1)+\", fold=1)\");return new p(a)},tp$str(){return this.tp$getattr(Ba).tp$call([],[\"sep\",new p(\" \")])},tp$richcompare(a,b){if(a instanceof E)return Y(this,a,b);if(!(a instanceof I))return H;if(\"Eq\"===b||\"NotEq\"===b)return\"NotEq\"===b;throw new y(`can't compare '${M(this)}' to '${M(a)}'`);\n},tp$as_number:!0,nb$add(a){if(!(a instanceof m))return H;let b=new m(this.$toOrdinal(),3600*this.$hour+60*this.$min+this.$sec,this.$micro);b=v(b,a,\"Add\");let [c,d]=F(b.$secs,3600),[e,g]=F(d,60);if(0<b.$days&&3652059>=b.$days)return this.ob$type.tp$getattr(new p(\"combine\")).tp$call([I.tp$call(Da(b.$days)),new L(c,e,g,b.$micro,this.$tzinfo)]);throw new R(\"result out of range\");},nb$subtract(a){if(!(a instanceof E))return a instanceof m?this.nb$add(a.nb$negative()):H;var b=this.$toOrdinal(),c=a.$toOrdinal();\nb=new m(b-c,this.$sec+60*this.$min+3600*this.$hour-(a.$sec+60*a.$min+3600*a.$hour),this.$micro-a.$micro);if(this.$tzinfo===a.$tzinfo)return b;c=t(this.tp$getattr(B));a=t(a.tp$getattr(B));if(N(c,a,\"Eq\"))return b;if(c===f||a===f)throw new y(\"cannot mix naive and timezone-aware time\");return b.nb$add(a).nb$subtract(c)},nb$reflected_subtract:null,tp$hash(){if(-1===this.$hashcode){var a=this.$fold?t(this.tp$getattr(X),[],[\"fold\",C]):this;const b=t(a.tp$getattr(B));b===f?this.$hashcode=T(a.$getState()[0]):\n(a=ba(this.$year,this.$month,this.$day),this.$hashcode=T((new m(a,3600*this.$hour+60*this.$min+this.$sec,this.$micro)).nb$subtract(b)))}return this.$hashcode}},methods:{date:{$meth:function(){return new I(this.$year,this.$month,this.$day)},$flags:{NoArgs:!0},$textsig:null,$doc:\"Return date object with same year, month and day.\"},time:{$meth:function(){return new L(this.$hour,this.$min,this.$sec,this.$micro,f,this.$fold)},$flags:{NoArgs:!0},$textsig:null,$doc:\"Return time object with same time but with tzinfo=None.\"},\ntimetz:{$meth:function(){return new L(this.$hour,this.$min,this.$sec,this.$micro,this.$tzinfo,this.$fold)},$flags:{NoArgs:!0},$textsig:null,$doc:\"Return time object with same time and tzinfo.\"},ctime:{$meth:function(){const a=this.$toOrdinal()%7||7;return new p(`${$a[a]} ${Za[this.$month]} ${n(this.$day,\" \",2)} ${n(this.$hour,\"0\",2)}:${n(this.$min,\"0\",2)}:${n(this.$sec,\"0\",2)} ${n(this.$year,\"0\",4)}`)},$flags:{NoArgs:!0},$textsig:null,$doc:\"Return ctime() style string.\"},timetuple:{$meth:function(){let a=\nt(this.tp$getattr(ja));a=a===f?-1:S(a)?1:0;return Fa(this.$year,this.$month,this.$day,this.$hour,this.$min,this.$sec,a)},$flags:{NoArgs:!0},$textsig:null,$doc:\"Return time tuple, compatible with time.localtime().\"},timestamp:{$meth:function(){if(this.$tzinfo===f){var a=this.$mkTime();a=la(a);return new Q(a+this.$micro/1E6)}a=v(this,ab,\"Sub\");return new Q(((86400*a.$days+a.$secs)*10**6+a.$micro)/10**6)},$flags:{NoArgs:!0},$textsig:null,$doc:\"Return POSIX timestamp as float.\"},utctimetuple:{$meth:function(){const a=\nt(this.tp$getattr(B));let b=this;S(a)&&(b=v(b,a,\"Sub\"));return Fa(b.$year,b.$month,b.$day,b.$hour,b.$min,b.$sec,0)},$flags:{NoArgs:!0},$textsig:null,$doc:\"Return UTC time tuple, compatible with time.localtime().\"},isoformat:{$meth:function(a,b){if(!O(a))throw new y(\"sep must be str, not \"+M(a));a=`${n(this.$year,\"0\",4)}-${n(this.$month,\"0\",2)}-${n(this.$day,\"0\",2)}`+a.toString();a+=Qa(this.$hour,this.$min,this.$sec,this.$micro,b);b=t(this.tp$getattr(B));(b=Ra(b))&&(a+=b);return new p(a)},$flags:{NamedArgs:[\"sep\",\n\"timespec\"],Defaults:[new p(\"T\"),Ma]},$textsig:null,$doc:\"[sep] -> string in ISO 8601 format, YYYY-MM-DDT[HH[:MM[:SS[.mmm[uuu]]]]][+HH:MM].\\nsep is used to separate the year from the time, and defaults to 'T'.\\ntimespec specifies what components of the time to include (allowed values are 'auto', 'hours', 'minutes', 'seconds', 'milliseconds', and 'microseconds').\\n\"},utcoffset:{$meth:function(){if(this.$tzinfo===f)return f;var a=this.$tzinfo.tp$getattr(B);a=t(a,[this]);ua(\"utcoffset\",a);return a},\n$flags:{NoArgs:!0},$textsig:null,$doc:\"Return self.tzinfo.utcoffset(self).\"},tzname:{$meth:function(){if(this.$tzinfo===f)return f;var a=this.$tzinfo.tp$getattr(na);a=t(a,[this]);Va(a);return a},$flags:{NoArgs:!0},$textsig:null,$doc:\"Return self.tzinfo.tzname(self).\"},dst:{$meth:function(){if(this.$tzinfo===f)return f;var a=this.$tzinfo.tp$getattr(ja);a=t(a,[this]);ua(\"dst\",a);return a},$flags:{NoArgs:!0},$textsig:null,$doc:\"Return self.tzinfo.dst(self).\"},replace:{$meth:function(a,b){ma(\"replace\",\na,0,8);let [c,d,e,g,l,r,w,k,u]=U(\"replace\",\"year month day hour minute second microsecond tzinfo fold\".split(\" \"),a,b,[f,f,f,f,f,f,f,aa,f]);c===f&&(c=new h(this.$year));d===f&&(d=new h(this.$month));e===f&&(e=new h(this.$day));g===f&&(g=new h(this.$hour));l===f&&(l=new h(this.$min));r===f&&(r=new h(this.$sec));w===f&&(w=new h(this.$micro));k===aa&&(k=this.$tzinfo);u===f&&(u=new h(this.$fold));return this.ob$type.tp$call([c,d,e,g,l,r,w,k],[\"fold\",u])},$flags:{FastCall:!0},$textsig:null,$doc:\"Return datetime with new specified fields.\"},\nastimezone:{$meth:function(a){if(a===f)a=this.$localTimezone();else if(!(a instanceof Ia))throw new y(\"tz argument must be an instance of tzinfo\");var b=this.$tzinfo;let c;b===f?(b=this.$localTimezone(),c=t(b.tp$getattr(B),[this])):(c=t(b.tp$getattr(B),[this]),c===f&&(b=t(this.tp$getattr(X),[],[\"tzinfo\",f]).$localTimezone(),c=t(b.tp$getattr(B),[this])));if(a===b)return this;b=t(this.nb$subtract(c).tp$getattr(X),[],[\"tzinfo\",a]);return a.tp$getattr(jb).tp$call([b])},$flags:{NamedArgs:[\"tz\"],Defaults:[f]},\n$textsig:null,$doc:\"tz -> convert to local time in new timezone tz\\n\"},__reduce_ex__:{$meth(a){return new A([this.ob$type,new A(this.$getState(La(a)))])},$flags:{OneArg:!0},$textsig:null,$doc:\"__reduce_ex__(proto) -> (cls, state)\"},__reduce__:{$meth(){return this.tp$getattr(new p(\"__reduce_ex__\")).tp$call([new h(2)])},$flags:{NoArgs:!0},$textsig:null,$doc:\"__reduce__() -> (cls, state)\"}},classmethods:{now:{$meth:function(a){const b=P.time.tp$call([]);return this.tp$getattr(Na).tp$call([b,a])},$flags:{NamedArgs:[\"tz\"],\nDefaults:[f]},$textsig:\"($type, /, tz=None)\",$doc:\"Returns new datetime object representing current time local to tz.\\n\\n  tz\\n    Timezone object.\\n\\nIf no tz is specified, uses local timezone.\"},utcnow:{$meth:function(){const a=P.time.tp$call([]);return this.tp$getattr(ib).tp$call([a])},$flags:{NoArgs:!0},$textsig:null,$doc:\"Return a new datetime representing UTC day and time.\"},fromtimestamp:{$meth:function(a,b){Ha(b);return this.prototype.$fromtimestamp.call(this,a,b!==f,b)},$flags:{NamedArgs:[\"timestamp\",\n\"tz\"],Defaults:[f]},$textsig:null,$doc:\"timestamp[, tz] -> tz's local time from POSIX timestamp.\"},utcfromtimestamp:{$meth:function(a){return this.prototype.$fromtimestamp.call(this,a,!0,f)},$flags:{OneArg:!0},$textsig:null,$doc:\"Construct a naive UTC datetime from a POSIX timestamp.\"},strptime:{$meth:function(a,b){return null===pa?Sk.misceval.chain(Sk.importModule(\"_strptime\",!1,!0),c=>{pa=c.tp$getattr(new p(\"_strptime_datetime\"));return pa.tp$call([this,a,b])}):pa.tp$call([this,a,b])},$flags:{MinArgs:2,\nMaxArgs:2},$textsig:null,$doc:\"string, format -> new datetime parsed from a string (like time.strptime()).\"},combine:{$meth:function(a,b,c){if(!(a instanceof I))throw new y(\"date argument must be a date instance\");if(!(b instanceof L))throw new y(\"time argument must be a time instance\");c===aa&&(c=b.$tzinfo);a=[a.$year,a.$month,a.$day,b.$hour,b.$min,b.$sec,b.$micro].map(d=>new h(d));a.push(c);return this.tp$call(a,[\"fold\",new h(b.$fold)])},$flags:{NamedArgs:[\"date\",\"time\",\"tzinfo\"],Defaults:[aa]},\n$textsig:null,$doc:\"date, time -> datetime with same date and time fields\"},fromisoformat:{$meth:function(a){if(!O(a))throw new y(\"fromisoformat: argument must be str\");a=a.toString();const b=a.slice(0,10),c=a.slice(11);let d,e;try{d=Sa(b)}catch(g){throw new x(\"Invalid isoformat string: '\"+a+\"'\");}if(c)try{e=Ua(c)}catch(g){throw new x(\"Invalid isoformat string: '\"+a+\"'\");}else e=[C,C,C,C,f];return this.tp$call(d.concat(e))},$flags:{OneArg:!0},$textsig:null,$doc:\"string -> datetime from datetime.isoformat() output\"}},\ngetsets:{hour:{$get(){return new h(this.$hour)}},minute:{$get(){return new h(this.$min)}},second:{$get(){return new h(this.$sec)}},microsecond:{$get(){return new h(this.$micro)}},tzinfo:{$get(){return this.$tzinfo}},fold:{$get(){return new h(this.$fold)}}},proto:{$cmp(a,b){var c=this.$tzinfo;const d=a.$tzinfo;let e,g;e=g=f;if(c===d)c=!0;else{e=t(this.tp$getattr(B));g=t(a.tp$getattr(B));if(\"Eq\"===b||\"NotEq\"===b){c=t(this.tp$getattr(X),[],[\"fold\",new h(Number(!this.$fold))]);if(N(e,t(c.tp$getattr(B)),\n\"NotEq\"))return 2;c=t(a.tp$getattr(X),[],[\"fold\",new h(Number(!a.$fold))]);if(N(g,t(c.tp$getattr(B)),\"NotEq\"))return 2}c=N(e,g,\"Eq\")}if(c)return z([this.$year,this.$month,this.$day,this.$hour,this.$min,this.$sec,this.$micro],[a.$year,a.$month,a.$day,a.$hour,a.$min,a.$sec,a.$micro]);if(e===f||g===f){if(\"Eq\"===b||\"NotEq\"===b)return 2;throw new y(\"cannot compare naive and aware datetimes\");}a=this.nb$subtract(a);return 0>a.$days?-1:S(a)&&1||0},$mkTime(){function a(r){const [w,k,u,D,da,yb]=P.localtime.tp$call([r]).v;\nreturn E.tp$call([w,k,u,D,da,yb]).nb$subtract(b).nb$floor_divide(wa)}const b=new E(1970,1,1);var c=this.nb$subtract(b).nb$floor_divide(wa);let d=a(c).nb$subtract(c),e=c.nb$subtract(d),g=a(e);if(g.ob$eq(c)){var l=e.nb$add([new h(-86400),new h(86400)][this.$fold]);l=a(l).nb$subtract(l);if(d.ob$eq(l))return e}else l=g.nb$subtract(e);l=c.nb$subtract(l);if(a(l).ob$eq(c))return l;if(g.ob$eq(c))return e;c=e.ob$ge(l)?e:l;return[c,e===c?l:e][this.$fold]},$fromtimestamp(a,b,c){if(!fb(a))throw new y(\"a number is required, (got '\"+\nM(a)+\"'\");[d,a]=ka(a);var d=za(v(d,Pa,\"Mult\")).nb$int();d=d.v;a=a.v;1E6<=d?(a+=1,d-=1E6):0>d&&(--a,d+=1E6);a=new h(a);Number.isInteger(d)||(d=Math.trunc(d));d=new h(d);const e=b?P.gmtime:P.localtime;let [g,l,r,w,k,u]=e.tp$call([a]).v;u=new h(Math.min(V(u),59));b=t(this,[g,l,r,w,k,u,d,c]);if(c===f){[g,l,r,w,k,u]=e.tp$call([v(a,new h(86400),\"Sub\")]).v;var D=t(this,[g,l,r,w,k,u,d,c]);D=v(v(b,D,\"Sub\"),new m(0,86400),\"Sub\");0>D.$days&&([g,l,r,w,k,u]=e.tp$call([v(a,v(D,wa,\"FloorDiv\"),\"Add\")]).v,a=t(this,\n[g,l,r,w,k,u,d,c]),N(a,b,\"Eq\")&&(b.$fold=1))}else b=t(c.tp$getattr(new p(\"fromutc\")),[b]);return b},$localTimezone(){var a=this.$tzinfo===f?this.$mkTime():this.nb$subtract(ab).nb$floor_divide(wa);var b=P.localtime.tp$call([a]);E.tp$call(b.v.slice(0,6));a=b.tp$getattr(new p(\"tm_gmtoff\"));b=b.tp$getattr(new p(\"tm_zone\"));return new K(m.tp$call([C,a]),b)},$getState(a=3){let [b,c]=F(this.$year,256),[d,e]=F(this.$micro,256),[g,l]=F(d,256),r=this.$month;this.$fold&&3<a&&(r+=128);a=new Z([b,c,r,this.$day,\nthis.$hour,this.$min,this.$sec,g,l,e]);return this.$tzinfo===f?[a]:[a,this.$tzinfo]},$setState(a,b){const [c,d,e,g,l,r,w,k,u,D]=a;127<e?(this.$fold=1,this.$month=e-128):(this.$fold=0,this.$month=e);this.$year=256*c+d;this.$day=g;this.$hour=l;this.$min=r;this.$sec=w;this.$micro=(k<<8|u)<<8|D;this.$tzinfo=b}}});E.prototype.min=new E(1,1,1);E.prototype.max=new E(9999,12,31,23,59,59,999999);E.prototype.resolution=new m(0,0,1);const K=q.timezone=W(\"datetime.timezone\",{base:Ia,constructor:function(a,b){this.$offset=\na;this.$name=b||f;if(!N(this.$minoffset,a,\"LtE\")||!N(this.$maxoffset,a,\"GtE\"))throw new x(\"offset must be a timedelta strictly between -timedelta(hours=24) and timedelta(hours=24).\");},slots:{tp$new(a,b){let [c,d]=U(\"timezone\",[\"offset\",\"name\"],a,b,[null]);if(!(c instanceof m))throw new y(\"offset must be a timedelta\");if(null===d){if(!S(c))return this.utc;d=f}else if(!O(d))throw new y(\"name must be a string\");if(this===K.prototype)return new K(c,d);a=new this.constructor;K.call(a,c,d);return a},tp$richcompare(a,\nb){if(!(a instanceof K))return H;a=N(this.$offset,a.$offset,\"Eq\");return\"NotEq\"===b?!a:\"Eq\"===b?a:a&&db(b)?a:H},$r(){return this===this.utc?new p(\"datetime.timezone.utc\"):this.$name===f?new p(`${this.tp$name}(${ha(this.$offset)})`):new p(`${this.tp$name}(${ha(this.$offset)}, ${ha(this.$name)})`)},tp$str(){return this.tp$getattr(na).tp$call([f])},tp$hash(){return T(this.$offset)}},methods:{tzname:{$meth:function(a){if(a instanceof E||a===f)return this.$name===f?this.$nameFromOff(this.$offset):this.$name;\nthrow new y(\"tzname() argument must be a datetime instance or None\");},$flags:{OneArg:!0},$textsig:null,$doc:\"If name is specified when timezone is created, returns the name.  Otherwise returns offset as 'UTC(+|-)HH:MM'.\"},utcoffset:{$meth:function(a){if(a instanceof E||a===f)return this.$offset;throw new y(\"utcoffset() argument must be a datetime instance or None\");},$flags:{OneArg:!0},$textsig:null,$doc:\"Return fixed offset.\"},dst:{$meth:function(a){if(a instanceof E||a===f)return f;throw new y(\"dst() argument must be a datetime instance or None\");\n},$flags:{OneArg:!0},$textsig:null,$doc:\"Return None.\"},fromutc:{$meth:function(a){if(a instanceof E){if(a.$tzinfo!==this)throw new x(\"fromutc: dt.tzinfo is not self\");return v(a,this.$offset,\"Add\")}throw new y(\"fromutc() argument must be a datetime instance or None\");},$flags:{OneArg:!0},$textsig:null,$doc:\"datetime in UTC -> datetime in local time.\"},__getinitargs__:{$meth(){return this.$name===f?new A([this.$offset]):new A([this.$offset,this.$name])},$flags:{NoArgs:!0}}},proto:{$maxoffset:new m(0,\n86399,999999),$minoffset:new m(-1,0,1),$nameFromOff(a){if(!S(a))return new p(\"UTC\");let b;var c;let d,e;N(a,wb,\"Lt\")?(b=\"-\",a=a.nb$negative()):b=\"+\";[a,c]=J(a,ta);[d,c]=J(c,ca);e=c.$secs;return(c=c.$micro)?new p(`UTC${b}${n(a)}:${n(d)}:${n(e)}.${n(c,\"0\",6)}`):e?new p(`UTC${b}${n(a)}:${n(d)}:${n(e)}`):new p(`UTC${b}${n(a)}:${n(d)}`)}}});K.prototype.utc=new K(new m(0));K.prototype.min=new K(new m(0,-86340,0));K.prototype.max=new K(new m(0,86340,0));const ab=new E(1970,1,1,0,0,0,0,K.prototype.utc);return q})}\n;\n",
  "src/lib/dbhash.py": 3,
  "src/lib/decimal.py": 3,
  "src/lib/difflib.py": 3,
  "src/lib/dircache.py": 3,
  "src/lib/dis.py": 3,
  "src/lib/distutils/__init__.py": 3,
  "src/lib/distutils/command/__init__.py": 3,
  "src/lib/distutils/tests/__init__.py": 3,
  "src/lib/doctest.py": 3,
  "src/lib/document.js": 3,
  "src/lib/dumbdbm.py": 3,
  "src/lib/dummy_thread.py": 3,
  "src/lib/dummy_threading.py": 3,
  "src/lib/email/__init__.py": 3,
  "src/lib/email/mime/__init__.py": 3,
  "src/lib/email/test/data/__init__.py": 3,
  "src/lib/encodings/__init__.py": 3,
  "src/lib/filecmp.py": 3,
  "src/lib/fileinput.py": 3,
  "src/lib/fnmatch.py": 3,
  "src/lib/formatter.py": 3,
  "src/lib/fpformat.py": 3,
  "src/lib/fractions.js": 2,
  "src/lib/fractions.py": 3,
  "src/lib/ftplib.py": 3,
  "src/lib/functools.js": 1,
  "src/lib/genericpath.py": 3,
  "src/lib/getopt.py": 3,
  "src/lib/getpass.py": 3,
  "src/lib/gettext.py": 3,
  "src/lib/glob.py": 3,
  "src/lib/gzip.py": 3,
  "src/lib/hashlib.py": 3,
  "src/lib/heapq.py": 3,
  "src/lib/hmac.py": 3,
  "src/lib/hotshot/__init__.py": 3,
  "src/lib/htmlentitydefs.py": 3,
  "src/lib/htmllib.py": 3,
  "src/lib/httplib.py": 3,
  "src/lib/idlelib/Icons/__init__.py": 3,
  "src/lib/idlelib/__init__.py": 3,
  "src/lib/ihooks.py": 3,
  "src/lib/image.js": 3,
  "src/lib/imaplib.py": 3,
  "src/lib/imghdr.py": 3,
  "src/lib/imputil.py": 3,
  "src/lib/io.py": 3,
  "src/lib/itertools.js": 1,
  "src/lib/json.js": "'use strict';function $builtinmodule(){function E(a){return new ca(()=>{throw new da(a+\" is not yet implemented in skulpt\");})}function ea(a,b,c,d,g,r,h,k,x){null!==d&&\"string\"!==typeof d&&(d=\" \".repeat(d));let t,u;null!==a?(t=n=>{if(a.has(n))throw new F(\"Circular reference detected\");a.add(n)},u=n=>a.delete(n)):(t=n=>{},u=n=>{});let p,e;null!==d?(p=(n,m)=>{m+=1;const f=\"\\n\"+d.repeat(m);return[n+f,m,h+f]},e=(n,m,f)=>n+=\"\\n\"+d.repeat(f-1)+m):(p=(n,m)=>[n,m,h],e=(n,m,f)=>n+m);const q=(n,m)=>{t(n);m=\nz(b(n),m);u(n);return m},z=(n,m=0)=>String(J(n,{stringHook:f=>c(f),numberHook:(f,l)=>g(l),bigintHook:f=>f.toString(),dictHook:f=>{var l=f;f=m;if(l.sq$length()){t(l);var v,B;[v,f,B]=p(\"{\",f);var C=!0;k&&(l=K(l.tp$getattr(fa)),l=ha(l),l=K(L,[l]));for(let [y,ia]of l.$items()){const A=y.valueOf(),M=typeof A;if(\"string\"===M)y=A;else if(\"number\"===M)y=g(y);else if(\"boolean\"===M||null===A)y=String(A);else if(JSBI.__isBigInt(A))y=A.toString();else if(x)continue;else throw new G(\"keys must be str, int, float, bool or None, not \"+\nN(y));C?C=!1:v+=B;v+=c(y);v+=r;v+=z(ia,f)}u(l);f=e(v,\"}\",f)}else f=\"{}\";return f},arrayHook:f=>{var l=m;if(f.length){t(f);var v,B;[v,l,B]=p(\"[\",l);var C=!0;for(let y of f)C?C=!1:v+=B,v+=z(y,l);u(f);f=e(v,\"]\",l)}else f=\"[]\";return f},setHook:f=>q(f,m),funcHook:(f,l)=>q(l,m),objecthook:(f,l)=>q(l,m),unhandledHook:f=>q(f,m)}));return z}function ja(a){const {parse_object:b,parse_array:c,parse_string:d,parse_float:g,parse_int:r,parse_constant:h,object_hook:k,object_pairs_hook:x,memo:t}=a,u=(p,e)=>{const q=\np[e];if(void 0===q)return[q,e];if('\"'===q)return d(p,e+1);if(\"{\"===q)return b(p,e+1,u,k,x,t);if(\"[\"===q)return c(p,e+1,u);if(\"n\"===q&&\"null\"===p.substring(e,e+4))return[S,e+4];if(\"t\"===q&&\"true\"===p.substring(e,e+4))return[ka,e+4];if(\"f\"===q&&\"false\"===p.substring(e,e+5))return[la,e+5];const z=p.substring(e).match(ma);if(null!==z){const [n,m,f,l]=z;return[f||l?g(m+(f||\"\")+(l||\"\")):r(m),e+n.length]}return\"N\"===q&&\"NaN\"===p.substring(e,e+3)?[h(\"NaN\"),e+3]:\"I\"==q&&\"Infinity\"===p.substring(e,e+8)?[h(\"Infinity\"),\ne+8]:\"-\"==q&&\"-Infinity\"===p.substring(e,e+9)?[h(\"-Infinity\"),e+9]:[void 0,e]};return function(p,e){try{return u(p,e)}finally{for(const q in t)delete t[q]}}}function T(a,b){var c=a.substring(b-1).match(na);if(null===c)throw new w(\"Unterminated string starting at\",a,b-1);try{return[new H(JSON.parse(c[0])),b+c[0].length-1]}catch(d){throw c=(c=d.message.match(/(?:column|position) (\\d+)/))&&Number(c[1]),b=b+(c||0)-(void 0===d.columnNumber?1:2),c=d.message.replace(\"JSON.parse: \",\"\").replace(/ at line \\d+ column \\d+ of the JSON data/,\n\"\").replace(/ in JSON at position \\d+$/,\"\"),new w(c,a,b);}}function oa(a,b,c){const d=[];let g=a[b];const r=()=>{if(\" \"===g||\"\\t\"===g||\"\\n\"===g||\"\\r\"===g){const h=a.substring(b).match(O);b+=h[0].length;g=a[b]}};r();if(\"]\"===g)return[new I([]),b+1];for(;;){let h;[h,b]=c(a,b);if(void 0===h)throw new w(\"Expecting value\",a,b);d.push(h);g=a[b];r();b++;if(\"]\"===g)break;else if(\",\"!==g)throw new w(\"Expecting ',' delimiter\",a,b-1);g=a[b];r()}return[new I(d),b]}function pa(a,b,c,d,g,r={}){let h=[],k=a[b];\nconst x=function(e){const q=e.toString();return q in r?r[q]:r[q]=e},t=()=>{if(\" \"===k||\"\\t\"===k||\"\\n\"===k||\"\\r\"===k){const e=a.substring(b).match(O);b+=e[0].length;k=a[b]}};if('\"'!==k){t();if(\"}\"===k){if(null!==g)return[g(new I([])),b+1];h=new L([]);null!==d&&(h=d(h));return[h,b+1]}if('\"'!==k)throw new w(\"Expecting property name enclosed in double quotes\",a,b);}b+=1;let u,p;for(;;){[u,b]=T(a,b);u=x(u);if(\":\"!==(k=a[b])&&(t(),\":\"!==a[b]))throw new w(\"Expecting ':' delimiter\",a,b);k=a[++b];t();[p,b]=\nc(a,b);if(void 0===p)throw new w(\"Expecting value\",a,b);k=a[b];h.push([u,p]);t();b++;if(\"}\"===k)break;else if(\",\"!==k)throw new w(\"Expecting ',' delimiter\",a,b-1);k=a[b];t();b++;if('\"'!==k)throw new w(\"Expecting property name enclosed in double quotes\",a,b-1);}if(null!==g)return[g(new I(h.map(e=>new qa(e)))),b];h=new L(h.flat());null!==d&&(h=d(h));return[h,b]}function U(a){return null===a||a===S?null:b=>K(a,[P(b)])}const {builtin:{str:H,float_:Q,list:I,tuple:qa,dict:L,func:ca,TypeError:G,ValueError:F,\nNotImplementedError:da,sorted:ha,none:{none$:S},bool:{true$:ka,false$:la},checkString:ra,checkBytes:sa},ffi:{toPy:P,toJs:J,toPyFloat:ta,toPyInt:ua,isTrue:D},abstr:{typeName:N,buildNativeClass:va,checkOneArg:V,setUpModuleMethods:wa,copyKeywordsToNamedArgs:W},misceval:{objectRepr:X,callsimArray:K}}=Sk,R={__name__:new H(\"json\"),__all__:P(\"dump dumps load loads JSONDecoder JSONDecodeError JSONEncoder\".split(\" \")),dump:E(\"dump\"),load:E(\"load\"),JSONDecoder:E(\"JSONDecoder\"),JSONEncoder:E(\"JSONEncoder\")},\nw=R.JSONDecodeError=va(\"json.JSONDecodeError\",{base:F,constructor:function(a,b,c){var d=b.slice(0,c);const g=d.split(\"\\n\").length;d=c-d.lastIndexOf(\"\\n\");F.call(this,`${a}: line ${g} column ${d} (char ${c})`);this.$msg=a;this.$doc=b;this.$pos=c;this.$lineno=g;this.$colno=d},getsets:Object.fromEntries([\"msg\",\"doc\",\"pos\",\"lineno\",\"colno\"].map(a=>[a,{$get(){return P(this[\"$\"+a])}}]))});class Y{constructor(a,b,c,d,g,r,h,k){this.skipkeys=a;this.ensure_ascii=b;this.check_circular=c;this.allow_nan=d;this.indent=\ng;this.separators=r;this.sort_keys=k;this.item_separator=\", \";this.key_separator=\": \";null!==this.separators?[this.item_separator,this.key_separator]=this.separators:null!==this.indent&&(this.item_separator=\",\");null!==h&&(this.default=h);this.encoder=this.make_encoder()}default(a){throw new G(`Object of type ${N(a)} is not JSON serializable`);}encode(a){return new H(this.encoder(a))}make_encoder(){let a;a=this.check_circular?new Set:null;return ea(a,this.default,JSON.stringify,this.indent,(b,c=this.allow_nan)=>\n{var d=b.valueOf();if(Number.isFinite(d))return X(b);d=d.toString();if(!c)throw new F(\"Out of range float values are not JSON compliant: \"+X(b));return d},this.key_separator,this.item_separator,this.sort_keys,this.skipkeys)}}const fa=new H(\"items\"),Z=[!1,!0,!0,!0,null,null,null,!1],xa=new Y(...Z),ma=/(-?(?:0|[1-9]\\d*))(\\.\\d+)?([eE][-+]?\\d+)?/,na=/\"[^\"\\\\]*(?:\\\\.[^\"\\\\]*)*\"/m,O=/[ \\t\\n\\r]*/,ya={NaN:new Q(NaN),Infinity:new Q(Infinity),\"-Infinity\":new Q(-Infinity)};class aa{constructor(a,b,c,d,g){this.object_hook=\na;this.parse_float=b||ta;this.parse_int=c||ua;this.parse_constant=d||(r=>ya[r]);this.object_pairs_hook=g;this.parse_object=pa;this.parse_array=oa;this.parse_string=T;this.memo={};this.scan_once=ja(this)}white(a,b){a=(0===b?a:a.substring(b)).match(O);null!==a&&(b+=a[0].length);return b}decode(a){a=a.toString();let [b,c]=this.scan_once(a,this.white(a,0));if(void 0===b)throw new w(\"Expecting value\",a,c);c=this.white(a,c);if(c!==a.length)throw new w(\"Extra data\",a,c);return b}}const ba=Array(5).fill(null),\nza=new aa(...ba);wa(\"json\",R,{loads:{$meth(a,b){V(\"dumps\",a);a=a[0];if(!ra(a))if(sa(a))a=(new TextDecoder).decode(a.valueOf());else throw new G(`the JSON object must be str or bytes, not ${N(a)}`);b=W(\"dumps\",[\"object_hook\",\"parse_float\",\"parse_int\",\"parse_constant\",\"object_pairs_hook\"],[],b,ba).map(U);return b.every(c=>null===c)?za.decode(a):(new aa(...b)).decode(a)},$doc:\"Deserialize ``s`` (a ``str`` or ``bytes`` instance containing a JSON document) to a Python object.\",$flags:{FastCall:!0}},dumps:{$meth(a,\nb){V(\"dumps\",a);a=a[0];let [c,d,g,r,h,k,x,t]=W(\"loads\",\"skipkeys ensure_ascii check_circular allow_nan indent separators default sort_keys\".split(\" \"),[],b,Z);c=D(c);d=D(d);g=D(g);r=D(r);h=J(h);k=J(k);x=U(x);t=D(t);if(!c&&d&&g&&r&&null===h&&null===k&&null===x&&!t)return xa.encode(a);if(null!==k&&(!Array.isArray(k)||2!==k.length||\"string\"!==typeof k[0]||\"string\"!==typeof k[1]))throw new G(\"separators shuld be a list or tuple of strings of length 2\");return(new Y(c,d,g,r,h,k,x,t)).encode(a)},$doc:\"Serialize ``obj`` to a JSON formatted ``str``\",\n$flags:{FastCall:!0}}});return R};\n",
  "src/lib/keyword.js": 1,
  "src/lib/lib-dynload/__init__.py": 3,
  "src/lib/lib-tk/__init__.py": 3,
  "src/lib/lib2to3/__init__.py": 3,
  "src/lib/lib2to3/fixes/__init__.py": 3,
  "src/lib/lib2to3/pgen2/__init__.py": 3,
  "src/lib/lib2to3/tests/__init__.py": 3,
  "src/lib/linecache.py": 3,
  "src/lib/locale.py": 3,
  "src/lib/logging/__init__.py": 3,
  "src/lib/macpath.py": 3,
  "src/lib/macurl2path.py": 3,
  "src/lib/mailbox.py": 3,
  "src/lib/mailcap.py": 3,
  "src/lib/markupbase.py": 3,
  "src/lib/math.js": 1,
  "src/lib/md5.py": 3,
  "src/lib/mhlib.py": 3,
  "src/lib/mimetools.py": 3,
  "src/lib/mimetypes.py": 3,
  "src/lib/mimify.py": 3,
  "src/lib/modulefinder.py": 3,
  "src/lib/multifile.py": 3,
  "src/lib/multiprocessing/__init__.py": 3,
  "src/lib/multiprocessing/dummy/__init__.py": 3,
  "src/lib/mutex.py": 3,
  "src/lib/netrc.py": 3,
  "src/lib/new.py": 3,
  "src/lib/nntplib.py": 3,
  "src/lib/ntpath.py": 3,
  "src/lib/nturl2path.py": 3,
  "src/lib/numbers.py": 3,
  "src/lib/opcode.py": 3,
  "src/lib/operator.js": 1,
  "src/lib/optparse.py": 3,
  "src/lib/os.py": 3,
  "src/lib/os2emxpath.py": 3,
  "src/lib/pdb.py": 3,
  "src/lib/pickle.py": 3,
  "src/lib/pickletools.py": 3,
  "src/lib/pipes.py": 3,
  "src/lib/pkgutil.py": 3,
  "src/lib/platform.js": 3,
  "src/lib/platform.py": 3,
  "src/lib/plistlib.py": 3,
  "src/lib/popen2.py": 3,
  "src/lib/poplib.py": 3,
  "src/lib/posixfile.py": 3,
  "src/lib/posixpath.py": 3,
  "src/lib/pprint.py": 3,
  "src/lib/processing.js": 3,
  "src/lib/profile.py": 3,
  "src/lib/pstats.py": 3,
  "src/lib/pty.py": 3,
  "src/lib/py_compile.py": 3,
  "src/lib/pyclbr.py": 3,
  "src/lib/pydoc.py": 3,
  "src/lib/pydoc_topics.py": 3,
  "src/lib/pythonds/__init__.py": 3,
  "src/lib/pythonds/basic/__init__.py": 3,
  "src/lib/pythonds/basic/deque.py": 3,
  "src/lib/pythonds/basic/queue.py": 3,
  "src/lib/pythonds/basic/stack.py": 3,
  "src/lib/pythonds/graphs/__init__.py": 3,
  "src/lib/pythonds/graphs/adjGraph.py": 3,
  "src/lib/pythonds/graphs/priorityQueue.py": 3,
  "src/lib/pythonds/trees/__init__.py": 3,
  "src/lib/pythonds/trees/balance.py": 3,
  "src/lib/pythonds/trees/binaryTree.py": 3,
  "src/lib/pythonds/trees/binheap.py": 3,
  "src/lib/pythonds/trees/bst.py": 3,
  "src/lib/quopri.py": 3,
  "src/lib/random.py": 1,
  "src/lib/re.js": 1,
  "src/lib/repr.py": 3,
  "src/lib/rexec.py": 3,
  "src/lib/rfc822.py": 3,
  "src/lib/rlcompleter.py": 3,
  "src/lib/robotparser.py": 3,
  "src/lib/runpy.py": 3,
  "src/lib/sched.py": 3,
  "src/lib/sets.py": 3,
  "src/lib/sgmllib.py": 3,
  "src/lib/sha.py": 3,
  "src/lib/shelve.py": 3,
  "src/lib/shlex.py": 3,
  "src/lib/shutil.py": 3,
  "src/lib/signal.js": 3,
  "src/lib/site.py": 3,
  "src/lib/smtpd.py": 3,
  "src/lib/smtplib.py": 3,
  "src/lib/sndhdr.py": 3,
  "src/lib/socket.py": 3,
  "src/lib/sqlite3/__init__.py": 3,
  "src/lib/sre.py": 3,
  "src/lib/sre_compile.py": 3,
  "src/lib/sre_constants.py": 3,
  "src/lib/sre_parse.py": 3,
  "src/lib/ssl.py": 3,
  "src/lib/stat.py": 3,
  "src/lib/statvfs.py": 3,
  "src/lib/string.js": 1,
  "src/lib/stringold.py": 3,
  "src/lib/stringprep.py": 3,
  "src/lib/struct.py": 3,
  "src/lib/subprocess.py": 3,
  "src/lib/sunau.py": 3,
  "src/lib/sunaudio.py": 3,
  "src/lib/symbol.py": 3,
  "src/lib/symtable.py": 3,
  "src/lib/tabnanny.py": 3,
  "src/lib/tarfile.py": 3,
  "src/lib/telnetlib.py": 3,
  "src/lib/tempfile.py": 3,
  "src/lib/test/__init__.py": 3,
  "src/lib/test/ann_module.py": 3,
  "src/lib/test/ann_module2.py": 3,
  "src/lib/test/ann_module3.py": 3,
  "src/lib/test/bad_getattr.py": 3,
  "src/lib/test/bad_getattr2.py": 3,
  "src/lib/test/bad_getattr3.py": 3,
  "src/lib/test/decimaltestdata/__init__.py": 3,
  "src/lib/test/good_getattr.py": 3,
  "src/lib/test/test_support.py": 3,
  "src/lib/textwrap.py": 3,
  "src/lib/this.py": 3,
  "src/lib/threading.py": 3,
  "src/lib/time.js": "'use strict';var $builtinmodule=function(d){function h(a,b,c){a=a.toString();return Array(b-a.length+1).join(c||\" \")+a}function q(){var a=new Date(2002,6,1);return Math.max((new Date(2002,0,1)).getTimezoneOffset(),a.getTimezoneOffset())}function m(a){var b=/\\((.*)\\)/.exec(a.toString()),c;null!=Sk.global.navigator&&(c=Sk.global.navigator.userLanguage||Sk.global.navigator.language);if(b&&1<b.length)return b[1];if(void 0===c)return null;try{return b=a.toLocaleString(c,{timeZoneName:\"short\"}).split(\" \"),\nb[b.length-1]}catch(e){return null}}function k(a,b){var c=new Date;a&&(Sk.builtin.pyCheckType(\"secs\",\"number\",Sk.builtin.checkNumber(a)),a=Sk.builtin.asnum$(a),c.setTime(1E3*a));{b=b||!1;let r;if(b)r=[new Sk.builtin.str(\"UTC\"),new Sk.builtin.int_(0)];else{a=-c.getTimezoneOffset()/60;var e=(0>a?\"-\":\"+\")+(\"\"+Math.abs(a)).padStart(2,\"0\");r=[new Sk.builtin.str(e),new Sk.builtin.int_(3600*a)]}a=Sk.builtin.assk$(b?c.getUTCFullYear():c.getFullYear());e=Sk.builtin.assk$((b?c.getUTCMonth():c.getMonth())+1);\nvar t=Sk.builtin.assk$(b?c.getUTCDate():c.getDate()),x=Sk.builtin.assk$(b?c.getUTCHours():c.getHours()),y=Sk.builtin.assk$(b?c.getUTCMinutes():c.getMinutes()),z=Sk.builtin.assk$(b?c.getUTCSeconds():c.getSeconds()),A=Sk.builtin.assk$(((b?c.getUTCDay():c.getDay())+6)%7),u=Sk.builtin,B=u.assk$,f=b,l=(f=f||!1)?c.getUTCMonth():c.getMonth(),n=f?c.getUTCDate():c.getDate();n=[0,31,59,90,120,151,181,212,243,273,304,334][l]+n;if(l=1<l)f=f?c.getUTCFullYear():c.getFullYear(),l=0!=(f&3)?!1:0!=f%100||0==f%400;\nl&&n++;c=new g([a,e,t,x,y,z,A,B.call(u,n),Sk.builtin.assk$(b?0:c.getTimezoneOffset()<q()?1:0)],r)}return c}function v(a){Sk.builtin.pyCheckArgsLen(\"asctime\",arguments.length,0,1);!a||Sk.builtin.checkNone(a)?a=k():a instanceof g||(a=new g(a));if(a instanceof Sk.builtin.tuple&&9==a.v.length){var b=[];b.push(C[Sk.builtin.asnum$(a.v[6])]);b.push(D[Sk.builtin.asnum$(a.v[1])-1]);b.push(h(Sk.builtin.asnum$(a.v[2]).toString(),2,\"0\"));b.push(h(Sk.builtin.asnum$(a.v[3]).toString(),2,\"0\")+\":\"+h(Sk.builtin.asnum$(a.v[4]).toString(),\n2,\"0\")+\":\"+h(Sk.builtin.asnum$(a.v[5]).toString(),2,\"0\"));b.push(h(Sk.builtin.asnum$(a.v[0]).toString(),4,\"0\"));return new Sk.builtin.str(b.join(\" \"))}}function w(a){Sk.builtin.pyCheckArgsLen(\"mktime\",arguments.length,1,1);if(a instanceof Sk.builtin.tuple&&9==a.v.length){var b=new Date(Sk.builtin.asnum$(a.v[0]),Sk.builtin.asnum$(a.v[1])-1,Sk.builtin.asnum$(a.v[2]),Sk.builtin.asnum$(a.v[3]),Sk.builtin.asnum$(a.v[4]),Sk.builtin.asnum$(a.v[5]));return Sk.builtin.assk$(b.getTime()/1E3,void 0)}throw new Sk.builtin.TypeError(\"mktime() requires a struct_time or 9-tuple\");\n}d={};d.__package__=new Sk.builtin.str(\"\");var g=Sk.builtin.make_structseq(\"time\",\"struct_time\",{tm_year:\"year, for example, 1993\",tm_mon:\"month of year, range [1, 12]\",tm_mday:\"day of month, range [1, 31]\",tm_hour:\"hours, range [0, 23]\",tm_min:\"minutes, range [0, 59]\",tm_sec:\"seconds, range [0, 61]\",tm_wday:\"day of week, range [0, 6], Monday is 0\",tm_yday:\"day of year, range [1, 366]\",tm_isdst:\"1 if summer time is in effect, 0 if not, and -1 if unknown\"},{tm_zone:\"abbreviation of timezone name\",\ntm_gmtoff:\"offset from UTC in seconds\"});d.struct_time=g;d.time=new Sk.builtin.func(function(){Sk.builtin.pyCheckArgsLen(\"time\",arguments.length,0,0);return new Sk.builtin.float_(Date.now()/1E3)});d.sleep=new Sk.builtin.func(function(a){Sk.builtin.pyCheckArgsLen(\"sleep\",arguments.length,1,1);Sk.builtin.pyCheckType(\"delay\",\"float\",Sk.builtin.checkNumber(a));return new Sk.misceval.promiseToSuspension(new Promise(function(b){Sk.setTimeout(function(){b(Sk.builtin.none.none$)},1E3*Sk.ffi.remapToJs(a))}))});\nd.localtime=new Sk.builtin.func(function(a){Sk.builtin.pyCheckArgsLen(\"localtime\",arguments.length,0,1);return k(a,!1)});d.gmtime=new Sk.builtin.func(function(a){Sk.builtin.pyCheckArgsLen(\"gmtime\",arguments.length,0,1);return k(a,!0)});var D=\"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec\".split(\" \"),C=\"Mon Tue Wed Thu Fri Sat Sun\".split(\" \");d.asctime=new Sk.builtin.func(v);d.ctime=new Sk.builtin.func(function(a){Sk.builtin.pyCheckArgsLen(\"ctime\",arguments.length,0,1);return v(k(a))});d.mktime=\nnew Sk.builtin.func(w);d.timezone=new Sk.builtin.int_(60*q());d.altzone=new Sk.builtin.int_(60*function(){var a=new Date(2002,6,1);return Math.min((new Date(2002,0,1)).getTimezoneOffset(),a.getTimezoneOffset())}());d.daylight=new Sk.builtin.int_(function(){const a=new Date(2002,6,1);return(new Date(2002,0,1)).getTimezoneOffset()!=a.getTimezoneOffset()}()?1:0);d.tzname=new Sk.builtin.tuple(function(){var a=new Date(2002,0,1),b=new Date(2002,6,1);return a.getTimezoneOffset()<q()?[new Sk.builtin.str(m(b)),\nnew Sk.builtin.str(m(a))]:[new Sk.builtin.str(m(a)),new Sk.builtin.str(m(b))]}());d.accept2dyear=Sk.builtin.assk$(1);d.clock=new Sk.builtin.func(function(){var a=Sk.global.performance&&Sk.global.performance.now?performance.now()/1E3:(new Date).getTime()/1E3;return new Sk.builtin.float_(a)});d.strftime=new Sk.builtin.func(function(a,b){Sk.builtin.pyCheckArgsLen(\"strftime\",arguments.length,1,2);if(!Sk.builtin.checkString(a))throw new Sk.builtin.TypeError(\"format must be a string\");b?b instanceof g||\n(b=new g(b)):b=k();var c=b;if(!(c instanceof g))throw new Sk.builtin.TypeError(\"Required argument 'struct_time' must be of type: 'struct_time'\");var e=c.v.length;var t=c.v;for(c=0;c<e;++c)if(!Sk.builtin.checkInt(t[c]))throw new Sk.builtin.TypeError(\"struct_time may only contain integers\");e=Sk.ffi.remapToJs(a);return Sk.ffi.remapToPy(Sk.global.strftime(e,new Date(1E3*w(b).v)))});d.tzset=new Sk.builtin.func(function(){throw new Sk.builtin.NotImplementedError(\"time.tzset() is not yet implemented\");\n});let p=null;d.strptime=new Sk.builtin.func(function(...a){Sk.builtin.pyCheckArgsLen(\"strptime\",a.length,1,2);return null===p?Sk.misceval.chain(Sk.importModule(\"_strptime\",!1,!0),b=>{p=b.tp$getattr(new Sk.builtin.str(\"_strptime_time\"));return p.tp$call(a)}):p.tp$call(a)});return d};\n",
  "src/lib/timeit.py": 3,
  "src/lib/toaiff.py": 3,
  "src/lib/token.js": 3,
  "src/lib/tokenize.js": 3,
  "src/lib/trace.py": 3,
  "src/lib/traceback.py": 3,
  "src/lib/tty.py": 3,
  "src/lib/turtle.js": 3,
  "src/lib/types.py": 3,
  "src/lib/unittest/__init__.py": 3,
  "src/lib/unittest/gui.py": 3,
  "src/lib/urllib/__init__.js": 3,
  "src/lib/urllib/request/__init__.js": 3,
  "src/lib/urllib2.py": 3,
  "src/lib/urlparse.py": 3,
  "src/lib/user.py": 3,
  "src/lib/uu.py": 3,
  "src/lib/uuid.js": 1,
  "src/lib/warnings.py": 3,
  "src/lib/wave.py": 3,
  "src/lib/weakref.py": 3,
  "src/lib/webbrowser.js": 3,
  "src/lib/webgl/__init__.js": 3,
  "src/lib/webgl/math.js": 3,
  "src/lib/webgl/matrix4.js": 3,
  "src/lib/webgl/models.js": 3,
  "src/lib/webgl/primitives.js": 3,
  "src/lib/whichdb.py": 3,
  "src/lib/wsgiref/__init__.py": 3,
  "src/lib/xdrlib.py": 3,
  "src/lib/xml/__init__.py": 3,
  "src/lib/xml/dom/__init__.py": 3,
  "src/lib/xml/etree/__init__.py": 3,
  "src/lib/xml/parsers/__init__.py": 3,
  "src/lib/xml/sax/__init__.py": 3,
  "src/lib/xmllib.py": 3,
  "src/lib/xmlrpclib.py": 3,
  "src/lib/zipfile.py": 3
}}