0) {\n if(p < this.DB && (d = this[i]>>p) > 0) { m = true; r = int2char(d); }\n while(i >= 0) {\n if(p < k) {\n d = (this[i]&((1<>(p+=this.DB-k);\n }\n else {\n d = (this[i]>>(p-=k))&km;\n if(p <= 0) { p += this.DB; --i; }\n }\n if(d > 0) m = true;\n if(m) r += int2char(d);\n }\n }\n return m?r:\"0\";\n }\n\n // (public) -this\n function bnNegate() { var r = nbi(); BigInteger.ZERO.subTo(this,r); return r; }\n\n // (public) |this|\n function bnAbs() { return (this.s<0)?this.negate():this; }\n\n // (public) return + if this > a, - if this < a, 0 if equal\n function bnCompareTo(a) {\n var r = this.s-a.s;\n if(r != 0) return r;\n var i = this.t;\n r = i-a.t;\n if(r != 0) return (this.s<0)?-r:r;\n while(--i >= 0) if((r=this[i]-a[i]) != 0) return r;\n return 0;\n }\n\n // returns bit length of the integer x\n function nbits(x) {\n var r = 1, t;\n if((t=x>>>16) != 0) { x = t; r += 16; }\n if((t=x>>8) != 0) { x = t; r += 8; }\n if((t=x>>4) != 0) { x = t; r += 4; }\n if((t=x>>2) != 0) { x = t; r += 2; }\n if((t=x>>1) != 0) { x = t; r += 1; }\n return r;\n }\n\n // (public) return the number of bits in \"this\"\n function bnBitLength() {\n if(this.t <= 0) return 0;\n return this.DB*(this.t-1)+nbits(this[this.t-1]^(this.s&this.DM));\n }\n\n // (protected) r = this << n*DB\n function bnpDLShiftTo(n,r) {\n var i;\n for(i = this.t-1; i >= 0; --i) r[i+n] = this[i];\n for(i = n-1; i >= 0; --i) r[i] = 0;\n r.t = this.t+n;\n r.s = this.s;\n }\n\n // (protected) r = this >> n*DB\n function bnpDRShiftTo(n,r) {\n for(var i = n; i < this.t; ++i) r[i-n] = this[i];\n r.t = Math.max(this.t-n,0);\n r.s = this.s;\n }\n\n // (protected) r = this << n\n function bnpLShiftTo(n,r) {\n var bs = n%this.DB;\n var cbs = this.DB-bs;\n var bm = (1<= 0; --i) {\n r[i+ds+1] = (this[i]>>cbs)|c;\n c = (this[i]&bm)<= 0; --i) r[i] = 0;\n r[ds] = c;\n r.t = this.t+ds+1;\n r.s = this.s;\n r.clamp();\n }\n\n // (protected) r = this >> n\n function bnpRShiftTo(n,r) {\n r.s = this.s;\n var ds = Math.floor(n/this.DB);\n if(ds >= this.t) { r.t = 0; return; }\n var bs = n%this.DB;\n var cbs = this.DB-bs;\n var bm = (1<>bs;\n for(var i = ds+1; i < this.t; ++i) {\n r[i-ds-1] |= (this[i]&bm)<>bs;\n }\n if(bs > 0) r[this.t-ds-1] |= (this.s&bm)<>= this.DB;\n }\n if(a.t < this.t) {\n c -= a.s;\n while(i < this.t) {\n c += this[i];\n r[i++] = c&this.DM;\n c >>= this.DB;\n }\n c += this.s;\n }\n else {\n c += this.s;\n while(i < a.t) {\n c -= a[i];\n r[i++] = c&this.DM;\n c >>= this.DB;\n }\n c -= a.s;\n }\n r.s = (c<0)?-1:0;\n if(c < -1) r[i++] = this.DV+c;\n else if(c > 0) r[i++] = c;\n r.t = i;\n r.clamp();\n }\n\n // (protected) r = this * a, r != this,a (HAC 14.12)\n // \"this\" should be the larger one if appropriate.\n function bnpMultiplyTo(a,r) {\n var x = this.abs(), y = a.abs();\n var i = x.t;\n r.t = i+y.t;\n while(--i >= 0) r[i] = 0;\n for(i = 0; i < y.t; ++i) r[i+x.t] = x.am(0,y[i],r,i,0,x.t);\n r.s = 0;\n r.clamp();\n if(this.s != a.s) BigInteger.ZERO.subTo(r,r);\n }\n\n // (protected) r = this^2, r != this (HAC 14.16)\n function bnpSquareTo(r) {\n var x = this.abs();\n var i = r.t = 2*x.t;\n while(--i >= 0) r[i] = 0;\n for(i = 0; i < x.t-1; ++i) {\n var c = x.am(i,x[i],r,2*i,0,1);\n if((r[i+x.t]+=x.am(i+1,2*x[i],r,2*i+1,c,x.t-i-1)) >= x.DV) {\n r[i+x.t] -= x.DV;\n r[i+x.t+1] = 1;\n }\n }\n if(r.t > 0) r[r.t-1] += x.am(i,x[i],r,2*i,0,1);\n r.s = 0;\n r.clamp();\n }\n\n // (protected) divide this by m, quotient and remainder to q, r (HAC 14.20)\n // r != q, this != m. q or r may be null.\n function bnpDivRemTo(m,q,r) {\n var pm = m.abs();\n if(pm.t <= 0) return;\n var pt = this.abs();\n if(pt.t < pm.t) {\n if(q != null) q.fromInt(0);\n if(r != null) this.copyTo(r);\n return;\n }\n if(r == null) r = nbi();\n var y = nbi(), ts = this.s, ms = m.s;\n var nsh = this.DB-nbits(pm[pm.t-1]); // normalize modulus\n if(nsh > 0) { pm.lShiftTo(nsh,y); pt.lShiftTo(nsh,r); }\n else { pm.copyTo(y); pt.copyTo(r); }\n var ys = y.t;\n var y0 = y[ys-1];\n if(y0 == 0) return;\n var yt = y0*(1<1)?y[ys-2]>>this.F2:0);\n var d1 = this.FV/yt, d2 = (1<= 0) {\n r[r.t++] = 1;\n r.subTo(t,r);\n }\n BigInteger.ONE.dlShiftTo(ys,t);\n t.subTo(y,y); // \"negative\" y so we can replace sub with am later\n while(y.t < ys) y[y.t++] = 0;\n while(--j >= 0) {\n // Estimate quotient digit\n var qd = (r[--i]==y0)?this.DM:Math.floor(r[i]*d1+(r[i-1]+e)*d2);\n if((r[i]+=y.am(0,qd,r,j,0,ys)) < qd) { // Try it out\n y.dlShiftTo(j,t);\n r.subTo(t,r);\n while(r[i] < --qd) r.subTo(t,r);\n }\n }\n if(q != null) {\n r.drShiftTo(ys,q);\n if(ts != ms) BigInteger.ZERO.subTo(q,q);\n }\n r.t = ys;\n r.clamp();\n if(nsh > 0) r.rShiftTo(nsh,r); // Denormalize remainder\n if(ts < 0) BigInteger.ZERO.subTo(r,r);\n }\n\n // (public) this mod a\n function bnMod(a) {\n var r = nbi();\n this.abs().divRemTo(a,null,r);\n if(this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) a.subTo(r,r);\n return r;\n }\n\n // Modular reduction using \"classic\" algorithm\n function Classic(m) { this.m = m; }\n function cConvert(x) {\n if(x.s < 0 || x.compareTo(this.m) >= 0) return x.mod(this.m);\n else return x;\n }\n function cRevert(x) { return x; }\n function cReduce(x) { x.divRemTo(this.m,null,x); }\n function cMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }\n function cSqrTo(x,r) { x.squareTo(r); this.reduce(r); }\n\n Classic.prototype.convert = cConvert;\n Classic.prototype.revert = cRevert;\n Classic.prototype.reduce = cReduce;\n Classic.prototype.mulTo = cMulTo;\n Classic.prototype.sqrTo = cSqrTo;\n\n // (protected) return \"-1/this % 2^DB\"; useful for Mont. reduction\n // justification:\n // xy == 1 (mod m)\n // xy = 1+km\n // xy(2-xy) = (1+km)(1-km)\n // x[y(2-xy)] = 1-k^2m^2\n // x[y(2-xy)] == 1 (mod m^2)\n // if y is 1/x mod m, then y(2-xy) is 1/x mod m^2\n // should reduce x and y(2-xy) by m^2 at each step to keep size bounded.\n // JS multiply \"overflows\" differently from C/C++, so care is needed here.\n function bnpInvDigit() {\n if(this.t < 1) return 0;\n var x = this[0];\n if((x&1) == 0) return 0;\n var y = x&3; // y == 1/x mod 2^2\n y = (y*(2-(x&0xf)*y))&0xf; // y == 1/x mod 2^4\n y = (y*(2-(x&0xff)*y))&0xff; // y == 1/x mod 2^8\n y = (y*(2-(((x&0xffff)*y)&0xffff)))&0xffff; // y == 1/x mod 2^16\n // last step - calculate inverse mod DV directly;\n // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints\n y = (y*(2-x*y%this.DV))%this.DV; // y == 1/x mod 2^dbits\n // we really want the negative inverse, and -DV < y < DV\n return (y>0)?this.DV-y:-y;\n }\n\n // Montgomery reduction\n function Montgomery(m) {\n this.m = m;\n this.mp = m.invDigit();\n this.mpl = this.mp&0x7fff;\n this.mph = this.mp>>15;\n this.um = (1<<(m.DB-15))-1;\n this.mt2 = 2*m.t;\n }\n\n // xR mod m\n function montConvert(x) {\n var r = nbi();\n x.abs().dlShiftTo(this.m.t,r);\n r.divRemTo(this.m,null,r);\n if(x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) this.m.subTo(r,r);\n return r;\n }\n\n // x/R mod m\n function montRevert(x) {\n var r = nbi();\n x.copyTo(r);\n this.reduce(r);\n return r;\n }\n\n // x = x/R mod m (HAC 14.32)\n function montReduce(x) {\n while(x.t <= this.mt2) // pad x so am has enough room later\n x[x.t++] = 0;\n for(var i = 0; i < this.m.t; ++i) {\n // faster way of calculating u0 = x[i]*mp mod DV\n var j = x[i]&0x7fff;\n var u0 = (j*this.mpl+(((j*this.mph+(x[i]>>15)*this.mpl)&this.um)<<15))&x.DM;\n // use am to combine the multiply-shift-add into one call\n j = i+this.m.t;\n x[j] += this.m.am(0,u0,x,i,0,this.m.t);\n // propagate carry\n while(x[j] >= x.DV) { x[j] -= x.DV; x[++j]++; }\n }\n x.clamp();\n x.drShiftTo(this.m.t,x);\n if(x.compareTo(this.m) >= 0) x.subTo(this.m,x);\n }\n\n // r = \"x^2/R mod m\"; x != r\n function montSqrTo(x,r) { x.squareTo(r); this.reduce(r); }\n\n // r = \"xy/R mod m\"; x,y != r\n function montMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }\n\n Montgomery.prototype.convert = montConvert;\n Montgomery.prototype.revert = montRevert;\n Montgomery.prototype.reduce = montReduce;\n Montgomery.prototype.mulTo = montMulTo;\n Montgomery.prototype.sqrTo = montSqrTo;\n\n // (protected) true iff this is even\n function bnpIsEven() { return ((this.t>0)?(this[0]&1):this.s) == 0; }\n\n // (protected) this^e, e < 2^32, doing sqr and mul with \"r\" (HAC 14.79)\n function bnpExp(e,z) {\n if(e > 0xffffffff || e < 1) return BigInteger.ONE;\n var r = nbi(), r2 = nbi(), g = z.convert(this), i = nbits(e)-1;\n g.copyTo(r);\n while(--i >= 0) {\n z.sqrTo(r,r2);\n if((e&(1< 0) z.mulTo(r2,g,r);\n else { var t = r; r = r2; r2 = t; }\n }\n return z.revert(r);\n }\n\n // (public) this^e % m, 0 <= e < 2^32\n function bnModPowInt(e,m) {\n var z;\n if(e < 256 || m.isEven()) z = new Classic(m); else z = new Montgomery(m);\n return this.exp(e,z);\n }\n\n // protected\n BigInteger.prototype.copyTo = bnpCopyTo;\n BigInteger.prototype.fromInt = bnpFromInt;\n BigInteger.prototype.fromString = bnpFromString;\n BigInteger.prototype.clamp = bnpClamp;\n BigInteger.prototype.dlShiftTo = bnpDLShiftTo;\n BigInteger.prototype.drShiftTo = bnpDRShiftTo;\n BigInteger.prototype.lShiftTo = bnpLShiftTo;\n BigInteger.prototype.rShiftTo = bnpRShiftTo;\n BigInteger.prototype.subTo = bnpSubTo;\n BigInteger.prototype.multiplyTo = bnpMultiplyTo;\n BigInteger.prototype.squareTo = bnpSquareTo;\n BigInteger.prototype.divRemTo = bnpDivRemTo;\n BigInteger.prototype.invDigit = bnpInvDigit;\n BigInteger.prototype.isEven = bnpIsEven;\n BigInteger.prototype.exp = bnpExp;\n\n // public\n BigInteger.prototype.toString = bnToString;\n BigInteger.prototype.negate = bnNegate;\n BigInteger.prototype.abs = bnAbs;\n BigInteger.prototype.compareTo = bnCompareTo;\n BigInteger.prototype.bitLength = bnBitLength;\n BigInteger.prototype.mod = bnMod;\n BigInteger.prototype.modPowInt = bnModPowInt;\n\n // \"constants\"\n BigInteger.ZERO = nbv(0);\n BigInteger.ONE = nbv(1);\n\n // Copyright (c) 2005-2009 Tom Wu\n // All Rights Reserved.\n // See \"LICENSE\" for details.\n\n // Extended JavaScript BN functions, required for RSA private ops.\n\n // Version 1.1: new BigInteger(\"0\", 10) returns \"proper\" zero\n // Version 1.2: square() API, isProbablePrime fix\n\n // (public)\n function bnClone() { var r = nbi(); this.copyTo(r); return r; }\n\n // (public) return value as integer\n function bnIntValue() {\n if(this.s < 0) {\n if(this.t == 1) return this[0]-this.DV;\n else if(this.t == 0) return -1;\n }\n else if(this.t == 1) return this[0];\n else if(this.t == 0) return 0;\n // assumes 16 < DB < 32\n return ((this[1]&((1<<(32-this.DB))-1))<>24; }\n\n // (public) return value as short (assumes DB>=16)\n function bnShortValue() { return (this.t==0)?this.s:(this[0]<<16)>>16; }\n\n // (protected) return x s.t. r^x < DV\n function bnpChunkSize(r) { return Math.floor(Math.LN2*this.DB/Math.log(r)); }\n\n // (public) 0 if this == 0, 1 if this > 0\n function bnSigNum() {\n if(this.s < 0) return -1;\n else if(this.t <= 0 || (this.t == 1 && this[0] <= 0)) return 0;\n else return 1;\n }\n\n // (protected) convert to radix string\n function bnpToRadix(b) {\n if(b == null) b = 10;\n if(this.signum() == 0 || b < 2 || b > 36) return \"0\";\n var cs = this.chunkSize(b);\n var a = Math.pow(b,cs);\n var d = nbv(a), y = nbi(), z = nbi(), r = \"\";\n this.divRemTo(d,y,z);\n while(y.signum() > 0) {\n r = (a+z.intValue()).toString(b).substr(1) + r;\n y.divRemTo(d,y,z);\n }\n return z.intValue().toString(b) + r;\n }\n\n // (protected) convert from radix string\n function bnpFromRadix(s,b) {\n this.fromInt(0);\n if(b == null) b = 10;\n var cs = this.chunkSize(b);\n var d = Math.pow(b,cs), mi = false, j = 0, w = 0;\n for(var i = 0; i < s.length; ++i) {\n var x = intAt(s,i);\n if(x < 0) {\n if(s.charAt(i) == \"-\" && this.signum() == 0) mi = true;\n continue;\n }\n w = b*w+x;\n if(++j >= cs) {\n this.dMultiply(d);\n this.dAddOffset(w,0);\n j = 0;\n w = 0;\n }\n }\n if(j > 0) {\n this.dMultiply(Math.pow(b,j));\n this.dAddOffset(w,0);\n }\n if(mi) BigInteger.ZERO.subTo(this,this);\n }\n\n // (protected) alternate constructor\n function bnpFromNumber(a,b,c) {\n if(\"number\" == typeof b) {\n // new BigInteger(int,int,RNG)\n if(a < 2) this.fromInt(1);\n else {\n this.fromNumber(a,c);\n if(!this.testBit(a-1))\t// force MSB set\n this.bitwiseTo(BigInteger.ONE.shiftLeft(a-1),op_or,this);\n if(this.isEven()) this.dAddOffset(1,0); // force odd\n while(!this.isProbablePrime(b)) {\n this.dAddOffset(2,0);\n if(this.bitLength() > a) this.subTo(BigInteger.ONE.shiftLeft(a-1),this);\n }\n }\n }\n else {\n // new BigInteger(int,RNG)\n var x = new Array(), t = a&7;\n x.length = (a>>3)+1;\n b.nextBytes(x);\n if(t > 0) x[0] &= ((1< 0) {\n if(p < this.DB && (d = this[i]>>p) != (this.s&this.DM)>>p)\n r[k++] = d|(this.s<<(this.DB-p));\n while(i >= 0) {\n if(p < 8) {\n d = (this[i]&((1<>(p+=this.DB-8);\n }\n else {\n d = (this[i]>>(p-=8))&0xff;\n if(p <= 0) { p += this.DB; --i; }\n }\n if((d&0x80) != 0) d |= -256;\n if(k == 0 && (this.s&0x80) != (d&0x80)) ++k;\n if(k > 0 || d != this.s) r[k++] = d;\n }\n }\n return r;\n }\n\n function bnEquals(a) { return(this.compareTo(a)==0); }\n function bnMin(a) { return(this.compareTo(a)<0)?this:a; }\n function bnMax(a) { return(this.compareTo(a)>0)?this:a; }\n\n // (protected) r = this op a (bitwise)\n function bnpBitwiseTo(a,op,r) {\n var i, f, m = Math.min(a.t,this.t);\n for(i = 0; i < m; ++i) r[i] = op(this[i],a[i]);\n if(a.t < this.t) {\n f = a.s&this.DM;\n for(i = m; i < this.t; ++i) r[i] = op(this[i],f);\n r.t = this.t;\n }\n else {\n f = this.s&this.DM;\n for(i = m; i < a.t; ++i) r[i] = op(f,a[i]);\n r.t = a.t;\n }\n r.s = op(this.s,a.s);\n r.clamp();\n }\n\n // (public) this & a\n function op_and(x,y) { return x&y; }\n function bnAnd(a) { var r = nbi(); this.bitwiseTo(a,op_and,r); return r; }\n\n // (public) this | a\n function op_or(x,y) { return x|y; }\n function bnOr(a) { var r = nbi(); this.bitwiseTo(a,op_or,r); return r; }\n\n // (public) this ^ a\n function op_xor(x,y) { return x^y; }\n function bnXor(a) { var r = nbi(); this.bitwiseTo(a,op_xor,r); return r; }\n\n // (public) this & ~a\n function op_andnot(x,y) { return x&~y; }\n function bnAndNot(a) { var r = nbi(); this.bitwiseTo(a,op_andnot,r); return r; }\n\n // (public) ~this\n function bnNot() {\n var r = nbi();\n for(var i = 0; i < this.t; ++i) r[i] = this.DM&~this[i];\n r.t = this.t;\n r.s = ~this.s;\n return r;\n }\n\n // (public) this << n\n function bnShiftLeft(n) {\n var r = nbi();\n if(n < 0) this.rShiftTo(-n,r); else this.lShiftTo(n,r);\n return r;\n }\n\n // (public) this >> n\n function bnShiftRight(n) {\n var r = nbi();\n if(n < 0) this.lShiftTo(-n,r); else this.rShiftTo(n,r);\n return r;\n }\n\n // return index of lowest 1-bit in x, x < 2^31\n function lbit(x) {\n if(x == 0) return -1;\n var r = 0;\n if((x&0xffff) == 0) { x >>= 16; r += 16; }\n if((x&0xff) == 0) { x >>= 8; r += 8; }\n if((x&0xf) == 0) { x >>= 4; r += 4; }\n if((x&3) == 0) { x >>= 2; r += 2; }\n if((x&1) == 0) ++r;\n return r;\n }\n\n // (public) returns index of lowest 1-bit (or -1 if none)\n function bnGetLowestSetBit() {\n for(var i = 0; i < this.t; ++i)\n if(this[i] != 0) return i*this.DB+lbit(this[i]);\n if(this.s < 0) return this.t*this.DB;\n return -1;\n }\n\n // return number of 1 bits in x\n function cbit(x) {\n var r = 0;\n while(x != 0) { x &= x-1; ++r; }\n return r;\n }\n\n // (public) return number of set bits\n function bnBitCount() {\n var r = 0, x = this.s&this.DM;\n for(var i = 0; i < this.t; ++i) r += cbit(this[i]^x);\n return r;\n }\n\n // (public) true iff nth bit is set\n function bnTestBit(n) {\n var j = Math.floor(n/this.DB);\n if(j >= this.t) return(this.s!=0);\n return((this[j]&(1<<(n%this.DB)))!=0);\n }\n\n // (protected) this op (1<>= this.DB;\n }\n if(a.t < this.t) {\n c += a.s;\n while(i < this.t) {\n c += this[i];\n r[i++] = c&this.DM;\n c >>= this.DB;\n }\n c += this.s;\n }\n else {\n c += this.s;\n while(i < a.t) {\n c += a[i];\n r[i++] = c&this.DM;\n c >>= this.DB;\n }\n c += a.s;\n }\n r.s = (c<0)?-1:0;\n if(c > 0) r[i++] = c;\n else if(c < -1) r[i++] = this.DV+c;\n r.t = i;\n r.clamp();\n }\n\n // (public) this + a\n function bnAdd(a) { var r = nbi(); this.addTo(a,r); return r; }\n\n // (public) this - a\n function bnSubtract(a) { var r = nbi(); this.subTo(a,r); return r; }\n\n // (public) this * a\n function bnMultiply(a) { var r = nbi(); this.multiplyTo(a,r); return r; }\n\n // (public) this^2\n function bnSquare() { var r = nbi(); this.squareTo(r); return r; }\n\n // (public) this / a\n function bnDivide(a) { var r = nbi(); this.divRemTo(a,r,null); return r; }\n\n // (public) this % a\n function bnRemainder(a) { var r = nbi(); this.divRemTo(a,null,r); return r; }\n\n // (public) [this/a,this%a]\n function bnDivideAndRemainder(a) {\n var q = nbi(), r = nbi();\n this.divRemTo(a,q,r);\n return new Array(q,r);\n }\n\n // (protected) this *= n, this >= 0, 1 < n < DV\n function bnpDMultiply(n) {\n this[this.t] = this.am(0,n-1,this,0,0,this.t);\n ++this.t;\n this.clamp();\n }\n\n // (protected) this += n << w words, this >= 0\n function bnpDAddOffset(n,w) {\n if(n == 0) return;\n while(this.t <= w) this[this.t++] = 0;\n this[w] += n;\n while(this[w] >= this.DV) {\n this[w] -= this.DV;\n if(++w >= this.t) this[this.t++] = 0;\n ++this[w];\n }\n }\n\n // A \"null\" reducer\n function NullExp() {}\n function nNop(x) { return x; }\n function nMulTo(x,y,r) { x.multiplyTo(y,r); }\n function nSqrTo(x,r) { x.squareTo(r); }\n\n NullExp.prototype.convert = nNop;\n NullExp.prototype.revert = nNop;\n NullExp.prototype.mulTo = nMulTo;\n NullExp.prototype.sqrTo = nSqrTo;\n\n // (public) this^e\n function bnPow(e) { return this.exp(e,new NullExp()); }\n\n // (protected) r = lower n words of \"this * a\", a.t <= n\n // \"this\" should be the larger one if appropriate.\n function bnpMultiplyLowerTo(a,n,r) {\n var i = Math.min(this.t+a.t,n);\n r.s = 0; // assumes a,this >= 0\n r.t = i;\n while(i > 0) r[--i] = 0;\n var j;\n for(j = r.t-this.t; i < j; ++i) r[i+this.t] = this.am(0,a[i],r,i,0,this.t);\n for(j = Math.min(a.t,n); i < j; ++i) this.am(0,a[i],r,i,0,n-i);\n r.clamp();\n }\n\n // (protected) r = \"this * a\" without lower n words, n > 0\n // \"this\" should be the larger one if appropriate.\n function bnpMultiplyUpperTo(a,n,r) {\n --n;\n var i = r.t = this.t+a.t-n;\n r.s = 0; // assumes a,this >= 0\n while(--i >= 0) r[i] = 0;\n for(i = Math.max(n-this.t,0); i < a.t; ++i)\n r[this.t+i-n] = this.am(n-i,a[i],r,0,0,this.t+i-n);\n r.clamp();\n r.drShiftTo(1,r);\n }\n\n // Barrett modular reduction\n function Barrett(m) {\n // setup Barrett\n this.r2 = nbi();\n this.q3 = nbi();\n BigInteger.ONE.dlShiftTo(2*m.t,this.r2);\n this.mu = this.r2.divide(m);\n this.m = m;\n }\n\n function barrettConvert(x) {\n if(x.s < 0 || x.t > 2*this.m.t) return x.mod(this.m);\n else if(x.compareTo(this.m) < 0) return x;\n else { var r = nbi(); x.copyTo(r); this.reduce(r); return r; }\n }\n\n function barrettRevert(x) { return x; }\n\n // x = x mod m (HAC 14.42)\n function barrettReduce(x) {\n x.drShiftTo(this.m.t-1,this.r2);\n if(x.t > this.m.t+1) { x.t = this.m.t+1; x.clamp(); }\n this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3);\n this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);\n while(x.compareTo(this.r2) < 0) x.dAddOffset(1,this.m.t+1);\n x.subTo(this.r2,x);\n while(x.compareTo(this.m) >= 0) x.subTo(this.m,x);\n }\n\n // r = x^2 mod m; x != r\n function barrettSqrTo(x,r) { x.squareTo(r); this.reduce(r); }\n\n // r = x*y mod m; x,y != r\n function barrettMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }\n\n Barrett.prototype.convert = barrettConvert;\n Barrett.prototype.revert = barrettRevert;\n Barrett.prototype.reduce = barrettReduce;\n Barrett.prototype.mulTo = barrettMulTo;\n Barrett.prototype.sqrTo = barrettSqrTo;\n\n // (public) this^e % m (HAC 14.85)\n function bnModPow(e,m) {\n var i = e.bitLength(), k, r = nbv(1), z;\n if(i <= 0) return r;\n else if(i < 18) k = 1;\n else if(i < 48) k = 3;\n else if(i < 144) k = 4;\n else if(i < 768) k = 5;\n else k = 6;\n if(i < 8)\n z = new Classic(m);\n else if(m.isEven())\n z = new Barrett(m);\n else\n z = new Montgomery(m);\n\n // precomputation\n var g = new Array(), n = 3, k1 = k-1, km = (1< 1) {\n var g2 = nbi();\n z.sqrTo(g[1],g2);\n while(n <= km) {\n g[n] = nbi();\n z.mulTo(g2,g[n-2],g[n]);\n n += 2;\n }\n }\n\n var j = e.t-1, w, is1 = true, r2 = nbi(), t;\n i = nbits(e[j])-1;\n while(j >= 0) {\n if(i >= k1) w = (e[j]>>(i-k1))&km;\n else {\n w = (e[j]&((1<<(i+1))-1))<<(k1-i);\n if(j > 0) w |= e[j-1]>>(this.DB+i-k1);\n }\n\n n = k;\n while((w&1) == 0) { w >>= 1; --n; }\n if((i -= n) < 0) { i += this.DB; --j; }\n if(is1) {\t// ret == 1, don't bother squaring or multiplying it\n g[w].copyTo(r);\n is1 = false;\n }\n else {\n while(n > 1) { z.sqrTo(r,r2); z.sqrTo(r2,r); n -= 2; }\n if(n > 0) z.sqrTo(r,r2); else { t = r; r = r2; r2 = t; }\n z.mulTo(r2,g[w],r);\n }\n\n while(j >= 0 && (e[j]&(1< 0) {\n x.rShiftTo(g,x);\n y.rShiftTo(g,y);\n }\n while(x.signum() > 0) {\n if((i = x.getLowestSetBit()) > 0) x.rShiftTo(i,x);\n if((i = y.getLowestSetBit()) > 0) y.rShiftTo(i,y);\n if(x.compareTo(y) >= 0) {\n x.subTo(y,x);\n x.rShiftTo(1,x);\n }\n else {\n y.subTo(x,y);\n y.rShiftTo(1,y);\n }\n }\n if(g > 0) y.lShiftTo(g,y);\n return y;\n }\n\n // (protected) this % n, n < 2^26\n function bnpModInt(n) {\n if(n <= 0) return 0;\n var d = this.DV%n, r = (this.s<0)?n-1:0;\n if(this.t > 0)\n if(d == 0) r = this[0]%n;\n else for(var i = this.t-1; i >= 0; --i) r = (d*r+this[i])%n;\n return r;\n }\n\n // (public) 1/this % m (HAC 14.61)\n function bnModInverse(m) {\n var ac = m.isEven();\n if((this.isEven() && ac) || m.signum() == 0) return BigInteger.ZERO;\n var u = m.clone(), v = this.clone();\n var a = nbv(1), b = nbv(0), c = nbv(0), d = nbv(1);\n while(u.signum() != 0) {\n while(u.isEven()) {\n u.rShiftTo(1,u);\n if(ac) {\n if(!a.isEven() || !b.isEven()) { a.addTo(this,a); b.subTo(m,b); }\n a.rShiftTo(1,a);\n }\n else if(!b.isEven()) b.subTo(m,b);\n b.rShiftTo(1,b);\n }\n while(v.isEven()) {\n v.rShiftTo(1,v);\n if(ac) {\n if(!c.isEven() || !d.isEven()) { c.addTo(this,c); d.subTo(m,d); }\n c.rShiftTo(1,c);\n }\n else if(!d.isEven()) d.subTo(m,d);\n d.rShiftTo(1,d);\n }\n if(u.compareTo(v) >= 0) {\n u.subTo(v,u);\n if(ac) a.subTo(c,a);\n b.subTo(d,b);\n }\n else {\n v.subTo(u,v);\n if(ac) c.subTo(a,c);\n d.subTo(b,d);\n }\n }\n if(v.compareTo(BigInteger.ONE) != 0) return BigInteger.ZERO;\n if(d.compareTo(m) >= 0) return d.subtract(m);\n if(d.signum() < 0) d.addTo(m,d); else return d;\n if(d.signum() < 0) return d.add(m); else return d;\n }\n\n var lowprimes = [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997];\n var lplim = (1<<26)/lowprimes[lowprimes.length-1];\n\n // (public) test primality with certainty >= 1-.5^t\n function bnIsProbablePrime(t) {\n var i, x = this.abs();\n if(x.t == 1 && x[0] <= lowprimes[lowprimes.length-1]) {\n for(i = 0; i < lowprimes.length; ++i)\n if(x[0] == lowprimes[i]) return true;\n return false;\n }\n if(x.isEven()) return false;\n i = 1;\n while(i < lowprimes.length) {\n var m = lowprimes[i], j = i+1;\n while(j < lowprimes.length && m < lplim) m *= lowprimes[j++];\n m = x.modInt(m);\n while(i < j) if(m%lowprimes[i++] == 0) return false;\n }\n return x.millerRabin(t);\n }\n\n // (protected) true if probably prime (HAC 4.24, Miller-Rabin)\n function bnpMillerRabin(t) {\n var n1 = this.subtract(BigInteger.ONE);\n var k = n1.getLowestSetBit();\n if(k <= 0) return false;\n var r = n1.shiftRight(k);\n t = (t+1)>>1;\n if(t > lowprimes.length) t = lowprimes.length;\n var a = nbi();\n for(var i = 0; i < t; ++i) {\n //Pick bases at random, instead of starting at 2\n a.fromInt(lowprimes[Math.floor(Math.random()*lowprimes.length)]);\n var y = a.modPow(r,this);\n if(y.compareTo(BigInteger.ONE) != 0 && y.compareTo(n1) != 0) {\n var j = 1;\n while(j++ < k && y.compareTo(n1) != 0) {\n y = y.modPowInt(2,this);\n if(y.compareTo(BigInteger.ONE) == 0) return false;\n }\n if(y.compareTo(n1) != 0) return false;\n }\n }\n return true;\n }\n\n // protected\n BigInteger.prototype.chunkSize = bnpChunkSize;\n BigInteger.prototype.toRadix = bnpToRadix;\n BigInteger.prototype.fromRadix = bnpFromRadix;\n BigInteger.prototype.fromNumber = bnpFromNumber;\n BigInteger.prototype.bitwiseTo = bnpBitwiseTo;\n BigInteger.prototype.changeBit = bnpChangeBit;\n BigInteger.prototype.addTo = bnpAddTo;\n BigInteger.prototype.dMultiply = bnpDMultiply;\n BigInteger.prototype.dAddOffset = bnpDAddOffset;\n BigInteger.prototype.multiplyLowerTo = bnpMultiplyLowerTo;\n BigInteger.prototype.multiplyUpperTo = bnpMultiplyUpperTo;\n BigInteger.prototype.modInt = bnpModInt;\n BigInteger.prototype.millerRabin = bnpMillerRabin;\n\n // public\n BigInteger.prototype.clone = bnClone;\n BigInteger.prototype.intValue = bnIntValue;\n BigInteger.prototype.byteValue = bnByteValue;\n BigInteger.prototype.shortValue = bnShortValue;\n BigInteger.prototype.signum = bnSigNum;\n BigInteger.prototype.toByteArray = bnToByteArray;\n BigInteger.prototype.equals = bnEquals;\n BigInteger.prototype.min = bnMin;\n BigInteger.prototype.max = bnMax;\n BigInteger.prototype.and = bnAnd;\n BigInteger.prototype.or = bnOr;\n BigInteger.prototype.xor = bnXor;\n BigInteger.prototype.andNot = bnAndNot;\n BigInteger.prototype.not = bnNot;\n BigInteger.prototype.shiftLeft = bnShiftLeft;\n BigInteger.prototype.shiftRight = bnShiftRight;\n BigInteger.prototype.getLowestSetBit = bnGetLowestSetBit;\n BigInteger.prototype.bitCount = bnBitCount;\n BigInteger.prototype.testBit = bnTestBit;\n BigInteger.prototype.setBit = bnSetBit;\n BigInteger.prototype.clearBit = bnClearBit;\n BigInteger.prototype.flipBit = bnFlipBit;\n BigInteger.prototype.add = bnAdd;\n BigInteger.prototype.subtract = bnSubtract;\n BigInteger.prototype.multiply = bnMultiply;\n BigInteger.prototype.divide = bnDivide;\n BigInteger.prototype.remainder = bnRemainder;\n BigInteger.prototype.divideAndRemainder = bnDivideAndRemainder;\n BigInteger.prototype.modPow = bnModPow;\n BigInteger.prototype.modInverse = bnModInverse;\n BigInteger.prototype.pow = bnPow;\n BigInteger.prototype.gcd = bnGCD;\n BigInteger.prototype.isProbablePrime = bnIsProbablePrime;\n\n // JSBN-specific extension\n BigInteger.prototype.square = bnSquare;\n\n // Expose the Barrett function\n BigInteger.prototype.Barrett = Barrett\n\n // BigInteger interfaces not implemented in jsbn:\n\n // BigInteger(int signum, byte[] magnitude)\n // double doubleValue()\n // float floatValue()\n // int hashCode()\n // long longValue()\n // static BigInteger valueOf(long val)\n\n\t// Random number generator - requires a PRNG backend, e.g. prng4.js\n\n\t// For best results, put code like\n\t// \n\t// in your main HTML document.\n\n\tvar rng_state;\n\tvar rng_pool;\n\tvar rng_pptr;\n\n\t// Mix in a 32-bit integer into the pool\n\tfunction rng_seed_int(x) {\n\t rng_pool[rng_pptr++] ^= x & 255;\n\t rng_pool[rng_pptr++] ^= (x >> 8) & 255;\n\t rng_pool[rng_pptr++] ^= (x >> 16) & 255;\n\t rng_pool[rng_pptr++] ^= (x >> 24) & 255;\n\t if(rng_pptr >= rng_psize) rng_pptr -= rng_psize;\n\t}\n\n\t// Mix in the current time (w/milliseconds) into the pool\n\tfunction rng_seed_time() {\n\t rng_seed_int(new Date().getTime());\n\t}\n\n\t// Initialize the pool with junk if needed.\n\tif(rng_pool == null) {\n\t rng_pool = new Array();\n\t rng_pptr = 0;\n\t var t;\n\t if(typeof window !== \"undefined\" && window.crypto) {\n\t\tif (window.crypto.getRandomValues) {\n\t\t // Use webcrypto if available\n\t\t var ua = new Uint8Array(32);\n\t\t window.crypto.getRandomValues(ua);\n\t\t for(t = 0; t < 32; ++t)\n\t\t\trng_pool[rng_pptr++] = ua[t];\n\t\t}\n\t\telse if(navigator.appName == \"Netscape\" && navigator.appVersion < \"5\") {\n\t\t // Extract entropy (256 bits) from NS4 RNG if available\n\t\t var z = window.crypto.random(32);\n\t\t for(t = 0; t < z.length; ++t)\n\t\t\trng_pool[rng_pptr++] = z.charCodeAt(t) & 255;\n\t\t}\n\t }\n\t while(rng_pptr < rng_psize) { // extract some randomness from Math.random()\n\t\tt = Math.floor(65536 * Math.random());\n\t\trng_pool[rng_pptr++] = t >>> 8;\n\t\trng_pool[rng_pptr++] = t & 255;\n\t }\n\t rng_pptr = 0;\n\t rng_seed_time();\n\t //rng_seed_int(window.screenX);\n\t //rng_seed_int(window.screenY);\n\t}\n\n\tfunction rng_get_byte() {\n\t if(rng_state == null) {\n\t\trng_seed_time();\n\t\trng_state = prng_newstate();\n\t\trng_state.init(rng_pool);\n\t\tfor(rng_pptr = 0; rng_pptr < rng_pool.length; ++rng_pptr)\n\t\t rng_pool[rng_pptr] = 0;\n\t\trng_pptr = 0;\n\t\t//rng_pool = null;\n\t }\n\t // TODO: allow reseeding after first request\n\t return rng_state.next();\n\t}\n\n\tfunction rng_get_bytes(ba) {\n\t var i;\n\t for(i = 0; i < ba.length; ++i) ba[i] = rng_get_byte();\n\t}\n\n\tfunction SecureRandom() {}\n\n\tSecureRandom.prototype.nextBytes = rng_get_bytes;\n\n\t// prng4.js - uses Arcfour as a PRNG\n\n\tfunction Arcfour() {\n\t this.i = 0;\n\t this.j = 0;\n\t this.S = new Array();\n\t}\n\n\t// Initialize arcfour context from key, an array of ints, each from [0..255]\n\tfunction ARC4init(key) {\n\t var i, j, t;\n\t for(i = 0; i < 256; ++i)\n\t\tthis.S[i] = i;\n\t j = 0;\n\t for(i = 0; i < 256; ++i) {\n\t\tj = (j + this.S[i] + key[i % key.length]) & 255;\n\t\tt = this.S[i];\n\t\tthis.S[i] = this.S[j];\n\t\tthis.S[j] = t;\n\t }\n\t this.i = 0;\n\t this.j = 0;\n\t}\n\n\tfunction ARC4next() {\n\t var t;\n\t this.i = (this.i + 1) & 255;\n\t this.j = (this.j + this.S[this.i]) & 255;\n\t t = this.S[this.i];\n\t this.S[this.i] = this.S[this.j];\n\t this.S[this.j] = t;\n\t return this.S[(t + this.S[this.i]) & 255];\n\t}\n\n\tArcfour.prototype.init = ARC4init;\n\tArcfour.prototype.next = ARC4next;\n\n\t// Plug in your RNG constructor here\n\tfunction prng_newstate() {\n\t return new Arcfour();\n\t}\n\n\t// Pool size must be a multiple of 4 and greater than 32.\n\t// An array of bytes the size of the pool will be passed to init()\n\tvar rng_psize = 256;\n\n BigInteger.SecureRandom = SecureRandom;\n BigInteger.BigInteger = BigInteger;\n if (typeof exports !== 'undefined') {\n exports = module.exports = BigInteger;\n } else {\n this.BigInteger = BigInteger;\n this.SecureRandom = SecureRandom;\n }\n\n}).call(this);\n", "// Basic Javascript Elliptic Curve implementation\n// Ported loosely from BouncyCastle's Java EC code\n// Only Fp curves implemented for now\n\n// Requires jsbn.js and jsbn2.js\nvar BigInteger = require('jsbn').BigInteger\nvar Barrett = BigInteger.prototype.Barrett\n\n// ----------------\n// ECFieldElementFp\n\n// constructor\nfunction ECFieldElementFp(q,x) {\n this.x = x;\n // TODO if(x.compareTo(q) >= 0) error\n this.q = q;\n}\n\nfunction feFpEquals(other) {\n if(other == this) return true;\n return (this.q.equals(other.q) && this.x.equals(other.x));\n}\n\nfunction feFpToBigInteger() {\n return this.x;\n}\n\nfunction feFpNegate() {\n return new ECFieldElementFp(this.q, this.x.negate().mod(this.q));\n}\n\nfunction feFpAdd(b) {\n return new ECFieldElementFp(this.q, this.x.add(b.toBigInteger()).mod(this.q));\n}\n\nfunction feFpSubtract(b) {\n return new ECFieldElementFp(this.q, this.x.subtract(b.toBigInteger()).mod(this.q));\n}\n\nfunction feFpMultiply(b) {\n return new ECFieldElementFp(this.q, this.x.multiply(b.toBigInteger()).mod(this.q));\n}\n\nfunction feFpSquare() {\n return new ECFieldElementFp(this.q, this.x.square().mod(this.q));\n}\n\nfunction feFpDivide(b) {\n return new ECFieldElementFp(this.q, this.x.multiply(b.toBigInteger().modInverse(this.q)).mod(this.q));\n}\n\nECFieldElementFp.prototype.equals = feFpEquals;\nECFieldElementFp.prototype.toBigInteger = feFpToBigInteger;\nECFieldElementFp.prototype.negate = feFpNegate;\nECFieldElementFp.prototype.add = feFpAdd;\nECFieldElementFp.prototype.subtract = feFpSubtract;\nECFieldElementFp.prototype.multiply = feFpMultiply;\nECFieldElementFp.prototype.square = feFpSquare;\nECFieldElementFp.prototype.divide = feFpDivide;\n\n// ----------------\n// ECPointFp\n\n// constructor\nfunction ECPointFp(curve,x,y,z) {\n this.curve = curve;\n this.x = x;\n this.y = y;\n // Projective coordinates: either zinv == null or z * zinv == 1\n // z and zinv are just BigIntegers, not fieldElements\n if(z == null) {\n this.z = BigInteger.ONE;\n }\n else {\n this.z = z;\n }\n this.zinv = null;\n //TODO: compression flag\n}\n\nfunction pointFpGetX() {\n if(this.zinv == null) {\n this.zinv = this.z.modInverse(this.curve.q);\n }\n var r = this.x.toBigInteger().multiply(this.zinv);\n this.curve.reduce(r);\n return this.curve.fromBigInteger(r);\n}\n\nfunction pointFpGetY() {\n if(this.zinv == null) {\n this.zinv = this.z.modInverse(this.curve.q);\n }\n var r = this.y.toBigInteger().multiply(this.zinv);\n this.curve.reduce(r);\n return this.curve.fromBigInteger(r);\n}\n\nfunction pointFpEquals(other) {\n if(other == this) return true;\n if(this.isInfinity()) return other.isInfinity();\n if(other.isInfinity()) return this.isInfinity();\n var u, v;\n // u = Y2 * Z1 - Y1 * Z2\n u = other.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(other.z)).mod(this.curve.q);\n if(!u.equals(BigInteger.ZERO)) return false;\n // v = X2 * Z1 - X1 * Z2\n v = other.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(other.z)).mod(this.curve.q);\n return v.equals(BigInteger.ZERO);\n}\n\nfunction pointFpIsInfinity() {\n if((this.x == null) && (this.y == null)) return true;\n return this.z.equals(BigInteger.ZERO) && !this.y.toBigInteger().equals(BigInteger.ZERO);\n}\n\nfunction pointFpNegate() {\n return new ECPointFp(this.curve, this.x, this.y.negate(), this.z);\n}\n\nfunction pointFpAdd(b) {\n if(this.isInfinity()) return b;\n if(b.isInfinity()) return this;\n\n // u = Y2 * Z1 - Y1 * Z2\n var u = b.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(b.z)).mod(this.curve.q);\n // v = X2 * Z1 - X1 * Z2\n var v = b.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(b.z)).mod(this.curve.q);\n\n if(BigInteger.ZERO.equals(v)) {\n if(BigInteger.ZERO.equals(u)) {\n return this.twice(); // this == b, so double\n }\n\treturn this.curve.getInfinity(); // this = -b, so infinity\n }\n\n var THREE = new BigInteger(\"3\");\n var x1 = this.x.toBigInteger();\n var y1 = this.y.toBigInteger();\n var x2 = b.x.toBigInteger();\n var y2 = b.y.toBigInteger();\n\n var v2 = v.square();\n var v3 = v2.multiply(v);\n var x1v2 = x1.multiply(v2);\n var zu2 = u.square().multiply(this.z);\n\n // x3 = v * (z2 * (z1 * u^2 - 2 * x1 * v^2) - v^3)\n var x3 = zu2.subtract(x1v2.shiftLeft(1)).multiply(b.z).subtract(v3).multiply(v).mod(this.curve.q);\n // y3 = z2 * (3 * x1 * u * v^2 - y1 * v^3 - z1 * u^3) + u * v^3\n var y3 = x1v2.multiply(THREE).multiply(u).subtract(y1.multiply(v3)).subtract(zu2.multiply(u)).multiply(b.z).add(u.multiply(v3)).mod(this.curve.q);\n // z3 = v^3 * z1 * z2\n var z3 = v3.multiply(this.z).multiply(b.z).mod(this.curve.q);\n\n return new ECPointFp(this.curve, this.curve.fromBigInteger(x3), this.curve.fromBigInteger(y3), z3);\n}\n\nfunction pointFpTwice() {\n if(this.isInfinity()) return this;\n if(this.y.toBigInteger().signum() == 0) return this.curve.getInfinity();\n\n // TODO: optimized handling of constants\n var THREE = new BigInteger(\"3\");\n var x1 = this.x.toBigInteger();\n var y1 = this.y.toBigInteger();\n\n var y1z1 = y1.multiply(this.z);\n var y1sqz1 = y1z1.multiply(y1).mod(this.curve.q);\n var a = this.curve.a.toBigInteger();\n\n // w = 3 * x1^2 + a * z1^2\n var w = x1.square().multiply(THREE);\n if(!BigInteger.ZERO.equals(a)) {\n w = w.add(this.z.square().multiply(a));\n }\n w = w.mod(this.curve.q);\n //this.curve.reduce(w);\n // x3 = 2 * y1 * z1 * (w^2 - 8 * x1 * y1^2 * z1)\n var x3 = w.square().subtract(x1.shiftLeft(3).multiply(y1sqz1)).shiftLeft(1).multiply(y1z1).mod(this.curve.q);\n // y3 = 4 * y1^2 * z1 * (3 * w * x1 - 2 * y1^2 * z1) - w^3\n var y3 = w.multiply(THREE).multiply(x1).subtract(y1sqz1.shiftLeft(1)).shiftLeft(2).multiply(y1sqz1).subtract(w.square().multiply(w)).mod(this.curve.q);\n // z3 = 8 * (y1 * z1)^3\n var z3 = y1z1.square().multiply(y1z1).shiftLeft(3).mod(this.curve.q);\n\n return new ECPointFp(this.curve, this.curve.fromBigInteger(x3), this.curve.fromBigInteger(y3), z3);\n}\n\n// Simple NAF (Non-Adjacent Form) multiplication algorithm\n// TODO: modularize the multiplication algorithm\nfunction pointFpMultiply(k) {\n if(this.isInfinity()) return this;\n if(k.signum() == 0) return this.curve.getInfinity();\n\n var e = k;\n var h = e.multiply(new BigInteger(\"3\"));\n\n var neg = this.negate();\n var R = this;\n\n var i;\n for(i = h.bitLength() - 2; i > 0; --i) {\n\tR = R.twice();\n\n\tvar hBit = h.testBit(i);\n\tvar eBit = e.testBit(i);\n\n\tif (hBit != eBit) {\n\t R = R.add(hBit ? this : neg);\n\t}\n }\n\n return R;\n}\n\n// Compute this*j + x*k (simultaneous multiplication)\nfunction pointFpMultiplyTwo(j,x,k) {\n var i;\n if(j.bitLength() > k.bitLength())\n i = j.bitLength() - 1;\n else\n i = k.bitLength() - 1;\n\n var R = this.curve.getInfinity();\n var both = this.add(x);\n while(i >= 0) {\n R = R.twice();\n if(j.testBit(i)) {\n if(k.testBit(i)) {\n R = R.add(both);\n }\n else {\n R = R.add(this);\n }\n }\n else {\n if(k.testBit(i)) {\n R = R.add(x);\n }\n }\n --i;\n }\n\n return R;\n}\n\nECPointFp.prototype.getX = pointFpGetX;\nECPointFp.prototype.getY = pointFpGetY;\nECPointFp.prototype.equals = pointFpEquals;\nECPointFp.prototype.isInfinity = pointFpIsInfinity;\nECPointFp.prototype.negate = pointFpNegate;\nECPointFp.prototype.add = pointFpAdd;\nECPointFp.prototype.twice = pointFpTwice;\nECPointFp.prototype.multiply = pointFpMultiply;\nECPointFp.prototype.multiplyTwo = pointFpMultiplyTwo;\n\n// ----------------\n// ECCurveFp\n\n// constructor\nfunction ECCurveFp(q,a,b) {\n this.q = q;\n this.a = this.fromBigInteger(a);\n this.b = this.fromBigInteger(b);\n this.infinity = new ECPointFp(this, null, null);\n this.reducer = new Barrett(this.q);\n}\n\nfunction curveFpGetQ() {\n return this.q;\n}\n\nfunction curveFpGetA() {\n return this.a;\n}\n\nfunction curveFpGetB() {\n return this.b;\n}\n\nfunction curveFpEquals(other) {\n if(other == this) return true;\n return(this.q.equals(other.q) && this.a.equals(other.a) && this.b.equals(other.b));\n}\n\nfunction curveFpGetInfinity() {\n return this.infinity;\n}\n\nfunction curveFpFromBigInteger(x) {\n return new ECFieldElementFp(this.q, x);\n}\n\nfunction curveReduce(x) {\n this.reducer.reduce(x);\n}\n\n// for now, work with hex strings because they're easier in JS\nfunction curveFpDecodePointHex(s) {\n switch(parseInt(s.substr(0,2), 16)) { // first byte\n case 0:\n\treturn this.infinity;\n case 2:\n case 3:\n\t// point compression not supported yet\n\treturn null;\n case 4:\n case 6:\n case 7:\n\tvar len = (s.length - 2) / 2;\n\tvar xHex = s.substr(2, len);\n\tvar yHex = s.substr(len+2, len);\n\n\treturn new ECPointFp(this,\n\t\t\t this.fromBigInteger(new BigInteger(xHex, 16)),\n\t\t\t this.fromBigInteger(new BigInteger(yHex, 16)));\n\n default: // unsupported\n\treturn null;\n }\n}\n\nfunction curveFpEncodePointHex(p) {\n\tif (p.isInfinity()) return \"00\";\n\tvar xHex = p.getX().toBigInteger().toString(16);\n\tvar yHex = p.getY().toBigInteger().toString(16);\n\tvar oLen = this.getQ().toString(16).length;\n\tif ((oLen % 2) != 0) oLen++;\n\twhile (xHex.length < oLen) {\n\t\txHex = \"0\" + xHex;\n\t}\n\twhile (yHex.length < oLen) {\n\t\tyHex = \"0\" + yHex;\n\t}\n\treturn \"04\" + xHex + yHex;\n}\n\nECCurveFp.prototype.getQ = curveFpGetQ;\nECCurveFp.prototype.getA = curveFpGetA;\nECCurveFp.prototype.getB = curveFpGetB;\nECCurveFp.prototype.equals = curveFpEquals;\nECCurveFp.prototype.getInfinity = curveFpGetInfinity;\nECCurveFp.prototype.fromBigInteger = curveFpFromBigInteger;\nECCurveFp.prototype.reduce = curveReduce;\n//ECCurveFp.prototype.decodePointHex = curveFpDecodePointHex;\nECCurveFp.prototype.encodePointHex = curveFpEncodePointHex;\n\n// from: https://github.com/kaielvin/jsbn-ec-point-compression\nECCurveFp.prototype.decodePointHex = function(s)\n{\n\tvar yIsEven;\n switch(parseInt(s.substr(0,2), 16)) { // first byte\n case 0:\n\treturn this.infinity;\n case 2:\n\tyIsEven = false;\n case 3:\n\tif(yIsEven == undefined) yIsEven = true;\n\tvar len = s.length - 2;\n\tvar xHex = s.substr(2, len);\n\tvar x = this.fromBigInteger(new BigInteger(xHex,16));\n\tvar alpha = x.multiply(x.square().add(this.getA())).add(this.getB());\n\tvar beta = alpha.sqrt();\n\n if (beta == null) throw \"Invalid point compression\";\n\n var betaValue = beta.toBigInteger();\n if (betaValue.testBit(0) != yIsEven)\n {\n // Use the other root\n beta = this.fromBigInteger(this.getQ().subtract(betaValue));\n }\n return new ECPointFp(this,x,beta);\n case 4:\n case 6:\n case 7:\n\tvar len = (s.length - 2) / 2;\n\tvar xHex = s.substr(2, len);\n\tvar yHex = s.substr(len+2, len);\n\n\treturn new ECPointFp(this,\n\t\t\t this.fromBigInteger(new BigInteger(xHex, 16)),\n\t\t\t this.fromBigInteger(new BigInteger(yHex, 16)));\n\n default: // unsupported\n\treturn null;\n }\n}\nECCurveFp.prototype.encodeCompressedPointHex = function(p)\n{\n\tif (p.isInfinity()) return \"00\";\n\tvar xHex = p.getX().toBigInteger().toString(16);\n\tvar oLen = this.getQ().toString(16).length;\n\tif ((oLen % 2) != 0) oLen++;\n\twhile (xHex.length < oLen)\n\t\txHex = \"0\" + xHex;\n\tvar yPrefix;\n\tif(p.getY().toBigInteger().isEven()) yPrefix = \"02\";\n\telse yPrefix = \"03\";\n\n\treturn yPrefix + xHex;\n}\n\n\nECFieldElementFp.prototype.getR = function()\n{\n\tif(this.r != undefined) return this.r;\n\n this.r = null;\n var bitLength = this.q.bitLength();\n if (bitLength > 128)\n {\n var firstWord = this.q.shiftRight(bitLength - 64);\n if (firstWord.intValue() == -1)\n {\n this.r = BigInteger.ONE.shiftLeft(bitLength).subtract(this.q);\n }\n }\n return this.r;\n}\nECFieldElementFp.prototype.modMult = function(x1,x2)\n{\n return this.modReduce(x1.multiply(x2));\n}\nECFieldElementFp.prototype.modReduce = function(x)\n{\n if (this.getR() != null)\n {\n var qLen = q.bitLength();\n while (x.bitLength() > (qLen + 1))\n {\n var u = x.shiftRight(qLen);\n var v = x.subtract(u.shiftLeft(qLen));\n if (!this.getR().equals(BigInteger.ONE))\n {\n u = u.multiply(this.getR());\n }\n x = u.add(v); \n }\n while (x.compareTo(q) >= 0)\n {\n x = x.subtract(q);\n }\n }\n else\n {\n x = x.mod(q);\n }\n return x;\n}\nECFieldElementFp.prototype.sqrt = function()\n{\n if (!this.q.testBit(0)) throw \"unsupported\";\n\n // p mod 4 == 3\n if (this.q.testBit(1))\n {\n \tvar z = new ECFieldElementFp(this.q,this.x.modPow(this.q.shiftRight(2).add(BigInteger.ONE),this.q));\n \treturn z.square().equals(this) ? z : null;\n }\n\n // p mod 4 == 1\n var qMinusOne = this.q.subtract(BigInteger.ONE);\n\n var legendreExponent = qMinusOne.shiftRight(1);\n if (!(this.x.modPow(legendreExponent, this.q).equals(BigInteger.ONE)))\n {\n return null;\n }\n\n var u = qMinusOne.shiftRight(2);\n var k = u.shiftLeft(1).add(BigInteger.ONE);\n\n var Q = this.x;\n var fourQ = modDouble(modDouble(Q));\n\n var U, V;\n do\n {\n var P;\n do\n {\n P = new BigInteger(this.q.bitLength(), new SecureRandom());\n }\n while (P.compareTo(this.q) >= 0\n || !(P.multiply(P).subtract(fourQ).modPow(legendreExponent, this.q).equals(qMinusOne)));\n\n var result = this.lucasSequence(P, Q, k);\n U = result[0];\n V = result[1];\n\n if (this.modMult(V, V).equals(fourQ))\n {\n // Integer division by 2, mod q\n if (V.testBit(0))\n {\n V = V.add(q);\n }\n\n V = V.shiftRight(1);\n\n return new ECFieldElementFp(q,V);\n }\n }\n while (U.equals(BigInteger.ONE) || U.equals(qMinusOne));\n\n return null;\n}\nECFieldElementFp.prototype.lucasSequence = function(P,Q,k)\n{\n var n = k.bitLength();\n var s = k.getLowestSetBit();\n\n var Uh = BigInteger.ONE;\n var Vl = BigInteger.TWO;\n var Vh = P;\n var Ql = BigInteger.ONE;\n var Qh = BigInteger.ONE;\n\n for (var j = n - 1; j >= s + 1; --j)\n {\n Ql = this.modMult(Ql, Qh);\n\n if (k.testBit(j))\n {\n Qh = this.modMult(Ql, Q);\n Uh = this.modMult(Uh, Vh);\n Vl = this.modReduce(Vh.multiply(Vl).subtract(P.multiply(Ql)));\n Vh = this.modReduce(Vh.multiply(Vh).subtract(Qh.shiftLeft(1)));\n }\n else\n {\n Qh = Ql;\n Uh = this.modReduce(Uh.multiply(Vl).subtract(Ql));\n Vh = this.modReduce(Vh.multiply(Vl).subtract(P.multiply(Ql)));\n Vl = this.modReduce(Vl.multiply(Vl).subtract(Ql.shiftLeft(1)));\n }\n }\n\n Ql = this.modMult(Ql, Qh);\n Qh = this.modMult(Ql, Q);\n Uh = this.modReduce(Uh.multiply(Vl).subtract(Ql));\n Vl = this.modReduce(Vh.multiply(Vl).subtract(P.multiply(Ql)));\n Ql = this.modMult(Ql, Qh);\n\n for (var j = 1; j <= s; ++j)\n {\n Uh = this.modMult(Uh, Vl);\n Vl = this.modReduce(Vl.multiply(Vl).subtract(Ql.shiftLeft(1)));\n Ql = this.modMult(Ql, Ql);\n }\n\n return [ Uh, Vl ];\n}\n\nvar exports = {\n ECCurveFp: ECCurveFp,\n ECPointFp: ECPointFp,\n ECFieldElementFp: ECFieldElementFp\n}\n\nmodule.exports = exports\n", "(function(nacl) {\n'use strict';\n\n// Ported in 2014 by Dmitry Chestnykh and Devi Mandiri.\n// Public domain.\n//\n// Implementation derived from TweetNaCl version 20140427.\n// See for details: http://tweetnacl.cr.yp.to/\n\nvar gf = function(init) {\n var i, r = new Float64Array(16);\n if (init) for (i = 0; i < init.length; i++) r[i] = init[i];\n return r;\n};\n\n// Pluggable, initialized in high-level API below.\nvar randombytes = function(/* x, n */) { throw new Error('no PRNG'); };\n\nvar _0 = new Uint8Array(16);\nvar _9 = new Uint8Array(32); _9[0] = 9;\n\nvar gf0 = gf(),\n gf1 = gf([1]),\n _121665 = gf([0xdb41, 1]),\n D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]),\n D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]),\n X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]),\n Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]),\n I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]);\n\nfunction ts64(x, i, h, l) {\n x[i] = (h >> 24) & 0xff;\n x[i+1] = (h >> 16) & 0xff;\n x[i+2] = (h >> 8) & 0xff;\n x[i+3] = h & 0xff;\n x[i+4] = (l >> 24) & 0xff;\n x[i+5] = (l >> 16) & 0xff;\n x[i+6] = (l >> 8) & 0xff;\n x[i+7] = l & 0xff;\n}\n\nfunction vn(x, xi, y, yi, n) {\n var i,d = 0;\n for (i = 0; i < n; i++) d |= x[xi+i]^y[yi+i];\n return (1 & ((d - 1) >>> 8)) - 1;\n}\n\nfunction crypto_verify_16(x, xi, y, yi) {\n return vn(x,xi,y,yi,16);\n}\n\nfunction crypto_verify_32(x, xi, y, yi) {\n return vn(x,xi,y,yi,32);\n}\n\nfunction core_salsa20(o, p, k, c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n x0 = x0 + j0 | 0;\n x1 = x1 + j1 | 0;\n x2 = x2 + j2 | 0;\n x3 = x3 + j3 | 0;\n x4 = x4 + j4 | 0;\n x5 = x5 + j5 | 0;\n x6 = x6 + j6 | 0;\n x7 = x7 + j7 | 0;\n x8 = x8 + j8 | 0;\n x9 = x9 + j9 | 0;\n x10 = x10 + j10 | 0;\n x11 = x11 + j11 | 0;\n x12 = x12 + j12 | 0;\n x13 = x13 + j13 | 0;\n x14 = x14 + j14 | 0;\n x15 = x15 + j15 | 0;\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x1 >>> 0 & 0xff;\n o[ 5] = x1 >>> 8 & 0xff;\n o[ 6] = x1 >>> 16 & 0xff;\n o[ 7] = x1 >>> 24 & 0xff;\n\n o[ 8] = x2 >>> 0 & 0xff;\n o[ 9] = x2 >>> 8 & 0xff;\n o[10] = x2 >>> 16 & 0xff;\n o[11] = x2 >>> 24 & 0xff;\n\n o[12] = x3 >>> 0 & 0xff;\n o[13] = x3 >>> 8 & 0xff;\n o[14] = x3 >>> 16 & 0xff;\n o[15] = x3 >>> 24 & 0xff;\n\n o[16] = x4 >>> 0 & 0xff;\n o[17] = x4 >>> 8 & 0xff;\n o[18] = x4 >>> 16 & 0xff;\n o[19] = x4 >>> 24 & 0xff;\n\n o[20] = x5 >>> 0 & 0xff;\n o[21] = x5 >>> 8 & 0xff;\n o[22] = x5 >>> 16 & 0xff;\n o[23] = x5 >>> 24 & 0xff;\n\n o[24] = x6 >>> 0 & 0xff;\n o[25] = x6 >>> 8 & 0xff;\n o[26] = x6 >>> 16 & 0xff;\n o[27] = x6 >>> 24 & 0xff;\n\n o[28] = x7 >>> 0 & 0xff;\n o[29] = x7 >>> 8 & 0xff;\n o[30] = x7 >>> 16 & 0xff;\n o[31] = x7 >>> 24 & 0xff;\n\n o[32] = x8 >>> 0 & 0xff;\n o[33] = x8 >>> 8 & 0xff;\n o[34] = x8 >>> 16 & 0xff;\n o[35] = x8 >>> 24 & 0xff;\n\n o[36] = x9 >>> 0 & 0xff;\n o[37] = x9 >>> 8 & 0xff;\n o[38] = x9 >>> 16 & 0xff;\n o[39] = x9 >>> 24 & 0xff;\n\n o[40] = x10 >>> 0 & 0xff;\n o[41] = x10 >>> 8 & 0xff;\n o[42] = x10 >>> 16 & 0xff;\n o[43] = x10 >>> 24 & 0xff;\n\n o[44] = x11 >>> 0 & 0xff;\n o[45] = x11 >>> 8 & 0xff;\n o[46] = x11 >>> 16 & 0xff;\n o[47] = x11 >>> 24 & 0xff;\n\n o[48] = x12 >>> 0 & 0xff;\n o[49] = x12 >>> 8 & 0xff;\n o[50] = x12 >>> 16 & 0xff;\n o[51] = x12 >>> 24 & 0xff;\n\n o[52] = x13 >>> 0 & 0xff;\n o[53] = x13 >>> 8 & 0xff;\n o[54] = x13 >>> 16 & 0xff;\n o[55] = x13 >>> 24 & 0xff;\n\n o[56] = x14 >>> 0 & 0xff;\n o[57] = x14 >>> 8 & 0xff;\n o[58] = x14 >>> 16 & 0xff;\n o[59] = x14 >>> 24 & 0xff;\n\n o[60] = x15 >>> 0 & 0xff;\n o[61] = x15 >>> 8 & 0xff;\n o[62] = x15 >>> 16 & 0xff;\n o[63] = x15 >>> 24 & 0xff;\n}\n\nfunction core_hsalsa20(o,p,k,c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x5 >>> 0 & 0xff;\n o[ 5] = x5 >>> 8 & 0xff;\n o[ 6] = x5 >>> 16 & 0xff;\n o[ 7] = x5 >>> 24 & 0xff;\n\n o[ 8] = x10 >>> 0 & 0xff;\n o[ 9] = x10 >>> 8 & 0xff;\n o[10] = x10 >>> 16 & 0xff;\n o[11] = x10 >>> 24 & 0xff;\n\n o[12] = x15 >>> 0 & 0xff;\n o[13] = x15 >>> 8 & 0xff;\n o[14] = x15 >>> 16 & 0xff;\n o[15] = x15 >>> 24 & 0xff;\n\n o[16] = x6 >>> 0 & 0xff;\n o[17] = x6 >>> 8 & 0xff;\n o[18] = x6 >>> 16 & 0xff;\n o[19] = x6 >>> 24 & 0xff;\n\n o[20] = x7 >>> 0 & 0xff;\n o[21] = x7 >>> 8 & 0xff;\n o[22] = x7 >>> 16 & 0xff;\n o[23] = x7 >>> 24 & 0xff;\n\n o[24] = x8 >>> 0 & 0xff;\n o[25] = x8 >>> 8 & 0xff;\n o[26] = x8 >>> 16 & 0xff;\n o[27] = x8 >>> 24 & 0xff;\n\n o[28] = x9 >>> 0 & 0xff;\n o[29] = x9 >>> 8 & 0xff;\n o[30] = x9 >>> 16 & 0xff;\n o[31] = x9 >>> 24 & 0xff;\n}\n\nfunction crypto_core_salsa20(out,inp,k,c) {\n core_salsa20(out,inp,k,c);\n}\n\nfunction crypto_core_hsalsa20(out,inp,k,c) {\n core_hsalsa20(out,inp,k,c);\n}\n\nvar sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]);\n // \"expand 32-byte k\"\n\nfunction crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n mpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n }\n return 0;\n}\n\nfunction crypto_stream_salsa20(c,cpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = x[i];\n }\n return 0;\n}\n\nfunction crypto_stream(c,cpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20(c,cpos,d,sn,s);\n}\n\nfunction crypto_stream_xor(c,cpos,m,mpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,sn,s);\n}\n\n/*\n* Port of Andrew Moon's Poly1305-donna-16. Public domain.\n* https://github.com/floodyberry/poly1305-donna\n*/\n\nvar poly1305 = function(key) {\n this.buffer = new Uint8Array(16);\n this.r = new Uint16Array(10);\n this.h = new Uint16Array(10);\n this.pad = new Uint16Array(8);\n this.leftover = 0;\n this.fin = 0;\n\n var t0, t1, t2, t3, t4, t5, t6, t7;\n\n t0 = key[ 0] & 0xff | (key[ 1] & 0xff) << 8; this.r[0] = ( t0 ) & 0x1fff;\n t1 = key[ 2] & 0xff | (key[ 3] & 0xff) << 8; this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = key[ 4] & 0xff | (key[ 5] & 0xff) << 8; this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03;\n t3 = key[ 6] & 0xff | (key[ 7] & 0xff) << 8; this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = key[ 8] & 0xff | (key[ 9] & 0xff) << 8; this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff;\n this.r[5] = ((t4 >>> 1)) & 0x1ffe;\n t5 = key[10] & 0xff | (key[11] & 0xff) << 8; this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = key[12] & 0xff | (key[13] & 0xff) << 8; this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81;\n t7 = key[14] & 0xff | (key[15] & 0xff) << 8; this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n this.r[9] = ((t7 >>> 5)) & 0x007f;\n\n this.pad[0] = key[16] & 0xff | (key[17] & 0xff) << 8;\n this.pad[1] = key[18] & 0xff | (key[19] & 0xff) << 8;\n this.pad[2] = key[20] & 0xff | (key[21] & 0xff) << 8;\n this.pad[3] = key[22] & 0xff | (key[23] & 0xff) << 8;\n this.pad[4] = key[24] & 0xff | (key[25] & 0xff) << 8;\n this.pad[5] = key[26] & 0xff | (key[27] & 0xff) << 8;\n this.pad[6] = key[28] & 0xff | (key[29] & 0xff) << 8;\n this.pad[7] = key[30] & 0xff | (key[31] & 0xff) << 8;\n};\n\npoly1305.prototype.blocks = function(m, mpos, bytes) {\n var hibit = this.fin ? 0 : (1 << 11);\n var t0, t1, t2, t3, t4, t5, t6, t7, c;\n var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9;\n\n var h0 = this.h[0],\n h1 = this.h[1],\n h2 = this.h[2],\n h3 = this.h[3],\n h4 = this.h[4],\n h5 = this.h[5],\n h6 = this.h[6],\n h7 = this.h[7],\n h8 = this.h[8],\n h9 = this.h[9];\n\n var r0 = this.r[0],\n r1 = this.r[1],\n r2 = this.r[2],\n r3 = this.r[3],\n r4 = this.r[4],\n r5 = this.r[5],\n r6 = this.r[6],\n r7 = this.r[7],\n r8 = this.r[8],\n r9 = this.r[9];\n\n while (bytes >= 16) {\n t0 = m[mpos+ 0] & 0xff | (m[mpos+ 1] & 0xff) << 8; h0 += ( t0 ) & 0x1fff;\n t1 = m[mpos+ 2] & 0xff | (m[mpos+ 3] & 0xff) << 8; h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = m[mpos+ 4] & 0xff | (m[mpos+ 5] & 0xff) << 8; h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff;\n t3 = m[mpos+ 6] & 0xff | (m[mpos+ 7] & 0xff) << 8; h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = m[mpos+ 8] & 0xff | (m[mpos+ 9] & 0xff) << 8; h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff;\n h5 += ((t4 >>> 1)) & 0x1fff;\n t5 = m[mpos+10] & 0xff | (m[mpos+11] & 0xff) << 8; h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = m[mpos+12] & 0xff | (m[mpos+13] & 0xff) << 8; h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff;\n t7 = m[mpos+14] & 0xff | (m[mpos+15] & 0xff) << 8; h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n h9 += ((t7 >>> 5)) | hibit;\n\n c = 0;\n\n d0 = c;\n d0 += h0 * r0;\n d0 += h1 * (5 * r9);\n d0 += h2 * (5 * r8);\n d0 += h3 * (5 * r7);\n d0 += h4 * (5 * r6);\n c = (d0 >>> 13); d0 &= 0x1fff;\n d0 += h5 * (5 * r5);\n d0 += h6 * (5 * r4);\n d0 += h7 * (5 * r3);\n d0 += h8 * (5 * r2);\n d0 += h9 * (5 * r1);\n c += (d0 >>> 13); d0 &= 0x1fff;\n\n d1 = c;\n d1 += h0 * r1;\n d1 += h1 * r0;\n d1 += h2 * (5 * r9);\n d1 += h3 * (5 * r8);\n d1 += h4 * (5 * r7);\n c = (d1 >>> 13); d1 &= 0x1fff;\n d1 += h5 * (5 * r6);\n d1 += h6 * (5 * r5);\n d1 += h7 * (5 * r4);\n d1 += h8 * (5 * r3);\n d1 += h9 * (5 * r2);\n c += (d1 >>> 13); d1 &= 0x1fff;\n\n d2 = c;\n d2 += h0 * r2;\n d2 += h1 * r1;\n d2 += h2 * r0;\n d2 += h3 * (5 * r9);\n d2 += h4 * (5 * r8);\n c = (d2 >>> 13); d2 &= 0x1fff;\n d2 += h5 * (5 * r7);\n d2 += h6 * (5 * r6);\n d2 += h7 * (5 * r5);\n d2 += h8 * (5 * r4);\n d2 += h9 * (5 * r3);\n c += (d2 >>> 13); d2 &= 0x1fff;\n\n d3 = c;\n d3 += h0 * r3;\n d3 += h1 * r2;\n d3 += h2 * r1;\n d3 += h3 * r0;\n d3 += h4 * (5 * r9);\n c = (d3 >>> 13); d3 &= 0x1fff;\n d3 += h5 * (5 * r8);\n d3 += h6 * (5 * r7);\n d3 += h7 * (5 * r6);\n d3 += h8 * (5 * r5);\n d3 += h9 * (5 * r4);\n c += (d3 >>> 13); d3 &= 0x1fff;\n\n d4 = c;\n d4 += h0 * r4;\n d4 += h1 * r3;\n d4 += h2 * r2;\n d4 += h3 * r1;\n d4 += h4 * r0;\n c = (d4 >>> 13); d4 &= 0x1fff;\n d4 += h5 * (5 * r9);\n d4 += h6 * (5 * r8);\n d4 += h7 * (5 * r7);\n d4 += h8 * (5 * r6);\n d4 += h9 * (5 * r5);\n c += (d4 >>> 13); d4 &= 0x1fff;\n\n d5 = c;\n d5 += h0 * r5;\n d5 += h1 * r4;\n d5 += h2 * r3;\n d5 += h3 * r2;\n d5 += h4 * r1;\n c = (d5 >>> 13); d5 &= 0x1fff;\n d5 += h5 * r0;\n d5 += h6 * (5 * r9);\n d5 += h7 * (5 * r8);\n d5 += h8 * (5 * r7);\n d5 += h9 * (5 * r6);\n c += (d5 >>> 13); d5 &= 0x1fff;\n\n d6 = c;\n d6 += h0 * r6;\n d6 += h1 * r5;\n d6 += h2 * r4;\n d6 += h3 * r3;\n d6 += h4 * r2;\n c = (d6 >>> 13); d6 &= 0x1fff;\n d6 += h5 * r1;\n d6 += h6 * r0;\n d6 += h7 * (5 * r9);\n d6 += h8 * (5 * r8);\n d6 += h9 * (5 * r7);\n c += (d6 >>> 13); d6 &= 0x1fff;\n\n d7 = c;\n d7 += h0 * r7;\n d7 += h1 * r6;\n d7 += h2 * r5;\n d7 += h3 * r4;\n d7 += h4 * r3;\n c = (d7 >>> 13); d7 &= 0x1fff;\n d7 += h5 * r2;\n d7 += h6 * r1;\n d7 += h7 * r0;\n d7 += h8 * (5 * r9);\n d7 += h9 * (5 * r8);\n c += (d7 >>> 13); d7 &= 0x1fff;\n\n d8 = c;\n d8 += h0 * r8;\n d8 += h1 * r7;\n d8 += h2 * r6;\n d8 += h3 * r5;\n d8 += h4 * r4;\n c = (d8 >>> 13); d8 &= 0x1fff;\n d8 += h5 * r3;\n d8 += h6 * r2;\n d8 += h7 * r1;\n d8 += h8 * r0;\n d8 += h9 * (5 * r9);\n c += (d8 >>> 13); d8 &= 0x1fff;\n\n d9 = c;\n d9 += h0 * r9;\n d9 += h1 * r8;\n d9 += h2 * r7;\n d9 += h3 * r6;\n d9 += h4 * r5;\n c = (d9 >>> 13); d9 &= 0x1fff;\n d9 += h5 * r4;\n d9 += h6 * r3;\n d9 += h7 * r2;\n d9 += h8 * r1;\n d9 += h9 * r0;\n c += (d9 >>> 13); d9 &= 0x1fff;\n\n c = (((c << 2) + c)) | 0;\n c = (c + d0) | 0;\n d0 = c & 0x1fff;\n c = (c >>> 13);\n d1 += c;\n\n h0 = d0;\n h1 = d1;\n h2 = d2;\n h3 = d3;\n h4 = d4;\n h5 = d5;\n h6 = d6;\n h7 = d7;\n h8 = d8;\n h9 = d9;\n\n mpos += 16;\n bytes -= 16;\n }\n this.h[0] = h0;\n this.h[1] = h1;\n this.h[2] = h2;\n this.h[3] = h3;\n this.h[4] = h4;\n this.h[5] = h5;\n this.h[6] = h6;\n this.h[7] = h7;\n this.h[8] = h8;\n this.h[9] = h9;\n};\n\npoly1305.prototype.finish = function(mac, macpos) {\n var g = new Uint16Array(10);\n var c, mask, f, i;\n\n if (this.leftover) {\n i = this.leftover;\n this.buffer[i++] = 1;\n for (; i < 16; i++) this.buffer[i] = 0;\n this.fin = 1;\n this.blocks(this.buffer, 0, 16);\n }\n\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n for (i = 2; i < 10; i++) {\n this.h[i] += c;\n c = this.h[i] >>> 13;\n this.h[i] &= 0x1fff;\n }\n this.h[0] += (c * 5);\n c = this.h[0] >>> 13;\n this.h[0] &= 0x1fff;\n this.h[1] += c;\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n this.h[2] += c;\n\n g[0] = this.h[0] + 5;\n c = g[0] >>> 13;\n g[0] &= 0x1fff;\n for (i = 1; i < 10; i++) {\n g[i] = this.h[i] + c;\n c = g[i] >>> 13;\n g[i] &= 0x1fff;\n }\n g[9] -= (1 << 13);\n\n mask = (c ^ 1) - 1;\n for (i = 0; i < 10; i++) g[i] &= mask;\n mask = ~mask;\n for (i = 0; i < 10; i++) this.h[i] = (this.h[i] & mask) | g[i];\n\n this.h[0] = ((this.h[0] ) | (this.h[1] << 13) ) & 0xffff;\n this.h[1] = ((this.h[1] >>> 3) | (this.h[2] << 10) ) & 0xffff;\n this.h[2] = ((this.h[2] >>> 6) | (this.h[3] << 7) ) & 0xffff;\n this.h[3] = ((this.h[3] >>> 9) | (this.h[4] << 4) ) & 0xffff;\n this.h[4] = ((this.h[4] >>> 12) | (this.h[5] << 1) | (this.h[6] << 14)) & 0xffff;\n this.h[5] = ((this.h[6] >>> 2) | (this.h[7] << 11) ) & 0xffff;\n this.h[6] = ((this.h[7] >>> 5) | (this.h[8] << 8) ) & 0xffff;\n this.h[7] = ((this.h[8] >>> 8) | (this.h[9] << 5) ) & 0xffff;\n\n f = this.h[0] + this.pad[0];\n this.h[0] = f & 0xffff;\n for (i = 1; i < 8; i++) {\n f = (((this.h[i] + this.pad[i]) | 0) + (f >>> 16)) | 0;\n this.h[i] = f & 0xffff;\n }\n\n mac[macpos+ 0] = (this.h[0] >>> 0) & 0xff;\n mac[macpos+ 1] = (this.h[0] >>> 8) & 0xff;\n mac[macpos+ 2] = (this.h[1] >>> 0) & 0xff;\n mac[macpos+ 3] = (this.h[1] >>> 8) & 0xff;\n mac[macpos+ 4] = (this.h[2] >>> 0) & 0xff;\n mac[macpos+ 5] = (this.h[2] >>> 8) & 0xff;\n mac[macpos+ 6] = (this.h[3] >>> 0) & 0xff;\n mac[macpos+ 7] = (this.h[3] >>> 8) & 0xff;\n mac[macpos+ 8] = (this.h[4] >>> 0) & 0xff;\n mac[macpos+ 9] = (this.h[4] >>> 8) & 0xff;\n mac[macpos+10] = (this.h[5] >>> 0) & 0xff;\n mac[macpos+11] = (this.h[5] >>> 8) & 0xff;\n mac[macpos+12] = (this.h[6] >>> 0) & 0xff;\n mac[macpos+13] = (this.h[6] >>> 8) & 0xff;\n mac[macpos+14] = (this.h[7] >>> 0) & 0xff;\n mac[macpos+15] = (this.h[7] >>> 8) & 0xff;\n};\n\npoly1305.prototype.update = function(m, mpos, bytes) {\n var i, want;\n\n if (this.leftover) {\n want = (16 - this.leftover);\n if (want > bytes)\n want = bytes;\n for (i = 0; i < want; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n bytes -= want;\n mpos += want;\n this.leftover += want;\n if (this.leftover < 16)\n return;\n this.blocks(this.buffer, 0, 16);\n this.leftover = 0;\n }\n\n if (bytes >= 16) {\n want = bytes - (bytes % 16);\n this.blocks(m, mpos, want);\n mpos += want;\n bytes -= want;\n }\n\n if (bytes) {\n for (i = 0; i < bytes; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n this.leftover += bytes;\n }\n};\n\nfunction crypto_onetimeauth(out, outpos, m, mpos, n, k) {\n var s = new poly1305(k);\n s.update(m, mpos, n);\n s.finish(out, outpos);\n return 0;\n}\n\nfunction crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) {\n var x = new Uint8Array(16);\n crypto_onetimeauth(x,0,m,mpos,n,k);\n return crypto_verify_16(h,hpos,x,0);\n}\n\nfunction crypto_secretbox(c,m,d,n,k) {\n var i;\n if (d < 32) return -1;\n crypto_stream_xor(c,0,m,0,d,n,k);\n crypto_onetimeauth(c, 16, c, 32, d - 32, c);\n for (i = 0; i < 16; i++) c[i] = 0;\n return 0;\n}\n\nfunction crypto_secretbox_open(m,c,d,n,k) {\n var i;\n var x = new Uint8Array(32);\n if (d < 32) return -1;\n crypto_stream(x,0,32,n,k);\n if (crypto_onetimeauth_verify(c, 16,c, 32,d - 32,x) !== 0) return -1;\n crypto_stream_xor(m,0,c,0,d,n,k);\n for (i = 0; i < 32; i++) m[i] = 0;\n return 0;\n}\n\nfunction set25519(r, a) {\n var i;\n for (i = 0; i < 16; i++) r[i] = a[i]|0;\n}\n\nfunction car25519(o) {\n var i, v, c = 1;\n for (i = 0; i < 16; i++) {\n v = o[i] + c + 65535;\n c = Math.floor(v / 65536);\n o[i] = v - c * 65536;\n }\n o[0] += c-1 + 37 * (c-1);\n}\n\nfunction sel25519(p, q, b) {\n var t, c = ~(b-1);\n for (var i = 0; i < 16; i++) {\n t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\n\nfunction pack25519(o, n) {\n var i, j, b;\n var m = gf(), t = gf();\n for (i = 0; i < 16; i++) t[i] = n[i];\n car25519(t);\n car25519(t);\n car25519(t);\n for (j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1);\n m[i-1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1);\n b = (m[15]>>16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1-b);\n }\n for (i = 0; i < 16; i++) {\n o[2*i] = t[i] & 0xff;\n o[2*i+1] = t[i]>>8;\n }\n}\n\nfunction neq25519(a, b) {\n var c = new Uint8Array(32), d = new Uint8Array(32);\n pack25519(c, a);\n pack25519(d, b);\n return crypto_verify_32(c, 0, d, 0);\n}\n\nfunction par25519(a) {\n var d = new Uint8Array(32);\n pack25519(d, a);\n return d[0] & 1;\n}\n\nfunction unpack25519(o, n) {\n var i;\n for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8);\n o[15] &= 0x7fff;\n}\n\nfunction A(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] + b[i];\n}\n\nfunction Z(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] - b[i];\n}\n\nfunction M(o, a, b) {\n var v, c,\n t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0,\n t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0,\n t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0,\n t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0,\n b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7],\n b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11],\n b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n\n v = a[0];\n t0 += v * b0;\n t1 += v * b1;\n t2 += v * b2;\n t3 += v * b3;\n t4 += v * b4;\n t5 += v * b5;\n t6 += v * b6;\n t7 += v * b7;\n t8 += v * b8;\n t9 += v * b9;\n t10 += v * b10;\n t11 += v * b11;\n t12 += v * b12;\n t13 += v * b13;\n t14 += v * b14;\n t15 += v * b15;\n v = a[1];\n t1 += v * b0;\n t2 += v * b1;\n t3 += v * b2;\n t4 += v * b3;\n t5 += v * b4;\n t6 += v * b5;\n t7 += v * b6;\n t8 += v * b7;\n t9 += v * b8;\n t10 += v * b9;\n t11 += v * b10;\n t12 += v * b11;\n t13 += v * b12;\n t14 += v * b13;\n t15 += v * b14;\n t16 += v * b15;\n v = a[2];\n t2 += v * b0;\n t3 += v * b1;\n t4 += v * b2;\n t5 += v * b3;\n t6 += v * b4;\n t7 += v * b5;\n t8 += v * b6;\n t9 += v * b7;\n t10 += v * b8;\n t11 += v * b9;\n t12 += v * b10;\n t13 += v * b11;\n t14 += v * b12;\n t15 += v * b13;\n t16 += v * b14;\n t17 += v * b15;\n v = a[3];\n t3 += v * b0;\n t4 += v * b1;\n t5 += v * b2;\n t6 += v * b3;\n t7 += v * b4;\n t8 += v * b5;\n t9 += v * b6;\n t10 += v * b7;\n t11 += v * b8;\n t12 += v * b9;\n t13 += v * b10;\n t14 += v * b11;\n t15 += v * b12;\n t16 += v * b13;\n t17 += v * b14;\n t18 += v * b15;\n v = a[4];\n t4 += v * b0;\n t5 += v * b1;\n t6 += v * b2;\n t7 += v * b3;\n t8 += v * b4;\n t9 += v * b5;\n t10 += v * b6;\n t11 += v * b7;\n t12 += v * b8;\n t13 += v * b9;\n t14 += v * b10;\n t15 += v * b11;\n t16 += v * b12;\n t17 += v * b13;\n t18 += v * b14;\n t19 += v * b15;\n v = a[5];\n t5 += v * b0;\n t6 += v * b1;\n t7 += v * b2;\n t8 += v * b3;\n t9 += v * b4;\n t10 += v * b5;\n t11 += v * b6;\n t12 += v * b7;\n t13 += v * b8;\n t14 += v * b9;\n t15 += v * b10;\n t16 += v * b11;\n t17 += v * b12;\n t18 += v * b13;\n t19 += v * b14;\n t20 += v * b15;\n v = a[6];\n t6 += v * b0;\n t7 += v * b1;\n t8 += v * b2;\n t9 += v * b3;\n t10 += v * b4;\n t11 += v * b5;\n t12 += v * b6;\n t13 += v * b7;\n t14 += v * b8;\n t15 += v * b9;\n t16 += v * b10;\n t17 += v * b11;\n t18 += v * b12;\n t19 += v * b13;\n t20 += v * b14;\n t21 += v * b15;\n v = a[7];\n t7 += v * b0;\n t8 += v * b1;\n t9 += v * b2;\n t10 += v * b3;\n t11 += v * b4;\n t12 += v * b5;\n t13 += v * b6;\n t14 += v * b7;\n t15 += v * b8;\n t16 += v * b9;\n t17 += v * b10;\n t18 += v * b11;\n t19 += v * b12;\n t20 += v * b13;\n t21 += v * b14;\n t22 += v * b15;\n v = a[8];\n t8 += v * b0;\n t9 += v * b1;\n t10 += v * b2;\n t11 += v * b3;\n t12 += v * b4;\n t13 += v * b5;\n t14 += v * b6;\n t15 += v * b7;\n t16 += v * b8;\n t17 += v * b9;\n t18 += v * b10;\n t19 += v * b11;\n t20 += v * b12;\n t21 += v * b13;\n t22 += v * b14;\n t23 += v * b15;\n v = a[9];\n t9 += v * b0;\n t10 += v * b1;\n t11 += v * b2;\n t12 += v * b3;\n t13 += v * b4;\n t14 += v * b5;\n t15 += v * b6;\n t16 += v * b7;\n t17 += v * b8;\n t18 += v * b9;\n t19 += v * b10;\n t20 += v * b11;\n t21 += v * b12;\n t22 += v * b13;\n t23 += v * b14;\n t24 += v * b15;\n v = a[10];\n t10 += v * b0;\n t11 += v * b1;\n t12 += v * b2;\n t13 += v * b3;\n t14 += v * b4;\n t15 += v * b5;\n t16 += v * b6;\n t17 += v * b7;\n t18 += v * b8;\n t19 += v * b9;\n t20 += v * b10;\n t21 += v * b11;\n t22 += v * b12;\n t23 += v * b13;\n t24 += v * b14;\n t25 += v * b15;\n v = a[11];\n t11 += v * b0;\n t12 += v * b1;\n t13 += v * b2;\n t14 += v * b3;\n t15 += v * b4;\n t16 += v * b5;\n t17 += v * b6;\n t18 += v * b7;\n t19 += v * b8;\n t20 += v * b9;\n t21 += v * b10;\n t22 += v * b11;\n t23 += v * b12;\n t24 += v * b13;\n t25 += v * b14;\n t26 += v * b15;\n v = a[12];\n t12 += v * b0;\n t13 += v * b1;\n t14 += v * b2;\n t15 += v * b3;\n t16 += v * b4;\n t17 += v * b5;\n t18 += v * b6;\n t19 += v * b7;\n t20 += v * b8;\n t21 += v * b9;\n t22 += v * b10;\n t23 += v * b11;\n t24 += v * b12;\n t25 += v * b13;\n t26 += v * b14;\n t27 += v * b15;\n v = a[13];\n t13 += v * b0;\n t14 += v * b1;\n t15 += v * b2;\n t16 += v * b3;\n t17 += v * b4;\n t18 += v * b5;\n t19 += v * b6;\n t20 += v * b7;\n t21 += v * b8;\n t22 += v * b9;\n t23 += v * b10;\n t24 += v * b11;\n t25 += v * b12;\n t26 += v * b13;\n t27 += v * b14;\n t28 += v * b15;\n v = a[14];\n t14 += v * b0;\n t15 += v * b1;\n t16 += v * b2;\n t17 += v * b3;\n t18 += v * b4;\n t19 += v * b5;\n t20 += v * b6;\n t21 += v * b7;\n t22 += v * b8;\n t23 += v * b9;\n t24 += v * b10;\n t25 += v * b11;\n t26 += v * b12;\n t27 += v * b13;\n t28 += v * b14;\n t29 += v * b15;\n v = a[15];\n t15 += v * b0;\n t16 += v * b1;\n t17 += v * b2;\n t18 += v * b3;\n t19 += v * b4;\n t20 += v * b5;\n t21 += v * b6;\n t22 += v * b7;\n t23 += v * b8;\n t24 += v * b9;\n t25 += v * b10;\n t26 += v * b11;\n t27 += v * b12;\n t28 += v * b13;\n t29 += v * b14;\n t30 += v * b15;\n\n t0 += 38 * t16;\n t1 += 38 * t17;\n t2 += 38 * t18;\n t3 += 38 * t19;\n t4 += 38 * t20;\n t5 += 38 * t21;\n t6 += 38 * t22;\n t7 += 38 * t23;\n t8 += 38 * t24;\n t9 += 38 * t25;\n t10 += 38 * t26;\n t11 += 38 * t27;\n t12 += 38 * t28;\n t13 += 38 * t29;\n t14 += 38 * t30;\n // t15 left as is\n\n // first car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n // second car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n o[ 0] = t0;\n o[ 1] = t1;\n o[ 2] = t2;\n o[ 3] = t3;\n o[ 4] = t4;\n o[ 5] = t5;\n o[ 6] = t6;\n o[ 7] = t7;\n o[ 8] = t8;\n o[ 9] = t9;\n o[10] = t10;\n o[11] = t11;\n o[12] = t12;\n o[13] = t13;\n o[14] = t14;\n o[15] = t15;\n}\n\nfunction S(o, a) {\n M(o, a, a);\n}\n\nfunction inv25519(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 253; a >= 0; a--) {\n S(c, c);\n if(a !== 2 && a !== 4) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction pow2523(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 250; a >= 0; a--) {\n S(c, c);\n if(a !== 1) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction crypto_scalarmult(q, n, p) {\n var z = new Uint8Array(32);\n var x = new Float64Array(80), r, i;\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf();\n for (i = 0; i < 31; i++) z[i] = n[i];\n z[31]=(n[31]&127)|64;\n z[0]&=248;\n unpack25519(x,p);\n for (i = 0; i < 16; i++) {\n b[i]=x[i];\n d[i]=a[i]=c[i]=0;\n }\n a[0]=d[0]=1;\n for (i=254; i>=0; --i) {\n r=(z[i>>>3]>>>(i&7))&1;\n sel25519(a,b,r);\n sel25519(c,d,r);\n A(e,a,c);\n Z(a,a,c);\n A(c,b,d);\n Z(b,b,d);\n S(d,e);\n S(f,a);\n M(a,c,a);\n M(c,b,e);\n A(e,a,c);\n Z(a,a,c);\n S(b,a);\n Z(c,d,f);\n M(a,c,_121665);\n A(a,a,d);\n M(c,c,a);\n M(a,d,f);\n M(d,b,x);\n S(b,e);\n sel25519(a,b,r);\n sel25519(c,d,r);\n }\n for (i = 0; i < 16; i++) {\n x[i+16]=a[i];\n x[i+32]=c[i];\n x[i+48]=b[i];\n x[i+64]=d[i];\n }\n var x32 = x.subarray(32);\n var x16 = x.subarray(16);\n inv25519(x32,x32);\n M(x16,x16,x32);\n pack25519(q,x16);\n return 0;\n}\n\nfunction crypto_scalarmult_base(q, n) {\n return crypto_scalarmult(q, n, _9);\n}\n\nfunction crypto_box_keypair(y, x) {\n randombytes(x, 32);\n return crypto_scalarmult_base(y, x);\n}\n\nfunction crypto_box_beforenm(k, y, x) {\n var s = new Uint8Array(32);\n crypto_scalarmult(s, x, y);\n return crypto_core_hsalsa20(k, _0, s, sigma);\n}\n\nvar crypto_box_afternm = crypto_secretbox;\nvar crypto_box_open_afternm = crypto_secretbox_open;\n\nfunction crypto_box(c, m, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_afternm(c, m, d, n, k);\n}\n\nfunction crypto_box_open(m, c, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_open_afternm(m, c, d, n, k);\n}\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction crypto_hashblocks_hl(hh, hl, m, n) {\n var wh = new Int32Array(16), wl = new Int32Array(16),\n bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7,\n bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7,\n th, tl, i, j, h, l, a, b, c, d;\n\n var ah0 = hh[0],\n ah1 = hh[1],\n ah2 = hh[2],\n ah3 = hh[3],\n ah4 = hh[4],\n ah5 = hh[5],\n ah6 = hh[6],\n ah7 = hh[7],\n\n al0 = hl[0],\n al1 = hl[1],\n al2 = hl[2],\n al3 = hl[3],\n al4 = hl[4],\n al5 = hl[5],\n al6 = hl[6],\n al7 = hl[7];\n\n var pos = 0;\n while (n >= 128) {\n for (i = 0; i < 16; i++) {\n j = 8 * i + pos;\n wh[i] = (m[j+0] << 24) | (m[j+1] << 16) | (m[j+2] << 8) | m[j+3];\n wl[i] = (m[j+4] << 24) | (m[j+5] << 16) | (m[j+6] << 8) | m[j+7];\n }\n for (i = 0; i < 80; i++) {\n bh0 = ah0;\n bh1 = ah1;\n bh2 = ah2;\n bh3 = ah3;\n bh4 = ah4;\n bh5 = ah5;\n bh6 = ah6;\n bh7 = ah7;\n\n bl0 = al0;\n bl1 = al1;\n bl2 = al2;\n bl3 = al3;\n bl4 = al4;\n bl5 = al5;\n bl6 = al6;\n bl7 = al7;\n\n // add\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma1\n h = ((ah4 >>> 14) | (al4 << (32-14))) ^ ((ah4 >>> 18) | (al4 << (32-18))) ^ ((al4 >>> (41-32)) | (ah4 << (32-(41-32))));\n l = ((al4 >>> 14) | (ah4 << (32-14))) ^ ((al4 >>> 18) | (ah4 << (32-18))) ^ ((ah4 >>> (41-32)) | (al4 << (32-(41-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Ch\n h = (ah4 & ah5) ^ (~ah4 & ah6);\n l = (al4 & al5) ^ (~al4 & al6);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // K\n h = K[i*2];\n l = K[i*2+1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // w\n h = wh[i%16];\n l = wl[i%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n th = c & 0xffff | d << 16;\n tl = a & 0xffff | b << 16;\n\n // add\n h = th;\n l = tl;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma0\n h = ((ah0 >>> 28) | (al0 << (32-28))) ^ ((al0 >>> (34-32)) | (ah0 << (32-(34-32)))) ^ ((al0 >>> (39-32)) | (ah0 << (32-(39-32))));\n l = ((al0 >>> 28) | (ah0 << (32-28))) ^ ((ah0 >>> (34-32)) | (al0 << (32-(34-32)))) ^ ((ah0 >>> (39-32)) | (al0 << (32-(39-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Maj\n h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2);\n l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh7 = (c & 0xffff) | (d << 16);\n bl7 = (a & 0xffff) | (b << 16);\n\n // add\n h = bh3;\n l = bl3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = th;\n l = tl;\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh3 = (c & 0xffff) | (d << 16);\n bl3 = (a & 0xffff) | (b << 16);\n\n ah1 = bh0;\n ah2 = bh1;\n ah3 = bh2;\n ah4 = bh3;\n ah5 = bh4;\n ah6 = bh5;\n ah7 = bh6;\n ah0 = bh7;\n\n al1 = bl0;\n al2 = bl1;\n al3 = bl2;\n al4 = bl3;\n al5 = bl4;\n al6 = bl5;\n al7 = bl6;\n al0 = bl7;\n\n if (i%16 === 15) {\n for (j = 0; j < 16; j++) {\n // add\n h = wh[j];\n l = wl[j];\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = wh[(j+9)%16];\n l = wl[(j+9)%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma0\n th = wh[(j+1)%16];\n tl = wl[(j+1)%16];\n h = ((th >>> 1) | (tl << (32-1))) ^ ((th >>> 8) | (tl << (32-8))) ^ (th >>> 7);\n l = ((tl >>> 1) | (th << (32-1))) ^ ((tl >>> 8) | (th << (32-8))) ^ ((tl >>> 7) | (th << (32-7)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma1\n th = wh[(j+14)%16];\n tl = wl[(j+14)%16];\n h = ((th >>> 19) | (tl << (32-19))) ^ ((tl >>> (61-32)) | (th << (32-(61-32)))) ^ (th >>> 6);\n l = ((tl >>> 19) | (th << (32-19))) ^ ((th >>> (61-32)) | (tl << (32-(61-32)))) ^ ((tl >>> 6) | (th << (32-6)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n wh[j] = (c & 0xffff) | (d << 16);\n wl[j] = (a & 0xffff) | (b << 16);\n }\n }\n }\n\n // add\n h = ah0;\n l = al0;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[0];\n l = hl[0];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[0] = ah0 = (c & 0xffff) | (d << 16);\n hl[0] = al0 = (a & 0xffff) | (b << 16);\n\n h = ah1;\n l = al1;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[1];\n l = hl[1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[1] = ah1 = (c & 0xffff) | (d << 16);\n hl[1] = al1 = (a & 0xffff) | (b << 16);\n\n h = ah2;\n l = al2;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[2];\n l = hl[2];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[2] = ah2 = (c & 0xffff) | (d << 16);\n hl[2] = al2 = (a & 0xffff) | (b << 16);\n\n h = ah3;\n l = al3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[3];\n l = hl[3];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[3] = ah3 = (c & 0xffff) | (d << 16);\n hl[3] = al3 = (a & 0xffff) | (b << 16);\n\n h = ah4;\n l = al4;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[4];\n l = hl[4];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[4] = ah4 = (c & 0xffff) | (d << 16);\n hl[4] = al4 = (a & 0xffff) | (b << 16);\n\n h = ah5;\n l = al5;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[5];\n l = hl[5];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[5] = ah5 = (c & 0xffff) | (d << 16);\n hl[5] = al5 = (a & 0xffff) | (b << 16);\n\n h = ah6;\n l = al6;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[6];\n l = hl[6];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[6] = ah6 = (c & 0xffff) | (d << 16);\n hl[6] = al6 = (a & 0xffff) | (b << 16);\n\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[7];\n l = hl[7];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[7] = ah7 = (c & 0xffff) | (d << 16);\n hl[7] = al7 = (a & 0xffff) | (b << 16);\n\n pos += 128;\n n -= 128;\n }\n\n return n;\n}\n\nfunction crypto_hash(out, m, n) {\n var hh = new Int32Array(8),\n hl = new Int32Array(8),\n x = new Uint8Array(256),\n i, b = n;\n\n hh[0] = 0x6a09e667;\n hh[1] = 0xbb67ae85;\n hh[2] = 0x3c6ef372;\n hh[3] = 0xa54ff53a;\n hh[4] = 0x510e527f;\n hh[5] = 0x9b05688c;\n hh[6] = 0x1f83d9ab;\n hh[7] = 0x5be0cd19;\n\n hl[0] = 0xf3bcc908;\n hl[1] = 0x84caa73b;\n hl[2] = 0xfe94f82b;\n hl[3] = 0x5f1d36f1;\n hl[4] = 0xade682d1;\n hl[5] = 0x2b3e6c1f;\n hl[6] = 0xfb41bd6b;\n hl[7] = 0x137e2179;\n\n crypto_hashblocks_hl(hh, hl, m, n);\n n %= 128;\n\n for (i = 0; i < n; i++) x[i] = m[b-n+i];\n x[n] = 128;\n\n n = 256-128*(n<112?1:0);\n x[n-9] = 0;\n ts64(x, n-8, (b / 0x20000000) | 0, b << 3);\n crypto_hashblocks_hl(hh, hl, x, n);\n\n for (i = 0; i < 8; i++) ts64(out, 8*i, hh[i], hl[i]);\n\n return 0;\n}\n\nfunction add(p, q) {\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf(),\n g = gf(), h = gf(), t = gf();\n\n Z(a, p[1], p[0]);\n Z(t, q[1], q[0]);\n M(a, a, t);\n A(b, p[0], p[1]);\n A(t, q[0], q[1]);\n M(b, b, t);\n M(c, p[3], q[3]);\n M(c, c, D2);\n M(d, p[2], q[2]);\n A(d, d, d);\n Z(e, b, a);\n Z(f, d, c);\n A(g, d, c);\n A(h, b, a);\n\n M(p[0], e, f);\n M(p[1], h, g);\n M(p[2], g, f);\n M(p[3], e, h);\n}\n\nfunction cswap(p, q, b) {\n var i;\n for (i = 0; i < 4; i++) {\n sel25519(p[i], q[i], b);\n }\n}\n\nfunction pack(r, p) {\n var tx = gf(), ty = gf(), zi = gf();\n inv25519(zi, p[2]);\n M(tx, p[0], zi);\n M(ty, p[1], zi);\n pack25519(r, ty);\n r[31] ^= par25519(tx) << 7;\n}\n\nfunction scalarmult(p, q, s) {\n var b, i;\n set25519(p[0], gf0);\n set25519(p[1], gf1);\n set25519(p[2], gf1);\n set25519(p[3], gf0);\n for (i = 255; i >= 0; --i) {\n b = (s[(i/8)|0] >> (i&7)) & 1;\n cswap(p, q, b);\n add(q, p);\n add(p, p);\n cswap(p, q, b);\n }\n}\n\nfunction scalarbase(p, s) {\n var q = [gf(), gf(), gf(), gf()];\n set25519(q[0], X);\n set25519(q[1], Y);\n set25519(q[2], gf1);\n M(q[3], X, Y);\n scalarmult(p, q, s);\n}\n\nfunction crypto_sign_keypair(pk, sk, seeded) {\n var d = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()];\n var i;\n\n if (!seeded) randombytes(sk, 32);\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n scalarbase(p, d);\n pack(pk, p);\n\n for (i = 0; i < 32; i++) sk[i+32] = pk[i];\n return 0;\n}\n\nvar L = new Float64Array([0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]);\n\nfunction modL(r, x) {\n var carry, i, j, k;\n for (i = 63; i >= 32; --i) {\n carry = 0;\n for (j = i - 32, k = i - 12; j < k; ++j) {\n x[j] += carry - 16 * x[i] * L[j - (i - 32)];\n carry = (x[j] + 128) >> 8;\n x[j] -= carry * 256;\n }\n x[j] += carry;\n x[i] = 0;\n }\n carry = 0;\n for (j = 0; j < 32; j++) {\n x[j] += carry - (x[31] >> 4) * L[j];\n carry = x[j] >> 8;\n x[j] &= 255;\n }\n for (j = 0; j < 32; j++) x[j] -= carry * L[j];\n for (i = 0; i < 32; i++) {\n x[i+1] += x[i] >> 8;\n r[i] = x[i] & 255;\n }\n}\n\nfunction reduce(r) {\n var x = new Float64Array(64), i;\n for (i = 0; i < 64; i++) x[i] = r[i];\n for (i = 0; i < 64; i++) r[i] = 0;\n modL(r, x);\n}\n\n// Note: difference from C - smlen returned, not passed as argument.\nfunction crypto_sign(sm, m, n, sk) {\n var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64);\n var i, j, x = new Float64Array(64);\n var p = [gf(), gf(), gf(), gf()];\n\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n var smlen = n + 64;\n for (i = 0; i < n; i++) sm[64 + i] = m[i];\n for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i];\n\n crypto_hash(r, sm.subarray(32), n+32);\n reduce(r);\n scalarbase(p, r);\n pack(sm, p);\n\n for (i = 32; i < 64; i++) sm[i] = sk[i];\n crypto_hash(h, sm, n + 64);\n reduce(h);\n\n for (i = 0; i < 64; i++) x[i] = 0;\n for (i = 0; i < 32; i++) x[i] = r[i];\n for (i = 0; i < 32; i++) {\n for (j = 0; j < 32; j++) {\n x[i+j] += h[i] * d[j];\n }\n }\n\n modL(sm.subarray(32), x);\n return smlen;\n}\n\nfunction unpackneg(r, p) {\n var t = gf(), chk = gf(), num = gf(),\n den = gf(), den2 = gf(), den4 = gf(),\n den6 = gf();\n\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n S(num, r[1]);\n M(den, num, D);\n Z(num, num, r[2]);\n A(den, r[2], den);\n\n S(den2, den);\n S(den4, den2);\n M(den6, den4, den2);\n M(t, den6, num);\n M(t, t, den);\n\n pow2523(t, t);\n M(t, t, num);\n M(t, t, den);\n M(t, t, den);\n M(r[0], t, den);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) M(r[0], r[0], I);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) return -1;\n\n if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]);\n\n M(r[3], r[0], r[1]);\n return 0;\n}\n\nfunction crypto_sign_open(m, sm, n, pk) {\n var i, mlen;\n var t = new Uint8Array(32), h = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()],\n q = [gf(), gf(), gf(), gf()];\n\n mlen = -1;\n if (n < 64) return -1;\n\n if (unpackneg(q, pk)) return -1;\n\n for (i = 0; i < n; i++) m[i] = sm[i];\n for (i = 0; i < 32; i++) m[i+32] = pk[i];\n crypto_hash(h, m, n);\n reduce(h);\n scalarmult(p, q, h);\n\n scalarbase(q, sm.subarray(32));\n add(p, q);\n pack(t, p);\n\n n -= 64;\n if (crypto_verify_32(sm, 0, t, 0)) {\n for (i = 0; i < n; i++) m[i] = 0;\n return -1;\n }\n\n for (i = 0; i < n; i++) m[i] = sm[i + 64];\n mlen = n;\n return mlen;\n}\n\nvar crypto_secretbox_KEYBYTES = 32,\n crypto_secretbox_NONCEBYTES = 24,\n crypto_secretbox_ZEROBYTES = 32,\n crypto_secretbox_BOXZEROBYTES = 16,\n crypto_scalarmult_BYTES = 32,\n crypto_scalarmult_SCALARBYTES = 32,\n crypto_box_PUBLICKEYBYTES = 32,\n crypto_box_SECRETKEYBYTES = 32,\n crypto_box_BEFORENMBYTES = 32,\n crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES,\n crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES,\n crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES,\n crypto_sign_BYTES = 64,\n crypto_sign_PUBLICKEYBYTES = 32,\n crypto_sign_SECRETKEYBYTES = 64,\n crypto_sign_SEEDBYTES = 32,\n crypto_hash_BYTES = 64;\n\nnacl.lowlevel = {\n crypto_core_hsalsa20: crypto_core_hsalsa20,\n crypto_stream_xor: crypto_stream_xor,\n crypto_stream: crypto_stream,\n crypto_stream_salsa20_xor: crypto_stream_salsa20_xor,\n crypto_stream_salsa20: crypto_stream_salsa20,\n crypto_onetimeauth: crypto_onetimeauth,\n crypto_onetimeauth_verify: crypto_onetimeauth_verify,\n crypto_verify_16: crypto_verify_16,\n crypto_verify_32: crypto_verify_32,\n crypto_secretbox: crypto_secretbox,\n crypto_secretbox_open: crypto_secretbox_open,\n crypto_scalarmult: crypto_scalarmult,\n crypto_scalarmult_base: crypto_scalarmult_base,\n crypto_box_beforenm: crypto_box_beforenm,\n crypto_box_afternm: crypto_box_afternm,\n crypto_box: crypto_box,\n crypto_box_open: crypto_box_open,\n crypto_box_keypair: crypto_box_keypair,\n crypto_hash: crypto_hash,\n crypto_sign: crypto_sign,\n crypto_sign_keypair: crypto_sign_keypair,\n crypto_sign_open: crypto_sign_open,\n\n crypto_secretbox_KEYBYTES: crypto_secretbox_KEYBYTES,\n crypto_secretbox_NONCEBYTES: crypto_secretbox_NONCEBYTES,\n crypto_secretbox_ZEROBYTES: crypto_secretbox_ZEROBYTES,\n crypto_secretbox_BOXZEROBYTES: crypto_secretbox_BOXZEROBYTES,\n crypto_scalarmult_BYTES: crypto_scalarmult_BYTES,\n crypto_scalarmult_SCALARBYTES: crypto_scalarmult_SCALARBYTES,\n crypto_box_PUBLICKEYBYTES: crypto_box_PUBLICKEYBYTES,\n crypto_box_SECRETKEYBYTES: crypto_box_SECRETKEYBYTES,\n crypto_box_BEFORENMBYTES: crypto_box_BEFORENMBYTES,\n crypto_box_NONCEBYTES: crypto_box_NONCEBYTES,\n crypto_box_ZEROBYTES: crypto_box_ZEROBYTES,\n crypto_box_BOXZEROBYTES: crypto_box_BOXZEROBYTES,\n crypto_sign_BYTES: crypto_sign_BYTES,\n crypto_sign_PUBLICKEYBYTES: crypto_sign_PUBLICKEYBYTES,\n crypto_sign_SECRETKEYBYTES: crypto_sign_SECRETKEYBYTES,\n crypto_sign_SEEDBYTES: crypto_sign_SEEDBYTES,\n crypto_hash_BYTES: crypto_hash_BYTES\n};\n\n/* High-level API */\n\nfunction checkLengths(k, n) {\n if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size');\n if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size');\n}\n\nfunction checkBoxLengths(pk, sk) {\n if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error('bad public key size');\n if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error('bad secret key size');\n}\n\nfunction checkArrayTypes() {\n var t, i;\n for (i = 0; i < arguments.length; i++) {\n if ((t = Object.prototype.toString.call(arguments[i])) !== '[object Uint8Array]')\n throw new TypeError('unexpected type ' + t + ', use Uint8Array');\n }\n}\n\nfunction cleanup(arr) {\n for (var i = 0; i < arr.length; i++) arr[i] = 0;\n}\n\n// TODO: Completely remove this in v0.15.\nif (!nacl.util) {\n nacl.util = {};\n nacl.util.decodeUTF8 = nacl.util.encodeUTF8 = nacl.util.encodeBase64 = nacl.util.decodeBase64 = function() {\n throw new Error('nacl.util moved into separate package: https://github.com/dchest/tweetnacl-util-js');\n };\n}\n\nnacl.randomBytes = function(n) {\n var b = new Uint8Array(n);\n randombytes(b, n);\n return b;\n};\n\nnacl.secretbox = function(msg, nonce, key) {\n checkArrayTypes(msg, nonce, key);\n checkLengths(key, nonce);\n var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length);\n var c = new Uint8Array(m.length);\n for (var i = 0; i < msg.length; i++) m[i+crypto_secretbox_ZEROBYTES] = msg[i];\n crypto_secretbox(c, m, m.length, nonce, key);\n return c.subarray(crypto_secretbox_BOXZEROBYTES);\n};\n\nnacl.secretbox.open = function(box, nonce, key) {\n checkArrayTypes(box, nonce, key);\n checkLengths(key, nonce);\n var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length);\n var m = new Uint8Array(c.length);\n for (var i = 0; i < box.length; i++) c[i+crypto_secretbox_BOXZEROBYTES] = box[i];\n if (c.length < 32) return false;\n if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return false;\n return m.subarray(crypto_secretbox_ZEROBYTES);\n};\n\nnacl.secretbox.keyLength = crypto_secretbox_KEYBYTES;\nnacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES;\nnacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES;\n\nnacl.scalarMult = function(n, p) {\n checkArrayTypes(n, p);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult(q, n, p);\n return q;\n};\n\nnacl.scalarMult.base = function(n) {\n checkArrayTypes(n);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult_base(q, n);\n return q;\n};\n\nnacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES;\nnacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES;\n\nnacl.box = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox(msg, nonce, k);\n};\n\nnacl.box.before = function(publicKey, secretKey) {\n checkArrayTypes(publicKey, secretKey);\n checkBoxLengths(publicKey, secretKey);\n var k = new Uint8Array(crypto_box_BEFORENMBYTES);\n crypto_box_beforenm(k, publicKey, secretKey);\n return k;\n};\n\nnacl.box.after = nacl.secretbox;\n\nnacl.box.open = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox.open(msg, nonce, k);\n};\n\nnacl.box.open.after = nacl.secretbox.open;\n\nnacl.box.keyPair = function() {\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_box_SECRETKEYBYTES);\n crypto_box_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.box.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_box_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n crypto_scalarmult_base(pk, secretKey);\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES;\nnacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES;\nnacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES;\nnacl.box.nonceLength = crypto_box_NONCEBYTES;\nnacl.box.overheadLength = nacl.secretbox.overheadLength;\n\nnacl.sign = function(msg, secretKey) {\n checkArrayTypes(msg, secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length);\n crypto_sign(signedMsg, msg, msg.length, secretKey);\n return signedMsg;\n};\n\nnacl.sign.open = function(signedMsg, publicKey) {\n if (arguments.length !== 2)\n throw new Error('nacl.sign.open accepts 2 arguments; did you mean to use nacl.sign.detached.verify?');\n checkArrayTypes(signedMsg, publicKey);\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var tmp = new Uint8Array(signedMsg.length);\n var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey);\n if (mlen < 0) return null;\n var m = new Uint8Array(mlen);\n for (var i = 0; i < m.length; i++) m[i] = tmp[i];\n return m;\n};\n\nnacl.sign.detached = function(msg, secretKey) {\n var signedMsg = nacl.sign(msg, secretKey);\n var sig = new Uint8Array(crypto_sign_BYTES);\n for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i];\n return sig;\n};\n\nnacl.sign.detached.verify = function(msg, sig, publicKey) {\n checkArrayTypes(msg, sig, publicKey);\n if (sig.length !== crypto_sign_BYTES)\n throw new Error('bad signature size');\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var sm = new Uint8Array(crypto_sign_BYTES + msg.length);\n var m = new Uint8Array(crypto_sign_BYTES + msg.length);\n var i;\n for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i];\n for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i];\n return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0);\n};\n\nnacl.sign.keyPair = function() {\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n crypto_sign_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i];\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.sign.keyPair.fromSeed = function(seed) {\n checkArrayTypes(seed);\n if (seed.length !== crypto_sign_SEEDBYTES)\n throw new Error('bad seed size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n for (var i = 0; i < 32; i++) sk[i] = seed[i];\n crypto_sign_keypair(pk, sk, true);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES;\nnacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES;\nnacl.sign.seedLength = crypto_sign_SEEDBYTES;\nnacl.sign.signatureLength = crypto_sign_BYTES;\n\nnacl.hash = function(msg) {\n checkArrayTypes(msg);\n var h = new Uint8Array(crypto_hash_BYTES);\n crypto_hash(h, msg, msg.length);\n return h;\n};\n\nnacl.hash.hashLength = crypto_hash_BYTES;\n\nnacl.verify = function(x, y) {\n checkArrayTypes(x, y);\n // Zero length arguments are considered not equal.\n if (x.length === 0 || y.length === 0) return false;\n if (x.length !== y.length) return false;\n return (vn(x, 0, y, 0, x.length) === 0) ? true : false;\n};\n\nnacl.setPRNG = function(fn) {\n randombytes = fn;\n};\n\n(function() {\n // Initialize PRNG if environment provides CSPRNG.\n // If not, methods calling randombytes will throw.\n var crypto = typeof self !== 'undefined' ? (self.crypto || self.msCrypto) : null;\n if (crypto && crypto.getRandomValues) {\n // Browsers.\n var QUOTA = 65536;\n nacl.setPRNG(function(x, n) {\n var i, v = new Uint8Array(n);\n for (i = 0; i < n; i += QUOTA) {\n crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA)));\n }\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n } else if (typeof require !== 'undefined') {\n // Node.js.\n crypto = require('crypto');\n if (crypto && crypto.randomBytes) {\n nacl.setPRNG(function(x, n) {\n var i, v = crypto.randomBytes(n);\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n }\n }\n})();\n\n})(typeof module !== 'undefined' && module.exports ? module.exports : (self.nacl = self.nacl || {}));\n", "// Copyright 2015 Joyent, Inc.\n\nmodule.exports = {\n\tbufferSplit: bufferSplit,\n\taddRSAMissing: addRSAMissing,\n\tcalculateDSAPublic: calculateDSAPublic,\n\tcalculateED25519Public: calculateED25519Public,\n\tcalculateX25519Public: calculateX25519Public,\n\tmpNormalize: mpNormalize,\n\tmpDenormalize: mpDenormalize,\n\tecNormalize: ecNormalize,\n\tcountZeros: countZeros,\n\tassertCompatible: assertCompatible,\n\tisCompatible: isCompatible,\n\topensslKeyDeriv: opensslKeyDeriv,\n\topensshCipherInfo: opensshCipherInfo,\n\tpublicFromPrivateECDSA: publicFromPrivateECDSA,\n\tzeroPadToLength: zeroPadToLength,\n\twriteBitString: writeBitString,\n\treadBitString: readBitString,\n\tpbkdf2: pbkdf2\n};\n\nvar assert = require('assert-plus');\nvar Buffer = require('safer-buffer').Buffer;\nvar PrivateKey = require('./private-key');\nvar Key = require('./key');\nvar crypto = require('crypto');\nvar algs = require('./algs');\nvar asn1 = require('asn1');\n\nvar ec = require('ecc-jsbn/lib/ec');\nvar jsbn = require('jsbn').BigInteger;\nvar nacl = require('tweetnacl');\n\nvar MAX_CLASS_DEPTH = 3;\n\nfunction isCompatible(obj, klass, needVer) {\n\tif (obj === null || typeof (obj) !== 'object')\n\t\treturn (false);\n\tif (needVer === undefined)\n\t\tneedVer = klass.prototype._sshpkApiVersion;\n\tif (obj instanceof klass &&\n\t klass.prototype._sshpkApiVersion[0] == needVer[0])\n\t\treturn (true);\n\tvar proto = Object.getPrototypeOf(obj);\n\tvar depth = 0;\n\twhile (proto.constructor.name !== klass.name) {\n\t\tproto = Object.getPrototypeOf(proto);\n\t\tif (!proto || ++depth > MAX_CLASS_DEPTH)\n\t\t\treturn (false);\n\t}\n\tif (proto.constructor.name !== klass.name)\n\t\treturn (false);\n\tvar ver = proto._sshpkApiVersion;\n\tif (ver === undefined)\n\t\tver = klass._oldVersionDetect(obj);\n\tif (ver[0] != needVer[0] || ver[1] < needVer[1])\n\t\treturn (false);\n\treturn (true);\n}\n\nfunction assertCompatible(obj, klass, needVer, name) {\n\tif (name === undefined)\n\t\tname = 'object';\n\tassert.ok(obj, name + ' must not be null');\n\tassert.object(obj, name + ' must be an object');\n\tif (needVer === undefined)\n\t\tneedVer = klass.prototype._sshpkApiVersion;\n\tif (obj instanceof klass &&\n\t klass.prototype._sshpkApiVersion[0] == needVer[0])\n\t\treturn;\n\tvar proto = Object.getPrototypeOf(obj);\n\tvar depth = 0;\n\twhile (proto.constructor.name !== klass.name) {\n\t\tproto = Object.getPrototypeOf(proto);\n\t\tassert.ok(proto && ++depth <= MAX_CLASS_DEPTH,\n\t\t name + ' must be a ' + klass.name + ' instance');\n\t}\n\tassert.strictEqual(proto.constructor.name, klass.name,\n\t name + ' must be a ' + klass.name + ' instance');\n\tvar ver = proto._sshpkApiVersion;\n\tif (ver === undefined)\n\t\tver = klass._oldVersionDetect(obj);\n\tassert.ok(ver[0] == needVer[0] && ver[1] >= needVer[1],\n\t name + ' must be compatible with ' + klass.name + ' klass ' +\n\t 'version ' + needVer[0] + '.' + needVer[1]);\n}\n\nvar CIPHER_LEN = {\n\t'des-ede3-cbc': { key: 24, iv: 8 },\n\t'aes-128-cbc': { key: 16, iv: 16 },\n\t'aes-256-cbc': { key: 32, iv: 16 }\n};\nvar PKCS5_SALT_LEN = 8;\n\nfunction opensslKeyDeriv(cipher, salt, passphrase, count) {\n\tassert.buffer(salt, 'salt');\n\tassert.buffer(passphrase, 'passphrase');\n\tassert.number(count, 'iteration count');\n\n\tvar clen = CIPHER_LEN[cipher];\n\tassert.object(clen, 'supported cipher');\n\n\tsalt = salt.slice(0, PKCS5_SALT_LEN);\n\n\tvar D, D_prev, bufs;\n\tvar material = Buffer.alloc(0);\n\twhile (material.length < clen.key + clen.iv) {\n\t\tbufs = [];\n\t\tif (D_prev)\n\t\t\tbufs.push(D_prev);\n\t\tbufs.push(passphrase);\n\t\tbufs.push(salt);\n\t\tD = Buffer.concat(bufs);\n\t\tfor (var j = 0; j < count; ++j)\n\t\t\tD = crypto.createHash('md5').update(D).digest();\n\t\tmaterial = Buffer.concat([material, D]);\n\t\tD_prev = D;\n\t}\n\n\treturn ({\n\t key: material.slice(0, clen.key),\n\t iv: material.slice(clen.key, clen.key + clen.iv)\n\t});\n}\n\n/* See: RFC2898 */\nfunction pbkdf2(hashAlg, salt, iterations, size, passphrase) {\n\tvar hkey = Buffer.alloc(salt.length + 4);\n\tsalt.copy(hkey);\n\n\tvar gen = 0, ts = [];\n\tvar i = 1;\n\twhile (gen < size) {\n\t\tvar t = T(i++);\n\t\tgen += t.length;\n\t\tts.push(t);\n\t}\n\treturn (Buffer.concat(ts).slice(0, size));\n\n\tfunction T(I) {\n\t\thkey.writeUInt32BE(I, hkey.length - 4);\n\n\t\tvar hmac = crypto.createHmac(hashAlg, passphrase);\n\t\thmac.update(hkey);\n\n\t\tvar Ti = hmac.digest();\n\t\tvar Uc = Ti;\n\t\tvar c = 1;\n\t\twhile (c++ < iterations) {\n\t\t\thmac = crypto.createHmac(hashAlg, passphrase);\n\t\t\thmac.update(Uc);\n\t\t\tUc = hmac.digest();\n\t\t\tfor (var x = 0; x < Ti.length; ++x)\n\t\t\t\tTi[x] ^= Uc[x];\n\t\t}\n\t\treturn (Ti);\n\t}\n}\n\n/* Count leading zero bits on a buffer */\nfunction countZeros(buf) {\n\tvar o = 0, obit = 8;\n\twhile (o < buf.length) {\n\t\tvar mask = (1 << obit);\n\t\tif ((buf[o] & mask) === mask)\n\t\t\tbreak;\n\t\tobit--;\n\t\tif (obit < 0) {\n\t\t\to++;\n\t\t\tobit = 8;\n\t\t}\n\t}\n\treturn (o*8 + (8 - obit) - 1);\n}\n\nfunction bufferSplit(buf, chr) {\n\tassert.buffer(buf);\n\tassert.string(chr);\n\n\tvar parts = [];\n\tvar lastPart = 0;\n\tvar matches = 0;\n\tfor (var i = 0; i < buf.length; ++i) {\n\t\tif (buf[i] === chr.charCodeAt(matches))\n\t\t\t++matches;\n\t\telse if (buf[i] === chr.charCodeAt(0))\n\t\t\tmatches = 1;\n\t\telse\n\t\t\tmatches = 0;\n\n\t\tif (matches >= chr.length) {\n\t\t\tvar newPart = i + 1;\n\t\t\tparts.push(buf.slice(lastPart, newPart - matches));\n\t\t\tlastPart = newPart;\n\t\t\tmatches = 0;\n\t\t}\n\t}\n\tif (lastPart <= buf.length)\n\t\tparts.push(buf.slice(lastPart, buf.length));\n\n\treturn (parts);\n}\n\nfunction ecNormalize(buf, addZero) {\n\tassert.buffer(buf);\n\tif (buf[0] === 0x00 && buf[1] === 0x04) {\n\t\tif (addZero)\n\t\t\treturn (buf);\n\t\treturn (buf.slice(1));\n\t} else if (buf[0] === 0x04) {\n\t\tif (!addZero)\n\t\t\treturn (buf);\n\t} else {\n\t\twhile (buf[0] === 0x00)\n\t\t\tbuf = buf.slice(1);\n\t\tif (buf[0] === 0x02 || buf[0] === 0x03)\n\t\t\tthrow (new Error('Compressed elliptic curve points ' +\n\t\t\t 'are not supported'));\n\t\tif (buf[0] !== 0x04)\n\t\t\tthrow (new Error('Not a valid elliptic curve point'));\n\t\tif (!addZero)\n\t\t\treturn (buf);\n\t}\n\tvar b = Buffer.alloc(buf.length + 1);\n\tb[0] = 0x0;\n\tbuf.copy(b, 1);\n\treturn (b);\n}\n\nfunction readBitString(der, tag) {\n\tif (tag === undefined)\n\t\ttag = asn1.Ber.BitString;\n\tvar buf = der.readString(tag, true);\n\tassert.strictEqual(buf[0], 0x00, 'bit strings with unused bits are ' +\n\t 'not supported (0x' + buf[0].toString(16) + ')');\n\treturn (buf.slice(1));\n}\n\nfunction writeBitString(der, buf, tag) {\n\tif (tag === undefined)\n\t\ttag = asn1.Ber.BitString;\n\tvar b = Buffer.alloc(buf.length + 1);\n\tb[0] = 0x00;\n\tbuf.copy(b, 1);\n\tder.writeBuffer(b, tag);\n}\n\nfunction mpNormalize(buf) {\n\tassert.buffer(buf);\n\twhile (buf.length > 1 && buf[0] === 0x00 && (buf[1] & 0x80) === 0x00)\n\t\tbuf = buf.slice(1);\n\tif ((buf[0] & 0x80) === 0x80) {\n\t\tvar b = Buffer.alloc(buf.length + 1);\n\t\tb[0] = 0x00;\n\t\tbuf.copy(b, 1);\n\t\tbuf = b;\n\t}\n\treturn (buf);\n}\n\nfunction mpDenormalize(buf) {\n\tassert.buffer(buf);\n\twhile (buf.length > 1 && buf[0] === 0x00)\n\t\tbuf = buf.slice(1);\n\treturn (buf);\n}\n\nfunction zeroPadToLength(buf, len) {\n\tassert.buffer(buf);\n\tassert.number(len);\n\twhile (buf.length > len) {\n\t\tassert.equal(buf[0], 0x00);\n\t\tbuf = buf.slice(1);\n\t}\n\twhile (buf.length < len) {\n\t\tvar b = Buffer.alloc(buf.length + 1);\n\t\tb[0] = 0x00;\n\t\tbuf.copy(b, 1);\n\t\tbuf = b;\n\t}\n\treturn (buf);\n}\n\nfunction bigintToMpBuf(bigint) {\n\tvar buf = Buffer.from(bigint.toByteArray());\n\tbuf = mpNormalize(buf);\n\treturn (buf);\n}\n\nfunction calculateDSAPublic(g, p, x) {\n\tassert.buffer(g);\n\tassert.buffer(p);\n\tassert.buffer(x);\n\tg = new jsbn(g);\n\tp = new jsbn(p);\n\tx = new jsbn(x);\n\tvar y = g.modPow(x, p);\n\tvar ybuf = bigintToMpBuf(y);\n\treturn (ybuf);\n}\n\nfunction calculateED25519Public(k) {\n\tassert.buffer(k);\n\n\tvar kp = nacl.sign.keyPair.fromSeed(new Uint8Array(k));\n\treturn (Buffer.from(kp.publicKey));\n}\n\nfunction calculateX25519Public(k) {\n\tassert.buffer(k);\n\n\tvar kp = nacl.box.keyPair.fromSeed(new Uint8Array(k));\n\treturn (Buffer.from(kp.publicKey));\n}\n\nfunction addRSAMissing(key) {\n\tassert.object(key);\n\tassertCompatible(key, PrivateKey, [1, 1]);\n\n\tvar d = new jsbn(key.part.d.data);\n\tvar buf;\n\n\tif (!key.part.dmodp) {\n\t\tvar p = new jsbn(key.part.p.data);\n\t\tvar dmodp = d.mod(p.subtract(1));\n\n\t\tbuf = bigintToMpBuf(dmodp);\n\t\tkey.part.dmodp = {name: 'dmodp', data: buf};\n\t\tkey.parts.push(key.part.dmodp);\n\t}\n\tif (!key.part.dmodq) {\n\t\tvar q = new jsbn(key.part.q.data);\n\t\tvar dmodq = d.mod(q.subtract(1));\n\n\t\tbuf = bigintToMpBuf(dmodq);\n\t\tkey.part.dmodq = {name: 'dmodq', data: buf};\n\t\tkey.parts.push(key.part.dmodq);\n\t}\n}\n\nfunction publicFromPrivateECDSA(curveName, priv) {\n\tassert.string(curveName, 'curveName');\n\tassert.buffer(priv);\n\tvar params = algs.curves[curveName];\n\tvar p = new jsbn(params.p);\n\tvar a = new jsbn(params.a);\n\tvar b = new jsbn(params.b);\n\tvar curve = new ec.ECCurveFp(p, a, b);\n\tvar G = curve.decodePointHex(params.G.toString('hex'));\n\n\tvar d = new jsbn(mpNormalize(priv));\n\tvar pub = G.multiply(d);\n\tpub = Buffer.from(curve.encodePointHex(pub), 'hex');\n\n\tvar parts = [];\n\tparts.push({name: 'curve', data: Buffer.from(curveName)});\n\tparts.push({name: 'Q', data: pub});\n\n\tvar key = new Key({type: 'ecdsa', curve: curve, parts: parts});\n\treturn (key);\n}\n\nfunction opensshCipherInfo(cipher) {\n\tvar inf = {};\n\tswitch (cipher) {\n\tcase '3des-cbc':\n\t\tinf.keySize = 24;\n\t\tinf.blockSize = 8;\n\t\tinf.opensslName = 'des-ede3-cbc';\n\t\tbreak;\n\tcase 'blowfish-cbc':\n\t\tinf.keySize = 16;\n\t\tinf.blockSize = 8;\n\t\tinf.opensslName = 'bf-cbc';\n\t\tbreak;\n\tcase 'aes128-cbc':\n\tcase 'aes128-ctr':\n\tcase 'aes128-gcm@openssh.com':\n\t\tinf.keySize = 16;\n\t\tinf.blockSize = 16;\n\t\tinf.opensslName = 'aes-128-' + cipher.slice(7, 10);\n\t\tbreak;\n\tcase 'aes192-cbc':\n\tcase 'aes192-ctr':\n\tcase 'aes192-gcm@openssh.com':\n\t\tinf.keySize = 24;\n\t\tinf.blockSize = 16;\n\t\tinf.opensslName = 'aes-192-' + cipher.slice(7, 10);\n\t\tbreak;\n\tcase 'aes256-cbc':\n\tcase 'aes256-ctr':\n\tcase 'aes256-gcm@openssh.com':\n\t\tinf.keySize = 32;\n\t\tinf.blockSize = 16;\n\t\tinf.opensslName = 'aes-256-' + cipher.slice(7, 10);\n\t\tbreak;\n\tdefault:\n\t\tthrow (new Error(\n\t\t 'Unsupported openssl cipher \"' + cipher + '\"'));\n\t}\n\treturn (inf);\n}\n", "// Copyright 2015 Joyent, Inc.\n\nmodule.exports = SSHBuffer;\n\nvar assert = require('assert-plus');\nvar Buffer = require('safer-buffer').Buffer;\n\nfunction SSHBuffer(opts) {\n\tassert.object(opts, 'options');\n\tif (opts.buffer !== undefined)\n\t\tassert.buffer(opts.buffer, 'options.buffer');\n\n\tthis._size = opts.buffer ? opts.buffer.length : 1024;\n\tthis._buffer = opts.buffer || Buffer.alloc(this._size);\n\tthis._offset = 0;\n}\n\nSSHBuffer.prototype.toBuffer = function () {\n\treturn (this._buffer.slice(0, this._offset));\n};\n\nSSHBuffer.prototype.atEnd = function () {\n\treturn (this._offset >= this._buffer.length);\n};\n\nSSHBuffer.prototype.remainder = function () {\n\treturn (this._buffer.slice(this._offset));\n};\n\nSSHBuffer.prototype.skip = function (n) {\n\tthis._offset += n;\n};\n\nSSHBuffer.prototype.expand = function () {\n\tthis._size *= 2;\n\tvar buf = Buffer.alloc(this._size);\n\tthis._buffer.copy(buf, 0);\n\tthis._buffer = buf;\n};\n\nSSHBuffer.prototype.readPart = function () {\n\treturn ({data: this.readBuffer()});\n};\n\nSSHBuffer.prototype.readBuffer = function () {\n\tvar len = this._buffer.readUInt32BE(this._offset);\n\tthis._offset += 4;\n\tassert.ok(this._offset + len <= this._buffer.length,\n\t 'length out of bounds at +0x' + this._offset.toString(16) +\n\t ' (data truncated?)');\n\tvar buf = this._buffer.slice(this._offset, this._offset + len);\n\tthis._offset += len;\n\treturn (buf);\n};\n\nSSHBuffer.prototype.readString = function () {\n\treturn (this.readBuffer().toString());\n};\n\nSSHBuffer.prototype.readCString = function () {\n\tvar offset = this._offset;\n\twhile (offset < this._buffer.length &&\n\t this._buffer[offset] !== 0x00)\n\t\toffset++;\n\tassert.ok(offset < this._buffer.length, 'c string does not terminate');\n\tvar str = this._buffer.slice(this._offset, offset).toString();\n\tthis._offset = offset + 1;\n\treturn (str);\n};\n\nSSHBuffer.prototype.readInt = function () {\n\tvar v = this._buffer.readUInt32BE(this._offset);\n\tthis._offset += 4;\n\treturn (v);\n};\n\nSSHBuffer.prototype.readInt64 = function () {\n\tassert.ok(this._offset + 8 < this._buffer.length,\n\t 'buffer not long enough to read Int64');\n\tvar v = this._buffer.slice(this._offset, this._offset + 8);\n\tthis._offset += 8;\n\treturn (v);\n};\n\nSSHBuffer.prototype.readChar = function () {\n\tvar v = this._buffer[this._offset++];\n\treturn (v);\n};\n\nSSHBuffer.prototype.writeBuffer = function (buf) {\n\twhile (this._offset + 4 + buf.length > this._size)\n\t\tthis.expand();\n\tthis._buffer.writeUInt32BE(buf.length, this._offset);\n\tthis._offset += 4;\n\tbuf.copy(this._buffer, this._offset);\n\tthis._offset += buf.length;\n};\n\nSSHBuffer.prototype.writeString = function (str) {\n\tthis.writeBuffer(Buffer.from(str, 'utf8'));\n};\n\nSSHBuffer.prototype.writeCString = function (str) {\n\twhile (this._offset + 1 + str.length > this._size)\n\t\tthis.expand();\n\tthis._buffer.write(str, this._offset);\n\tthis._offset += str.length;\n\tthis._buffer[this._offset++] = 0;\n};\n\nSSHBuffer.prototype.writeInt = function (v) {\n\twhile (this._offset + 4 > this._size)\n\t\tthis.expand();\n\tthis._buffer.writeUInt32BE(v, this._offset);\n\tthis._offset += 4;\n};\n\nSSHBuffer.prototype.writeInt64 = function (v) {\n\tassert.buffer(v, 'value');\n\tif (v.length > 8) {\n\t\tvar lead = v.slice(0, v.length - 8);\n\t\tfor (var i = 0; i < lead.length; ++i) {\n\t\t\tassert.strictEqual(lead[i], 0,\n\t\t\t 'must fit in 64 bits of precision');\n\t\t}\n\t\tv = v.slice(v.length - 8, v.length);\n\t}\n\twhile (this._offset + 8 > this._size)\n\t\tthis.expand();\n\tv.copy(this._buffer, this._offset);\n\tthis._offset += 8;\n};\n\nSSHBuffer.prototype.writeChar = function (v) {\n\twhile (this._offset + 1 > this._size)\n\t\tthis.expand();\n\tthis._buffer[this._offset++] = v;\n};\n\nSSHBuffer.prototype.writePart = function (p) {\n\tthis.writeBuffer(p.data);\n};\n\nSSHBuffer.prototype.write = function (buf) {\n\twhile (this._offset + buf.length > this._size)\n\t\tthis.expand();\n\tbuf.copy(this._buffer, this._offset);\n\tthis._offset += buf.length;\n};\n", "// Copyright 2015 Joyent, Inc.\n\nmodule.exports = Signature;\n\nvar assert = require('assert-plus');\nvar Buffer = require('safer-buffer').Buffer;\nvar algs = require('./algs');\nvar crypto = require('crypto');\nvar errs = require('./errors');\nvar utils = require('./utils');\nvar asn1 = require('asn1');\nvar SSHBuffer = require('./ssh-buffer');\n\nvar InvalidAlgorithmError = errs.InvalidAlgorithmError;\nvar SignatureParseError = errs.SignatureParseError;\n\nfunction Signature(opts) {\n\tassert.object(opts, 'options');\n\tassert.arrayOfObject(opts.parts, 'options.parts');\n\tassert.string(opts.type, 'options.type');\n\n\tvar partLookup = {};\n\tfor (var i = 0; i < opts.parts.length; ++i) {\n\t\tvar part = opts.parts[i];\n\t\tpartLookup[part.name] = part;\n\t}\n\n\tthis.type = opts.type;\n\tthis.hashAlgorithm = opts.hashAlgo;\n\tthis.curve = opts.curve;\n\tthis.parts = opts.parts;\n\tthis.part = partLookup;\n}\n\nSignature.prototype.toBuffer = function (format) {\n\tif (format === undefined)\n\t\tformat = 'asn1';\n\tassert.string(format, 'format');\n\n\tvar buf;\n\tvar stype = 'ssh-' + this.type;\n\n\tswitch (this.type) {\n\tcase 'rsa':\n\t\tswitch (this.hashAlgorithm) {\n\t\tcase 'sha256':\n\t\t\tstype = 'rsa-sha2-256';\n\t\t\tbreak;\n\t\tcase 'sha512':\n\t\t\tstype = 'rsa-sha2-512';\n\t\t\tbreak;\n\t\tcase 'sha1':\n\t\tcase undefined:\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tthrow (new Error('SSH signature ' +\n\t\t\t 'format does not support hash ' +\n\t\t\t 'algorithm ' + this.hashAlgorithm));\n\t\t}\n\t\tif (format === 'ssh') {\n\t\t\tbuf = new SSHBuffer({});\n\t\t\tbuf.writeString(stype);\n\t\t\tbuf.writePart(this.part.sig);\n\t\t\treturn (buf.toBuffer());\n\t\t} else {\n\t\t\treturn (this.part.sig.data);\n\t\t}\n\t\tbreak;\n\n\tcase 'ed25519':\n\t\tif (format === 'ssh') {\n\t\t\tbuf = new SSHBuffer({});\n\t\t\tbuf.writeString(stype);\n\t\t\tbuf.writePart(this.part.sig);\n\t\t\treturn (buf.toBuffer());\n\t\t} else {\n\t\t\treturn (this.part.sig.data);\n\t\t}\n\t\tbreak;\n\n\tcase 'dsa':\n\tcase 'ecdsa':\n\t\tvar r, s;\n\t\tif (format === 'asn1') {\n\t\t\tvar der = new asn1.BerWriter();\n\t\t\tder.startSequence();\n\t\t\tr = utils.mpNormalize(this.part.r.data);\n\t\t\ts = utils.mpNormalize(this.part.s.data);\n\t\t\tder.writeBuffer(r, asn1.Ber.Integer);\n\t\t\tder.writeBuffer(s, asn1.Ber.Integer);\n\t\t\tder.endSequence();\n\t\t\treturn (der.buffer);\n\t\t} else if (format === 'ssh' && this.type === 'dsa') {\n\t\t\tbuf = new SSHBuffer({});\n\t\t\tbuf.writeString('ssh-dss');\n\t\t\tr = this.part.r.data;\n\t\t\tif (r.length > 20 && r[0] === 0x00)\n\t\t\t\tr = r.slice(1);\n\t\t\ts = this.part.s.data;\n\t\t\tif (s.length > 20 && s[0] === 0x00)\n\t\t\t\ts = s.slice(1);\n\t\t\tif ((this.hashAlgorithm &&\n\t\t\t this.hashAlgorithm !== 'sha1') ||\n\t\t\t r.length + s.length !== 40) {\n\t\t\t\tthrow (new Error('OpenSSH only supports ' +\n\t\t\t\t 'DSA signatures with SHA1 hash'));\n\t\t\t}\n\t\t\tbuf.writeBuffer(Buffer.concat([r, s]));\n\t\t\treturn (buf.toBuffer());\n\t\t} else if (format === 'ssh' && this.type === 'ecdsa') {\n\t\t\tvar inner = new SSHBuffer({});\n\t\t\tr = this.part.r.data;\n\t\t\tinner.writeBuffer(r);\n\t\t\tinner.writePart(this.part.s);\n\n\t\t\tbuf = new SSHBuffer({});\n\t\t\t/* XXX: find a more proper way to do this? */\n\t\t\tvar curve;\n\t\t\tif (r[0] === 0x00)\n\t\t\t\tr = r.slice(1);\n\t\t\tvar sz = r.length * 8;\n\t\t\tif (sz === 256)\n\t\t\t\tcurve = 'nistp256';\n\t\t\telse if (sz === 384)\n\t\t\t\tcurve = 'nistp384';\n\t\t\telse if (sz === 528)\n\t\t\t\tcurve = 'nistp521';\n\t\t\tbuf.writeString('ecdsa-sha2-' + curve);\n\t\t\tbuf.writeBuffer(inner.toBuffer());\n\t\t\treturn (buf.toBuffer());\n\t\t}\n\t\tthrow (new Error('Invalid signature format'));\n\tdefault:\n\t\tthrow (new Error('Invalid signature data'));\n\t}\n};\n\nSignature.prototype.toString = function (format) {\n\tassert.optionalString(format, 'format');\n\treturn (this.toBuffer(format).toString('base64'));\n};\n\nSignature.parse = function (data, type, format) {\n\tif (typeof (data) === 'string')\n\t\tdata = Buffer.from(data, 'base64');\n\tassert.buffer(data, 'data');\n\tassert.string(format, 'format');\n\tassert.string(type, 'type');\n\n\tvar opts = {};\n\topts.type = type.toLowerCase();\n\topts.parts = [];\n\n\ttry {\n\t\tassert.ok(data.length > 0, 'signature must not be empty');\n\t\tswitch (opts.type) {\n\t\tcase 'rsa':\n\t\t\treturn (parseOneNum(data, type, format, opts));\n\t\tcase 'ed25519':\n\t\t\treturn (parseOneNum(data, type, format, opts));\n\n\t\tcase 'dsa':\n\t\tcase 'ecdsa':\n\t\t\tif (format === 'asn1')\n\t\t\t\treturn (parseDSAasn1(data, type, format, opts));\n\t\t\telse if (opts.type === 'dsa')\n\t\t\t\treturn (parseDSA(data, type, format, opts));\n\t\t\telse\n\t\t\t\treturn (parseECDSA(data, type, format, opts));\n\n\t\tdefault:\n\t\t\tthrow (new InvalidAlgorithmError(type));\n\t\t}\n\n\t} catch (e) {\n\t\tif (e instanceof InvalidAlgorithmError)\n\t\t\tthrow (e);\n\t\tthrow (new SignatureParseError(type, format, e));\n\t}\n};\n\nfunction parseOneNum(data, type, format, opts) {\n\tif (format === 'ssh') {\n\t\ttry {\n\t\t\tvar buf = new SSHBuffer({buffer: data});\n\t\t\tvar head = buf.readString();\n\t\t} catch (e) {\n\t\t\t/* fall through */\n\t\t}\n\t\tif (buf !== undefined) {\n\t\t\tvar msg = 'SSH signature does not match expected ' +\n\t\t\t 'type (expected ' + type + ', got ' + head + ')';\n\t\t\tswitch (head) {\n\t\t\tcase 'ssh-rsa':\n\t\t\t\tassert.strictEqual(type, 'rsa', msg);\n\t\t\t\topts.hashAlgo = 'sha1';\n\t\t\t\tbreak;\n\t\t\tcase 'rsa-sha2-256':\n\t\t\t\tassert.strictEqual(type, 'rsa', msg);\n\t\t\t\topts.hashAlgo = 'sha256';\n\t\t\t\tbreak;\n\t\t\tcase 'rsa-sha2-512':\n\t\t\t\tassert.strictEqual(type, 'rsa', msg);\n\t\t\t\topts.hashAlgo = 'sha512';\n\t\t\t\tbreak;\n\t\t\tcase 'ssh-ed25519':\n\t\t\t\tassert.strictEqual(type, 'ed25519', msg);\n\t\t\t\topts.hashAlgo = 'sha512';\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow (new Error('Unknown SSH signature ' +\n\t\t\t\t 'type: ' + head));\n\t\t\t}\n\t\t\tvar sig = buf.readPart();\n\t\t\tassert.ok(buf.atEnd(), 'extra trailing bytes');\n\t\t\tsig.name = 'sig';\n\t\t\topts.parts.push(sig);\n\t\t\treturn (new Signature(opts));\n\t\t}\n\t}\n\topts.parts.push({name: 'sig', data: data});\n\treturn (new Signature(opts));\n}\n\nfunction parseDSAasn1(data, type, format, opts) {\n\tvar der = new asn1.BerReader(data);\n\tder.readSequence();\n\tvar r = der.readString(asn1.Ber.Integer, true);\n\tvar s = der.readString(asn1.Ber.Integer, true);\n\n\topts.parts.push({name: 'r', data: utils.mpNormalize(r)});\n\topts.parts.push({name: 's', data: utils.mpNormalize(s)});\n\n\treturn (new Signature(opts));\n}\n\nfunction parseDSA(data, type, format, opts) {\n\tif (data.length != 40) {\n\t\tvar buf = new SSHBuffer({buffer: data});\n\t\tvar d = buf.readBuffer();\n\t\tif (d.toString('ascii') === 'ssh-dss')\n\t\t\td = buf.readBuffer();\n\t\tassert.ok(buf.atEnd(), 'extra trailing bytes');\n\t\tassert.strictEqual(d.length, 40, 'invalid inner length');\n\t\tdata = d;\n\t}\n\topts.parts.push({name: 'r', data: data.slice(0, 20)});\n\topts.parts.push({name: 's', data: data.slice(20, 40)});\n\treturn (new Signature(opts));\n}\n\nfunction parseECDSA(data, type, format, opts) {\n\tvar buf = new SSHBuffer({buffer: data});\n\n\tvar r, s;\n\tvar inner = buf.readBuffer();\n\tvar stype = inner.toString('ascii');\n\tif (stype.slice(0, 6) === 'ecdsa-') {\n\t\tvar parts = stype.split('-');\n\t\tassert.strictEqual(parts[0], 'ecdsa');\n\t\tassert.strictEqual(parts[1], 'sha2');\n\t\topts.curve = parts[2];\n\t\tswitch (opts.curve) {\n\t\tcase 'nistp256':\n\t\t\topts.hashAlgo = 'sha256';\n\t\t\tbreak;\n\t\tcase 'nistp384':\n\t\t\topts.hashAlgo = 'sha384';\n\t\t\tbreak;\n\t\tcase 'nistp521':\n\t\t\topts.hashAlgo = 'sha512';\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tthrow (new Error('Unsupported ECDSA curve: ' +\n\t\t\t opts.curve));\n\t\t}\n\t\tinner = buf.readBuffer();\n\t\tassert.ok(buf.atEnd(), 'extra trailing bytes on outer');\n\t\tbuf = new SSHBuffer({buffer: inner});\n\t\tr = buf.readPart();\n\t} else {\n\t\tr = {data: inner};\n\t}\n\n\ts = buf.readPart();\n\tassert.ok(buf.atEnd(), 'extra trailing bytes');\n\n\tr.name = 'r';\n\ts.name = 's';\n\n\topts.parts.push(r);\n\topts.parts.push(s);\n\treturn (new Signature(opts));\n}\n\nSignature.isSignature = function (obj, ver) {\n\treturn (utils.isCompatible(obj, Signature, ver));\n};\n\n/*\n * API versions for Signature:\n * [1,0] -- initial ver\n * [2,0] -- support for rsa in full ssh format, compat with sshpk-agent\n * hashAlgorithm property\n * [2,1] -- first tagged version\n */\nSignature.prototype._sshpkApiVersion = [2, 1];\n\nSignature._oldVersionDetect = function (obj) {\n\tassert.func(obj.toBuffer);\n\tif (obj.hasOwnProperty('hashAlgorithm'))\n\t\treturn ([2, 0]);\n\treturn ([1, 0]);\n};\n", "// Named EC curves\n\n// Requires ec.js, jsbn.js, and jsbn2.js\nvar BigInteger = require('jsbn').BigInteger\nvar ECCurveFp = require('./ec.js').ECCurveFp\n\n\n// ----------------\n// X9ECParameters\n\n// constructor\nfunction X9ECParameters(curve,g,n,h) {\n this.curve = curve;\n this.g = g;\n this.n = n;\n this.h = h;\n}\n\nfunction x9getCurve() {\n return this.curve;\n}\n\nfunction x9getG() {\n return this.g;\n}\n\nfunction x9getN() {\n return this.n;\n}\n\nfunction x9getH() {\n return this.h;\n}\n\nX9ECParameters.prototype.getCurve = x9getCurve;\nX9ECParameters.prototype.getG = x9getG;\nX9ECParameters.prototype.getN = x9getN;\nX9ECParameters.prototype.getH = x9getH;\n\n// ----------------\n// SECNamedCurves\n\nfunction fromHex(s) { return new BigInteger(s, 16); }\n\nfunction secp128r1() {\n // p = 2^128 - 2^97 - 1\n var p = fromHex(\"FFFFFFFDFFFFFFFFFFFFFFFFFFFFFFFF\");\n var a = fromHex(\"FFFFFFFDFFFFFFFFFFFFFFFFFFFFFFFC\");\n var b = fromHex(\"E87579C11079F43DD824993C2CEE5ED3\");\n //byte[] S = Hex.decode(\"000E0D4D696E6768756151750CC03A4473D03679\");\n var n = fromHex(\"FFFFFFFE0000000075A30D1B9038A115\");\n var h = BigInteger.ONE;\n var curve = new ECCurveFp(p, a, b);\n var G = curve.decodePointHex(\"04\"\n + \"161FF7528B899B2D0C28607CA52C5B86\"\n\t\t+ \"CF5AC8395BAFEB13C02DA292DDED7A83\");\n return new X9ECParameters(curve, G, n, h);\n}\n\nfunction secp160k1() {\n // p = 2^160 - 2^32 - 2^14 - 2^12 - 2^9 - 2^8 - 2^7 - 2^3 - 2^2 - 1\n var p = fromHex(\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFAC73\");\n var a = BigInteger.ZERO;\n var b = fromHex(\"7\");\n //byte[] S = null;\n var n = fromHex(\"0100000000000000000001B8FA16DFAB9ACA16B6B3\");\n var h = BigInteger.ONE;\n var curve = new ECCurveFp(p, a, b);\n var G = curve.decodePointHex(\"04\"\n + \"3B4C382CE37AA192A4019E763036F4F5DD4D7EBB\"\n + \"938CF935318FDCED6BC28286531733C3F03C4FEE\");\n return new X9ECParameters(curve, G, n, h);\n}\n\nfunction secp160r1() {\n // p = 2^160 - 2^31 - 1\n var p = fromHex(\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFF\");\n var a = fromHex(\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFC\");\n var b = fromHex(\"1C97BEFC54BD7A8B65ACF89F81D4D4ADC565FA45\");\n //byte[] S = Hex.decode(\"1053CDE42C14D696E67687561517533BF3F83345\");\n var n = fromHex(\"0100000000000000000001F4C8F927AED3CA752257\");\n var h = BigInteger.ONE;\n var curve = new ECCurveFp(p, a, b);\n var G = curve.decodePointHex(\"04\"\n\t\t+ \"4A96B5688EF573284664698968C38BB913CBFC82\"\n\t\t+ \"23A628553168947D59DCC912042351377AC5FB32\");\n return new X9ECParameters(curve, G, n, h);\n}\n\nfunction secp192k1() {\n // p = 2^192 - 2^32 - 2^12 - 2^8 - 2^7 - 2^6 - 2^3 - 1\n var p = fromHex(\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFEE37\");\n var a = BigInteger.ZERO;\n var b = fromHex(\"3\");\n //byte[] S = null;\n var n = fromHex(\"FFFFFFFFFFFFFFFFFFFFFFFE26F2FC170F69466A74DEFD8D\");\n var h = BigInteger.ONE;\n var curve = new ECCurveFp(p, a, b);\n var G = curve.decodePointHex(\"04\"\n + \"DB4FF10EC057E9AE26B07D0280B7F4341DA5D1B1EAE06C7D\"\n + \"9B2F2F6D9C5628A7844163D015BE86344082AA88D95E2F9D\");\n return new X9ECParameters(curve, G, n, h);\n}\n\nfunction secp192r1() {\n // p = 2^192 - 2^64 - 1\n var p = fromHex(\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFF\");\n var a = fromHex(\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFC\");\n var b = fromHex(\"64210519E59C80E70FA7E9AB72243049FEB8DEECC146B9B1\");\n //byte[] S = Hex.decode(\"3045AE6FC8422F64ED579528D38120EAE12196D5\");\n var n = fromHex(\"FFFFFFFFFFFFFFFFFFFFFFFF99DEF836146BC9B1B4D22831\");\n var h = BigInteger.ONE;\n var curve = new ECCurveFp(p, a, b);\n var G = curve.decodePointHex(\"04\"\n + \"188DA80EB03090F67CBF20EB43A18800F4FF0AFD82FF1012\"\n + \"07192B95FFC8DA78631011ED6B24CDD573F977A11E794811\");\n return new X9ECParameters(curve, G, n, h);\n}\n\nfunction secp224r1() {\n // p = 2^224 - 2^96 + 1\n var p = fromHex(\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000001\");\n var a = fromHex(\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFE\");\n var b = fromHex(\"B4050A850C04B3ABF54132565044B0B7D7BFD8BA270B39432355FFB4\");\n //byte[] S = Hex.decode(\"BD71344799D5C7FCDC45B59FA3B9AB8F6A948BC5\");\n var n = fromHex(\"FFFFFFFFFFFFFFFFFFFFFFFFFFFF16A2E0B8F03E13DD29455C5C2A3D\");\n var h = BigInteger.ONE;\n var curve = new ECCurveFp(p, a, b);\n var G = curve.decodePointHex(\"04\"\n + \"B70E0CBD6BB4BF7F321390B94A03C1D356C21122343280D6115C1D21\"\n + \"BD376388B5F723FB4C22DFE6CD4375A05A07476444D5819985007E34\");\n return new X9ECParameters(curve, G, n, h);\n}\n\nfunction secp256r1() {\n // p = 2^224 (2^32 - 1) + 2^192 + 2^96 - 1\n var p = fromHex(\"FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF\");\n var a = fromHex(\"FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC\");\n var b = fromHex(\"5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B\");\n //byte[] S = Hex.decode(\"C49D360886E704936A6678E1139D26B7819F7E90\");\n var n = fromHex(\"FFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551\");\n var h = BigInteger.ONE;\n var curve = new ECCurveFp(p, a, b);\n var G = curve.decodePointHex(\"04\"\n + \"6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296\"\n\t\t+ \"4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5\");\n return new X9ECParameters(curve, G, n, h);\n}\n\n// TODO: make this into a proper hashtable\nfunction getSECCurveByName(name) {\n if(name == \"secp128r1\") return secp128r1();\n if(name == \"secp160k1\") return secp160k1();\n if(name == \"secp160r1\") return secp160r1();\n if(name == \"secp192k1\") return secp192k1();\n if(name == \"secp192r1\") return secp192r1();\n if(name == \"secp224r1\") return secp224r1();\n if(name == \"secp256r1\") return secp256r1();\n return null;\n}\n\nmodule.exports = {\n \"secp128r1\":secp128r1,\n \"secp160k1\":secp160k1,\n \"secp160r1\":secp160r1,\n \"secp192k1\":secp192k1,\n \"secp192r1\":secp192r1,\n \"secp224r1\":secp224r1,\n \"secp256r1\":secp256r1\n}\n", "var crypto = require(\"crypto\");\nvar BigInteger = require(\"jsbn\").BigInteger;\nvar ECPointFp = require(\"./lib/ec.js\").ECPointFp;\nvar Buffer = require(\"safer-buffer\").Buffer;\nexports.ECCurves = require(\"./lib/sec.js\");\n\n// zero prepad\nfunction unstupid(hex,len)\n{\n\treturn (hex.length >= len) ? hex : unstupid(\"0\"+hex,len);\n}\n\nexports.ECKey = function(curve, key, isPublic)\n{\n var priv;\n\tvar c = curve();\n\tvar n = c.getN();\n var bytes = Math.floor(n.bitLength()/8);\n\n if(key)\n {\n if(isPublic)\n {\n var curve = c.getCurve();\n// var x = key.slice(1,bytes+1); // skip the 04 for uncompressed format\n// var y = key.slice(bytes+1);\n// this.P = new ECPointFp(curve,\n// curve.fromBigInteger(new BigInteger(x.toString(\"hex\"), 16)),\n// curve.fromBigInteger(new BigInteger(y.toString(\"hex\"), 16))); \n this.P = curve.decodePointHex(key.toString(\"hex\"));\n }else{\n if(key.length != bytes) return false;\n priv = new BigInteger(key.toString(\"hex\"), 16); \n }\n }else{\n var n1 = n.subtract(BigInteger.ONE);\n var r = new BigInteger(crypto.randomBytes(n.bitLength()));\n priv = r.mod(n1).add(BigInteger.ONE);\n this.P = c.getG().multiply(priv);\n }\n if(this.P)\n {\n// var pubhex = unstupid(this.P.getX().toBigInteger().toString(16),bytes*2)+unstupid(this.P.getY().toBigInteger().toString(16),bytes*2);\n// this.PublicKey = Buffer.from(\"04\"+pubhex,\"hex\");\n this.PublicKey = Buffer.from(c.getCurve().encodeCompressedPointHex(this.P),\"hex\");\n }\n if(priv)\n {\n this.PrivateKey = Buffer.from(unstupid(priv.toString(16),bytes*2),\"hex\");\n this.deriveSharedSecret = function(key)\n {\n if(!key || !key.P) return false;\n var S = key.P.multiply(priv);\n return Buffer.from(unstupid(S.getX().toBigInteger().toString(16),bytes*2),\"hex\");\n } \n }\n}\n\n", "// Copyright 2017 Joyent, Inc.\n\nmodule.exports = {\n\tDiffieHellman: DiffieHellman,\n\tgenerateECDSA: generateECDSA,\n\tgenerateED25519: generateED25519\n};\n\nvar assert = require('assert-plus');\nvar crypto = require('crypto');\nvar Buffer = require('safer-buffer').Buffer;\nvar algs = require('./algs');\nvar utils = require('./utils');\nvar nacl = require('tweetnacl');\n\nvar Key = require('./key');\nvar PrivateKey = require('./private-key');\n\nvar CRYPTO_HAVE_ECDH = (crypto.createECDH !== undefined);\n\nvar ecdh = require('ecc-jsbn');\nvar ec = require('ecc-jsbn/lib/ec');\nvar jsbn = require('jsbn').BigInteger;\n\nfunction DiffieHellman(key) {\n\tutils.assertCompatible(key, Key, [1, 4], 'key');\n\tthis._isPriv = PrivateKey.isPrivateKey(key, [1, 3]);\n\tthis._algo = key.type;\n\tthis._curve = key.curve;\n\tthis._key = key;\n\tif (key.type === 'dsa') {\n\t\tif (!CRYPTO_HAVE_ECDH) {\n\t\t\tthrow (new Error('Due to bugs in the node 0.10 ' +\n\t\t\t 'crypto API, node 0.12.x or later is required ' +\n\t\t\t 'to use DH'));\n\t\t}\n\t\tthis._dh = crypto.createDiffieHellman(\n\t\t key.part.p.data, undefined,\n\t\t key.part.g.data, undefined);\n\t\tthis._p = key.part.p;\n\t\tthis._g = key.part.g;\n\t\tif (this._isPriv)\n\t\t\tthis._dh.setPrivateKey(key.part.x.data);\n\t\tthis._dh.setPublicKey(key.part.y.data);\n\n\t} else if (key.type === 'ecdsa') {\n\t\tif (!CRYPTO_HAVE_ECDH) {\n\t\t\tthis._ecParams = new X9ECParameters(this._curve);\n\n\t\t\tif (this._isPriv) {\n\t\t\t\tthis._priv = new ECPrivate(\n\t\t\t\t this._ecParams, key.part.d.data);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tvar curve = {\n\t\t\t'nistp256': 'prime256v1',\n\t\t\t'nistp384': 'secp384r1',\n\t\t\t'nistp521': 'secp521r1'\n\t\t}[key.curve];\n\t\tthis._dh = crypto.createECDH(curve);\n\t\tif (typeof (this._dh) !== 'object' ||\n\t\t typeof (this._dh.setPrivateKey) !== 'function') {\n\t\t\tCRYPTO_HAVE_ECDH = false;\n\t\t\tDiffieHellman.call(this, key);\n\t\t\treturn;\n\t\t}\n\t\tif (this._isPriv)\n\t\t\tthis._dh.setPrivateKey(key.part.d.data);\n\t\tthis._dh.setPublicKey(key.part.Q.data);\n\n\t} else if (key.type === 'curve25519') {\n\t\tif (this._isPriv) {\n\t\t\tutils.assertCompatible(key, PrivateKey, [1, 5], 'key');\n\t\t\tthis._priv = key.part.k.data;\n\t\t}\n\n\t} else {\n\t\tthrow (new Error('DH not supported for ' + key.type + ' keys'));\n\t}\n}\n\nDiffieHellman.prototype.getPublicKey = function () {\n\tif (this._isPriv)\n\t\treturn (this._key.toPublic());\n\treturn (this._key);\n};\n\nDiffieHellman.prototype.getPrivateKey = function () {\n\tif (this._isPriv)\n\t\treturn (this._key);\n\telse\n\t\treturn (undefined);\n};\nDiffieHellman.prototype.getKey = DiffieHellman.prototype.getPrivateKey;\n\nDiffieHellman.prototype._keyCheck = function (pk, isPub) {\n\tassert.object(pk, 'key');\n\tif (!isPub)\n\t\tutils.assertCompatible(pk, PrivateKey, [1, 3], 'key');\n\tutils.assertCompatible(pk, Key, [1, 4], 'key');\n\n\tif (pk.type !== this._algo) {\n\t\tthrow (new Error('A ' + pk.type + ' key cannot be used in ' +\n\t\t this._algo + ' Diffie-Hellman'));\n\t}\n\n\tif (pk.curve !== this._curve) {\n\t\tthrow (new Error('A key from the ' + pk.curve + ' curve ' +\n\t\t 'cannot be used with a ' + this._curve +\n\t\t ' Diffie-Hellman'));\n\t}\n\n\tif (pk.type === 'dsa') {\n\t\tassert.deepEqual(pk.part.p, this._p,\n\t\t 'DSA key prime does not match');\n\t\tassert.deepEqual(pk.part.g, this._g,\n\t\t 'DSA key generator does not match');\n\t}\n};\n\nDiffieHellman.prototype.setKey = function (pk) {\n\tthis._keyCheck(pk);\n\n\tif (pk.type === 'dsa') {\n\t\tthis._dh.setPrivateKey(pk.part.x.data);\n\t\tthis._dh.setPublicKey(pk.part.y.data);\n\n\t} else if (pk.type === 'ecdsa') {\n\t\tif (CRYPTO_HAVE_ECDH) {\n\t\t\tthis._dh.setPrivateKey(pk.part.d.data);\n\t\t\tthis._dh.setPublicKey(pk.part.Q.data);\n\t\t} else {\n\t\t\tthis._priv = new ECPrivate(\n\t\t\t this._ecParams, pk.part.d.data);\n\t\t}\n\n\t} else if (pk.type === 'curve25519') {\n\t\tvar k = pk.part.k;\n\t\tif (!pk.part.k)\n\t\t\tk = pk.part.r;\n\t\tthis._priv = k.data;\n\t\tif (this._priv[0] === 0x00)\n\t\t\tthis._priv = this._priv.slice(1);\n\t\tthis._priv = this._priv.slice(0, 32);\n\t}\n\tthis._key = pk;\n\tthis._isPriv = true;\n};\nDiffieHellman.prototype.setPrivateKey = DiffieHellman.prototype.setKey;\n\nDiffieHellman.prototype.computeSecret = function (otherpk) {\n\tthis._keyCheck(otherpk, true);\n\tif (!this._isPriv)\n\t\tthrow (new Error('DH exchange has not been initialized with ' +\n\t\t 'a private key yet'));\n\n\tvar pub;\n\tif (this._algo === 'dsa') {\n\t\treturn (this._dh.computeSecret(\n\t\t otherpk.part.y.data));\n\n\t} else if (this._algo === 'ecdsa') {\n\t\tif (CRYPTO_HAVE_ECDH) {\n\t\t\treturn (this._dh.computeSecret(\n\t\t\t otherpk.part.Q.data));\n\t\t} else {\n\t\t\tpub = new ECPublic(\n\t\t\t this._ecParams, otherpk.part.Q.data);\n\t\t\treturn (this._priv.deriveSharedSecret(pub));\n\t\t}\n\n\t} else if (this._algo === 'curve25519') {\n\t\tpub = otherpk.part.A.data;\n\t\twhile (pub[0] === 0x00 && pub.length > 32)\n\t\t\tpub = pub.slice(1);\n\t\tvar priv = this._priv;\n\t\tassert.strictEqual(pub.length, 32);\n\t\tassert.strictEqual(priv.length, 32);\n\n\t\tvar secret = nacl.box.before(new Uint8Array(pub),\n\t\t new Uint8Array(priv));\n\n\t\treturn (Buffer.from(secret));\n\t}\n\n\tthrow (new Error('Invalid algorithm: ' + this._algo));\n};\n\nDiffieHellman.prototype.generateKey = function () {\n\tvar parts = [];\n\tvar priv, pub;\n\tif (this._algo === 'dsa') {\n\t\tthis._dh.generateKeys();\n\n\t\tparts.push({name: 'p', data: this._p.data});\n\t\tparts.push({name: 'q', data: this._key.part.q.data});\n\t\tparts.push({name: 'g', data: this._g.data});\n\t\tparts.push({name: 'y', data: this._dh.getPublicKey()});\n\t\tparts.push({name: 'x', data: this._dh.getPrivateKey()});\n\t\tthis._key = new PrivateKey({\n\t\t\ttype: 'dsa',\n\t\t\tparts: parts\n\t\t});\n\t\tthis._isPriv = true;\n\t\treturn (this._key);\n\n\t} else if (this._algo === 'ecdsa') {\n\t\tif (CRYPTO_HAVE_ECDH) {\n\t\t\tthis._dh.generateKeys();\n\n\t\t\tparts.push({name: 'curve',\n\t\t\t data: Buffer.from(this._curve)});\n\t\t\tparts.push({name: 'Q', data: this._dh.getPublicKey()});\n\t\t\tparts.push({name: 'd', data: this._dh.getPrivateKey()});\n\t\t\tthis._key = new PrivateKey({\n\t\t\t\ttype: 'ecdsa',\n\t\t\t\tcurve: this._curve,\n\t\t\t\tparts: parts\n\t\t\t});\n\t\t\tthis._isPriv = true;\n\t\t\treturn (this._key);\n\n\t\t} else {\n\t\t\tvar n = this._ecParams.getN();\n\t\t\tvar r = new jsbn(crypto.randomBytes(n.bitLength()));\n\t\t\tvar n1 = n.subtract(jsbn.ONE);\n\t\t\tpriv = r.mod(n1).add(jsbn.ONE);\n\t\t\tpub = this._ecParams.getG().multiply(priv);\n\n\t\t\tpriv = Buffer.from(priv.toByteArray());\n\t\t\tpub = Buffer.from(this._ecParams.getCurve().\n\t\t\t encodePointHex(pub), 'hex');\n\n\t\t\tthis._priv = new ECPrivate(this._ecParams, priv);\n\n\t\t\tparts.push({name: 'curve',\n\t\t\t data: Buffer.from(this._curve)});\n\t\t\tparts.push({name: 'Q', data: pub});\n\t\t\tparts.push({name: 'd', data: priv});\n\n\t\t\tthis._key = new PrivateKey({\n\t\t\t\ttype: 'ecdsa',\n\t\t\t\tcurve: this._curve,\n\t\t\t\tparts: parts\n\t\t\t});\n\t\t\tthis._isPriv = true;\n\t\t\treturn (this._key);\n\t\t}\n\n\t} else if (this._algo === 'curve25519') {\n\t\tvar pair = nacl.box.keyPair();\n\t\tpriv = Buffer.from(pair.secretKey);\n\t\tpub = Buffer.from(pair.publicKey);\n\t\tpriv = Buffer.concat([priv, pub]);\n\t\tassert.strictEqual(priv.length, 64);\n\t\tassert.strictEqual(pub.length, 32);\n\n\t\tparts.push({name: 'A', data: pub});\n\t\tparts.push({name: 'k', data: priv});\n\t\tthis._key = new PrivateKey({\n\t\t\ttype: 'curve25519',\n\t\t\tparts: parts\n\t\t});\n\t\tthis._isPriv = true;\n\t\treturn (this._key);\n\t}\n\n\tthrow (new Error('Invalid algorithm: ' + this._algo));\n};\nDiffieHellman.prototype.generateKeys = DiffieHellman.prototype.generateKey;\n\n/* These are helpers for using ecc-jsbn (for node 0.10 compatibility). */\n\nfunction X9ECParameters(name) {\n\tvar params = algs.curves[name];\n\tassert.object(params);\n\n\tvar p = new jsbn(params.p);\n\tvar a = new jsbn(params.a);\n\tvar b = new jsbn(params.b);\n\tvar n = new jsbn(params.n);\n\tvar h = jsbn.ONE;\n\tvar curve = new ec.ECCurveFp(p, a, b);\n\tvar G = curve.decodePointHex(params.G.toString('hex'));\n\n\tthis.curve = curve;\n\tthis.g = G;\n\tthis.n = n;\n\tthis.h = h;\n}\nX9ECParameters.prototype.getCurve = function () { return (this.curve); };\nX9ECParameters.prototype.getG = function () { return (this.g); };\nX9ECParameters.prototype.getN = function () { return (this.n); };\nX9ECParameters.prototype.getH = function () { return (this.h); };\n\nfunction ECPublic(params, buffer) {\n\tthis._params = params;\n\tif (buffer[0] === 0x00)\n\t\tbuffer = buffer.slice(1);\n\tthis._pub = params.getCurve().decodePointHex(buffer.toString('hex'));\n}\n\nfunction ECPrivate(params, buffer) {\n\tthis._params = params;\n\tthis._priv = new jsbn(utils.mpNormalize(buffer));\n}\nECPrivate.prototype.deriveSharedSecret = function (pubKey) {\n\tassert.ok(pubKey instanceof ECPublic);\n\tvar S = pubKey._pub.multiply(this._priv);\n\treturn (Buffer.from(S.getX().toBigInteger().toByteArray()));\n};\n\nfunction generateED25519() {\n\tvar pair = nacl.sign.keyPair();\n\tvar priv = Buffer.from(pair.secretKey);\n\tvar pub = Buffer.from(pair.publicKey);\n\tassert.strictEqual(priv.length, 64);\n\tassert.strictEqual(pub.length, 32);\n\n\tvar parts = [];\n\tparts.push({name: 'A', data: pub});\n\tparts.push({name: 'k', data: priv.slice(0, 32)});\n\tvar key = new PrivateKey({\n\t\ttype: 'ed25519',\n\t\tparts: parts\n\t});\n\treturn (key);\n}\n\n/* Generates a new ECDSA private key on a given curve. */\nfunction generateECDSA(curve) {\n\tvar parts = [];\n\tvar key;\n\n\tif (CRYPTO_HAVE_ECDH) {\n\t\t/*\n\t\t * Node crypto doesn't expose key generation directly, but the\n\t\t * ECDH instances can generate keys. It turns out this just\n\t\t * calls into the OpenSSL generic key generator, and we can\n\t\t * read its output happily without doing an actual DH. So we\n\t\t * use that here.\n\t\t */\n\t\tvar osCurve = {\n\t\t\t'nistp256': 'prime256v1',\n\t\t\t'nistp384': 'secp384r1',\n\t\t\t'nistp521': 'secp521r1'\n\t\t}[curve];\n\n\t\tvar dh = crypto.createECDH(osCurve);\n\t\tdh.generateKeys();\n\n\t\tparts.push({name: 'curve',\n\t\t data: Buffer.from(curve)});\n\t\tparts.push({name: 'Q', data: dh.getPublicKey()});\n\t\tparts.push({name: 'd', data: dh.getPrivateKey()});\n\n\t\tkey = new PrivateKey({\n\t\t\ttype: 'ecdsa',\n\t\t\tcurve: curve,\n\t\t\tparts: parts\n\t\t});\n\t\treturn (key);\n\t} else {\n\n\t\tvar ecParams = new X9ECParameters(curve);\n\n\t\t/* This algorithm taken from FIPS PUB 186-4 (section B.4.1) */\n\t\tvar n = ecParams.getN();\n\t\t/*\n\t\t * The crypto.randomBytes() function can only give us whole\n\t\t * bytes, so taking a nod from X9.62, we round up.\n\t\t */\n\t\tvar cByteLen = Math.ceil((n.bitLength() + 64) / 8);\n\t\tvar c = new jsbn(crypto.randomBytes(cByteLen));\n\n\t\tvar n1 = n.subtract(jsbn.ONE);\n\t\tvar priv = c.mod(n1).add(jsbn.ONE);\n\t\tvar pub = ecParams.getG().multiply(priv);\n\n\t\tpriv = Buffer.from(priv.toByteArray());\n\t\tpub = Buffer.from(ecParams.getCurve().\n\t\t encodePointHex(pub), 'hex');\n\n\t\tparts.push({name: 'curve', data: Buffer.from(curve)});\n\t\tparts.push({name: 'Q', data: pub});\n\t\tparts.push({name: 'd', data: priv});\n\n\t\tkey = new PrivateKey({\n\t\t\ttype: 'ecdsa',\n\t\t\tcurve: curve,\n\t\t\tparts: parts\n\t\t});\n\t\treturn (key);\n\t}\n}\n", "// Copyright 2015 Joyent, Inc.\n\nmodule.exports = {\n\tVerifier: Verifier,\n\tSigner: Signer\n};\n\nvar nacl = require('tweetnacl');\nvar stream = require('stream');\nvar util = require('util');\nvar assert = require('assert-plus');\nvar Buffer = require('safer-buffer').Buffer;\nvar Signature = require('./signature');\n\nfunction Verifier(key, hashAlgo) {\n\tif (hashAlgo.toLowerCase() !== 'sha512')\n\t\tthrow (new Error('ED25519 only supports the use of ' +\n\t\t 'SHA-512 hashes'));\n\n\tthis.key = key;\n\tthis.chunks = [];\n\n\tstream.Writable.call(this, {});\n}\nutil.inherits(Verifier, stream.Writable);\n\nVerifier.prototype._write = function (chunk, enc, cb) {\n\tthis.chunks.push(chunk);\n\tcb();\n};\n\nVerifier.prototype.update = function (chunk) {\n\tif (typeof (chunk) === 'string')\n\t\tchunk = Buffer.from(chunk, 'binary');\n\tthis.chunks.push(chunk);\n};\n\nVerifier.prototype.verify = function (signature, fmt) {\n\tvar sig;\n\tif (Signature.isSignature(signature, [2, 0])) {\n\t\tif (signature.type !== 'ed25519')\n\t\t\treturn (false);\n\t\tsig = signature.toBuffer('raw');\n\n\t} else if (typeof (signature) === 'string') {\n\t\tsig = Buffer.from(signature, 'base64');\n\n\t} else if (Signature.isSignature(signature, [1, 0])) {\n\t\tthrow (new Error('signature was created by too old ' +\n\t\t 'a version of sshpk and cannot be verified'));\n\t}\n\n\tassert.buffer(sig);\n\treturn (nacl.sign.detached.verify(\n\t new Uint8Array(Buffer.concat(this.chunks)),\n\t new Uint8Array(sig),\n\t new Uint8Array(this.key.part.A.data)));\n};\n\nfunction Signer(key, hashAlgo) {\n\tif (hashAlgo.toLowerCase() !== 'sha512')\n\t\tthrow (new Error('ED25519 only supports the use of ' +\n\t\t 'SHA-512 hashes'));\n\n\tthis.key = key;\n\tthis.chunks = [];\n\n\tstream.Writable.call(this, {});\n}\nutil.inherits(Signer, stream.Writable);\n\nSigner.prototype._write = function (chunk, enc, cb) {\n\tthis.chunks.push(chunk);\n\tcb();\n};\n\nSigner.prototype.update = function (chunk) {\n\tif (typeof (chunk) === 'string')\n\t\tchunk = Buffer.from(chunk, 'binary');\n\tthis.chunks.push(chunk);\n};\n\nSigner.prototype.sign = function () {\n\tvar sig = nacl.sign.detached(\n\t new Uint8Array(Buffer.concat(this.chunks)),\n\t new Uint8Array(Buffer.concat([\n\t\tthis.key.part.k.data, this.key.part.A.data])));\n\tvar sigBuf = Buffer.from(sig);\n\tvar sigObj = Signature.parse(sigBuf, 'ed25519', 'raw');\n\tsigObj.hashAlgorithm = 'sha512';\n\treturn (sigObj);\n};\n", "// Copyright 2018 Joyent, Inc.\n\nmodule.exports = {\n\tread: read,\n\treadPkcs8: readPkcs8,\n\twrite: write,\n\twritePkcs8: writePkcs8,\n\tpkcs8ToBuffer: pkcs8ToBuffer,\n\n\treadECDSACurve: readECDSACurve,\n\twriteECDSACurve: writeECDSACurve\n};\n\nvar assert = require('assert-plus');\nvar asn1 = require('asn1');\nvar Buffer = require('safer-buffer').Buffer;\nvar algs = require('../algs');\nvar utils = require('../utils');\nvar Key = require('../key');\nvar PrivateKey = require('../private-key');\nvar pem = require('./pem');\n\nfunction read(buf, options) {\n\treturn (pem.read(buf, options, 'pkcs8'));\n}\n\nfunction write(key, options) {\n\treturn (pem.write(key, options, 'pkcs8'));\n}\n\n/* Helper to read in a single mpint */\nfunction readMPInt(der, nm) {\n\tassert.strictEqual(der.peek(), asn1.Ber.Integer,\n\t nm + ' is not an Integer');\n\treturn (utils.mpNormalize(der.readString(asn1.Ber.Integer, true)));\n}\n\nfunction readPkcs8(alg, type, der) {\n\t/* Private keys in pkcs#8 format have a weird extra int */\n\tif (der.peek() === asn1.Ber.Integer) {\n\t\tassert.strictEqual(type, 'private',\n\t\t 'unexpected Integer at start of public key');\n\t\tder.readString(asn1.Ber.Integer, true);\n\t}\n\n\tder.readSequence();\n\tvar next = der.offset + der.length;\n\n\tvar oid = der.readOID();\n\tswitch (oid) {\n\tcase '1.2.840.113549.1.1.1':\n\t\tder._offset = next;\n\t\tif (type === 'public')\n\t\t\treturn (readPkcs8RSAPublic(der));\n\t\telse\n\t\t\treturn (readPkcs8RSAPrivate(der));\n\tcase '1.2.840.10040.4.1':\n\t\tif (type === 'public')\n\t\t\treturn (readPkcs8DSAPublic(der));\n\t\telse\n\t\t\treturn (readPkcs8DSAPrivate(der));\n\tcase '1.2.840.10045.2.1':\n\t\tif (type === 'public')\n\t\t\treturn (readPkcs8ECDSAPublic(der));\n\t\telse\n\t\t\treturn (readPkcs8ECDSAPrivate(der));\n\tcase '1.3.101.112':\n\t\tif (type === 'public') {\n\t\t\treturn (readPkcs8EdDSAPublic(der));\n\t\t} else {\n\t\t\treturn (readPkcs8EdDSAPrivate(der));\n\t\t}\n\tcase '1.3.101.110':\n\t\tif (type === 'public') {\n\t\t\treturn (readPkcs8X25519Public(der));\n\t\t} else {\n\t\t\treturn (readPkcs8X25519Private(der));\n\t\t}\n\tdefault:\n\t\tthrow (new Error('Unknown key type OID ' + oid));\n\t}\n}\n\nfunction readPkcs8RSAPublic(der) {\n\t// bit string sequence\n\tder.readSequence(asn1.Ber.BitString);\n\tder.readByte();\n\tder.readSequence();\n\n\t// modulus\n\tvar n = readMPInt(der, 'modulus');\n\tvar e = readMPInt(der, 'exponent');\n\n\t// now, make the key\n\tvar key = {\n\t\ttype: 'rsa',\n\t\tsource: der.originalInput,\n\t\tparts: [\n\t\t\t{ name: 'e', data: e },\n\t\t\t{ name: 'n', data: n }\n\t\t]\n\t};\n\n\treturn (new Key(key));\n}\n\nfunction readPkcs8RSAPrivate(der) {\n\tder.readSequence(asn1.Ber.OctetString);\n\tder.readSequence();\n\n\tvar ver = readMPInt(der, 'version');\n\tassert.equal(ver[0], 0x0, 'unknown RSA private key version');\n\n\t// modulus then public exponent\n\tvar n = readMPInt(der, 'modulus');\n\tvar e = readMPInt(der, 'public exponent');\n\tvar d = readMPInt(der, 'private exponent');\n\tvar p = readMPInt(der, 'prime1');\n\tvar q = readMPInt(der, 'prime2');\n\tvar dmodp = readMPInt(der, 'exponent1');\n\tvar dmodq = readMPInt(der, 'exponent2');\n\tvar iqmp = readMPInt(der, 'iqmp');\n\n\t// now, make the key\n\tvar key = {\n\t\ttype: 'rsa',\n\t\tparts: [\n\t\t\t{ name: 'n', data: n },\n\t\t\t{ name: 'e', data: e },\n\t\t\t{ name: 'd', data: d },\n\t\t\t{ name: 'iqmp', data: iqmp },\n\t\t\t{ name: 'p', data: p },\n\t\t\t{ name: 'q', data: q },\n\t\t\t{ name: 'dmodp', data: dmodp },\n\t\t\t{ name: 'dmodq', data: dmodq }\n\t\t]\n\t};\n\n\treturn (new PrivateKey(key));\n}\n\nfunction readPkcs8DSAPublic(der) {\n\tder.readSequence();\n\n\tvar p = readMPInt(der, 'p');\n\tvar q = readMPInt(der, 'q');\n\tvar g = readMPInt(der, 'g');\n\n\t// bit string sequence\n\tder.readSequence(asn1.Ber.BitString);\n\tder.readByte();\n\n\tvar y = readMPInt(der, 'y');\n\n\t// now, make the key\n\tvar key = {\n\t\ttype: 'dsa',\n\t\tparts: [\n\t\t\t{ name: 'p', data: p },\n\t\t\t{ name: 'q', data: q },\n\t\t\t{ name: 'g', data: g },\n\t\t\t{ name: 'y', data: y }\n\t\t]\n\t};\n\n\treturn (new Key(key));\n}\n\nfunction readPkcs8DSAPrivate(der) {\n\tder.readSequence();\n\n\tvar p = readMPInt(der, 'p');\n\tvar q = readMPInt(der, 'q');\n\tvar g = readMPInt(der, 'g');\n\n\tder.readSequence(asn1.Ber.OctetString);\n\tvar x = readMPInt(der, 'x');\n\n\t/* The pkcs#8 format does not include the public key */\n\tvar y = utils.calculateDSAPublic(g, p, x);\n\n\tvar key = {\n\t\ttype: 'dsa',\n\t\tparts: [\n\t\t\t{ name: 'p', data: p },\n\t\t\t{ name: 'q', data: q },\n\t\t\t{ name: 'g', data: g },\n\t\t\t{ name: 'y', data: y },\n\t\t\t{ name: 'x', data: x }\n\t\t]\n\t};\n\n\treturn (new PrivateKey(key));\n}\n\nfunction readECDSACurve(der) {\n\tvar curveName, curveNames;\n\tvar j, c, cd;\n\n\tif (der.peek() === asn1.Ber.OID) {\n\t\tvar oid = der.readOID();\n\n\t\tcurveNames = Object.keys(algs.curves);\n\t\tfor (j = 0; j < curveNames.length; ++j) {\n\t\t\tc = curveNames[j];\n\t\t\tcd = algs.curves[c];\n\t\t\tif (cd.pkcs8oid === oid) {\n\t\t\t\tcurveName = c;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t} else {\n\t\t// ECParameters sequence\n\t\tder.readSequence();\n\t\tvar version = der.readString(asn1.Ber.Integer, true);\n\t\tassert.strictEqual(version[0], 1, 'ECDSA key not version 1');\n\n\t\tvar curve = {};\n\n\t\t// FieldID sequence\n\t\tder.readSequence();\n\t\tvar fieldTypeOid = der.readOID();\n\t\tassert.strictEqual(fieldTypeOid, '1.2.840.10045.1.1',\n\t\t 'ECDSA key is not from a prime-field');\n\t\tvar p = curve.p = utils.mpNormalize(\n\t\t der.readString(asn1.Ber.Integer, true));\n\t\t/*\n\t\t * p always starts with a 1 bit, so count the zeros to get its\n\t\t * real size.\n\t\t */\n\t\tcurve.size = p.length * 8 - utils.countZeros(p);\n\n\t\t// Curve sequence\n\t\tder.readSequence();\n\t\tcurve.a = utils.mpNormalize(\n\t\t der.readString(asn1.Ber.OctetString, true));\n\t\tcurve.b = utils.mpNormalize(\n\t\t der.readString(asn1.Ber.OctetString, true));\n\t\tif (der.peek() === asn1.Ber.BitString)\n\t\t\tcurve.s = der.readString(asn1.Ber.BitString, true);\n\n\t\t// Combined Gx and Gy\n\t\tcurve.G = der.readString(asn1.Ber.OctetString, true);\n\t\tassert.strictEqual(curve.G[0], 0x4,\n\t\t 'uncompressed G is required');\n\n\t\tcurve.n = utils.mpNormalize(\n\t\t der.readString(asn1.Ber.Integer, true));\n\t\tcurve.h = utils.mpNormalize(\n\t\t der.readString(asn1.Ber.Integer, true));\n\t\tassert.strictEqual(curve.h[0], 0x1, 'a cofactor=1 curve is ' +\n\t\t 'required');\n\n\t\tcurveNames = Object.keys(algs.curves);\n\t\tvar ks = Object.keys(curve);\n\t\tfor (j = 0; j < curveNames.length; ++j) {\n\t\t\tc = curveNames[j];\n\t\t\tcd = algs.curves[c];\n\t\t\tvar equal = true;\n\t\t\tfor (var i = 0; i < ks.length; ++i) {\n\t\t\t\tvar k = ks[i];\n\t\t\t\tif (cd[k] === undefined)\n\t\t\t\t\tcontinue;\n\t\t\t\tif (typeof (cd[k]) === 'object' &&\n\t\t\t\t cd[k].equals !== undefined) {\n\t\t\t\t\tif (!cd[k].equals(curve[k])) {\n\t\t\t\t\t\tequal = false;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t} else if (Buffer.isBuffer(cd[k])) {\n\t\t\t\t\tif (cd[k].toString('binary')\n\t\t\t\t\t !== curve[k].toString('binary')) {\n\t\t\t\t\t\tequal = false;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (cd[k] !== curve[k]) {\n\t\t\t\t\t\tequal = false;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (equal) {\n\t\t\t\tcurveName = c;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\treturn (curveName);\n}\n\nfunction readPkcs8ECDSAPrivate(der) {\n\tvar curveName = readECDSACurve(der);\n\tassert.string(curveName, 'a known elliptic curve');\n\n\tder.readSequence(asn1.Ber.OctetString);\n\tder.readSequence();\n\n\tvar version = readMPInt(der, 'version');\n\tassert.equal(version[0], 1, 'unknown version of ECDSA key');\n\n\tvar d = der.readString(asn1.Ber.OctetString, true);\n\tvar Q;\n\n\tif (der.peek() == 0xa0) {\n\t\tder.readSequence(0xa0);\n\t\tder._offset += der.length;\n\t}\n\tif (der.peek() == 0xa1) {\n\t\tder.readSequence(0xa1);\n\t\tQ = der.readString(asn1.Ber.BitString, true);\n\t\tQ = utils.ecNormalize(Q);\n\t}\n\n\tif (Q === undefined) {\n\t\tvar pub = utils.publicFromPrivateECDSA(curveName, d);\n\t\tQ = pub.part.Q.data;\n\t}\n\n\tvar key = {\n\t\ttype: 'ecdsa',\n\t\tparts: [\n\t\t\t{ name: 'curve', data: Buffer.from(curveName) },\n\t\t\t{ name: 'Q', data: Q },\n\t\t\t{ name: 'd', data: d }\n\t\t]\n\t};\n\n\treturn (new PrivateKey(key));\n}\n\nfunction readPkcs8ECDSAPublic(der) {\n\tvar curveName = readECDSACurve(der);\n\tassert.string(curveName, 'a known elliptic curve');\n\n\tvar Q = der.readString(asn1.Ber.BitString, true);\n\tQ = utils.ecNormalize(Q);\n\n\tvar key = {\n\t\ttype: 'ecdsa',\n\t\tparts: [\n\t\t\t{ name: 'curve', data: Buffer.from(curveName) },\n\t\t\t{ name: 'Q', data: Q }\n\t\t]\n\t};\n\n\treturn (new Key(key));\n}\n\nfunction readPkcs8EdDSAPublic(der) {\n\tif (der.peek() === 0x00)\n\t\tder.readByte();\n\n\tvar A = utils.readBitString(der);\n\n\tvar key = {\n\t\ttype: 'ed25519',\n\t\tparts: [\n\t\t\t{ name: 'A', data: utils.zeroPadToLength(A, 32) }\n\t\t]\n\t};\n\n\treturn (new Key(key));\n}\n\nfunction readPkcs8X25519Public(der) {\n\tvar A = utils.readBitString(der);\n\n\tvar key = {\n\t\ttype: 'curve25519',\n\t\tparts: [\n\t\t\t{ name: 'A', data: utils.zeroPadToLength(A, 32) }\n\t\t]\n\t};\n\n\treturn (new Key(key));\n}\n\nfunction readPkcs8EdDSAPrivate(der) {\n\tif (der.peek() === 0x00)\n\t\tder.readByte();\n\n\tder.readSequence(asn1.Ber.OctetString);\n\tvar k = der.readString(asn1.Ber.OctetString, true);\n\tk = utils.zeroPadToLength(k, 32);\n\n\tvar A, tag;\n\twhile ((tag = der.peek()) !== null) {\n\t\tif (tag === (asn1.Ber.Context | 1)) {\n\t\t\tA = utils.readBitString(der, tag);\n\t\t} else {\n\t\t\tder.readSequence(tag);\n\t\t\tder._offset += der.length;\n\t\t}\n\t}\n\tif (A === undefined)\n\t\tA = utils.calculateED25519Public(k);\n\n\tvar key = {\n\t\ttype: 'ed25519',\n\t\tparts: [\n\t\t\t{ name: 'A', data: utils.zeroPadToLength(A, 32) },\n\t\t\t{ name: 'k', data: utils.zeroPadToLength(k, 32) }\n\t\t]\n\t};\n\n\treturn (new PrivateKey(key));\n}\n\nfunction readPkcs8X25519Private(der) {\n\tif (der.peek() === 0x00)\n\t\tder.readByte();\n\n\tder.readSequence(asn1.Ber.OctetString);\n\tvar k = der.readString(asn1.Ber.OctetString, true);\n\tk = utils.zeroPadToLength(k, 32);\n\n\tvar A = utils.calculateX25519Public(k);\n\n\tvar key = {\n\t\ttype: 'curve25519',\n\t\tparts: [\n\t\t\t{ name: 'A', data: utils.zeroPadToLength(A, 32) },\n\t\t\t{ name: 'k', data: utils.zeroPadToLength(k, 32) }\n\t\t]\n\t};\n\n\treturn (new PrivateKey(key));\n}\n\nfunction pkcs8ToBuffer(key) {\n\tvar der = new asn1.BerWriter();\n\twritePkcs8(der, key);\n\treturn (der.buffer);\n}\n\nfunction writePkcs8(der, key) {\n\tder.startSequence();\n\n\tif (PrivateKey.isPrivateKey(key)) {\n\t\tvar version = 0;\n\t\tif (key.type === 'ed25519')\n\t\t\tversion = 1;\n\t\tvar vbuf = Buffer.from([version]);\n\t\tder.writeBuffer(vbuf, asn1.Ber.Integer);\n\t}\n\n\tder.startSequence();\n\tswitch (key.type) {\n\tcase 'rsa':\n\t\tder.writeOID('1.2.840.113549.1.1.1');\n\t\tif (PrivateKey.isPrivateKey(key))\n\t\t\twritePkcs8RSAPrivate(key, der);\n\t\telse\n\t\t\twritePkcs8RSAPublic(key, der);\n\t\tbreak;\n\tcase 'dsa':\n\t\tder.writeOID('1.2.840.10040.4.1');\n\t\tif (PrivateKey.isPrivateKey(key))\n\t\t\twritePkcs8DSAPrivate(key, der);\n\t\telse\n\t\t\twritePkcs8DSAPublic(key, der);\n\t\tbreak;\n\tcase 'ecdsa':\n\t\tder.writeOID('1.2.840.10045.2.1');\n\t\tif (PrivateKey.isPrivateKey(key))\n\t\t\twritePkcs8ECDSAPrivate(key, der);\n\t\telse\n\t\t\twritePkcs8ECDSAPublic(key, der);\n\t\tbreak;\n\tcase 'ed25519':\n\t\tder.writeOID('1.3.101.112');\n\t\tif (PrivateKey.isPrivateKey(key))\n\t\t\twritePkcs8EdDSAPrivate(key, der);\n\t\telse\n\t\t\twritePkcs8EdDSAPublic(key, der);\n\t\tbreak;\n\tdefault:\n\t\tthrow (new Error('Unsupported key type: ' + key.type));\n\t}\n\n\tder.endSequence();\n}\n\nfunction writePkcs8RSAPrivate(key, der) {\n\tder.writeNull();\n\tder.endSequence();\n\n\tder.startSequence(asn1.Ber.OctetString);\n\tder.startSequence();\n\n\tvar version = Buffer.from([0]);\n\tder.writeBuffer(version, asn1.Ber.Integer);\n\n\tder.writeBuffer(key.part.n.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.e.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.d.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.p.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.q.data, asn1.Ber.Integer);\n\tif (!key.part.dmodp || !key.part.dmodq)\n\t\tutils.addRSAMissing(key);\n\tder.writeBuffer(key.part.dmodp.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.dmodq.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.iqmp.data, asn1.Ber.Integer);\n\n\tder.endSequence();\n\tder.endSequence();\n}\n\nfunction writePkcs8RSAPublic(key, der) {\n\tder.writeNull();\n\tder.endSequence();\n\n\tder.startSequence(asn1.Ber.BitString);\n\tder.writeByte(0x00);\n\n\tder.startSequence();\n\tder.writeBuffer(key.part.n.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.e.data, asn1.Ber.Integer);\n\tder.endSequence();\n\n\tder.endSequence();\n}\n\nfunction writePkcs8DSAPrivate(key, der) {\n\tder.startSequence();\n\tder.writeBuffer(key.part.p.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.q.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.g.data, asn1.Ber.Integer);\n\tder.endSequence();\n\n\tder.endSequence();\n\n\tder.startSequence(asn1.Ber.OctetString);\n\tder.writeBuffer(key.part.x.data, asn1.Ber.Integer);\n\tder.endSequence();\n}\n\nfunction writePkcs8DSAPublic(key, der) {\n\tder.startSequence();\n\tder.writeBuffer(key.part.p.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.q.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.g.data, asn1.Ber.Integer);\n\tder.endSequence();\n\tder.endSequence();\n\n\tder.startSequence(asn1.Ber.BitString);\n\tder.writeByte(0x00);\n\tder.writeBuffer(key.part.y.data, asn1.Ber.Integer);\n\tder.endSequence();\n}\n\nfunction writeECDSACurve(key, der) {\n\tvar curve = algs.curves[key.curve];\n\tif (curve.pkcs8oid) {\n\t\t/* This one has a name in pkcs#8, so just write the oid */\n\t\tder.writeOID(curve.pkcs8oid);\n\n\t} else {\n\t\t// ECParameters sequence\n\t\tder.startSequence();\n\n\t\tvar version = Buffer.from([1]);\n\t\tder.writeBuffer(version, asn1.Ber.Integer);\n\n\t\t// FieldID sequence\n\t\tder.startSequence();\n\t\tder.writeOID('1.2.840.10045.1.1'); // prime-field\n\t\tder.writeBuffer(curve.p, asn1.Ber.Integer);\n\t\tder.endSequence();\n\n\t\t// Curve sequence\n\t\tder.startSequence();\n\t\tvar a = curve.p;\n\t\tif (a[0] === 0x0)\n\t\t\ta = a.slice(1);\n\t\tder.writeBuffer(a, asn1.Ber.OctetString);\n\t\tder.writeBuffer(curve.b, asn1.Ber.OctetString);\n\t\tder.writeBuffer(curve.s, asn1.Ber.BitString);\n\t\tder.endSequence();\n\n\t\tder.writeBuffer(curve.G, asn1.Ber.OctetString);\n\t\tder.writeBuffer(curve.n, asn1.Ber.Integer);\n\t\tvar h = curve.h;\n\t\tif (!h) {\n\t\t\th = Buffer.from([1]);\n\t\t}\n\t\tder.writeBuffer(h, asn1.Ber.Integer);\n\n\t\t// ECParameters\n\t\tder.endSequence();\n\t}\n}\n\nfunction writePkcs8ECDSAPublic(key, der) {\n\twriteECDSACurve(key, der);\n\tder.endSequence();\n\n\tvar Q = utils.ecNormalize(key.part.Q.data, true);\n\tder.writeBuffer(Q, asn1.Ber.BitString);\n}\n\nfunction writePkcs8ECDSAPrivate(key, der) {\n\twriteECDSACurve(key, der);\n\tder.endSequence();\n\n\tder.startSequence(asn1.Ber.OctetString);\n\tder.startSequence();\n\n\tvar version = Buffer.from([1]);\n\tder.writeBuffer(version, asn1.Ber.Integer);\n\n\tder.writeBuffer(key.part.d.data, asn1.Ber.OctetString);\n\n\tder.startSequence(0xa1);\n\tvar Q = utils.ecNormalize(key.part.Q.data, true);\n\tder.writeBuffer(Q, asn1.Ber.BitString);\n\tder.endSequence();\n\n\tder.endSequence();\n\tder.endSequence();\n}\n\nfunction writePkcs8EdDSAPublic(key, der) {\n\tder.endSequence();\n\n\tutils.writeBitString(der, key.part.A.data);\n}\n\nfunction writePkcs8EdDSAPrivate(key, der) {\n\tder.endSequence();\n\n\tder.startSequence(asn1.Ber.OctetString);\n\tvar k = utils.mpNormalize(key.part.k.data);\n\t/* RFCs call for storing exactly 32 bytes, so strip any leading zeros */\n\twhile (k.length > 32 && k[0] === 0x00)\n\t\tk = k.slice(1);\n\tder.writeBuffer(k, asn1.Ber.OctetString);\n\tder.endSequence();\n\n\tutils.writeBitString(der, key.part.A.data, asn1.Ber.Context | 1);\n}\n", "// Copyright 2015 Joyent, Inc.\n\nmodule.exports = {\n\tread: read,\n\treadPkcs1: readPkcs1,\n\twrite: write,\n\twritePkcs1: writePkcs1\n};\n\nvar assert = require('assert-plus');\nvar asn1 = require('asn1');\nvar Buffer = require('safer-buffer').Buffer;\nvar algs = require('../algs');\nvar utils = require('../utils');\n\nvar Key = require('../key');\nvar PrivateKey = require('../private-key');\nvar pem = require('./pem');\n\nvar pkcs8 = require('./pkcs8');\nvar readECDSACurve = pkcs8.readECDSACurve;\n\nfunction read(buf, options) {\n\treturn (pem.read(buf, options, 'pkcs1'));\n}\n\nfunction write(key, options) {\n\treturn (pem.write(key, options, 'pkcs1'));\n}\n\n/* Helper to read in a single mpint */\nfunction readMPInt(der, nm) {\n\tassert.strictEqual(der.peek(), asn1.Ber.Integer,\n\t nm + ' is not an Integer');\n\treturn (utils.mpNormalize(der.readString(asn1.Ber.Integer, true)));\n}\n\nfunction readPkcs1(alg, type, der) {\n\tswitch (alg) {\n\tcase 'RSA':\n\t\tif (type === 'public')\n\t\t\treturn (readPkcs1RSAPublic(der));\n\t\telse if (type === 'private')\n\t\t\treturn (readPkcs1RSAPrivate(der));\n\t\tthrow (new Error('Unknown key type: ' + type));\n\tcase 'DSA':\n\t\tif (type === 'public')\n\t\t\treturn (readPkcs1DSAPublic(der));\n\t\telse if (type === 'private')\n\t\t\treturn (readPkcs1DSAPrivate(der));\n\t\tthrow (new Error('Unknown key type: ' + type));\n\tcase 'EC':\n\tcase 'ECDSA':\n\t\tif (type === 'private')\n\t\t\treturn (readPkcs1ECDSAPrivate(der));\n\t\telse if (type === 'public')\n\t\t\treturn (readPkcs1ECDSAPublic(der));\n\t\tthrow (new Error('Unknown key type: ' + type));\n\tcase 'EDDSA':\n\tcase 'EdDSA':\n\t\tif (type === 'private')\n\t\t\treturn (readPkcs1EdDSAPrivate(der));\n\t\tthrow (new Error(type + ' keys not supported with EdDSA'));\n\tdefault:\n\t\tthrow (new Error('Unknown key algo: ' + alg));\n\t}\n}\n\nfunction readPkcs1RSAPublic(der) {\n\t// modulus and exponent\n\tvar n = readMPInt(der, 'modulus');\n\tvar e = readMPInt(der, 'exponent');\n\n\t// now, make the key\n\tvar key = {\n\t\ttype: 'rsa',\n\t\tparts: [\n\t\t\t{ name: 'e', data: e },\n\t\t\t{ name: 'n', data: n }\n\t\t]\n\t};\n\n\treturn (new Key(key));\n}\n\nfunction readPkcs1RSAPrivate(der) {\n\tvar version = readMPInt(der, 'version');\n\tassert.strictEqual(version[0], 0);\n\n\t// modulus then public exponent\n\tvar n = readMPInt(der, 'modulus');\n\tvar e = readMPInt(der, 'public exponent');\n\tvar d = readMPInt(der, 'private exponent');\n\tvar p = readMPInt(der, 'prime1');\n\tvar q = readMPInt(der, 'prime2');\n\tvar dmodp = readMPInt(der, 'exponent1');\n\tvar dmodq = readMPInt(der, 'exponent2');\n\tvar iqmp = readMPInt(der, 'iqmp');\n\n\t// now, make the key\n\tvar key = {\n\t\ttype: 'rsa',\n\t\tparts: [\n\t\t\t{ name: 'n', data: n },\n\t\t\t{ name: 'e', data: e },\n\t\t\t{ name: 'd', data: d },\n\t\t\t{ name: 'iqmp', data: iqmp },\n\t\t\t{ name: 'p', data: p },\n\t\t\t{ name: 'q', data: q },\n\t\t\t{ name: 'dmodp', data: dmodp },\n\t\t\t{ name: 'dmodq', data: dmodq }\n\t\t]\n\t};\n\n\treturn (new PrivateKey(key));\n}\n\nfunction readPkcs1DSAPrivate(der) {\n\tvar version = readMPInt(der, 'version');\n\tassert.strictEqual(version.readUInt8(0), 0);\n\n\tvar p = readMPInt(der, 'p');\n\tvar q = readMPInt(der, 'q');\n\tvar g = readMPInt(der, 'g');\n\tvar y = readMPInt(der, 'y');\n\tvar x = readMPInt(der, 'x');\n\n\t// now, make the key\n\tvar key = {\n\t\ttype: 'dsa',\n\t\tparts: [\n\t\t\t{ name: 'p', data: p },\n\t\t\t{ name: 'q', data: q },\n\t\t\t{ name: 'g', data: g },\n\t\t\t{ name: 'y', data: y },\n\t\t\t{ name: 'x', data: x }\n\t\t]\n\t};\n\n\treturn (new PrivateKey(key));\n}\n\nfunction readPkcs1EdDSAPrivate(der) {\n\tvar version = readMPInt(der, 'version');\n\tassert.strictEqual(version.readUInt8(0), 1);\n\n\t// private key\n\tvar k = der.readString(asn1.Ber.OctetString, true);\n\n\tder.readSequence(0xa0);\n\tvar oid = der.readOID();\n\tassert.strictEqual(oid, '1.3.101.112', 'the ed25519 curve identifier');\n\n\tder.readSequence(0xa1);\n\tvar A = utils.readBitString(der);\n\n\tvar key = {\n\t\ttype: 'ed25519',\n\t\tparts: [\n\t\t\t{ name: 'A', data: utils.zeroPadToLength(A, 32) },\n\t\t\t{ name: 'k', data: k }\n\t\t]\n\t};\n\n\treturn (new PrivateKey(key));\n}\n\nfunction readPkcs1DSAPublic(der) {\n\tvar y = readMPInt(der, 'y');\n\tvar p = readMPInt(der, 'p');\n\tvar q = readMPInt(der, 'q');\n\tvar g = readMPInt(der, 'g');\n\n\tvar key = {\n\t\ttype: 'dsa',\n\t\tparts: [\n\t\t\t{ name: 'y', data: y },\n\t\t\t{ name: 'p', data: p },\n\t\t\t{ name: 'q', data: q },\n\t\t\t{ name: 'g', data: g }\n\t\t]\n\t};\n\n\treturn (new Key(key));\n}\n\nfunction readPkcs1ECDSAPublic(der) {\n\tder.readSequence();\n\n\tvar oid = der.readOID();\n\tassert.strictEqual(oid, '1.2.840.10045.2.1', 'must be ecPublicKey');\n\n\tvar curveOid = der.readOID();\n\n\tvar curve;\n\tvar curves = Object.keys(algs.curves);\n\tfor (var j = 0; j < curves.length; ++j) {\n\t\tvar c = curves[j];\n\t\tvar cd = algs.curves[c];\n\t\tif (cd.pkcs8oid === curveOid) {\n\t\t\tcurve = c;\n\t\t\tbreak;\n\t\t}\n\t}\n\tassert.string(curve, 'a known ECDSA named curve');\n\n\tvar Q = der.readString(asn1.Ber.BitString, true);\n\tQ = utils.ecNormalize(Q);\n\n\tvar key = {\n\t\ttype: 'ecdsa',\n\t\tparts: [\n\t\t\t{ name: 'curve', data: Buffer.from(curve) },\n\t\t\t{ name: 'Q', data: Q }\n\t\t]\n\t};\n\n\treturn (new Key(key));\n}\n\nfunction readPkcs1ECDSAPrivate(der) {\n\tvar version = readMPInt(der, 'version');\n\tassert.strictEqual(version.readUInt8(0), 1);\n\n\t// private key\n\tvar d = der.readString(asn1.Ber.OctetString, true);\n\n\tder.readSequence(0xa0);\n\tvar curve = readECDSACurve(der);\n\tassert.string(curve, 'a known elliptic curve');\n\n\tder.readSequence(0xa1);\n\tvar Q = der.readString(asn1.Ber.BitString, true);\n\tQ = utils.ecNormalize(Q);\n\n\tvar key = {\n\t\ttype: 'ecdsa',\n\t\tparts: [\n\t\t\t{ name: 'curve', data: Buffer.from(curve) },\n\t\t\t{ name: 'Q', data: Q },\n\t\t\t{ name: 'd', data: d }\n\t\t]\n\t};\n\n\treturn (new PrivateKey(key));\n}\n\nfunction writePkcs1(der, key) {\n\tder.startSequence();\n\n\tswitch (key.type) {\n\tcase 'rsa':\n\t\tif (PrivateKey.isPrivateKey(key))\n\t\t\twritePkcs1RSAPrivate(der, key);\n\t\telse\n\t\t\twritePkcs1RSAPublic(der, key);\n\t\tbreak;\n\tcase 'dsa':\n\t\tif (PrivateKey.isPrivateKey(key))\n\t\t\twritePkcs1DSAPrivate(der, key);\n\t\telse\n\t\t\twritePkcs1DSAPublic(der, key);\n\t\tbreak;\n\tcase 'ecdsa':\n\t\tif (PrivateKey.isPrivateKey(key))\n\t\t\twritePkcs1ECDSAPrivate(der, key);\n\t\telse\n\t\t\twritePkcs1ECDSAPublic(der, key);\n\t\tbreak;\n\tcase 'ed25519':\n\t\tif (PrivateKey.isPrivateKey(key))\n\t\t\twritePkcs1EdDSAPrivate(der, key);\n\t\telse\n\t\t\twritePkcs1EdDSAPublic(der, key);\n\t\tbreak;\n\tdefault:\n\t\tthrow (new Error('Unknown key algo: ' + key.type));\n\t}\n\n\tder.endSequence();\n}\n\nfunction writePkcs1RSAPublic(der, key) {\n\tder.writeBuffer(key.part.n.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.e.data, asn1.Ber.Integer);\n}\n\nfunction writePkcs1RSAPrivate(der, key) {\n\tvar ver = Buffer.from([0]);\n\tder.writeBuffer(ver, asn1.Ber.Integer);\n\n\tder.writeBuffer(key.part.n.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.e.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.d.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.p.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.q.data, asn1.Ber.Integer);\n\tif (!key.part.dmodp || !key.part.dmodq)\n\t\tutils.addRSAMissing(key);\n\tder.writeBuffer(key.part.dmodp.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.dmodq.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.iqmp.data, asn1.Ber.Integer);\n}\n\nfunction writePkcs1DSAPrivate(der, key) {\n\tvar ver = Buffer.from([0]);\n\tder.writeBuffer(ver, asn1.Ber.Integer);\n\n\tder.writeBuffer(key.part.p.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.q.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.g.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.y.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.x.data, asn1.Ber.Integer);\n}\n\nfunction writePkcs1DSAPublic(der, key) {\n\tder.writeBuffer(key.part.y.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.p.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.q.data, asn1.Ber.Integer);\n\tder.writeBuffer(key.part.g.data, asn1.Ber.Integer);\n}\n\nfunction writePkcs1ECDSAPublic(der, key) {\n\tder.startSequence();\n\n\tder.writeOID('1.2.840.10045.2.1'); /* ecPublicKey */\n\tvar curve = key.part.curve.data.toString();\n\tvar curveOid = algs.curves[curve].pkcs8oid;\n\tassert.string(curveOid, 'a known ECDSA named curve');\n\tder.writeOID(curveOid);\n\n\tder.endSequence();\n\n\tvar Q = utils.ecNormalize(key.part.Q.data, true);\n\tder.writeBuffer(Q, asn1.Ber.BitString);\n}\n\nfunction writePkcs1ECDSAPrivate(der, key) {\n\tvar ver = Buffer.from([1]);\n\tder.writeBuffer(ver, asn1.Ber.Integer);\n\n\tder.writeBuffer(key.part.d.data, asn1.Ber.OctetString);\n\n\tder.startSequence(0xa0);\n\tvar curve = key.part.curve.data.toString();\n\tvar curveOid = algs.curves[curve].pkcs8oid;\n\tassert.string(curveOid, 'a known ECDSA named curve');\n\tder.writeOID(curveOid);\n\tder.endSequence();\n\n\tder.startSequence(0xa1);\n\tvar Q = utils.ecNormalize(key.part.Q.data, true);\n\tder.writeBuffer(Q, asn1.Ber.BitString);\n\tder.endSequence();\n}\n\nfunction writePkcs1EdDSAPrivate(der, key) {\n\tvar ver = Buffer.from([1]);\n\tder.writeBuffer(ver, asn1.Ber.Integer);\n\n\tder.writeBuffer(key.part.k.data, asn1.Ber.OctetString);\n\n\tder.startSequence(0xa0);\n\tder.writeOID('1.3.101.112');\n\tder.endSequence();\n\n\tder.startSequence(0xa1);\n\tutils.writeBitString(der, key.part.A.data);\n\tder.endSequence();\n}\n\nfunction writePkcs1EdDSAPublic(der, key) {\n\tthrow (new Error('Public keys are not supported for EdDSA PKCS#1'));\n}\n", "// Copyright 2015 Joyent, Inc.\n\nmodule.exports = {\n\tread: read.bind(undefined, false, undefined),\n\treadType: read.bind(undefined, false),\n\twrite: write,\n\t/* semi-private api, used by sshpk-agent */\n\treadPartial: read.bind(undefined, true),\n\n\t/* shared with ssh format */\n\treadInternal: read,\n\tkeyTypeToAlg: keyTypeToAlg,\n\talgToKeyType: algToKeyType\n};\n\nvar assert = require('assert-plus');\nvar Buffer = require('safer-buffer').Buffer;\nvar algs = require('../algs');\nvar utils = require('../utils');\nvar Key = require('../key');\nvar PrivateKey = require('../private-key');\nvar SSHBuffer = require('../ssh-buffer');\n\nfunction algToKeyType(alg) {\n\tassert.string(alg);\n\tif (alg === 'ssh-dss')\n\t\treturn ('dsa');\n\telse if (alg === 'ssh-rsa')\n\t\treturn ('rsa');\n\telse if (alg === 'ssh-ed25519')\n\t\treturn ('ed25519');\n\telse if (alg === 'ssh-curve25519')\n\t\treturn ('curve25519');\n\telse if (alg.match(/^ecdsa-sha2-/))\n\t\treturn ('ecdsa');\n\telse\n\t\tthrow (new Error('Unknown algorithm ' + alg));\n}\n\nfunction keyTypeToAlg(key) {\n\tassert.object(key);\n\tif (key.type === 'dsa')\n\t\treturn ('ssh-dss');\n\telse if (key.type === 'rsa')\n\t\treturn ('ssh-rsa');\n\telse if (key.type === 'ed25519')\n\t\treturn ('ssh-ed25519');\n\telse if (key.type === 'curve25519')\n\t\treturn ('ssh-curve25519');\n\telse if (key.type === 'ecdsa')\n\t\treturn ('ecdsa-sha2-' + key.part.curve.data.toString());\n\telse\n\t\tthrow (new Error('Unknown key type ' + key.type));\n}\n\nfunction read(partial, type, buf, options) {\n\tif (typeof (buf) === 'string')\n\t\tbuf = Buffer.from(buf);\n\tassert.buffer(buf, 'buf');\n\n\tvar key = {};\n\n\tvar parts = key.parts = [];\n\tvar sshbuf = new SSHBuffer({buffer: buf});\n\n\tvar alg = sshbuf.readString();\n\tassert.ok(!sshbuf.atEnd(), 'key must have at least one part');\n\n\tkey.type = algToKeyType(alg);\n\n\tvar partCount = algs.info[key.type].parts.length;\n\tif (type && type === 'private')\n\t\tpartCount = algs.privInfo[key.type].parts.length;\n\n\twhile (!sshbuf.atEnd() && parts.length < partCount)\n\t\tparts.push(sshbuf.readPart());\n\twhile (!partial && !sshbuf.atEnd())\n\t\tparts.push(sshbuf.readPart());\n\n\tassert.ok(parts.length >= 1,\n\t 'key must have at least one part');\n\tassert.ok(partial || sshbuf.atEnd(),\n\t 'leftover bytes at end of key');\n\n\tvar Constructor = Key;\n\tvar algInfo = algs.info[key.type];\n\tif (type === 'private' || algInfo.parts.length !== parts.length) {\n\t\talgInfo = algs.privInfo[key.type];\n\t\tConstructor = PrivateKey;\n\t}\n\tassert.strictEqual(algInfo.parts.length, parts.length);\n\n\tif (key.type === 'ecdsa') {\n\t\tvar res = /^ecdsa-sha2-(.+)$/.exec(alg);\n\t\tassert.ok(res !== null);\n\t\tassert.strictEqual(res[1], parts[0].data.toString());\n\t}\n\n\tvar normalized = true;\n\tfor (var i = 0; i < algInfo.parts.length; ++i) {\n\t\tvar p = parts[i];\n\t\tp.name = algInfo.parts[i];\n\t\t/*\n\t\t * OpenSSH stores ed25519 \"private\" keys as seed + public key\n\t\t * concat'd together (k followed by A). We want to keep them\n\t\t * separate for other formats that don't do this.\n\t\t */\n\t\tif (key.type === 'ed25519' && p.name === 'k')\n\t\t\tp.data = p.data.slice(0, 32);\n\n\t\tif (p.name !== 'curve' && algInfo.normalize !== false) {\n\t\t\tvar nd;\n\t\t\tif (key.type === 'ed25519') {\n\t\t\t\tnd = utils.zeroPadToLength(p.data, 32);\n\t\t\t} else {\n\t\t\t\tnd = utils.mpNormalize(p.data);\n\t\t\t}\n\t\t\tif (nd.toString('binary') !==\n\t\t\t p.data.toString('binary')) {\n\t\t\t\tp.data = nd;\n\t\t\t\tnormalized = false;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (normalized)\n\t\tkey._rfc4253Cache = sshbuf.toBuffer();\n\n\tif (partial && typeof (partial) === 'object') {\n\t\tpartial.remainder = sshbuf.remainder();\n\t\tpartial.consumed = sshbuf._offset;\n\t}\n\n\treturn (new Constructor(key));\n}\n\nfunction write(key, options) {\n\tassert.object(key);\n\n\tvar alg = keyTypeToAlg(key);\n\tvar i;\n\n\tvar algInfo = algs.info[key.type];\n\tif (PrivateKey.isPrivateKey(key))\n\t\talgInfo = algs.privInfo[key.type];\n\tvar parts = algInfo.parts;\n\n\tvar buf = new SSHBuffer({});\n\n\tbuf.writeString(alg);\n\n\tfor (i = 0; i < parts.length; ++i) {\n\t\tvar data = key.part[parts[i]].data;\n\t\tif (algInfo.normalize !== false) {\n\t\t\tif (key.type === 'ed25519')\n\t\t\t\tdata = utils.zeroPadToLength(data, 32);\n\t\t\telse\n\t\t\t\tdata = utils.mpNormalize(data);\n\t\t}\n\t\tif (key.type === 'ed25519' && parts[i] === 'k')\n\t\t\tdata = Buffer.concat([data, key.part.A.data]);\n\t\tbuf.writeBuffer(data);\n\t}\n\n\treturn (buf.toBuffer());\n}\n", "'use strict';\n\nvar crypto_hash_sha512 = require('tweetnacl').lowlevel.crypto_hash;\n\n/*\n * This file is a 1:1 port from the OpenBSD blowfish.c and bcrypt_pbkdf.c. As a\n * result, it retains the original copyright and license. The two files are\n * under slightly different (but compatible) licenses, and are here combined in\n * one file.\n *\n * Credit for the actual porting work goes to:\n * Devi Mandiri \n */\n\n/*\n * The Blowfish portions are under the following license:\n *\n * Blowfish block cipher for OpenBSD\n * Copyright 1997 Niels Provos \n * All rights reserved.\n *\n * Implementation advice by David Mazieres .\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions\n * are met:\n * 1. Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * 2. Redistributions in binary form must reproduce the above copyright\n * notice, this list of conditions and the following disclaimer in the\n * documentation and/or other materials provided with the distribution.\n * 3. The name of the author may not be used to endorse or promote products\n * derived from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR\n * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,\n * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/*\n * The bcrypt_pbkdf portions are under the following license:\n *\n * Copyright (c) 2013 Ted Unangst \n *\n * Permission to use, copy, modify, and distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n */\n\n/*\n * Performance improvements (Javascript-specific):\n *\n * Copyright 2016, Joyent Inc\n * Author: Alex Wilson \n *\n * Permission to use, copy, modify, and distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n */\n\n// Ported from OpenBSD bcrypt_pbkdf.c v1.9\n\nvar BLF_J = 0;\n\nvar Blowfish = function() {\n this.S = [\n new Uint32Array([\n 0xd1310ba6, 0x98dfb5ac, 0x2ffd72db, 0xd01adfb7,\n 0xb8e1afed, 0x6a267e96, 0xba7c9045, 0xf12c7f99,\n 0x24a19947, 0xb3916cf7, 0x0801f2e2, 0x858efc16,\n 0x636920d8, 0x71574e69, 0xa458fea3, 0xf4933d7e,\n 0x0d95748f, 0x728eb658, 0x718bcd58, 0x82154aee,\n 0x7b54a41d, 0xc25a59b5, 0x9c30d539, 0x2af26013,\n 0xc5d1b023, 0x286085f0, 0xca417918, 0xb8db38ef,\n 0x8e79dcb0, 0x603a180e, 0x6c9e0e8b, 0xb01e8a3e,\n 0xd71577c1, 0xbd314b27, 0x78af2fda, 0x55605c60,\n 0xe65525f3, 0xaa55ab94, 0x57489862, 0x63e81440,\n 0x55ca396a, 0x2aab10b6, 0xb4cc5c34, 0x1141e8ce,\n 0xa15486af, 0x7c72e993, 0xb3ee1411, 0x636fbc2a,\n 0x2ba9c55d, 0x741831f6, 0xce5c3e16, 0x9b87931e,\n 0xafd6ba33, 0x6c24cf5c, 0x7a325381, 0x28958677,\n 0x3b8f4898, 0x6b4bb9af, 0xc4bfe81b, 0x66282193,\n 0x61d809cc, 0xfb21a991, 0x487cac60, 0x5dec8032,\n 0xef845d5d, 0xe98575b1, 0xdc262302, 0xeb651b88,\n 0x23893e81, 0xd396acc5, 0x0f6d6ff3, 0x83f44239,\n 0x2e0b4482, 0xa4842004, 0x69c8f04a, 0x9e1f9b5e,\n 0x21c66842, 0xf6e96c9a, 0x670c9c61, 0xabd388f0,\n 0x6a51a0d2, 0xd8542f68, 0x960fa728, 0xab5133a3,\n 0x6eef0b6c, 0x137a3be4, 0xba3bf050, 0x7efb2a98,\n 0xa1f1651d, 0x39af0176, 0x66ca593e, 0x82430e88,\n 0x8cee8619, 0x456f9fb4, 0x7d84a5c3, 0x3b8b5ebe,\n 0xe06f75d8, 0x85c12073, 0x401a449f, 0x56c16aa6,\n 0x4ed3aa62, 0x363f7706, 0x1bfedf72, 0x429b023d,\n 0x37d0d724, 0xd00a1248, 0xdb0fead3, 0x49f1c09b,\n 0x075372c9, 0x80991b7b, 0x25d479d8, 0xf6e8def7,\n 0xe3fe501a, 0xb6794c3b, 0x976ce0bd, 0x04c006ba,\n 0xc1a94fb6, 0x409f60c4, 0x5e5c9ec2, 0x196a2463,\n 0x68fb6faf, 0x3e6c53b5, 0x1339b2eb, 0x3b52ec6f,\n 0x6dfc511f, 0x9b30952c, 0xcc814544, 0xaf5ebd09,\n 0xbee3d004, 0xde334afd, 0x660f2807, 0x192e4bb3,\n 0xc0cba857, 0x45c8740f, 0xd20b5f39, 0xb9d3fbdb,\n 0x5579c0bd, 0x1a60320a, 0xd6a100c6, 0x402c7279,\n 0x679f25fe, 0xfb1fa3cc, 0x8ea5e9f8, 0xdb3222f8,\n 0x3c7516df, 0xfd616b15, 0x2f501ec8, 0xad0552ab,\n 0x323db5fa, 0xfd238760, 0x53317b48, 0x3e00df82,\n 0x9e5c57bb, 0xca6f8ca0, 0x1a87562e, 0xdf1769db,\n 0xd542a8f6, 0x287effc3, 0xac6732c6, 0x8c4f5573,\n 0x695b27b0, 0xbbca58c8, 0xe1ffa35d, 0xb8f011a0,\n 0x10fa3d98, 0xfd2183b8, 0x4afcb56c, 0x2dd1d35b,\n 0x9a53e479, 0xb6f84565, 0xd28e49bc, 0x4bfb9790,\n 0xe1ddf2da, 0xa4cb7e33, 0x62fb1341, 0xcee4c6e8,\n 0xef20cada, 0x36774c01, 0xd07e9efe, 0x2bf11fb4,\n 0x95dbda4d, 0xae909198, 0xeaad8e71, 0x6b93d5a0,\n 0xd08ed1d0, 0xafc725e0, 0x8e3c5b2f, 0x8e7594b7,\n 0x8ff6e2fb, 0xf2122b64, 0x8888b812, 0x900df01c,\n 0x4fad5ea0, 0x688fc31c, 0xd1cff191, 0xb3a8c1ad,\n 0x2f2f2218, 0xbe0e1777, 0xea752dfe, 0x8b021fa1,\n 0xe5a0cc0f, 0xb56f74e8, 0x18acf3d6, 0xce89e299,\n 0xb4a84fe0, 0xfd13e0b7, 0x7cc43b81, 0xd2ada8d9,\n 0x165fa266, 0x80957705, 0x93cc7314, 0x211a1477,\n 0xe6ad2065, 0x77b5fa86, 0xc75442f5, 0xfb9d35cf,\n 0xebcdaf0c, 0x7b3e89a0, 0xd6411bd3, 0xae1e7e49,\n 0x00250e2d, 0x2071b35e, 0x226800bb, 0x57b8e0af,\n 0x2464369b, 0xf009b91e, 0x5563911d, 0x59dfa6aa,\n 0x78c14389, 0xd95a537f, 0x207d5ba2, 0x02e5b9c5,\n 0x83260376, 0x6295cfa9, 0x11c81968, 0x4e734a41,\n 0xb3472dca, 0x7b14a94a, 0x1b510052, 0x9a532915,\n 0xd60f573f, 0xbc9bc6e4, 0x2b60a476, 0x81e67400,\n 0x08ba6fb5, 0x571be91f, 0xf296ec6b, 0x2a0dd915,\n 0xb6636521, 0xe7b9f9b6, 0xff34052e, 0xc5855664,\n 0x53b02d5d, 0xa99f8fa1, 0x08ba4799, 0x6e85076a]),\n new Uint32Array([\n 0x4b7a70e9, 0xb5b32944, 0xdb75092e, 0xc4192623,\n 0xad6ea6b0, 0x49a7df7d, 0x9cee60b8, 0x8fedb266,\n 0xecaa8c71, 0x699a17ff, 0x5664526c, 0xc2b19ee1,\n 0x193602a5, 0x75094c29, 0xa0591340, 0xe4183a3e,\n 0x3f54989a, 0x5b429d65, 0x6b8fe4d6, 0x99f73fd6,\n 0xa1d29c07, 0xefe830f5, 0x4d2d38e6, 0xf0255dc1,\n 0x4cdd2086, 0x8470eb26, 0x6382e9c6, 0x021ecc5e,\n 0x09686b3f, 0x3ebaefc9, 0x3c971814, 0x6b6a70a1,\n 0x687f3584, 0x52a0e286, 0xb79c5305, 0xaa500737,\n 0x3e07841c, 0x7fdeae5c, 0x8e7d44ec, 0x5716f2b8,\n 0xb03ada37, 0xf0500c0d, 0xf01c1f04, 0x0200b3ff,\n 0xae0cf51a, 0x3cb574b2, 0x25837a58, 0xdc0921bd,\n 0xd19113f9, 0x7ca92ff6, 0x94324773, 0x22f54701,\n 0x3ae5e581, 0x37c2dadc, 0xc8b57634, 0x9af3dda7,\n 0xa9446146, 0x0fd0030e, 0xecc8c73e, 0xa4751e41,\n 0xe238cd99, 0x3bea0e2f, 0x3280bba1, 0x183eb331,\n 0x4e548b38, 0x4f6db908, 0x6f420d03, 0xf60a04bf,\n 0x2cb81290, 0x24977c79, 0x5679b072, 0xbcaf89af,\n 0xde9a771f, 0xd9930810, 0xb38bae12, 0xdccf3f2e,\n 0x5512721f, 0x2e6b7124, 0x501adde6, 0x9f84cd87,\n 0x7a584718, 0x7408da17, 0xbc9f9abc, 0xe94b7d8c,\n 0xec7aec3a, 0xdb851dfa, 0x63094366, 0xc464c3d2,\n 0xef1c1847, 0x3215d908, 0xdd433b37, 0x24c2ba16,\n 0x12a14d43, 0x2a65c451, 0x50940002, 0x133ae4dd,\n 0x71dff89e, 0x10314e55, 0x81ac77d6, 0x5f11199b,\n 0x043556f1, 0xd7a3c76b, 0x3c11183b, 0x5924a509,\n 0xf28fe6ed, 0x97f1fbfa, 0x9ebabf2c, 0x1e153c6e,\n 0x86e34570, 0xeae96fb1, 0x860e5e0a, 0x5a3e2ab3,\n 0x771fe71c, 0x4e3d06fa, 0x2965dcb9, 0x99e71d0f,\n 0x803e89d6, 0x5266c825, 0x2e4cc978, 0x9c10b36a,\n 0xc6150eba, 0x94e2ea78, 0xa5fc3c53, 0x1e0a2df4,\n 0xf2f74ea7, 0x361d2b3d, 0x1939260f, 0x19c27960,\n 0x5223a708, 0xf71312b6, 0xebadfe6e, 0xeac31f66,\n 0xe3bc4595, 0xa67bc883, 0xb17f37d1, 0x018cff28,\n 0xc332ddef, 0xbe6c5aa5, 0x65582185, 0x68ab9802,\n 0xeecea50f, 0xdb2f953b, 0x2aef7dad, 0x5b6e2f84,\n 0x1521b628, 0x29076170, 0xecdd4775, 0x619f1510,\n 0x13cca830, 0xeb61bd96, 0x0334fe1e, 0xaa0363cf,\n 0xb5735c90, 0x4c70a239, 0xd59e9e0b, 0xcbaade14,\n 0xeecc86bc, 0x60622ca7, 0x9cab5cab, 0xb2f3846e,\n 0x648b1eaf, 0x19bdf0ca, 0xa02369b9, 0x655abb50,\n 0x40685a32, 0x3c2ab4b3, 0x319ee9d5, 0xc021b8f7,\n 0x9b540b19, 0x875fa099, 0x95f7997e, 0x623d7da8,\n 0xf837889a, 0x97e32d77, 0x11ed935f, 0x16681281,\n 0x0e358829, 0xc7e61fd6, 0x96dedfa1, 0x7858ba99,\n 0x57f584a5, 0x1b227263, 0x9b83c3ff, 0x1ac24696,\n 0xcdb30aeb, 0x532e3054, 0x8fd948e4, 0x6dbc3128,\n 0x58ebf2ef, 0x34c6ffea, 0xfe28ed61, 0xee7c3c73,\n 0x5d4a14d9, 0xe864b7e3, 0x42105d14, 0x203e13e0,\n 0x45eee2b6, 0xa3aaabea, 0xdb6c4f15, 0xfacb4fd0,\n 0xc742f442, 0xef6abbb5, 0x654f3b1d, 0x41cd2105,\n 0xd81e799e, 0x86854dc7, 0xe44b476a, 0x3d816250,\n 0xcf62a1f2, 0x5b8d2646, 0xfc8883a0, 0xc1c7b6a3,\n 0x7f1524c3, 0x69cb7492, 0x47848a0b, 0x5692b285,\n 0x095bbf00, 0xad19489d, 0x1462b174, 0x23820e00,\n 0x58428d2a, 0x0c55f5ea, 0x1dadf43e, 0x233f7061,\n 0x3372f092, 0x8d937e41, 0xd65fecf1, 0x6c223bdb,\n 0x7cde3759, 0xcbee7460, 0x4085f2a7, 0xce77326e,\n 0xa6078084, 0x19f8509e, 0xe8efd855, 0x61d99735,\n 0xa969a7aa, 0xc50c06c2, 0x5a04abfc, 0x800bcadc,\n 0x9e447a2e, 0xc3453484, 0xfdd56705, 0x0e1e9ec9,\n 0xdb73dbd3, 0x105588cd, 0x675fda79, 0xe3674340,\n 0xc5c43465, 0x713e38d8, 0x3d28f89e, 0xf16dff20,\n 0x153e21e7, 0x8fb03d4a, 0xe6e39f2b, 0xdb83adf7]),\n new Uint32Array([\n 0xe93d5a68, 0x948140f7, 0xf64c261c, 0x94692934,\n 0x411520f7, 0x7602d4f7, 0xbcf46b2e, 0xd4a20068,\n 0xd4082471, 0x3320f46a, 0x43b7d4b7, 0x500061af,\n 0x1e39f62e, 0x97244546, 0x14214f74, 0xbf8b8840,\n 0x4d95fc1d, 0x96b591af, 0x70f4ddd3, 0x66a02f45,\n 0xbfbc09ec, 0x03bd9785, 0x7fac6dd0, 0x31cb8504,\n 0x96eb27b3, 0x55fd3941, 0xda2547e6, 0xabca0a9a,\n 0x28507825, 0x530429f4, 0x0a2c86da, 0xe9b66dfb,\n 0x68dc1462, 0xd7486900, 0x680ec0a4, 0x27a18dee,\n 0x4f3ffea2, 0xe887ad8c, 0xb58ce006, 0x7af4d6b6,\n 0xaace1e7c, 0xd3375fec, 0xce78a399, 0x406b2a42,\n 0x20fe9e35, 0xd9f385b9, 0xee39d7ab, 0x3b124e8b,\n 0x1dc9faf7, 0x4b6d1856, 0x26a36631, 0xeae397b2,\n 0x3a6efa74, 0xdd5b4332, 0x6841e7f7, 0xca7820fb,\n 0xfb0af54e, 0xd8feb397, 0x454056ac, 0xba489527,\n 0x55533a3a, 0x20838d87, 0xfe6ba9b7, 0xd096954b,\n 0x55a867bc, 0xa1159a58, 0xcca92963, 0x99e1db33,\n 0xa62a4a56, 0x3f3125f9, 0x5ef47e1c, 0x9029317c,\n 0xfdf8e802, 0x04272f70, 0x80bb155c, 0x05282ce3,\n 0x95c11548, 0xe4c66d22, 0x48c1133f, 0xc70f86dc,\n 0x07f9c9ee, 0x41041f0f, 0x404779a4, 0x5d886e17,\n 0x325f51eb, 0xd59bc0d1, 0xf2bcc18f, 0x41113564,\n 0x257b7834, 0x602a9c60, 0xdff8e8a3, 0x1f636c1b,\n 0x0e12b4c2, 0x02e1329e, 0xaf664fd1, 0xcad18115,\n 0x6b2395e0, 0x333e92e1, 0x3b240b62, 0xeebeb922,\n 0x85b2a20e, 0xe6ba0d99, 0xde720c8c, 0x2da2f728,\n 0xd0127845, 0x95b794fd, 0x647d0862, 0xe7ccf5f0,\n 0x5449a36f, 0x877d48fa, 0xc39dfd27, 0xf33e8d1e,\n 0x0a476341, 0x992eff74, 0x3a6f6eab, 0xf4f8fd37,\n 0xa812dc60, 0xa1ebddf8, 0x991be14c, 0xdb6e6b0d,\n 0xc67b5510, 0x6d672c37, 0x2765d43b, 0xdcd0e804,\n 0xf1290dc7, 0xcc00ffa3, 0xb5390f92, 0x690fed0b,\n 0x667b9ffb, 0xcedb7d9c, 0xa091cf0b, 0xd9155ea3,\n 0xbb132f88, 0x515bad24, 0x7b9479bf, 0x763bd6eb,\n 0x37392eb3, 0xcc115979, 0x8026e297, 0xf42e312d,\n 0x6842ada7, 0xc66a2b3b, 0x12754ccc, 0x782ef11c,\n 0x6a124237, 0xb79251e7, 0x06a1bbe6, 0x4bfb6350,\n 0x1a6b1018, 0x11caedfa, 0x3d25bdd8, 0xe2e1c3c9,\n 0x44421659, 0x0a121386, 0xd90cec6e, 0xd5abea2a,\n 0x64af674e, 0xda86a85f, 0xbebfe988, 0x64e4c3fe,\n 0x9dbc8057, 0xf0f7c086, 0x60787bf8, 0x6003604d,\n 0xd1fd8346, 0xf6381fb0, 0x7745ae04, 0xd736fccc,\n 0x83426b33, 0xf01eab71, 0xb0804187, 0x3c005e5f,\n 0x77a057be, 0xbde8ae24, 0x55464299, 0xbf582e61,\n 0x4e58f48f, 0xf2ddfda2, 0xf474ef38, 0x8789bdc2,\n 0x5366f9c3, 0xc8b38e74, 0xb475f255, 0x46fcd9b9,\n 0x7aeb2661, 0x8b1ddf84, 0x846a0e79, 0x915f95e2,\n 0x466e598e, 0x20b45770, 0x8cd55591, 0xc902de4c,\n 0xb90bace1, 0xbb8205d0, 0x11a86248, 0x7574a99e,\n 0xb77f19b6, 0xe0a9dc09, 0x662d09a1, 0xc4324633,\n 0xe85a1f02, 0x09f0be8c, 0x4a99a025, 0x1d6efe10,\n 0x1ab93d1d, 0x0ba5a4df, 0xa186f20f, 0x2868f169,\n 0xdcb7da83, 0x573906fe, 0xa1e2ce9b, 0x4fcd7f52,\n 0x50115e01, 0xa70683fa, 0xa002b5c4, 0x0de6d027,\n 0x9af88c27, 0x773f8641, 0xc3604c06, 0x61a806b5,\n 0xf0177a28, 0xc0f586e0, 0x006058aa, 0x30dc7d62,\n 0x11e69ed7, 0x2338ea63, 0x53c2dd94, 0xc2c21634,\n 0xbbcbee56, 0x90bcb6de, 0xebfc7da1, 0xce591d76,\n 0x6f05e409, 0x4b7c0188, 0x39720a3d, 0x7c927c24,\n 0x86e3725f, 0x724d9db9, 0x1ac15bb4, 0xd39eb8fc,\n 0xed545578, 0x08fca5b5, 0xd83d7cd3, 0x4dad0fc4,\n 0x1e50ef5e, 0xb161e6f8, 0xa28514d9, 0x6c51133c,\n 0x6fd5c7e7, 0x56e14ec4, 0x362abfce, 0xddc6c837,\n 0xd79a3234, 0x92638212, 0x670efa8e, 0x406000e0]),\n new Uint32Array([\n 0x3a39ce37, 0xd3faf5cf, 0xabc27737, 0x5ac52d1b,\n 0x5cb0679e, 0x4fa33742, 0xd3822740, 0x99bc9bbe,\n 0xd5118e9d, 0xbf0f7315, 0xd62d1c7e, 0xc700c47b,\n 0xb78c1b6b, 0x21a19045, 0xb26eb1be, 0x6a366eb4,\n 0x5748ab2f, 0xbc946e79, 0xc6a376d2, 0x6549c2c8,\n 0x530ff8ee, 0x468dde7d, 0xd5730a1d, 0x4cd04dc6,\n 0x2939bbdb, 0xa9ba4650, 0xac9526e8, 0xbe5ee304,\n 0xa1fad5f0, 0x6a2d519a, 0x63ef8ce2, 0x9a86ee22,\n 0xc089c2b8, 0x43242ef6, 0xa51e03aa, 0x9cf2d0a4,\n 0x83c061ba, 0x9be96a4d, 0x8fe51550, 0xba645bd6,\n 0x2826a2f9, 0xa73a3ae1, 0x4ba99586, 0xef5562e9,\n 0xc72fefd3, 0xf752f7da, 0x3f046f69, 0x77fa0a59,\n 0x80e4a915, 0x87b08601, 0x9b09e6ad, 0x3b3ee593,\n 0xe990fd5a, 0x9e34d797, 0x2cf0b7d9, 0x022b8b51,\n 0x96d5ac3a, 0x017da67d, 0xd1cf3ed6, 0x7c7d2d28,\n 0x1f9f25cf, 0xadf2b89b, 0x5ad6b472, 0x5a88f54c,\n 0xe029ac71, 0xe019a5e6, 0x47b0acfd, 0xed93fa9b,\n 0xe8d3c48d, 0x283b57cc, 0xf8d56629, 0x79132e28,\n 0x785f0191, 0xed756055, 0xf7960e44, 0xe3d35e8c,\n 0x15056dd4, 0x88f46dba, 0x03a16125, 0x0564f0bd,\n 0xc3eb9e15, 0x3c9057a2, 0x97271aec, 0xa93a072a,\n 0x1b3f6d9b, 0x1e6321f5, 0xf59c66fb, 0x26dcf319,\n 0x7533d928, 0xb155fdf5, 0x03563482, 0x8aba3cbb,\n 0x28517711, 0xc20ad9f8, 0xabcc5167, 0xccad925f,\n 0x4de81751, 0x3830dc8e, 0x379d5862, 0x9320f991,\n 0xea7a90c2, 0xfb3e7bce, 0x5121ce64, 0x774fbe32,\n 0xa8b6e37e, 0xc3293d46, 0x48de5369, 0x6413e680,\n 0xa2ae0810, 0xdd6db224, 0x69852dfd, 0x09072166,\n 0xb39a460a, 0x6445c0dd, 0x586cdecf, 0x1c20c8ae,\n 0x5bbef7dd, 0x1b588d40, 0xccd2017f, 0x6bb4e3bb,\n 0xdda26a7e, 0x3a59ff45, 0x3e350a44, 0xbcb4cdd5,\n 0x72eacea8, 0xfa6484bb, 0x8d6612ae, 0xbf3c6f47,\n 0xd29be463, 0x542f5d9e, 0xaec2771b, 0xf64e6370,\n 0x740e0d8d, 0xe75b1357, 0xf8721671, 0xaf537d5d,\n 0x4040cb08, 0x4eb4e2cc, 0x34d2466a, 0x0115af84,\n 0xe1b00428, 0x95983a1d, 0x06b89fb4, 0xce6ea048,\n 0x6f3f3b82, 0x3520ab82, 0x011a1d4b, 0x277227f8,\n 0x611560b1, 0xe7933fdc, 0xbb3a792b, 0x344525bd,\n 0xa08839e1, 0x51ce794b, 0x2f32c9b7, 0xa01fbac9,\n 0xe01cc87e, 0xbcc7d1f6, 0xcf0111c3, 0xa1e8aac7,\n 0x1a908749, 0xd44fbd9a, 0xd0dadecb, 0xd50ada38,\n 0x0339c32a, 0xc6913667, 0x8df9317c, 0xe0b12b4f,\n 0xf79e59b7, 0x43f5bb3a, 0xf2d519ff, 0x27d9459c,\n 0xbf97222c, 0x15e6fc2a, 0x0f91fc71, 0x9b941525,\n 0xfae59361, 0xceb69ceb, 0xc2a86459, 0x12baa8d1,\n 0xb6c1075e, 0xe3056a0c, 0x10d25065, 0xcb03a442,\n 0xe0ec6e0e, 0x1698db3b, 0x4c98a0be, 0x3278e964,\n 0x9f1f9532, 0xe0d392df, 0xd3a0342b, 0x8971f21e,\n 0x1b0a7441, 0x4ba3348c, 0xc5be7120, 0xc37632d8,\n 0xdf359f8d, 0x9b992f2e, 0xe60b6f47, 0x0fe3f11d,\n 0xe54cda54, 0x1edad891, 0xce6279cf, 0xcd3e7e6f,\n 0x1618b166, 0xfd2c1d05, 0x848fd2c5, 0xf6fb2299,\n 0xf523f357, 0xa6327623, 0x93a83531, 0x56cccd02,\n 0xacf08162, 0x5a75ebb5, 0x6e163697, 0x88d273cc,\n 0xde966292, 0x81b949d0, 0x4c50901b, 0x71c65614,\n 0xe6c6c7bd, 0x327a140a, 0x45e1d006, 0xc3f27b9a,\n 0xc9aa53fd, 0x62a80f00, 0xbb25bfe2, 0x35bdd2f6,\n 0x71126905, 0xb2040222, 0xb6cbcf7c, 0xcd769c2b,\n 0x53113ec0, 0x1640e3d3, 0x38abbd60, 0x2547adf0,\n 0xba38209c, 0xf746ce76, 0x77afa1c5, 0x20756060,\n 0x85cbfe4e, 0x8ae88dd8, 0x7aaaf9b0, 0x4cf9aa7e,\n 0x1948c25c, 0x02fb8a8c, 0x01c36ae4, 0xd6ebe1f9,\n 0x90d4f869, 0xa65cdea0, 0x3f09252d, 0xc208e69f,\n 0xb74e6132, 0xce77e25b, 0x578fdfe3, 0x3ac372e6])\n ];\n this.P = new Uint32Array([\n 0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344,\n 0xa4093822, 0x299f31d0, 0x082efa98, 0xec4e6c89,\n 0x452821e6, 0x38d01377, 0xbe5466cf, 0x34e90c6c,\n 0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5, 0xb5470917,\n 0x9216d5d9, 0x8979fb1b]);\n};\n\nfunction F(S, x8, i) {\n return (((S[0][x8[i+3]] +\n S[1][x8[i+2]]) ^\n S[2][x8[i+1]]) +\n S[3][x8[i]]);\n};\n\nBlowfish.prototype.encipher = function(x, x8) {\n if (x8 === undefined) {\n x8 = new Uint8Array(x.buffer);\n if (x.byteOffset !== 0)\n x8 = x8.subarray(x.byteOffset);\n }\n x[0] ^= this.P[0];\n for (var i = 1; i < 16; i += 2) {\n x[1] ^= F(this.S, x8, 0) ^ this.P[i];\n x[0] ^= F(this.S, x8, 4) ^ this.P[i+1];\n }\n var t = x[0];\n x[0] = x[1] ^ this.P[17];\n x[1] = t;\n};\n\nBlowfish.prototype.decipher = function(x) {\n var x8 = new Uint8Array(x.buffer);\n if (x.byteOffset !== 0)\n x8 = x8.subarray(x.byteOffset);\n x[0] ^= this.P[17];\n for (var i = 16; i > 0; i -= 2) {\n x[1] ^= F(this.S, x8, 0) ^ this.P[i];\n x[0] ^= F(this.S, x8, 4) ^ this.P[i-1];\n }\n var t = x[0];\n x[0] = x[1] ^ this.P[0];\n x[1] = t;\n};\n\nfunction stream2word(data, databytes){\n var i, temp = 0;\n for (i = 0; i < 4; i++, BLF_J++) {\n if (BLF_J >= databytes) BLF_J = 0;\n temp = (temp << 8) | data[BLF_J];\n }\n return temp;\n};\n\nBlowfish.prototype.expand0state = function(key, keybytes) {\n var d = new Uint32Array(2), i, k;\n var d8 = new Uint8Array(d.buffer);\n\n for (i = 0, BLF_J = 0; i < 18; i++) {\n this.P[i] ^= stream2word(key, keybytes);\n }\n BLF_J = 0;\n\n for (i = 0; i < 18; i += 2) {\n this.encipher(d, d8);\n this.P[i] = d[0];\n this.P[i+1] = d[1];\n }\n\n for (i = 0; i < 4; i++) {\n for (k = 0; k < 256; k += 2) {\n this.encipher(d, d8);\n this.S[i][k] = d[0];\n this.S[i][k+1] = d[1];\n }\n }\n};\n\nBlowfish.prototype.expandstate = function(data, databytes, key, keybytes) {\n var d = new Uint32Array(2), i, k;\n\n for (i = 0, BLF_J = 0; i < 18; i++) {\n this.P[i] ^= stream2word(key, keybytes);\n }\n\n for (i = 0, BLF_J = 0; i < 18; i += 2) {\n d[0] ^= stream2word(data, databytes);\n d[1] ^= stream2word(data, databytes);\n this.encipher(d);\n this.P[i] = d[0];\n this.P[i+1] = d[1];\n }\n\n for (i = 0; i < 4; i++) {\n for (k = 0; k < 256; k += 2) {\n d[0] ^= stream2word(data, databytes);\n d[1] ^= stream2word(data, databytes);\n this.encipher(d);\n this.S[i][k] = d[0];\n this.S[i][k+1] = d[1];\n }\n }\n BLF_J = 0;\n};\n\nBlowfish.prototype.enc = function(data, blocks) {\n for (var i = 0; i < blocks; i++) {\n this.encipher(data.subarray(i*2));\n }\n};\n\nBlowfish.prototype.dec = function(data, blocks) {\n for (var i = 0; i < blocks; i++) {\n this.decipher(data.subarray(i*2));\n }\n};\n\nvar BCRYPT_BLOCKS = 8,\n BCRYPT_HASHSIZE = 32;\n\nfunction bcrypt_hash(sha2pass, sha2salt, out) {\n var state = new Blowfish(),\n cdata = new Uint32Array(BCRYPT_BLOCKS), i,\n ciphertext = new Uint8Array([79,120,121,99,104,114,111,109,97,116,105,\n 99,66,108,111,119,102,105,115,104,83,119,97,116,68,121,110,97,109,\n 105,116,101]); //\"OxychromaticBlowfishSwatDynamite\"\n\n state.expandstate(sha2salt, 64, sha2pass, 64);\n for (i = 0; i < 64; i++) {\n state.expand0state(sha2salt, 64);\n state.expand0state(sha2pass, 64);\n }\n\n for (i = 0; i < BCRYPT_BLOCKS; i++)\n cdata[i] = stream2word(ciphertext, ciphertext.byteLength);\n for (i = 0; i < 64; i++)\n state.enc(cdata, cdata.byteLength / 8);\n\n for (i = 0; i < BCRYPT_BLOCKS; i++) {\n out[4*i+3] = cdata[i] >>> 24;\n out[4*i+2] = cdata[i] >>> 16;\n out[4*i+1] = cdata[i] >>> 8;\n out[4*i+0] = cdata[i];\n }\n};\n\nfunction bcrypt_pbkdf(pass, passlen, salt, saltlen, key, keylen, rounds) {\n var sha2pass = new Uint8Array(64),\n sha2salt = new Uint8Array(64),\n out = new Uint8Array(BCRYPT_HASHSIZE),\n tmpout = new Uint8Array(BCRYPT_HASHSIZE),\n countsalt = new Uint8Array(saltlen+4),\n i, j, amt, stride, dest, count,\n origkeylen = keylen;\n\n if (rounds < 1)\n return -1;\n if (passlen === 0 || saltlen === 0 || keylen === 0 ||\n keylen > (out.byteLength * out.byteLength) || saltlen > (1<<20))\n return -1;\n\n stride = Math.floor((keylen + out.byteLength - 1) / out.byteLength);\n amt = Math.floor((keylen + stride - 1) / stride);\n\n for (i = 0; i < saltlen; i++)\n countsalt[i] = salt[i];\n\n crypto_hash_sha512(sha2pass, pass, passlen);\n\n for (count = 1; keylen > 0; count++) {\n countsalt[saltlen+0] = count >>> 24;\n countsalt[saltlen+1] = count >>> 16;\n countsalt[saltlen+2] = count >>> 8;\n countsalt[saltlen+3] = count;\n\n crypto_hash_sha512(sha2salt, countsalt, saltlen + 4);\n bcrypt_hash(sha2pass, sha2salt, tmpout);\n for (i = out.byteLength; i--;)\n out[i] = tmpout[i];\n\n for (i = 1; i < rounds; i++) {\n crypto_hash_sha512(sha2salt, tmpout, tmpout.byteLength);\n bcrypt_hash(sha2pass, sha2salt, tmpout);\n for (j = 0; j < out.byteLength; j++)\n out[j] ^= tmpout[j];\n }\n\n amt = Math.min(amt, keylen);\n for (i = 0; i < amt; i++) {\n dest = i * stride + (count - 1);\n if (dest >= origkeylen)\n break;\n key[dest] = out[i];\n }\n keylen -= i;\n }\n\n return 0;\n};\n\nmodule.exports = {\n BLOCKS: BCRYPT_BLOCKS,\n HASHSIZE: BCRYPT_HASHSIZE,\n hash: bcrypt_hash,\n pbkdf: bcrypt_pbkdf\n};\n", "// Copyright 2015 Joyent, Inc.\n\nmodule.exports = {\n\tread: read,\n\treadSSHPrivate: readSSHPrivate,\n\twrite: write\n};\n\nvar assert = require('assert-plus');\nvar asn1 = require('asn1');\nvar Buffer = require('safer-buffer').Buffer;\nvar algs = require('../algs');\nvar utils = require('../utils');\nvar crypto = require('crypto');\n\nvar Key = require('../key');\nvar PrivateKey = require('../private-key');\nvar pem = require('./pem');\nvar rfc4253 = require('./rfc4253');\nvar SSHBuffer = require('../ssh-buffer');\nvar errors = require('../errors');\n\nvar bcrypt;\n\nfunction read(buf, options) {\n\treturn (pem.read(buf, options));\n}\n\nvar MAGIC = 'openssh-key-v1';\n\nfunction readSSHPrivate(type, buf, options) {\n\tbuf = new SSHBuffer({buffer: buf});\n\n\tvar magic = buf.readCString();\n\tassert.strictEqual(magic, MAGIC, 'bad magic string');\n\n\tvar cipher = buf.readString();\n\tvar kdf = buf.readString();\n\tvar kdfOpts = buf.readBuffer();\n\n\tvar nkeys = buf.readInt();\n\tif (nkeys !== 1) {\n\t\tthrow (new Error('OpenSSH-format key file contains ' +\n\t\t 'multiple keys: this is unsupported.'));\n\t}\n\n\tvar pubKey = buf.readBuffer();\n\n\tif (type === 'public') {\n\t\tassert.ok(buf.atEnd(), 'excess bytes left after key');\n\t\treturn (rfc4253.read(pubKey));\n\t}\n\n\tvar privKeyBlob = buf.readBuffer();\n\tassert.ok(buf.atEnd(), 'excess bytes left after key');\n\n\tvar kdfOptsBuf = new SSHBuffer({ buffer: kdfOpts });\n\tswitch (kdf) {\n\tcase 'none':\n\t\tif (cipher !== 'none') {\n\t\t\tthrow (new Error('OpenSSH-format key uses KDF \"none\" ' +\n\t\t\t 'but specifies a cipher other than \"none\"'));\n\t\t}\n\t\tbreak;\n\tcase 'bcrypt':\n\t\tvar salt = kdfOptsBuf.readBuffer();\n\t\tvar rounds = kdfOptsBuf.readInt();\n\t\tvar cinf = utils.opensshCipherInfo(cipher);\n\t\tif (bcrypt === undefined) {\n\t\t\tbcrypt = require('bcrypt-pbkdf');\n\t\t}\n\n\t\tif (typeof (options.passphrase) === 'string') {\n\t\t\toptions.passphrase = Buffer.from(options.passphrase,\n\t\t\t 'utf-8');\n\t\t}\n\t\tif (!Buffer.isBuffer(options.passphrase)) {\n\t\t\tthrow (new errors.KeyEncryptedError(\n\t\t\t options.filename, 'OpenSSH'));\n\t\t}\n\n\t\tvar pass = new Uint8Array(options.passphrase);\n\t\tvar salti = new Uint8Array(salt);\n\t\t/* Use the pbkdf to derive both the key and the IV. */\n\t\tvar out = new Uint8Array(cinf.keySize + cinf.blockSize);\n\t\tvar res = bcrypt.pbkdf(pass, pass.length, salti, salti.length,\n\t\t out, out.length, rounds);\n\t\tif (res !== 0) {\n\t\t\tthrow (new Error('bcrypt_pbkdf function returned ' +\n\t\t\t 'failure, parameters invalid'));\n\t\t}\n\t\tout = Buffer.from(out);\n\t\tvar ckey = out.slice(0, cinf.keySize);\n\t\tvar iv = out.slice(cinf.keySize, cinf.keySize + cinf.blockSize);\n\t\tvar cipherStream = crypto.createDecipheriv(cinf.opensslName,\n\t\t ckey, iv);\n\t\tcipherStream.setAutoPadding(false);\n\t\tvar chunk, chunks = [];\n\t\tcipherStream.once('error', function (e) {\n\t\t\tif (e.toString().indexOf('bad decrypt') !== -1) {\n\t\t\t\tthrow (new Error('Incorrect passphrase ' +\n\t\t\t\t 'supplied, could not decrypt key'));\n\t\t\t}\n\t\t\tthrow (e);\n\t\t});\n\t\tcipherStream.write(privKeyBlob);\n\t\tcipherStream.end();\n\t\twhile ((chunk = cipherStream.read()) !== null)\n\t\t\tchunks.push(chunk);\n\t\tprivKeyBlob = Buffer.concat(chunks);\n\t\tbreak;\n\tdefault:\n\t\tthrow (new Error(\n\t\t 'OpenSSH-format key uses unknown KDF \"' + kdf + '\"'));\n\t}\n\n\tbuf = new SSHBuffer({buffer: privKeyBlob});\n\n\tvar checkInt1 = buf.readInt();\n\tvar checkInt2 = buf.readInt();\n\tif (checkInt1 !== checkInt2) {\n\t\tthrow (new Error('Incorrect passphrase supplied, could not ' +\n\t\t 'decrypt key'));\n\t}\n\n\tvar ret = {};\n\tvar key = rfc4253.readInternal(ret, 'private', buf.remainder());\n\n\tbuf.skip(ret.consumed);\n\n\tvar comment = buf.readString();\n\tkey.comment = comment;\n\n\treturn (key);\n}\n\nfunction write(key, options) {\n\tvar pubKey;\n\tif (PrivateKey.isPrivateKey(key))\n\t\tpubKey = key.toPublic();\n\telse\n\t\tpubKey = key;\n\n\tvar cipher = 'none';\n\tvar kdf = 'none';\n\tvar kdfopts = Buffer.alloc(0);\n\tvar cinf = { blockSize: 8 };\n\tvar passphrase;\n\tif (options !== undefined) {\n\t\tpassphrase = options.passphrase;\n\t\tif (typeof (passphrase) === 'string')\n\t\t\tpassphrase = Buffer.from(passphrase, 'utf-8');\n\t\tif (passphrase !== undefined) {\n\t\t\tassert.buffer(passphrase, 'options.passphrase');\n\t\t\tassert.optionalString(options.cipher, 'options.cipher');\n\t\t\tcipher = options.cipher;\n\t\t\tif (cipher === undefined)\n\t\t\t\tcipher = 'aes128-ctr';\n\t\t\tcinf = utils.opensshCipherInfo(cipher);\n\t\t\tkdf = 'bcrypt';\n\t\t}\n\t}\n\n\tvar privBuf;\n\tif (PrivateKey.isPrivateKey(key)) {\n\t\tprivBuf = new SSHBuffer({});\n\t\tvar checkInt = crypto.randomBytes(4).readUInt32BE(0);\n\t\tprivBuf.writeInt(checkInt);\n\t\tprivBuf.writeInt(checkInt);\n\t\tprivBuf.write(key.toBuffer('rfc4253'));\n\t\tprivBuf.writeString(key.comment || '');\n\n\t\tvar n = 1;\n\t\twhile (privBuf._offset % cinf.blockSize !== 0)\n\t\t\tprivBuf.writeChar(n++);\n\t\tprivBuf = privBuf.toBuffer();\n\t}\n\n\tswitch (kdf) {\n\tcase 'none':\n\t\tbreak;\n\tcase 'bcrypt':\n\t\tvar salt = crypto.randomBytes(16);\n\t\tvar rounds = 16;\n\t\tvar kdfssh = new SSHBuffer({});\n\t\tkdfssh.writeBuffer(salt);\n\t\tkdfssh.writeInt(rounds);\n\t\tkdfopts = kdfssh.toBuffer();\n\n\t\tif (bcrypt === undefined) {\n\t\t\tbcrypt = require('bcrypt-pbkdf');\n\t\t}\n\t\tvar pass = new Uint8Array(passphrase);\n\t\tvar salti = new Uint8Array(salt);\n\t\t/* Use the pbkdf to derive both the key and the IV. */\n\t\tvar out = new Uint8Array(cinf.keySize + cinf.blockSize);\n\t\tvar res = bcrypt.pbkdf(pass, pass.length, salti, salti.length,\n\t\t out, out.length, rounds);\n\t\tif (res !== 0) {\n\t\t\tthrow (new Error('bcrypt_pbkdf function returned ' +\n\t\t\t 'failure, parameters invalid'));\n\t\t}\n\t\tout = Buffer.from(out);\n\t\tvar ckey = out.slice(0, cinf.keySize);\n\t\tvar iv = out.slice(cinf.keySize, cinf.keySize + cinf.blockSize);\n\n\t\tvar cipherStream = crypto.createCipheriv(cinf.opensslName,\n\t\t ckey, iv);\n\t\tcipherStream.setAutoPadding(false);\n\t\tvar chunk, chunks = [];\n\t\tcipherStream.once('error', function (e) {\n\t\t\tthrow (e);\n\t\t});\n\t\tcipherStream.write(privBuf);\n\t\tcipherStream.end();\n\t\twhile ((chunk = cipherStream.read()) !== null)\n\t\t\tchunks.push(chunk);\n\t\tprivBuf = Buffer.concat(chunks);\n\t\tbreak;\n\tdefault:\n\t\tthrow (new Error('Unsupported kdf ' + kdf));\n\t}\n\n\tvar buf = new SSHBuffer({});\n\n\tbuf.writeCString(MAGIC);\n\tbuf.writeString(cipher);\t/* cipher */\n\tbuf.writeString(kdf);\t\t/* kdf */\n\tbuf.writeBuffer(kdfopts);\t/* kdfoptions */\n\n\tbuf.writeInt(1);\t\t/* nkeys */\n\tbuf.writeBuffer(pubKey.toBuffer('rfc4253'));\n\n\tif (privBuf)\n\t\tbuf.writeBuffer(privBuf);\n\n\tbuf = buf.toBuffer();\n\n\tvar header;\n\tif (PrivateKey.isPrivateKey(key))\n\t\theader = 'OPENSSH PRIVATE KEY';\n\telse\n\t\theader = 'OPENSSH PUBLIC KEY';\n\n\tvar tmp = buf.toString('base64');\n\tvar len = tmp.length + (tmp.length / 70) +\n\t 18 + 16 + header.length*2 + 10;\n\tbuf = Buffer.alloc(len);\n\tvar o = 0;\n\to += buf.write('-----BEGIN ' + header + '-----\\n', o);\n\tfor (var i = 0; i < tmp.length; ) {\n\t\tvar limit = i + 70;\n\t\tif (limit > tmp.length)\n\t\t\tlimit = tmp.length;\n\t\to += buf.write(tmp.slice(i, limit), o);\n\t\tbuf[o++] = 10;\n\t\ti = limit;\n\t}\n\to += buf.write('-----END ' + header + '-----\\n', o);\n\n\treturn (buf.slice(0, o));\n}\n", "// Copyright 2018 Joyent, Inc.\n\nmodule.exports = {\n\tread: read,\n\twrite: write\n};\n\nvar assert = require('assert-plus');\nvar asn1 = require('asn1');\nvar crypto = require('crypto');\nvar Buffer = require('safer-buffer').Buffer;\nvar algs = require('../algs');\nvar utils = require('../utils');\nvar Key = require('../key');\nvar PrivateKey = require('../private-key');\n\nvar pkcs1 = require('./pkcs1');\nvar pkcs8 = require('./pkcs8');\nvar sshpriv = require('./ssh-private');\nvar rfc4253 = require('./rfc4253');\n\nvar errors = require('../errors');\n\nvar OID_PBES2 = '1.2.840.113549.1.5.13';\nvar OID_PBKDF2 = '1.2.840.113549.1.5.12';\n\nvar OID_TO_CIPHER = {\n\t'1.2.840.113549.3.7': '3des-cbc',\n\t'2.16.840.1.101.3.4.1.2': 'aes128-cbc',\n\t'2.16.840.1.101.3.4.1.42': 'aes256-cbc'\n};\nvar CIPHER_TO_OID = {};\nObject.keys(OID_TO_CIPHER).forEach(function (k) {\n\tCIPHER_TO_OID[OID_TO_CIPHER[k]] = k;\n});\n\nvar OID_TO_HASH = {\n\t'1.2.840.113549.2.7': 'sha1',\n\t'1.2.840.113549.2.9': 'sha256',\n\t'1.2.840.113549.2.11': 'sha512'\n};\nvar HASH_TO_OID = {};\nObject.keys(OID_TO_HASH).forEach(function (k) {\n\tHASH_TO_OID[OID_TO_HASH[k]] = k;\n});\n\n/*\n * For reading we support both PKCS#1 and PKCS#8. If we find a private key,\n * we just take the public component of it and use that.\n */\nfunction read(buf, options, forceType) {\n\tvar input = buf;\n\tif (typeof (buf) !== 'string') {\n\t\tassert.buffer(buf, 'buf');\n\t\tbuf = buf.toString('ascii');\n\t}\n\n\tvar lines = buf.trim().split(/[\\r\\n]+/g);\n\n\tvar m;\n\tvar si = -1;\n\twhile (!m && si < lines.length) {\n\t\tm = lines[++si].match(/*JSSTYLED*/\n\t\t /[-]+[ ]*BEGIN ([A-Z0-9][A-Za-z0-9]+ )?(PUBLIC|PRIVATE) KEY[ ]*[-]+/);\n\t}\n\tassert.ok(m, 'invalid PEM header');\n\n\tvar m2;\n\tvar ei = lines.length;\n\twhile (!m2 && ei > 0) {\n\t\tm2 = lines[--ei].match(/*JSSTYLED*/\n\t\t /[-]+[ ]*END ([A-Z0-9][A-Za-z0-9]+ )?(PUBLIC|PRIVATE) KEY[ ]*[-]+/);\n\t}\n\tassert.ok(m2, 'invalid PEM footer');\n\n\t/* Begin and end banners must match key type */\n\tassert.equal(m[2], m2[2]);\n\tvar type = m[2].toLowerCase();\n\n\tvar alg;\n\tif (m[1]) {\n\t\t/* They also must match algorithms, if given */\n\t\tassert.equal(m[1], m2[1], 'PEM header and footer mismatch');\n\t\talg = m[1].trim();\n\t}\n\n\tlines = lines.slice(si, ei + 1);\n\n\tvar headers = {};\n\twhile (true) {\n\t\tlines = lines.slice(1);\n\t\tm = lines[0].match(/*JSSTYLED*/\n\t\t /^([A-Za-z0-9-]+): (.+)$/);\n\t\tif (!m)\n\t\t\tbreak;\n\t\theaders[m[1].toLowerCase()] = m[2];\n\t}\n\n\t/* Chop off the first and last lines */\n\tlines = lines.slice(0, -1).join('');\n\tbuf = Buffer.from(lines, 'base64');\n\n\tvar cipher, key, iv;\n\tif (headers['proc-type']) {\n\t\tvar parts = headers['proc-type'].split(',');\n\t\tif (parts[0] === '4' && parts[1] === 'ENCRYPTED') {\n\t\t\tif (typeof (options.passphrase) === 'string') {\n\t\t\t\toptions.passphrase = Buffer.from(\n\t\t\t\t options.passphrase, 'utf-8');\n\t\t\t}\n\t\t\tif (!Buffer.isBuffer(options.passphrase)) {\n\t\t\t\tthrow (new errors.KeyEncryptedError(\n\t\t\t\t options.filename, 'PEM'));\n\t\t\t} else {\n\t\t\t\tparts = headers['dek-info'].split(',');\n\t\t\t\tassert.ok(parts.length === 2);\n\t\t\t\tcipher = parts[0].toLowerCase();\n\t\t\t\tiv = Buffer.from(parts[1], 'hex');\n\t\t\t\tkey = utils.opensslKeyDeriv(cipher, iv,\n\t\t\t\t options.passphrase, 1).key;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (alg && alg.toLowerCase() === 'encrypted') {\n\t\tvar eder = new asn1.BerReader(buf);\n\t\tvar pbesEnd;\n\t\teder.readSequence();\n\n\t\teder.readSequence();\n\t\tpbesEnd = eder.offset + eder.length;\n\n\t\tvar method = eder.readOID();\n\t\tif (method !== OID_PBES2) {\n\t\t\tthrow (new Error('Unsupported PEM/PKCS8 encryption ' +\n\t\t\t 'scheme: ' + method));\n\t\t}\n\n\t\teder.readSequence();\t/* PBES2-params */\n\n\t\teder.readSequence();\t/* keyDerivationFunc */\n\t\tvar kdfEnd = eder.offset + eder.length;\n\t\tvar kdfOid = eder.readOID();\n\t\tif (kdfOid !== OID_PBKDF2)\n\t\t\tthrow (new Error('Unsupported PBES2 KDF: ' + kdfOid));\n\t\teder.readSequence();\n\t\tvar salt = eder.readString(asn1.Ber.OctetString, true);\n\t\tvar iterations = eder.readInt();\n\t\tvar hashAlg = 'sha1';\n\t\tif (eder.offset < kdfEnd) {\n\t\t\teder.readSequence();\n\t\t\tvar hashAlgOid = eder.readOID();\n\t\t\thashAlg = OID_TO_HASH[hashAlgOid];\n\t\t\tif (hashAlg === undefined) {\n\t\t\t\tthrow (new Error('Unsupported PBKDF2 hash: ' +\n\t\t\t\t hashAlgOid));\n\t\t\t}\n\t\t}\n\t\teder._offset = kdfEnd;\n\n\t\teder.readSequence();\t/* encryptionScheme */\n\t\tvar cipherOid = eder.readOID();\n\t\tcipher = OID_TO_CIPHER[cipherOid];\n\t\tif (cipher === undefined) {\n\t\t\tthrow (new Error('Unsupported PBES2 cipher: ' +\n\t\t\t cipherOid));\n\t\t}\n\t\tiv = eder.readString(asn1.Ber.OctetString, true);\n\n\t\teder._offset = pbesEnd;\n\t\tbuf = eder.readString(asn1.Ber.OctetString, true);\n\n\t\tif (typeof (options.passphrase) === 'string') {\n\t\t\toptions.passphrase = Buffer.from(\n\t\t\t options.passphrase, 'utf-8');\n\t\t}\n\t\tif (!Buffer.isBuffer(options.passphrase)) {\n\t\t\tthrow (new errors.KeyEncryptedError(\n\t\t\t options.filename, 'PEM'));\n\t\t}\n\n\t\tvar cinfo = utils.opensshCipherInfo(cipher);\n\n\t\tcipher = cinfo.opensslName;\n\t\tkey = utils.pbkdf2(hashAlg, salt, iterations, cinfo.keySize,\n\t\t options.passphrase);\n\t\talg = undefined;\n\t}\n\n\tif (cipher && key && iv) {\n\t\tvar cipherStream = crypto.createDecipheriv(cipher, key, iv);\n\t\tvar chunk, chunks = [];\n\t\tcipherStream.once('error', function (e) {\n\t\t\tif (e.toString().indexOf('bad decrypt') !== -1) {\n\t\t\t\tthrow (new Error('Incorrect passphrase ' +\n\t\t\t\t 'supplied, could not decrypt key'));\n\t\t\t}\n\t\t\tthrow (e);\n\t\t});\n\t\tcipherStream.write(buf);\n\t\tcipherStream.end();\n\t\twhile ((chunk = cipherStream.read()) !== null)\n\t\t\tchunks.push(chunk);\n\t\tbuf = Buffer.concat(chunks);\n\t}\n\n\t/* The new OpenSSH internal format abuses PEM headers */\n\tif (alg && alg.toLowerCase() === 'openssh')\n\t\treturn (sshpriv.readSSHPrivate(type, buf, options));\n\tif (alg && alg.toLowerCase() === 'ssh2')\n\t\treturn (rfc4253.readType(type, buf, options));\n\n\tvar der = new asn1.BerReader(buf);\n\tder.originalInput = input;\n\n\t/*\n\t * All of the PEM file types start with a sequence tag, so chop it\n\t * off here\n\t */\n\tder.readSequence();\n\n\t/* PKCS#1 type keys name an algorithm in the banner explicitly */\n\tif (alg) {\n\t\tif (forceType)\n\t\t\tassert.strictEqual(forceType, 'pkcs1');\n\t\treturn (pkcs1.readPkcs1(alg, type, der));\n\t} else {\n\t\tif (forceType)\n\t\t\tassert.strictEqual(forceType, 'pkcs8');\n\t\treturn (pkcs8.readPkcs8(alg, type, der));\n\t}\n}\n\nfunction write(key, options, type) {\n\tassert.object(key);\n\n\tvar alg = {\n\t 'ecdsa': 'EC',\n\t 'rsa': 'RSA',\n\t 'dsa': 'DSA',\n\t 'ed25519': 'EdDSA'\n\t}[key.type];\n\tvar header;\n\n\tvar der = new asn1.BerWriter();\n\n\tif (PrivateKey.isPrivateKey(key)) {\n\t\tif (type && type === 'pkcs8') {\n\t\t\theader = 'PRIVATE KEY';\n\t\t\tpkcs8.writePkcs8(der, key);\n\t\t} else {\n\t\t\tif (type)\n\t\t\t\tassert.strictEqual(type, 'pkcs1');\n\t\t\theader = alg + ' PRIVATE KEY';\n\t\t\tpkcs1.writePkcs1(der, key);\n\t\t}\n\n\t} else if (Key.isKey(key)) {\n\t\tif (type && type === 'pkcs1') {\n\t\t\theader = alg + ' PUBLIC KEY';\n\t\t\tpkcs1.writePkcs1(der, key);\n\t\t} else {\n\t\t\tif (type)\n\t\t\t\tassert.strictEqual(type, 'pkcs8');\n\t\t\theader = 'PUBLIC KEY';\n\t\t\tpkcs8.writePkcs8(der, key);\n\t\t}\n\n\t} else {\n\t\tthrow (new Error('key is not a Key or PrivateKey'));\n\t}\n\n\tvar tmp = der.buffer.toString('base64');\n\tvar len = tmp.length + (tmp.length / 64) +\n\t 18 + 16 + header.length*2 + 10;\n\tvar buf = Buffer.alloc(len);\n\tvar o = 0;\n\to += buf.write('-----BEGIN ' + header + '-----\\n', o);\n\tfor (var i = 0; i < tmp.length; ) {\n\t\tvar limit = i + 64;\n\t\tif (limit > tmp.length)\n\t\t\tlimit = tmp.length;\n\t\to += buf.write(tmp.slice(i, limit), o);\n\t\tbuf[o++] = 10;\n\t\ti = limit;\n\t}\n\to += buf.write('-----END ' + header + '-----\\n', o);\n\n\treturn (buf.slice(0, o));\n}\n", "// Copyright 2015 Joyent, Inc.\n\nmodule.exports = {\n\tread: read,\n\twrite: write\n};\n\nvar assert = require('assert-plus');\nvar Buffer = require('safer-buffer').Buffer;\nvar rfc4253 = require('./rfc4253');\nvar utils = require('../utils');\nvar Key = require('../key');\nvar PrivateKey = require('../private-key');\n\nvar sshpriv = require('./ssh-private');\n\n/*JSSTYLED*/\nvar SSHKEY_RE = /^([a-z0-9-]+)[ \\t]+([a-zA-Z0-9+\\/]+[=]*)([ \\t]+([^ \\t][^\\n]*[\\n]*)?)?$/;\n/*JSSTYLED*/\nvar SSHKEY_RE2 = /^([a-z0-9-]+)[ \\t\\n]+([a-zA-Z0-9+\\/][a-zA-Z0-9+\\/ \\t\\n=]*)([^a-zA-Z0-9+\\/ \\t\\n=].*)?$/;\n\nfunction read(buf, options) {\n\tif (typeof (buf) !== 'string') {\n\t\tassert.buffer(buf, 'buf');\n\t\tbuf = buf.toString('ascii');\n\t}\n\n\tvar trimmed = buf.trim().replace(/[\\\\\\r]/g, '');\n\tvar m = trimmed.match(SSHKEY_RE);\n\tif (!m)\n\t\tm = trimmed.match(SSHKEY_RE2);\n\tassert.ok(m, 'key must match regex');\n\n\tvar type = rfc4253.algToKeyType(m[1]);\n\tvar kbuf = Buffer.from(m[2], 'base64');\n\n\t/*\n\t * This is a bit tricky. If we managed to parse the key and locate the\n\t * key comment with the regex, then do a non-partial read and assert\n\t * that we have consumed all bytes. If we couldn't locate the key\n\t * comment, though, there may be whitespace shenanigans going on that\n\t * have conjoined the comment to the rest of the key. We do a partial\n\t * read in this case to try to make the best out of a sorry situation.\n\t */\n\tvar key;\n\tvar ret = {};\n\tif (m[4]) {\n\t\ttry {\n\t\t\tkey = rfc4253.read(kbuf);\n\n\t\t} catch (e) {\n\t\t\tm = trimmed.match(SSHKEY_RE2);\n\t\t\tassert.ok(m, 'key must match regex');\n\t\t\tkbuf = Buffer.from(m[2], 'base64');\n\t\t\tkey = rfc4253.readInternal(ret, 'public', kbuf);\n\t\t}\n\t} else {\n\t\tkey = rfc4253.readInternal(ret, 'public', kbuf);\n\t}\n\n\tassert.strictEqual(type, key.type);\n\n\tif (m[4] && m[4].length > 0) {\n\t\tkey.comment = m[4];\n\n\t} else if (ret.consumed) {\n\t\t/*\n\t\t * Now the magic: trying to recover the key comment when it's\n\t\t * gotten conjoined to the key or otherwise shenanigan'd.\n\t\t *\n\t\t * Work out how much base64 we used, then drop all non-base64\n\t\t * chars from the beginning up to this point in the the string.\n\t\t * Then offset in this and try to make up for missing = chars.\n\t\t */\n\t\tvar data = m[2] + (m[3] ? m[3] : '');\n\t\tvar realOffset = Math.ceil(ret.consumed / 3) * 4;\n\t\tdata = data.slice(0, realOffset - 2). /*JSSTYLED*/\n\t\t replace(/[^a-zA-Z0-9+\\/=]/g, '') +\n\t\t data.slice(realOffset - 2);\n\n\t\tvar padding = ret.consumed % 3;\n\t\tif (padding > 0 &&\n\t\t data.slice(realOffset - 1, realOffset) !== '=')\n\t\t\trealOffset--;\n\t\twhile (data.slice(realOffset, realOffset + 1) === '=')\n\t\t\trealOffset++;\n\n\t\t/* Finally, grab what we think is the comment & clean it up. */\n\t\tvar trailer = data.slice(realOffset);\n\t\ttrailer = trailer.replace(/[\\r\\n]/g, ' ').\n\t\t replace(/^\\s+/, '');\n\t\tif (trailer.match(/^[a-zA-Z0-9]/))\n\t\t\tkey.comment = trailer;\n\t}\n\n\treturn (key);\n}\n\nfunction write(key, options) {\n\tassert.object(key);\n\tif (!Key.isKey(key))\n\t\tthrow (new Error('Must be a public key'));\n\n\tvar parts = [];\n\tvar alg = rfc4253.keyTypeToAlg(key);\n\tparts.push(alg);\n\n\tvar buf = rfc4253.write(key);\n\tparts.push(buf.toString('base64'));\n\n\tif (key.comment)\n\t\tparts.push(key.comment);\n\n\treturn (Buffer.from(parts.join(' ')));\n}\n", "// Copyright 2017 Joyent, Inc.\n\nmodule.exports = {\n\tread: read,\n\twrite: write\n};\n\nvar assert = require('assert-plus');\nvar Buffer = require('safer-buffer').Buffer;\nvar Key = require('../key');\nvar PrivateKey = require('../private-key');\nvar utils = require('../utils');\nvar SSHBuffer = require('../ssh-buffer');\nvar Dhe = require('../dhe');\n\nvar supportedAlgos = {\n\t'rsa-sha1' : 5,\n\t'rsa-sha256' : 8,\n\t'rsa-sha512' : 10,\n\t'ecdsa-p256-sha256' : 13,\n\t'ecdsa-p384-sha384' : 14\n\t/*\n\t * ed25519 is hypothetically supported with id 15\n\t * but the common tools available don't appear to be\n\t * capable of generating/using ed25519 keys\n\t */\n};\n\nvar supportedAlgosById = {};\nObject.keys(supportedAlgos).forEach(function (k) {\n\tsupportedAlgosById[supportedAlgos[k]] = k.toUpperCase();\n});\n\nfunction read(buf, options) {\n\tif (typeof (buf) !== 'string') {\n\t\tassert.buffer(buf, 'buf');\n\t\tbuf = buf.toString('ascii');\n\t}\n\tvar lines = buf.split('\\n');\n\tif (lines[0].match(/^Private-key-format\\: v1/)) {\n\t\tvar algElems = lines[1].split(' ');\n\t\tvar algoNum = parseInt(algElems[1], 10);\n\t\tvar algoName = algElems[2];\n\t\tif (!supportedAlgosById[algoNum])\n\t\t\tthrow (new Error('Unsupported algorithm: ' + algoName));\n\t\treturn (readDNSSECPrivateKey(algoNum, lines.slice(2)));\n\t}\n\n\t// skip any comment-lines\n\tvar line = 0;\n\t/* JSSTYLED */\n\twhile (lines[line].match(/^\\;/))\n\t\tline++;\n\t// we should now have *one single* line left with our KEY on it.\n\tif ((lines[line].match(/\\. IN KEY /) ||\n\t lines[line].match(/\\. IN DNSKEY /)) && lines[line+1].length === 0) {\n\t\treturn (readRFC3110(lines[line]));\n\t}\n\tthrow (new Error('Cannot parse dnssec key'));\n}\n\nfunction readRFC3110(keyString) {\n\tvar elems = keyString.split(' ');\n\t//unused var flags = parseInt(elems[3], 10);\n\t//unused var protocol = parseInt(elems[4], 10);\n\tvar algorithm = parseInt(elems[5], 10);\n\tif (!supportedAlgosById[algorithm])\n\t\tthrow (new Error('Unsupported algorithm: ' + algorithm));\n\tvar base64key = elems.slice(6, elems.length).join();\n\tvar keyBuffer = Buffer.from(base64key, 'base64');\n\tif (supportedAlgosById[algorithm].match(/^RSA-/)) {\n\t\t// join the rest of the body into a single base64-blob\n\t\tvar publicExponentLen = keyBuffer.readUInt8(0);\n\t\tif (publicExponentLen != 3 && publicExponentLen != 1)\n\t\t\tthrow (new Error('Cannot parse dnssec key: ' +\n\t\t\t 'unsupported exponent length'));\n\n\t\tvar publicExponent = keyBuffer.slice(1, publicExponentLen+1);\n\t\tpublicExponent = utils.mpNormalize(publicExponent);\n\t\tvar modulus = keyBuffer.slice(1+publicExponentLen);\n\t\tmodulus = utils.mpNormalize(modulus);\n\t\t// now, make the key\n\t\tvar rsaKey = {\n\t\t\ttype: 'rsa',\n\t\t\tparts: []\n\t\t};\n\t\trsaKey.parts.push({ name: 'e', data: publicExponent});\n\t\trsaKey.parts.push({ name: 'n', data: modulus});\n\t\treturn (new Key(rsaKey));\n\t}\n\tif (supportedAlgosById[algorithm] === 'ECDSA-P384-SHA384' ||\n\t supportedAlgosById[algorithm] === 'ECDSA-P256-SHA256') {\n\t\tvar curve = 'nistp384';\n\t\tvar size = 384;\n\t\tif (supportedAlgosById[algorithm].match(/^ECDSA-P256-SHA256/)) {\n\t\t\tcurve = 'nistp256';\n\t\t\tsize = 256;\n\t\t}\n\n\t\tvar ecdsaKey = {\n\t\t\ttype: 'ecdsa',\n\t\t\tcurve: curve,\n\t\t\tsize: size,\n\t\t\tparts: [\n\t\t\t\t{name: 'curve', data: Buffer.from(curve) },\n\t\t\t\t{name: 'Q', data: utils.ecNormalize(keyBuffer) }\n\t\t\t]\n\t\t};\n\t\treturn (new Key(ecdsaKey));\n\t}\n\tthrow (new Error('Unsupported algorithm: ' +\n\t supportedAlgosById[algorithm]));\n}\n\nfunction elementToBuf(e) {\n\treturn (Buffer.from(e.split(' ')[1], 'base64'));\n}\n\nfunction readDNSSECRSAPrivateKey(elements) {\n\tvar rsaParams = {};\n\telements.forEach(function (element) {\n\t\tif (element.split(' ')[0] === 'Modulus:')\n\t\t\trsaParams['n'] = elementToBuf(element);\n\t\telse if (element.split(' ')[0] === 'PublicExponent:')\n\t\t\trsaParams['e'] = elementToBuf(element);\n\t\telse if (element.split(' ')[0] === 'PrivateExponent:')\n\t\t\trsaParams['d'] = elementToBuf(element);\n\t\telse if (element.split(' ')[0] === 'Prime1:')\n\t\t\trsaParams['p'] = elementToBuf(element);\n\t\telse if (element.split(' ')[0] === 'Prime2:')\n\t\t\trsaParams['q'] = elementToBuf(element);\n\t\telse if (element.split(' ')[0] === 'Exponent1:')\n\t\t\trsaParams['dmodp'] = elementToBuf(element);\n\t\telse if (element.split(' ')[0] === 'Exponent2:')\n\t\t\trsaParams['dmodq'] = elementToBuf(element);\n\t\telse if (element.split(' ')[0] === 'Coefficient:')\n\t\t\trsaParams['iqmp'] = elementToBuf(element);\n\t});\n\t// now, make the key\n\tvar key = {\n\t\ttype: 'rsa',\n\t\tparts: [\n\t\t\t{ name: 'e', data: utils.mpNormalize(rsaParams['e'])},\n\t\t\t{ name: 'n', data: utils.mpNormalize(rsaParams['n'])},\n\t\t\t{ name: 'd', data: utils.mpNormalize(rsaParams['d'])},\n\t\t\t{ name: 'p', data: utils.mpNormalize(rsaParams['p'])},\n\t\t\t{ name: 'q', data: utils.mpNormalize(rsaParams['q'])},\n\t\t\t{ name: 'dmodp',\n\t\t\t data: utils.mpNormalize(rsaParams['dmodp'])},\n\t\t\t{ name: 'dmodq',\n\t\t\t data: utils.mpNormalize(rsaParams['dmodq'])},\n\t\t\t{ name: 'iqmp',\n\t\t\t data: utils.mpNormalize(rsaParams['iqmp'])}\n\t\t]\n\t};\n\treturn (new PrivateKey(key));\n}\n\nfunction readDNSSECPrivateKey(alg, elements) {\n\tif (supportedAlgosById[alg].match(/^RSA-/)) {\n\t\treturn (readDNSSECRSAPrivateKey(elements));\n\t}\n\tif (supportedAlgosById[alg] === 'ECDSA-P384-SHA384' ||\n\t supportedAlgosById[alg] === 'ECDSA-P256-SHA256') {\n\t\tvar d = Buffer.from(elements[0].split(' ')[1], 'base64');\n\t\tvar curve = 'nistp384';\n\t\tvar size = 384;\n\t\tif (supportedAlgosById[alg] === 'ECDSA-P256-SHA256') {\n\t\t\tcurve = 'nistp256';\n\t\t\tsize = 256;\n\t\t}\n\t\t// DNSSEC generates the public-key on the fly (go calculate it)\n\t\tvar publicKey = utils.publicFromPrivateECDSA(curve, d);\n\t\tvar Q = publicKey.part['Q'].data;\n\t\tvar ecdsaKey = {\n\t\t\ttype: 'ecdsa',\n\t\t\tcurve: curve,\n\t\t\tsize: size,\n\t\t\tparts: [\n\t\t\t\t{name: 'curve', data: Buffer.from(curve) },\n\t\t\t\t{name: 'd', data: d },\n\t\t\t\t{name: 'Q', data: Q }\n\t\t\t]\n\t\t};\n\t\treturn (new PrivateKey(ecdsaKey));\n\t}\n\tthrow (new Error('Unsupported algorithm: ' + supportedAlgosById[alg]));\n}\n\nfunction dnssecTimestamp(date) {\n\tvar year = date.getFullYear() + ''; //stringify\n\tvar month = (date.getMonth() + 1);\n\tvar timestampStr = year + month + date.getUTCDate();\n\ttimestampStr += '' + date.getUTCHours() + date.getUTCMinutes();\n\ttimestampStr += date.getUTCSeconds();\n\treturn (timestampStr);\n}\n\nfunction rsaAlgFromOptions(opts) {\n\tif (!opts || !opts.hashAlgo || opts.hashAlgo === 'sha1')\n\t\treturn ('5 (RSASHA1)');\n\telse if (opts.hashAlgo === 'sha256')\n\t\treturn ('8 (RSASHA256)');\n\telse if (opts.hashAlgo === 'sha512')\n\t\treturn ('10 (RSASHA512)');\n\telse\n\t\tthrow (new Error('Unknown or unsupported hash: ' +\n\t\t opts.hashAlgo));\n}\n\nfunction writeRSA(key, options) {\n\t// if we're missing parts, add them.\n\tif (!key.part.dmodp || !key.part.dmodq) {\n\t\tutils.addRSAMissing(key);\n\t}\n\n\tvar out = '';\n\tout += 'Private-key-format: v1.3\\n';\n\tout += 'Algorithm: ' + rsaAlgFromOptions(options) + '\\n';\n\tvar n = utils.mpDenormalize(key.part['n'].data);\n\tout += 'Modulus: ' + n.toString('base64') + '\\n';\n\tvar e = utils.mpDenormalize(key.part['e'].data);\n\tout += 'PublicExponent: ' + e.toString('base64') + '\\n';\n\tvar d = utils.mpDenormalize(key.part['d'].data);\n\tout += 'PrivateExponent: ' + d.toString('base64') + '\\n';\n\tvar p = utils.mpDenormalize(key.part['p'].data);\n\tout += 'Prime1: ' + p.toString('base64') + '\\n';\n\tvar q = utils.mpDenormalize(key.part['q'].data);\n\tout += 'Prime2: ' + q.toString('base64') + '\\n';\n\tvar dmodp = utils.mpDenormalize(key.part['dmodp'].data);\n\tout += 'Exponent1: ' + dmodp.toString('base64') + '\\n';\n\tvar dmodq = utils.mpDenormalize(key.part['dmodq'].data);\n\tout += 'Exponent2: ' + dmodq.toString('base64') + '\\n';\n\tvar iqmp = utils.mpDenormalize(key.part['iqmp'].data);\n\tout += 'Coefficient: ' + iqmp.toString('base64') + '\\n';\n\t// Assume that we're valid as-of now\n\tvar timestamp = new Date();\n\tout += 'Created: ' + dnssecTimestamp(timestamp) + '\\n';\n\tout += 'Publish: ' + dnssecTimestamp(timestamp) + '\\n';\n\tout += 'Activate: ' + dnssecTimestamp(timestamp) + '\\n';\n\treturn (Buffer.from(out, 'ascii'));\n}\n\nfunction writeECDSA(key, options) {\n\tvar out = '';\n\tout += 'Private-key-format: v1.3\\n';\n\n\tif (key.curve === 'nistp256') {\n\t\tout += 'Algorithm: 13 (ECDSAP256SHA256)\\n';\n\t} else if (key.curve === 'nistp384') {\n\t\tout += 'Algorithm: 14 (ECDSAP384SHA384)\\n';\n\t} else {\n\t\tthrow (new Error('Unsupported curve'));\n\t}\n\tvar base64Key = key.part['d'].data.toString('base64');\n\tout += 'PrivateKey: ' + base64Key + '\\n';\n\n\t// Assume that we're valid as-of now\n\tvar timestamp = new Date();\n\tout += 'Created: ' + dnssecTimestamp(timestamp) + '\\n';\n\tout += 'Publish: ' + dnssecTimestamp(timestamp) + '\\n';\n\tout += 'Activate: ' + dnssecTimestamp(timestamp) + '\\n';\n\n\treturn (Buffer.from(out, 'ascii'));\n}\n\nfunction write(key, options) {\n\tif (PrivateKey.isPrivateKey(key)) {\n\t\tif (key.type === 'rsa') {\n\t\t\treturn (writeRSA(key, options));\n\t\t} else if (key.type === 'ecdsa') {\n\t\t\treturn (writeECDSA(key, options));\n\t\t} else {\n\t\t\tthrow (new Error('Unsupported algorithm: ' + key.type));\n\t\t}\n\t} else if (Key.isKey(key)) {\n\t\t/*\n\t\t * RFC3110 requires a keyname, and a keytype, which we\n\t\t * don't really have a mechanism for specifying such\n\t\t * additional metadata.\n\t\t */\n\t\tthrow (new Error('Format \"dnssec\" only supports ' +\n\t\t 'writing private keys'));\n\t} else {\n\t\tthrow (new Error('key is not a Key or PrivateKey'));\n\t}\n}\n", "// Copyright 2018 Joyent, Inc.\n\nmodule.exports = {\n\tread: read,\n\twrite: write\n};\n\nvar assert = require('assert-plus');\nvar Buffer = require('safer-buffer').Buffer;\nvar rfc4253 = require('./rfc4253');\nvar Key = require('../key');\nvar SSHBuffer = require('../ssh-buffer');\nvar crypto = require('crypto');\nvar PrivateKey = require('../private-key');\n\nvar errors = require('../errors');\n\n// https://tartarus.org/~simon/putty-prerel-snapshots/htmldoc/AppendixC.html\nfunction read(buf, options) {\n\tvar lines = buf.toString('ascii').split(/[\\r\\n]+/);\n\tvar found = false;\n\tvar parts;\n\tvar si = 0;\n\tvar formatVersion;\n\twhile (si < lines.length) {\n\t\tparts = splitHeader(lines[si++]);\n\t\tif (parts) {\n\t\t\tformatVersion = {\n\t\t\t\t'putty-user-key-file-2': 2,\n\t\t\t\t'putty-user-key-file-3': 3\n\t\t\t}[parts[0].toLowerCase()];\n\t\t\tif (formatVersion) {\n\t\t\t\tfound = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tif (!found) {\n\t\tthrow (new Error('No PuTTY format first line found'));\n\t}\n\tvar alg = parts[1];\n\n\tparts = splitHeader(lines[si++]);\n\tassert.equal(parts[0].toLowerCase(), 'encryption');\n\tvar encryption = parts[1];\n\n\tparts = splitHeader(lines[si++]);\n\tassert.equal(parts[0].toLowerCase(), 'comment');\n\tvar comment = parts[1];\n\n\tparts = splitHeader(lines[si++]);\n\tassert.equal(parts[0].toLowerCase(), 'public-lines');\n\tvar publicLines = parseInt(parts[1], 10);\n\tif (!isFinite(publicLines) || publicLines < 0 ||\n\t publicLines > lines.length) {\n\t\tthrow (new Error('Invalid public-lines count'));\n\t}\n\n\tvar publicBuf = Buffer.from(\n\t lines.slice(si, si + publicLines).join(''), 'base64');\n\tvar keyType = rfc4253.algToKeyType(alg);\n\tvar key = rfc4253.read(publicBuf);\n\tif (key.type !== keyType) {\n\t\tthrow (new Error('Outer key algorithm mismatch'));\n\t}\n\n\tsi += publicLines;\n\tif (lines[si]) {\n\t\tparts = splitHeader(lines[si++]);\n\t\tassert.equal(parts[0].toLowerCase(), 'private-lines');\n\t\tvar privateLines = parseInt(parts[1], 10);\n\t\tif (!isFinite(privateLines) || privateLines < 0 ||\n\t\t privateLines > lines.length) {\n\t\t\tthrow (new Error('Invalid private-lines count'));\n\t\t}\n\n\t\tvar privateBuf = Buffer.from(\n\t\t\tlines.slice(si, si + privateLines).join(''), 'base64');\n\n\t\tif (encryption !== 'none' && formatVersion === 3) {\n\t\t\tthrow new Error('Encrypted keys arenot supported for' +\n\t\t\t' PuTTY format version 3');\n\t\t}\n\n\t\tif (encryption === 'aes256-cbc') {\n\t\t\tif (!options.passphrase) {\n\t\t\t\tthrow (new errors.KeyEncryptedError(\n\t\t\t\t\toptions.filename, 'PEM'));\n\t\t\t}\n\n\t\t\tvar iv = Buffer.alloc(16, 0);\n\t\t\tvar decipher = crypto.createDecipheriv(\n\t\t\t\t'aes-256-cbc',\n\t\t\t\tderivePPK2EncryptionKey(options.passphrase),\n\t\t\t\tiv);\n\t\t\tdecipher.setAutoPadding(false);\n\t\t\tprivateBuf = Buffer.concat([\n\t\t\t\tdecipher.update(privateBuf), decipher.final()]);\n\t\t}\n\n\t\tkey = new PrivateKey(key);\n\t\tif (key.type !== keyType) {\n\t\t\tthrow (new Error('Outer key algorithm mismatch'));\n\t\t}\n\n\t\tvar sshbuf = new SSHBuffer({buffer: privateBuf});\n\t\tvar privateKeyParts;\n\t\tif (alg === 'ssh-dss') {\n\t\t\tprivateKeyParts = [ {\n\t\t\t\tname: 'x',\n\t\t\t\tdata: sshbuf.readBuffer()\n\t\t\t}];\n\t\t} else if (alg === 'ssh-rsa') {\n\t\t\tprivateKeyParts = [\n\t\t\t\t{ name: 'd', data: sshbuf.readBuffer() },\n\t\t\t\t{ name: 'p', data: sshbuf.readBuffer() },\n\t\t\t\t{ name: 'q', data: sshbuf.readBuffer() },\n\t\t\t\t{ name: 'iqmp', data: sshbuf.readBuffer() }\n\t\t\t];\n\t\t} else if (alg.match(/^ecdsa-sha2-nistp/)) {\n\t\t\tprivateKeyParts = [ {\n\t\t\t\tname: 'd', data: sshbuf.readBuffer()\n\t\t\t} ];\n\t\t} else if (alg === 'ssh-ed25519') {\n\t\t\tprivateKeyParts = [ {\n\t\t\t\tname: 'k', data: sshbuf.readBuffer()\n\t\t\t} ];\n\t\t} else {\n\t\t\tthrow new Error('Unsupported PPK key type: ' + alg);\n\t\t}\n\n\t\tkey = new PrivateKey({\n\t\t\ttype: key.type,\n\t\t\tparts: key.parts.concat(privateKeyParts)\n\t\t});\n\t}\n\n\tkey.comment = comment;\n\treturn (key);\n}\n\nfunction derivePPK2EncryptionKey(passphrase) {\n\tvar hash1 = crypto.createHash('sha1').update(Buffer.concat([\n\t\tBuffer.from([0, 0, 0, 0]),\n\t\tBuffer.from(passphrase)\n\t])).digest();\n\tvar hash2 = crypto.createHash('sha1').update(Buffer.concat([\n\t\tBuffer.from([0, 0, 0, 1]),\n\t\tBuffer.from(passphrase)\n\t])).digest();\n\treturn (Buffer.concat([hash1, hash2]).slice(0, 32));\n}\n\nfunction splitHeader(line) {\n\tvar idx = line.indexOf(':');\n\tif (idx === -1)\n\t\treturn (null);\n\tvar header = line.slice(0, idx);\n\t++idx;\n\twhile (line[idx] === ' ')\n\t\t++idx;\n\tvar rest = line.slice(idx);\n\treturn ([header, rest]);\n}\n\nfunction write(key, options) {\n\tassert.object(key);\n\tif (!Key.isKey(key))\n\t\tthrow (new Error('Must be a public key'));\n\n\tvar alg = rfc4253.keyTypeToAlg(key);\n\tvar buf = rfc4253.write(key);\n\tvar comment = key.comment || '';\n\n\tvar b64 = buf.toString('base64');\n\tvar lines = wrap(b64, 64);\n\n\tlines.unshift('Public-Lines: ' + lines.length);\n\tlines.unshift('Comment: ' + comment);\n\tlines.unshift('Encryption: none');\n\tlines.unshift('PuTTY-User-Key-File-2: ' + alg);\n\n\treturn (Buffer.from(lines.join('\\n') + '\\n'));\n}\n\nfunction wrap(txt, len) {\n\tvar lines = [];\n\tvar pos = 0;\n\twhile (pos < txt.length) {\n\t\tlines.push(txt.slice(pos, pos + 64));\n\t\tpos += 64;\n\t}\n\treturn (lines);\n}\n", "// Copyright 2018 Joyent, Inc.\n\nmodule.exports = {\n\tread: read,\n\twrite: write\n};\n\nvar assert = require('assert-plus');\nvar Buffer = require('safer-buffer').Buffer;\nvar utils = require('../utils');\nvar Key = require('../key');\nvar PrivateKey = require('../private-key');\n\nvar pem = require('./pem');\nvar ssh = require('./ssh');\nvar rfc4253 = require('./rfc4253');\nvar dnssec = require('./dnssec');\nvar putty = require('./putty');\n\nvar DNSSEC_PRIVKEY_HEADER_PREFIX = 'Private-key-format: v1';\n\nfunction read(buf, options) {\n\tif (typeof (buf) === 'string') {\n\t\tif (buf.trim().match(/^[-]+[ ]*BEGIN/))\n\t\t\treturn (pem.read(buf, options));\n\t\tif (buf.match(/^\\s*ssh-[a-z]/))\n\t\t\treturn (ssh.read(buf, options));\n\t\tif (buf.match(/^\\s*ecdsa-/))\n\t\t\treturn (ssh.read(buf, options));\n\t\tif (buf.match(/^putty-user-key-file-2:/i))\n\t\t\treturn (putty.read(buf, options));\n\t\tif (findDNSSECHeader(buf))\n\t\t\treturn (dnssec.read(buf, options));\n\t\tbuf = Buffer.from(buf, 'binary');\n\t} else {\n\t\tassert.buffer(buf);\n\t\tif (findPEMHeader(buf))\n\t\t\treturn (pem.read(buf, options));\n\t\tif (findSSHHeader(buf))\n\t\t\treturn (ssh.read(buf, options));\n\t\tif (findPuTTYHeader(buf))\n\t\t\treturn (putty.read(buf, options));\n\t\tif (findDNSSECHeader(buf))\n\t\t\treturn (dnssec.read(buf, options));\n\t}\n\tif (buf.readUInt32BE(0) < buf.length)\n\t\treturn (rfc4253.read(buf, options));\n\tthrow (new Error('Failed to auto-detect format of key'));\n}\n\nfunction findPuTTYHeader(buf) {\n\tvar offset = 0;\n\twhile (offset < buf.length &&\n\t (buf[offset] === 32 || buf[offset] === 10 || buf[offset] === 9))\n\t\t++offset;\n\tif (offset + 22 <= buf.length &&\n\t buf.slice(offset, offset + 22).toString('ascii').toLowerCase() ===\n\t 'putty-user-key-file-2:')\n\t\treturn (true);\n\treturn (false);\n}\n\nfunction findSSHHeader(buf) {\n\tvar offset = 0;\n\twhile (offset < buf.length &&\n\t (buf[offset] === 32 || buf[offset] === 10 || buf[offset] === 9))\n\t\t++offset;\n\tif (offset + 4 <= buf.length &&\n\t buf.slice(offset, offset + 4).toString('ascii') === 'ssh-')\n\t\treturn (true);\n\tif (offset + 6 <= buf.length &&\n\t buf.slice(offset, offset + 6).toString('ascii') === 'ecdsa-')\n\t\treturn (true);\n\treturn (false);\n}\n\nfunction findPEMHeader(buf) {\n\tvar offset = 0;\n\twhile (offset < buf.length &&\n\t (buf[offset] === 32 || buf[offset] === 10))\n\t\t++offset;\n\tif (buf[offset] !== 45)\n\t\treturn (false);\n\twhile (offset < buf.length &&\n\t (buf[offset] === 45))\n\t\t++offset;\n\twhile (offset < buf.length &&\n\t (buf[offset] === 32))\n\t\t++offset;\n\tif (offset + 5 > buf.length ||\n\t buf.slice(offset, offset + 5).toString('ascii') !== 'BEGIN')\n\t\treturn (false);\n\treturn (true);\n}\n\nfunction findDNSSECHeader(buf) {\n\t// private case first\n\tif (buf.length <= DNSSEC_PRIVKEY_HEADER_PREFIX.length)\n\t\treturn (false);\n\tvar headerCheck = buf.slice(0, DNSSEC_PRIVKEY_HEADER_PREFIX.length);\n\tif (headerCheck.toString('ascii') === DNSSEC_PRIVKEY_HEADER_PREFIX)\n\t\treturn (true);\n\n\t// public-key RFC3110 ?\n\t// 'domain.com. IN KEY ...' or 'domain.com. IN DNSKEY ...'\n\t// skip any comment-lines\n\tif (typeof (buf) !== 'string') {\n\t\tbuf = buf.toString('ascii');\n\t}\n\tvar lines = buf.split('\\n');\n\tvar line = 0;\n\t/* JSSTYLED */\n\twhile (lines[line].match(/^\\;/))\n\t\tline++;\n\tif (lines[line].toString('ascii').match(/\\. IN KEY /))\n\t\treturn (true);\n\tif (lines[line].toString('ascii').match(/\\. IN DNSKEY /))\n\t\treturn (true);\n\treturn (false);\n}\n\nfunction write(key, options) {\n\tthrow (new Error('\"auto\" format cannot be used for writing'));\n}\n", "// Copyright 2017 Joyent, Inc.\n\nmodule.exports = PrivateKey;\n\nvar assert = require('assert-plus');\nvar Buffer = require('safer-buffer').Buffer;\nvar algs = require('./algs');\nvar crypto = require('crypto');\nvar Fingerprint = require('./fingerprint');\nvar Signature = require('./signature');\nvar errs = require('./errors');\nvar util = require('util');\nvar utils = require('./utils');\nvar dhe = require('./dhe');\nvar generateECDSA = dhe.generateECDSA;\nvar generateED25519 = dhe.generateED25519;\nvar edCompat = require('./ed-compat');\nvar nacl = require('tweetnacl');\n\nvar Key = require('./key');\n\nvar InvalidAlgorithmError = errs.InvalidAlgorithmError;\nvar KeyParseError = errs.KeyParseError;\nvar KeyEncryptedError = errs.KeyEncryptedError;\n\nvar formats = {};\nformats['auto'] = require('./formats/auto');\nformats['pem'] = require('./formats/pem');\nformats['pkcs1'] = require('./formats/pkcs1');\nformats['pkcs8'] = require('./formats/pkcs8');\nformats['rfc4253'] = require('./formats/rfc4253');\nformats['ssh-private'] = require('./formats/ssh-private');\nformats['openssh'] = formats['ssh-private'];\nformats['ssh'] = formats['ssh-private'];\nformats['dnssec'] = require('./formats/dnssec');\nformats['putty'] = require('./formats/putty');\n\nfunction PrivateKey(opts) {\n\tassert.object(opts, 'options');\n\tKey.call(this, opts);\n\n\tthis._pubCache = undefined;\n}\nutil.inherits(PrivateKey, Key);\n\nPrivateKey.formats = formats;\n\nPrivateKey.prototype.toBuffer = function (format, options) {\n\tif (format === undefined)\n\t\tformat = 'pkcs1';\n\tassert.string(format, 'format');\n\tassert.object(formats[format], 'formats[format]');\n\tassert.optionalObject(options, 'options');\n\n\treturn (formats[format].write(this, options));\n};\n\nPrivateKey.prototype.hash = function (algo, type) {\n\treturn (this.toPublic().hash(algo, type));\n};\n\nPrivateKey.prototype.fingerprint = function (algo, type) {\n\treturn (this.toPublic().fingerprint(algo, type));\n};\n\nPrivateKey.prototype.toPublic = function () {\n\tif (this._pubCache)\n\t\treturn (this._pubCache);\n\n\tvar algInfo = algs.info[this.type];\n\tvar pubParts = [];\n\tfor (var i = 0; i < algInfo.parts.length; ++i) {\n\t\tvar p = algInfo.parts[i];\n\t\tpubParts.push(this.part[p]);\n\t}\n\n\tthis._pubCache = new Key({\n\t\ttype: this.type,\n\t\tsource: this,\n\t\tparts: pubParts\n\t});\n\tif (this.comment)\n\t\tthis._pubCache.comment = this.comment;\n\treturn (this._pubCache);\n};\n\nPrivateKey.prototype.derive = function (newType) {\n\tassert.string(newType, 'type');\n\tvar priv, pub, pair;\n\n\tif (this.type === 'ed25519' && newType === 'curve25519') {\n\t\tpriv = this.part.k.data;\n\t\tif (priv[0] === 0x00)\n\t\t\tpriv = priv.slice(1);\n\n\t\tpair = nacl.box.keyPair.fromSecretKey(new Uint8Array(priv));\n\t\tpub = Buffer.from(pair.publicKey);\n\n\t\treturn (new PrivateKey({\n\t\t\ttype: 'curve25519',\n\t\t\tparts: [\n\t\t\t\t{ name: 'A', data: utils.mpNormalize(pub) },\n\t\t\t\t{ name: 'k', data: utils.mpNormalize(priv) }\n\t\t\t]\n\t\t}));\n\t} else if (this.type === 'curve25519' && newType === 'ed25519') {\n\t\tpriv = this.part.k.data;\n\t\tif (priv[0] === 0x00)\n\t\t\tpriv = priv.slice(1);\n\n\t\tpair = nacl.sign.keyPair.fromSeed(new Uint8Array(priv));\n\t\tpub = Buffer.from(pair.publicKey);\n\n\t\treturn (new PrivateKey({\n\t\t\ttype: 'ed25519',\n\t\t\tparts: [\n\t\t\t\t{ name: 'A', data: utils.mpNormalize(pub) },\n\t\t\t\t{ name: 'k', data: utils.mpNormalize(priv) }\n\t\t\t]\n\t\t}));\n\t}\n\tthrow (new Error('Key derivation not supported from ' + this.type +\n\t ' to ' + newType));\n};\n\nPrivateKey.prototype.createVerify = function (hashAlgo) {\n\treturn (this.toPublic().createVerify(hashAlgo));\n};\n\nPrivateKey.prototype.createSign = function (hashAlgo) {\n\tif (hashAlgo === undefined)\n\t\thashAlgo = this.defaultHashAlgorithm();\n\tassert.string(hashAlgo, 'hash algorithm');\n\n\t/* ED25519 is not supported by OpenSSL, use a javascript impl. */\n\tif (this.type === 'ed25519' && edCompat !== undefined)\n\t\treturn (new edCompat.Signer(this, hashAlgo));\n\tif (this.type === 'curve25519')\n\t\tthrow (new Error('Curve25519 keys are not suitable for ' +\n\t\t 'signing or verification'));\n\n\tvar v, nm, err;\n\ttry {\n\t\tnm = hashAlgo.toUpperCase();\n\t\tv = crypto.createSign(nm);\n\t} catch (e) {\n\t\terr = e;\n\t}\n\tif (v === undefined || (err instanceof Error &&\n\t err.message.match(/Unknown message digest/))) {\n\t\tnm = 'RSA-';\n\t\tnm += hashAlgo.toUpperCase();\n\t\tv = crypto.createSign(nm);\n\t}\n\tassert.ok(v, 'failed to create verifier');\n\tvar oldSign = v.sign.bind(v);\n\tvar key = this.toBuffer('pkcs1');\n\tvar type = this.type;\n\tvar curve = this.curve;\n\tv.sign = function () {\n\t\tvar sig = oldSign(key);\n\t\tif (typeof (sig) === 'string')\n\t\t\tsig = Buffer.from(sig, 'binary');\n\t\tsig = Signature.parse(sig, type, 'asn1');\n\t\tsig.hashAlgorithm = hashAlgo;\n\t\tsig.curve = curve;\n\t\treturn (sig);\n\t};\n\treturn (v);\n};\n\nPrivateKey.parse = function (data, format, options) {\n\tif (typeof (data) !== 'string')\n\t\tassert.buffer(data, 'data');\n\tif (format === undefined)\n\t\tformat = 'auto';\n\tassert.string(format, 'format');\n\tif (typeof (options) === 'string')\n\t\toptions = { filename: options };\n\tassert.optionalObject(options, 'options');\n\tif (options === undefined)\n\t\toptions = {};\n\tassert.optionalString(options.filename, 'options.filename');\n\tif (options.filename === undefined)\n\t\toptions.filename = '(unnamed)';\n\n\tassert.object(formats[format], 'formats[format]');\n\n\ttry {\n\t\tvar k = formats[format].read(data, options);\n\t\tassert.ok(k instanceof PrivateKey, 'key is not a private key');\n\t\tif (!k.comment)\n\t\t\tk.comment = options.filename;\n\t\treturn (k);\n\t} catch (e) {\n\t\tif (e.name === 'KeyEncryptedError')\n\t\t\tthrow (e);\n\t\tthrow (new KeyParseError(options.filename, format, e));\n\t}\n};\n\nPrivateKey.isPrivateKey = function (obj, ver) {\n\treturn (utils.isCompatible(obj, PrivateKey, ver));\n};\n\nPrivateKey.generate = function (type, options) {\n\tif (options === undefined)\n\t\toptions = {};\n\tassert.object(options, 'options');\n\n\tswitch (type) {\n\tcase 'ecdsa':\n\t\tif (options.curve === undefined)\n\t\t\toptions.curve = 'nistp256';\n\t\tassert.string(options.curve, 'options.curve');\n\t\treturn (generateECDSA(options.curve));\n\tcase 'ed25519':\n\t\treturn (generateED25519());\n\tdefault:\n\t\tthrow (new Error('Key generation not supported with key ' +\n\t\t 'type \"' + type + '\"'));\n\t}\n};\n\n/*\n * API versions for PrivateKey:\n * [1,0] -- initial ver\n * [1,1] -- added auto, pkcs[18], openssh/ssh-private formats\n * [1,2] -- added defaultHashAlgorithm\n * [1,3] -- added derive, ed, createDH\n * [1,4] -- first tagged version\n * [1,5] -- changed ed25519 part names and format\n * [1,6] -- type arguments for hash() and fingerprint()\n */\nPrivateKey.prototype._sshpkApiVersion = [1, 6];\n\nPrivateKey._oldVersionDetect = function (obj) {\n\tassert.func(obj.toPublic);\n\tassert.func(obj.createSign);\n\tif (obj.derive)\n\t\treturn ([1, 3]);\n\tif (obj.defaultHashAlgorithm)\n\t\treturn ([1, 2]);\n\tif (obj.formats['auto'])\n\t\treturn ([1, 1]);\n\treturn ([1, 0]);\n};\n", "// Copyright 2017 Joyent, Inc.\n\nmodule.exports = Identity;\n\nvar assert = require('assert-plus');\nvar algs = require('./algs');\nvar crypto = require('crypto');\nvar Fingerprint = require('./fingerprint');\nvar Signature = require('./signature');\nvar errs = require('./errors');\nvar util = require('util');\nvar utils = require('./utils');\nvar asn1 = require('asn1');\nvar Buffer = require('safer-buffer').Buffer;\n\n/*JSSTYLED*/\nvar DNS_NAME_RE = /^([*]|[a-z0-9][a-z0-9\\-]{0,62})(?:\\.([*]|[a-z0-9][a-z0-9\\-]{0,62}))*$/i;\n\nvar oids = {};\noids.cn = '2.5.4.3';\noids.o = '2.5.4.10';\noids.ou = '2.5.4.11';\noids.l = '2.5.4.7';\noids.s = '2.5.4.8';\noids.c = '2.5.4.6';\noids.sn = '2.5.4.4';\noids.postalCode = '2.5.4.17';\noids.serialNumber = '2.5.4.5';\noids.street = '2.5.4.9';\noids.x500UniqueIdentifier = '2.5.4.45';\noids.role = '2.5.4.72';\noids.telephoneNumber = '2.5.4.20';\noids.description = '2.5.4.13';\noids.dc = '0.9.2342.19200300.100.1.25';\noids.uid = '0.9.2342.19200300.100.1.1';\noids.mail = '0.9.2342.19200300.100.1.3';\noids.title = '2.5.4.12';\noids.gn = '2.5.4.42';\noids.initials = '2.5.4.43';\noids.pseudonym = '2.5.4.65';\noids.emailAddress = '1.2.840.113549.1.9.1';\n\nvar unoids = {};\nObject.keys(oids).forEach(function (k) {\n\tunoids[oids[k]] = k;\n});\n\nfunction Identity(opts) {\n\tvar self = this;\n\tassert.object(opts, 'options');\n\tassert.arrayOfObject(opts.components, 'options.components');\n\tthis.components = opts.components;\n\tthis.componentLookup = {};\n\tthis.components.forEach(function (c) {\n\t\tif (c.name && !c.oid)\n\t\t\tc.oid = oids[c.name];\n\t\tif (c.oid && !c.name)\n\t\t\tc.name = unoids[c.oid];\n\t\tif (self.componentLookup[c.name] === undefined)\n\t\t\tself.componentLookup[c.name] = [];\n\t\tself.componentLookup[c.name].push(c);\n\t});\n\tif (this.componentLookup.cn && this.componentLookup.cn.length > 0) {\n\t\tthis.cn = this.componentLookup.cn[0].value;\n\t}\n\tassert.optionalString(opts.type, 'options.type');\n\tif (opts.type === undefined) {\n\t\tif (this.components.length === 1 &&\n\t\t this.componentLookup.cn &&\n\t\t this.componentLookup.cn.length === 1 &&\n\t\t this.componentLookup.cn[0].value.match(DNS_NAME_RE)) {\n\t\t\tthis.type = 'host';\n\t\t\tthis.hostname = this.componentLookup.cn[0].value;\n\n\t\t} else if (this.componentLookup.dc &&\n\t\t this.components.length === this.componentLookup.dc.length) {\n\t\t\tthis.type = 'host';\n\t\t\tthis.hostname = this.componentLookup.dc.map(\n\t\t\t function (c) {\n\t\t\t\treturn (c.value);\n\t\t\t}).join('.');\n\n\t\t} else if (this.componentLookup.uid &&\n\t\t this.components.length ===\n\t\t this.componentLookup.uid.length) {\n\t\t\tthis.type = 'user';\n\t\t\tthis.uid = this.componentLookup.uid[0].value;\n\n\t\t} else if (this.componentLookup.cn &&\n\t\t this.componentLookup.cn.length === 1 &&\n\t\t this.componentLookup.cn[0].value.match(DNS_NAME_RE)) {\n\t\t\tthis.type = 'host';\n\t\t\tthis.hostname = this.componentLookup.cn[0].value;\n\n\t\t} else if (this.componentLookup.uid &&\n\t\t this.componentLookup.uid.length === 1) {\n\t\t\tthis.type = 'user';\n\t\t\tthis.uid = this.componentLookup.uid[0].value;\n\n\t\t} else if (this.componentLookup.mail &&\n\t\t this.componentLookup.mail.length === 1) {\n\t\t\tthis.type = 'email';\n\t\t\tthis.email = this.componentLookup.mail[0].value;\n\n\t\t} else if (this.componentLookup.cn &&\n\t\t this.componentLookup.cn.length === 1) {\n\t\t\tthis.type = 'user';\n\t\t\tthis.uid = this.componentLookup.cn[0].value;\n\n\t\t} else {\n\t\t\tthis.type = 'unknown';\n\t\t}\n\t} else {\n\t\tthis.type = opts.type;\n\t\tif (this.type === 'host')\n\t\t\tthis.hostname = opts.hostname;\n\t\telse if (this.type === 'user')\n\t\t\tthis.uid = opts.uid;\n\t\telse if (this.type === 'email')\n\t\t\tthis.email = opts.email;\n\t\telse\n\t\t\tthrow (new Error('Unknown type ' + this.type));\n\t}\n}\n\nIdentity.prototype.toString = function () {\n\treturn (this.components.map(function (c) {\n\t\tvar n = c.name.toUpperCase();\n\t\t/*JSSTYLED*/\n\t\tn = n.replace(/=/g, '\\\\=');\n\t\tvar v = c.value;\n\t\t/*JSSTYLED*/\n\t\tv = v.replace(/,/g, '\\\\,');\n\t\treturn (n + '=' + v);\n\t}).join(', '));\n};\n\nIdentity.prototype.get = function (name, asArray) {\n\tassert.string(name, 'name');\n\tvar arr = this.componentLookup[name];\n\tif (arr === undefined || arr.length === 0)\n\t\treturn (undefined);\n\tif (!asArray && arr.length > 1)\n\t\tthrow (new Error('Multiple values for attribute ' + name));\n\tif (!asArray)\n\t\treturn (arr[0].value);\n\treturn (arr.map(function (c) {\n\t\treturn (c.value);\n\t}));\n};\n\nIdentity.prototype.toArray = function (idx) {\n\treturn (this.components.map(function (c) {\n\t\treturn ({\n\t\t\tname: c.name,\n\t\t\tvalue: c.value\n\t\t});\n\t}));\n};\n\n/*\n * These are from X.680 -- PrintableString allowed chars are in section 37.4\n * table 8. Spec for IA5Strings is \"1,6 + SPACE + DEL\" where 1 refers to\n * ISO IR #001 (standard ASCII control characters) and 6 refers to ISO IR #006\n * (the basic ASCII character set).\n */\n/* JSSTYLED */\nvar NOT_PRINTABLE = /[^a-zA-Z0-9 '(),+.\\/:=?-]/;\n/* JSSTYLED */\nvar NOT_IA5 = /[^\\x00-\\x7f]/;\n\nIdentity.prototype.toAsn1 = function (der, tag) {\n\tder.startSequence(tag);\n\tthis.components.forEach(function (c) {\n\t\tder.startSequence(asn1.Ber.Constructor | asn1.Ber.Set);\n\t\tder.startSequence();\n\t\tder.writeOID(c.oid);\n\t\t/*\n\t\t * If we fit in a PrintableString, use that. Otherwise use an\n\t\t * IA5String or UTF8String.\n\t\t *\n\t\t * If this identity was parsed from a DN, use the ASN.1 types\n\t\t * from the original representation (otherwise this might not\n\t\t * be a full match for the original in some validators).\n\t\t */\n\t\tif (c.asn1type === asn1.Ber.Utf8String ||\n\t\t c.value.match(NOT_IA5)) {\n\t\t\tvar v = Buffer.from(c.value, 'utf8');\n\t\t\tder.writeBuffer(v, asn1.Ber.Utf8String);\n\n\t\t} else if (c.asn1type === asn1.Ber.IA5String ||\n\t\t c.value.match(NOT_PRINTABLE)) {\n\t\t\tder.writeString(c.value, asn1.Ber.IA5String);\n\n\t\t} else {\n\t\t\tvar type = asn1.Ber.PrintableString;\n\t\t\tif (c.asn1type !== undefined)\n\t\t\t\ttype = c.asn1type;\n\t\t\tder.writeString(c.value, type);\n\t\t}\n\t\tder.endSequence();\n\t\tder.endSequence();\n\t});\n\tder.endSequence();\n};\n\nfunction globMatch(a, b) {\n\tif (a === '**' || b === '**')\n\t\treturn (true);\n\tvar aParts = a.split('.');\n\tvar bParts = b.split('.');\n\tif (aParts.length !== bParts.length)\n\t\treturn (false);\n\tfor (var i = 0; i < aParts.length; ++i) {\n\t\tif (aParts[i] === '*' || bParts[i] === '*')\n\t\t\tcontinue;\n\t\tif (aParts[i] !== bParts[i])\n\t\t\treturn (false);\n\t}\n\treturn (true);\n}\n\nIdentity.prototype.equals = function (other) {\n\tif (!Identity.isIdentity(other, [1, 0]))\n\t\treturn (false);\n\tif (other.components.length !== this.components.length)\n\t\treturn (false);\n\tfor (var i = 0; i < this.components.length; ++i) {\n\t\tif (this.components[i].oid !== other.components[i].oid)\n\t\t\treturn (false);\n\t\tif (!globMatch(this.components[i].value,\n\t\t other.components[i].value)) {\n\t\t\treturn (false);\n\t\t}\n\t}\n\treturn (true);\n};\n\nIdentity.forHost = function (hostname) {\n\tassert.string(hostname, 'hostname');\n\treturn (new Identity({\n\t\ttype: 'host',\n\t\thostname: hostname,\n\t\tcomponents: [ { name: 'cn', value: hostname } ]\n\t}));\n};\n\nIdentity.forUser = function (uid) {\n\tassert.string(uid, 'uid');\n\treturn (new Identity({\n\t\ttype: 'user',\n\t\tuid: uid,\n\t\tcomponents: [ { name: 'uid', value: uid } ]\n\t}));\n};\n\nIdentity.forEmail = function (email) {\n\tassert.string(email, 'email');\n\treturn (new Identity({\n\t\ttype: 'email',\n\t\temail: email,\n\t\tcomponents: [ { name: 'mail', value: email } ]\n\t}));\n};\n\nIdentity.parseDN = function (dn) {\n\tassert.string(dn, 'dn');\n\tvar parts = [''];\n\tvar idx = 0;\n\tvar rem = dn;\n\twhile (rem.length > 0) {\n\t\tvar m;\n\t\t/*JSSTYLED*/\n\t\tif ((m = /^,/.exec(rem)) !== null) {\n\t\t\tparts[++idx] = '';\n\t\t\trem = rem.slice(m[0].length);\n\t\t/*JSSTYLED*/\n\t\t} else if ((m = /^\\\\,/.exec(rem)) !== null) {\n\t\t\tparts[idx] += ',';\n\t\t\trem = rem.slice(m[0].length);\n\t\t/*JSSTYLED*/\n\t\t} else if ((m = /^\\\\./.exec(rem)) !== null) {\n\t\t\tparts[idx] += m[0];\n\t\t\trem = rem.slice(m[0].length);\n\t\t/*JSSTYLED*/\n\t\t} else if ((m = /^[^\\\\,]+/.exec(rem)) !== null) {\n\t\t\tparts[idx] += m[0];\n\t\t\trem = rem.slice(m[0].length);\n\t\t} else {\n\t\t\tthrow (new Error('Failed to parse DN'));\n\t\t}\n\t}\n\tvar cmps = parts.map(function (c) {\n\t\tc = c.trim();\n\t\tvar eqPos = c.indexOf('=');\n\t\twhile (eqPos > 0 && c.charAt(eqPos - 1) === '\\\\')\n\t\t\teqPos = c.indexOf('=', eqPos + 1);\n\t\tif (eqPos === -1) {\n\t\t\tthrow (new Error('Failed to parse DN'));\n\t\t}\n\t\t/*JSSTYLED*/\n\t\tvar name = c.slice(0, eqPos).toLowerCase().replace(/\\\\=/g, '=');\n\t\tvar value = c.slice(eqPos + 1);\n\t\treturn ({ name: name, value: value });\n\t});\n\treturn (new Identity({ components: cmps }));\n};\n\nIdentity.fromArray = function (components) {\n\tassert.arrayOfObject(components, 'components');\n\tcomponents.forEach(function (cmp) {\n\t\tassert.object(cmp, 'component');\n\t\tassert.string(cmp.name, 'component.name');\n\t\tif (!Buffer.isBuffer(cmp.value) &&\n\t\t !(typeof (cmp.value) === 'string')) {\n\t\t\tthrow (new Error('Invalid component value'));\n\t\t}\n\t});\n\treturn (new Identity({ components: components }));\n};\n\nIdentity.parseAsn1 = function (der, top) {\n\tvar components = [];\n\tder.readSequence(top);\n\tvar end = der.offset + der.length;\n\twhile (der.offset < end) {\n\t\tder.readSequence(asn1.Ber.Constructor | asn1.Ber.Set);\n\t\tvar after = der.offset + der.length;\n\t\tder.readSequence();\n\t\tvar oid = der.readOID();\n\t\tvar type = der.peek();\n\t\tvar value;\n\t\tswitch (type) {\n\t\tcase asn1.Ber.PrintableString:\n\t\tcase asn1.Ber.IA5String:\n\t\tcase asn1.Ber.OctetString:\n\t\tcase asn1.Ber.T61String:\n\t\t\tvalue = der.readString(type);\n\t\t\tbreak;\n\t\tcase asn1.Ber.Utf8String:\n\t\t\tvalue = der.readString(type, true);\n\t\t\tvalue = value.toString('utf8');\n\t\t\tbreak;\n\t\tcase asn1.Ber.CharacterString:\n\t\tcase asn1.Ber.BMPString:\n\t\t\tvalue = der.readString(type, true);\n\t\t\tvalue = value.toString('utf16le');\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tthrow (new Error('Unknown asn1 type ' + type));\n\t\t}\n\t\tcomponents.push({ oid: oid, asn1type: type, value: value });\n\t\tder._offset = after;\n\t}\n\tder._offset = end;\n\treturn (new Identity({\n\t\tcomponents: components\n\t}));\n};\n\nIdentity.isIdentity = function (obj, ver) {\n\treturn (utils.isCompatible(obj, Identity, ver));\n};\n\n/*\n * API versions for Identity:\n * [1,0] -- initial ver\n */\nIdentity.prototype._sshpkApiVersion = [1, 0];\n\nIdentity._oldVersionDetect = function (obj) {\n\treturn ([1, 0]);\n};\n", "// Copyright 2017 Joyent, Inc.\n\nmodule.exports = {\n\tread: read,\n\tverify: verify,\n\tsign: sign,\n\tsignAsync: signAsync,\n\twrite: write,\n\n\t/* Internal private API */\n\tfromBuffer: fromBuffer,\n\ttoBuffer: toBuffer\n};\n\nvar assert = require('assert-plus');\nvar SSHBuffer = require('../ssh-buffer');\nvar crypto = require('crypto');\nvar Buffer = require('safer-buffer').Buffer;\nvar algs = require('../algs');\nvar Key = require('../key');\nvar PrivateKey = require('../private-key');\nvar Identity = require('../identity');\nvar rfc4253 = require('./rfc4253');\nvar Signature = require('../signature');\nvar utils = require('../utils');\nvar Certificate = require('../certificate');\n\nfunction verify(cert, key) {\n\t/*\n\t * We always give an issuerKey, so if our verify() is being called then\n\t * there was no signature. Return false.\n\t */\n\treturn (false);\n}\n\nvar TYPES = {\n\t'user': 1,\n\t'host': 2\n};\nObject.keys(TYPES).forEach(function (k) { TYPES[TYPES[k]] = k; });\n\nvar ECDSA_ALGO = /^ecdsa-sha2-([^@-]+)-cert-v01@openssh.com$/;\n\nfunction read(buf, options) {\n\tif (Buffer.isBuffer(buf))\n\t\tbuf = buf.toString('ascii');\n\tvar parts = buf.trim().split(/[ \\t\\n]+/g);\n\tif (parts.length < 2 || parts.length > 3)\n\t\tthrow (new Error('Not a valid SSH certificate line'));\n\n\tvar algo = parts[0];\n\tvar data = parts[1];\n\n\tdata = Buffer.from(data, 'base64');\n\treturn (fromBuffer(data, algo));\n}\n\nfunction fromBuffer(data, algo, partial) {\n\tvar sshbuf = new SSHBuffer({ buffer: data });\n\tvar innerAlgo = sshbuf.readString();\n\tif (algo !== undefined && innerAlgo !== algo)\n\t\tthrow (new Error('SSH certificate algorithm mismatch'));\n\tif (algo === undefined)\n\t\talgo = innerAlgo;\n\n\tvar cert = {};\n\tcert.signatures = {};\n\tcert.signatures.openssh = {};\n\n\tcert.signatures.openssh.nonce = sshbuf.readBuffer();\n\n\tvar key = {};\n\tvar parts = (key.parts = []);\n\tkey.type = getAlg(algo);\n\n\tvar partCount = algs.info[key.type].parts.length;\n\twhile (parts.length < partCount)\n\t\tparts.push(sshbuf.readPart());\n\tassert.ok(parts.length >= 1, 'key must have at least one part');\n\n\tvar algInfo = algs.info[key.type];\n\tif (key.type === 'ecdsa') {\n\t\tvar res = ECDSA_ALGO.exec(algo);\n\t\tassert.ok(res !== null);\n\t\tassert.strictEqual(res[1], parts[0].data.toString());\n\t}\n\n\tfor (var i = 0; i < algInfo.parts.length; ++i) {\n\t\tparts[i].name = algInfo.parts[i];\n\t\tif (parts[i].name !== 'curve' &&\n\t\t algInfo.normalize !== false) {\n\t\t\tvar p = parts[i];\n\t\t\tp.data = utils.mpNormalize(p.data);\n\t\t}\n\t}\n\n\tcert.subjectKey = new Key(key);\n\n\tcert.serial = sshbuf.readInt64();\n\n\tvar type = TYPES[sshbuf.readInt()];\n\tassert.string(type, 'valid cert type');\n\n\tcert.signatures.openssh.keyId = sshbuf.readString();\n\n\tvar principals = [];\n\tvar pbuf = sshbuf.readBuffer();\n\tvar psshbuf = new SSHBuffer({ buffer: pbuf });\n\twhile (!psshbuf.atEnd())\n\t\tprincipals.push(psshbuf.readString());\n\tif (principals.length === 0)\n\t\tprincipals = ['*'];\n\n\tcert.subjects = principals.map(function (pr) {\n\t\tif (type === 'user')\n\t\t\treturn (Identity.forUser(pr));\n\t\telse if (type === 'host')\n\t\t\treturn (Identity.forHost(pr));\n\t\tthrow (new Error('Unknown identity type ' + type));\n\t});\n\n\tcert.validFrom = int64ToDate(sshbuf.readInt64());\n\tcert.validUntil = int64ToDate(sshbuf.readInt64());\n\n\tvar exts = [];\n\tvar extbuf = new SSHBuffer({ buffer: sshbuf.readBuffer() });\n\tvar ext;\n\twhile (!extbuf.atEnd()) {\n\t\text = { critical: true };\n\t\text.name = extbuf.readString();\n\t\text.data = extbuf.readBuffer();\n\t\texts.push(ext);\n\t}\n\textbuf = new SSHBuffer({ buffer: sshbuf.readBuffer() });\n\twhile (!extbuf.atEnd()) {\n\t\text = { critical: false };\n\t\text.name = extbuf.readString();\n\t\text.data = extbuf.readBuffer();\n\t\texts.push(ext);\n\t}\n\tcert.signatures.openssh.exts = exts;\n\n\t/* reserved */\n\tsshbuf.readBuffer();\n\n\tvar signingKeyBuf = sshbuf.readBuffer();\n\tcert.issuerKey = rfc4253.read(signingKeyBuf);\n\n\t/*\n\t * OpenSSH certs don't give the identity of the issuer, just their\n\t * public key. So, we use an Identity that matches anything. The\n\t * isSignedBy() function will later tell you if the key matches.\n\t */\n\tcert.issuer = Identity.forHost('**');\n\n\tvar sigBuf = sshbuf.readBuffer();\n\tcert.signatures.openssh.signature =\n\t Signature.parse(sigBuf, cert.issuerKey.type, 'ssh');\n\n\tif (partial !== undefined) {\n\t\tpartial.remainder = sshbuf.remainder();\n\t\tpartial.consumed = sshbuf._offset;\n\t}\n\n\treturn (new Certificate(cert));\n}\n\nfunction int64ToDate(buf) {\n\tvar i = buf.readUInt32BE(0) * 4294967296;\n\ti += buf.readUInt32BE(4);\n\tvar d = new Date();\n\td.setTime(i * 1000);\n\td.sourceInt64 = buf;\n\treturn (d);\n}\n\nfunction dateToInt64(date) {\n\tif (date.sourceInt64 !== undefined)\n\t\treturn (date.sourceInt64);\n\tvar i = Math.round(date.getTime() / 1000);\n\tvar upper = Math.floor(i / 4294967296);\n\tvar lower = Math.floor(i % 4294967296);\n\tvar buf = Buffer.alloc(8);\n\tbuf.writeUInt32BE(upper, 0);\n\tbuf.writeUInt32BE(lower, 4);\n\treturn (buf);\n}\n\nfunction sign(cert, key) {\n\tif (cert.signatures.openssh === undefined)\n\t\tcert.signatures.openssh = {};\n\ttry {\n\t\tvar blob = toBuffer(cert, true);\n\t} catch (e) {\n\t\tdelete (cert.signatures.openssh);\n\t\treturn (false);\n\t}\n\tvar sig = cert.signatures.openssh;\n\tvar hashAlgo = undefined;\n\tif (key.type === 'rsa' || key.type === 'dsa')\n\t\thashAlgo = 'sha1';\n\tvar signer = key.createSign(hashAlgo);\n\tsigner.write(blob);\n\tsig.signature = signer.sign();\n\treturn (true);\n}\n\nfunction signAsync(cert, signer, done) {\n\tif (cert.signatures.openssh === undefined)\n\t\tcert.signatures.openssh = {};\n\ttry {\n\t\tvar blob = toBuffer(cert, true);\n\t} catch (e) {\n\t\tdelete (cert.signatures.openssh);\n\t\tdone(e);\n\t\treturn;\n\t}\n\tvar sig = cert.signatures.openssh;\n\n\tsigner(blob, function (err, signature) {\n\t\tif (err) {\n\t\t\tdone(err);\n\t\t\treturn;\n\t\t}\n\t\ttry {\n\t\t\t/*\n\t\t\t * This will throw if the signature isn't of a\n\t\t\t * type/algo that can be used for SSH.\n\t\t\t */\n\t\t\tsignature.toBuffer('ssh');\n\t\t} catch (e) {\n\t\t\tdone(e);\n\t\t\treturn;\n\t\t}\n\t\tsig.signature = signature;\n\t\tdone();\n\t});\n}\n\nfunction write(cert, options) {\n\tif (options === undefined)\n\t\toptions = {};\n\n\tvar blob = toBuffer(cert);\n\tvar out = getCertType(cert.subjectKey) + ' ' + blob.toString('base64');\n\tif (options.comment)\n\t\tout = out + ' ' + options.comment;\n\treturn (out);\n}\n\n\nfunction toBuffer(cert, noSig) {\n\tassert.object(cert.signatures.openssh, 'signature for openssh format');\n\tvar sig = cert.signatures.openssh;\n\n\tif (sig.nonce === undefined)\n\t\tsig.nonce = crypto.randomBytes(16);\n\tvar buf = new SSHBuffer({});\n\tbuf.writeString(getCertType(cert.subjectKey));\n\tbuf.writeBuffer(sig.nonce);\n\n\tvar key = cert.subjectKey;\n\tvar algInfo = algs.info[key.type];\n\talgInfo.parts.forEach(function (part) {\n\t\tbuf.writePart(key.part[part]);\n\t});\n\n\tbuf.writeInt64(cert.serial);\n\n\tvar type = cert.subjects[0].type;\n\tassert.notStrictEqual(type, 'unknown');\n\tcert.subjects.forEach(function (id) {\n\t\tassert.strictEqual(id.type, type);\n\t});\n\ttype = TYPES[type];\n\tbuf.writeInt(type);\n\n\tif (sig.keyId === undefined) {\n\t\tsig.keyId = cert.subjects[0].type + '_' +\n\t\t (cert.subjects[0].uid || cert.subjects[0].hostname);\n\t}\n\tbuf.writeString(sig.keyId);\n\n\tvar sub = new SSHBuffer({});\n\tcert.subjects.forEach(function (id) {\n\t\tif (type === TYPES.host)\n\t\t\tsub.writeString(id.hostname);\n\t\telse if (type === TYPES.user)\n\t\t\tsub.writeString(id.uid);\n\t});\n\tbuf.writeBuffer(sub.toBuffer());\n\n\tbuf.writeInt64(dateToInt64(cert.validFrom));\n\tbuf.writeInt64(dateToInt64(cert.validUntil));\n\n\tvar exts = sig.exts;\n\tif (exts === undefined)\n\t\texts = [];\n\n\tvar extbuf = new SSHBuffer({});\n\texts.forEach(function (ext) {\n\t\tif (ext.critical !== true)\n\t\t\treturn;\n\t\textbuf.writeString(ext.name);\n\t\textbuf.writeBuffer(ext.data);\n\t});\n\tbuf.writeBuffer(extbuf.toBuffer());\n\n\textbuf = new SSHBuffer({});\n\texts.forEach(function (ext) {\n\t\tif (ext.critical === true)\n\t\t\treturn;\n\t\textbuf.writeString(ext.name);\n\t\textbuf.writeBuffer(ext.data);\n\t});\n\tbuf.writeBuffer(extbuf.toBuffer());\n\n\t/* reserved */\n\tbuf.writeBuffer(Buffer.alloc(0));\n\n\tsub = rfc4253.write(cert.issuerKey);\n\tbuf.writeBuffer(sub);\n\n\tif (!noSig)\n\t\tbuf.writeBuffer(sig.signature.toBuffer('ssh'));\n\n\treturn (buf.toBuffer());\n}\n\nfunction getAlg(certType) {\n\tif (certType === 'ssh-rsa-cert-v01@openssh.com')\n\t\treturn ('rsa');\n\tif (certType === 'ssh-dss-cert-v01@openssh.com')\n\t\treturn ('dsa');\n\tif (certType.match(ECDSA_ALGO))\n\t\treturn ('ecdsa');\n\tif (certType === 'ssh-ed25519-cert-v01@openssh.com')\n\t\treturn ('ed25519');\n\tthrow (new Error('Unsupported cert type ' + certType));\n}\n\nfunction getCertType(key) {\n\tif (key.type === 'rsa')\n\t\treturn ('ssh-rsa-cert-v01@openssh.com');\n\tif (key.type === 'dsa')\n\t\treturn ('ssh-dss-cert-v01@openssh.com');\n\tif (key.type === 'ecdsa')\n\t\treturn ('ecdsa-sha2-' + key.curve + '-cert-v01@openssh.com');\n\tif (key.type === 'ed25519')\n\t\treturn ('ssh-ed25519-cert-v01@openssh.com');\n\tthrow (new Error('Unsupported key type ' + key.type));\n}\n", "// Copyright 2017 Joyent, Inc.\n\nmodule.exports = {\n\tread: read,\n\tverify: verify,\n\tsign: sign,\n\tsignAsync: signAsync,\n\twrite: write\n};\n\nvar assert = require('assert-plus');\nvar asn1 = require('asn1');\nvar Buffer = require('safer-buffer').Buffer;\nvar algs = require('../algs');\nvar utils = require('../utils');\nvar Key = require('../key');\nvar PrivateKey = require('../private-key');\nvar pem = require('./pem');\nvar Identity = require('../identity');\nvar Signature = require('../signature');\nvar Certificate = require('../certificate');\nvar pkcs8 = require('./pkcs8');\n\n/*\n * This file is based on RFC5280 (X.509).\n */\n\n/* Helper to read in a single mpint */\nfunction readMPInt(der, nm) {\n\tassert.strictEqual(der.peek(), asn1.Ber.Integer,\n\t nm + ' is not an Integer');\n\treturn (utils.mpNormalize(der.readString(asn1.Ber.Integer, true)));\n}\n\nfunction verify(cert, key) {\n\tvar sig = cert.signatures.x509;\n\tassert.object(sig, 'x509 signature');\n\n\tvar algParts = sig.algo.split('-');\n\tif (algParts[0] !== key.type)\n\t\treturn (false);\n\n\tvar blob = sig.cache;\n\tif (blob === undefined) {\n\t\tvar der = new asn1.BerWriter();\n\t\twriteTBSCert(cert, der);\n\t\tblob = der.buffer;\n\t}\n\n\tvar verifier = key.createVerify(algParts[1]);\n\tverifier.write(blob);\n\treturn (verifier.verify(sig.signature));\n}\n\nfunction Local(i) {\n\treturn (asn1.Ber.Context | asn1.Ber.Constructor | i);\n}\n\nfunction Context(i) {\n\treturn (asn1.Ber.Context | i);\n}\n\nvar SIGN_ALGS = {\n\t'rsa-md5': '1.2.840.113549.1.1.4',\n\t'rsa-sha1': '1.2.840.113549.1.1.5',\n\t'rsa-sha256': '1.2.840.113549.1.1.11',\n\t'rsa-sha384': '1.2.840.113549.1.1.12',\n\t'rsa-sha512': '1.2.840.113549.1.1.13',\n\t'dsa-sha1': '1.2.840.10040.4.3',\n\t'dsa-sha256': '2.16.840.1.101.3.4.3.2',\n\t'ecdsa-sha1': '1.2.840.10045.4.1',\n\t'ecdsa-sha256': '1.2.840.10045.4.3.2',\n\t'ecdsa-sha384': '1.2.840.10045.4.3.3',\n\t'ecdsa-sha512': '1.2.840.10045.4.3.4',\n\t'ed25519-sha512': '1.3.101.112'\n};\nObject.keys(SIGN_ALGS).forEach(function (k) {\n\tSIGN_ALGS[SIGN_ALGS[k]] = k;\n});\nSIGN_ALGS['1.3.14.3.2.3'] = 'rsa-md5';\nSIGN_ALGS['1.3.14.3.2.29'] = 'rsa-sha1';\n\nvar EXTS = {\n\t'issuerKeyId': '2.5.29.35',\n\t'altName': '2.5.29.17',\n\t'basicConstraints': '2.5.29.19',\n\t'keyUsage': '2.5.29.15',\n\t'extKeyUsage': '2.5.29.37'\n};\n\nfunction read(buf, options) {\n\tif (typeof (buf) === 'string') {\n\t\tbuf = Buffer.from(buf, 'binary');\n\t}\n\tassert.buffer(buf, 'buf');\n\n\tvar der = new asn1.BerReader(buf);\n\n\tder.readSequence();\n\tif (Math.abs(der.length - der.remain) > 1) {\n\t\tthrow (new Error('DER sequence does not contain whole byte ' +\n\t\t 'stream'));\n\t}\n\n\tvar tbsStart = der.offset;\n\tder.readSequence();\n\tvar sigOffset = der.offset + der.length;\n\tvar tbsEnd = sigOffset;\n\n\tif (der.peek() === Local(0)) {\n\t\tder.readSequence(Local(0));\n\t\tvar version = der.readInt();\n\t\tassert.ok(version <= 3,\n\t\t 'only x.509 versions up to v3 supported');\n\t}\n\n\tvar cert = {};\n\tcert.signatures = {};\n\tvar sig = (cert.signatures.x509 = {});\n\tsig.extras = {};\n\n\tcert.serial = readMPInt(der, 'serial');\n\n\tder.readSequence();\n\tvar after = der.offset + der.length;\n\tvar certAlgOid = der.readOID();\n\tvar certAlg = SIGN_ALGS[certAlgOid];\n\tif (certAlg === undefined)\n\t\tthrow (new Error('unknown signature algorithm ' + certAlgOid));\n\n\tder._offset = after;\n\tcert.issuer = Identity.parseAsn1(der);\n\n\tder.readSequence();\n\tcert.validFrom = readDate(der);\n\tcert.validUntil = readDate(der);\n\n\tcert.subjects = [Identity.parseAsn1(der)];\n\n\tder.readSequence();\n\tafter = der.offset + der.length;\n\tcert.subjectKey = pkcs8.readPkcs8(undefined, 'public', der);\n\tder._offset = after;\n\n\t/* issuerUniqueID */\n\tif (der.peek() === Local(1)) {\n\t\tder.readSequence(Local(1));\n\t\tsig.extras.issuerUniqueID =\n\t\t buf.slice(der.offset, der.offset + der.length);\n\t\tder._offset += der.length;\n\t}\n\n\t/* subjectUniqueID */\n\tif (der.peek() === Local(2)) {\n\t\tder.readSequence(Local(2));\n\t\tsig.extras.subjectUniqueID =\n\t\t buf.slice(der.offset, der.offset + der.length);\n\t\tder._offset += der.length;\n\t}\n\n\t/* extensions */\n\tif (der.peek() === Local(3)) {\n\t\tder.readSequence(Local(3));\n\t\tvar extEnd = der.offset + der.length;\n\t\tder.readSequence();\n\n\t\twhile (der.offset < extEnd)\n\t\t\treadExtension(cert, buf, der);\n\n\t\tassert.strictEqual(der.offset, extEnd);\n\t}\n\n\tassert.strictEqual(der.offset, sigOffset);\n\n\tder.readSequence();\n\tafter = der.offset + der.length;\n\tvar sigAlgOid = der.readOID();\n\tvar sigAlg = SIGN_ALGS[sigAlgOid];\n\tif (sigAlg === undefined)\n\t\tthrow (new Error('unknown signature algorithm ' + sigAlgOid));\n\tder._offset = after;\n\n\tvar sigData = der.readString(asn1.Ber.BitString, true);\n\tif (sigData[0] === 0)\n\t\tsigData = sigData.slice(1);\n\tvar algParts = sigAlg.split('-');\n\n\tsig.signature = Signature.parse(sigData, algParts[0], 'asn1');\n\tsig.signature.hashAlgorithm = algParts[1];\n\tsig.algo = sigAlg;\n\tsig.cache = buf.slice(tbsStart, tbsEnd);\n\n\treturn (new Certificate(cert));\n}\n\nfunction readDate(der) {\n\tif (der.peek() === asn1.Ber.UTCTime) {\n\t\treturn (utcTimeToDate(der.readString(asn1.Ber.UTCTime)));\n\t} else if (der.peek() === asn1.Ber.GeneralizedTime) {\n\t\treturn (gTimeToDate(der.readString(asn1.Ber.GeneralizedTime)));\n\t} else {\n\t\tthrow (new Error('Unsupported date format'));\n\t}\n}\n\nfunction writeDate(der, date) {\n\tif (date.getUTCFullYear() >= 2050 || date.getUTCFullYear() < 1950) {\n\t\tder.writeString(dateToGTime(date), asn1.Ber.GeneralizedTime);\n\t} else {\n\t\tder.writeString(dateToUTCTime(date), asn1.Ber.UTCTime);\n\t}\n}\n\n/* RFC5280, section 4.2.1.6 (GeneralName type) */\nvar ALTNAME = {\n\tOtherName: Local(0),\n\tRFC822Name: Context(1),\n\tDNSName: Context(2),\n\tX400Address: Local(3),\n\tDirectoryName: Local(4),\n\tEDIPartyName: Local(5),\n\tURI: Context(6),\n\tIPAddress: Context(7),\n\tOID: Context(8)\n};\n\n/* RFC5280, section 4.2.1.12 (KeyPurposeId) */\nvar EXTPURPOSE = {\n\t'serverAuth': '1.3.6.1.5.5.7.3.1',\n\t'clientAuth': '1.3.6.1.5.5.7.3.2',\n\t'codeSigning': '1.3.6.1.5.5.7.3.3',\n\n\t/* See https://github.com/joyent/oid-docs/blob/master/root.md */\n\t'joyentDocker': '1.3.6.1.4.1.38678.1.4.1',\n\t'joyentCmon': '1.3.6.1.4.1.38678.1.4.2'\n};\nvar EXTPURPOSE_REV = {};\nObject.keys(EXTPURPOSE).forEach(function (k) {\n\tEXTPURPOSE_REV[EXTPURPOSE[k]] = k;\n});\n\nvar KEYUSEBITS = [\n\t'signature', 'identity', 'keyEncryption',\n\t'encryption', 'keyAgreement', 'ca', 'crl'\n];\n\nfunction readExtension(cert, buf, der) {\n\tder.readSequence();\n\tvar after = der.offset + der.length;\n\tvar extId = der.readOID();\n\tvar id;\n\tvar sig = cert.signatures.x509;\n\tif (!sig.extras.exts)\n\t\tsig.extras.exts = [];\n\n\tvar critical;\n\tif (der.peek() === asn1.Ber.Boolean)\n\t\tcritical = der.readBoolean();\n\n\tswitch (extId) {\n\tcase (EXTS.basicConstraints):\n\t\tder.readSequence(asn1.Ber.OctetString);\n\t\tder.readSequence();\n\t\tvar bcEnd = der.offset + der.length;\n\t\tvar ca = false;\n\t\tif (der.peek() === asn1.Ber.Boolean)\n\t\t\tca = der.readBoolean();\n\t\tif (cert.purposes === undefined)\n\t\t\tcert.purposes = [];\n\t\tif (ca === true)\n\t\t\tcert.purposes.push('ca');\n\t\tvar bc = { oid: extId, critical: critical };\n\t\tif (der.offset < bcEnd && der.peek() === asn1.Ber.Integer)\n\t\t\tbc.pathLen = der.readInt();\n\t\tsig.extras.exts.push(bc);\n\t\tbreak;\n\tcase (EXTS.extKeyUsage):\n\t\tder.readSequence(asn1.Ber.OctetString);\n\t\tder.readSequence();\n\t\tif (cert.purposes === undefined)\n\t\t\tcert.purposes = [];\n\t\tvar ekEnd = der.offset + der.length;\n\t\twhile (der.offset < ekEnd) {\n\t\t\tvar oid = der.readOID();\n\t\t\tcert.purposes.push(EXTPURPOSE_REV[oid] || oid);\n\t\t}\n\t\t/*\n\t\t * This is a bit of a hack: in the case where we have a cert\n\t\t * that's only allowed to do serverAuth or clientAuth (and not\n\t\t * the other), we want to make sure all our Subjects are of\n\t\t * the right type. But we already parsed our Subjects and\n\t\t * decided if they were hosts or users earlier (since it appears\n\t\t * first in the cert).\n\t\t *\n\t\t * So we go through and mutate them into the right kind here if\n\t\t * it doesn't match. This might not be hugely beneficial, as it\n\t\t * seems that single-purpose certs are not often seen in the\n\t\t * wild.\n\t\t */\n\t\tif (cert.purposes.indexOf('serverAuth') !== -1 &&\n\t\t cert.purposes.indexOf('clientAuth') === -1) {\n\t\t\tcert.subjects.forEach(function (ide) {\n\t\t\t\tif (ide.type !== 'host') {\n\t\t\t\t\tide.type = 'host';\n\t\t\t\t\tide.hostname = ide.uid ||\n\t\t\t\t\t ide.email ||\n\t\t\t\t\t ide.components[0].value;\n\t\t\t\t}\n\t\t\t});\n\t\t} else if (cert.purposes.indexOf('clientAuth') !== -1 &&\n\t\t cert.purposes.indexOf('serverAuth') === -1) {\n\t\t\tcert.subjects.forEach(function (ide) {\n\t\t\t\tif (ide.type !== 'user') {\n\t\t\t\t\tide.type = 'user';\n\t\t\t\t\tide.uid = ide.hostname ||\n\t\t\t\t\t ide.email ||\n\t\t\t\t\t ide.components[0].value;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\tsig.extras.exts.push({ oid: extId, critical: critical });\n\t\tbreak;\n\tcase (EXTS.keyUsage):\n\t\tder.readSequence(asn1.Ber.OctetString);\n\t\tvar bits = der.readString(asn1.Ber.BitString, true);\n\t\tvar setBits = readBitField(bits, KEYUSEBITS);\n\t\tsetBits.forEach(function (bit) {\n\t\t\tif (cert.purposes === undefined)\n\t\t\t\tcert.purposes = [];\n\t\t\tif (cert.purposes.indexOf(bit) === -1)\n\t\t\t\tcert.purposes.push(bit);\n\t\t});\n\t\tsig.extras.exts.push({ oid: extId, critical: critical,\n\t\t bits: bits });\n\t\tbreak;\n\tcase (EXTS.altName):\n\t\tder.readSequence(asn1.Ber.OctetString);\n\t\tder.readSequence();\n\t\tvar aeEnd = der.offset + der.length;\n\t\twhile (der.offset < aeEnd) {\n\t\t\tswitch (der.peek()) {\n\t\t\tcase ALTNAME.OtherName:\n\t\t\tcase ALTNAME.EDIPartyName:\n\t\t\t\tder.readSequence();\n\t\t\t\tder._offset += der.length;\n\t\t\t\tbreak;\n\t\t\tcase ALTNAME.OID:\n\t\t\t\tder.readOID(ALTNAME.OID);\n\t\t\t\tbreak;\n\t\t\tcase ALTNAME.RFC822Name:\n\t\t\t\t/* RFC822 specifies email addresses */\n\t\t\t\tvar email = der.readString(ALTNAME.RFC822Name);\n\t\t\t\tid = Identity.forEmail(email);\n\t\t\t\tif (!cert.subjects[0].equals(id))\n\t\t\t\t\tcert.subjects.push(id);\n\t\t\t\tbreak;\n\t\t\tcase ALTNAME.DirectoryName:\n\t\t\t\tder.readSequence(ALTNAME.DirectoryName);\n\t\t\t\tid = Identity.parseAsn1(der);\n\t\t\t\tif (!cert.subjects[0].equals(id))\n\t\t\t\t\tcert.subjects.push(id);\n\t\t\t\tbreak;\n\t\t\tcase ALTNAME.DNSName:\n\t\t\t\tvar host = der.readString(\n\t\t\t\t ALTNAME.DNSName);\n\t\t\t\tid = Identity.forHost(host);\n\t\t\t\tif (!cert.subjects[0].equals(id))\n\t\t\t\t\tcert.subjects.push(id);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tder.readString(der.peek());\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tsig.extras.exts.push({ oid: extId, critical: critical });\n\t\tbreak;\n\tdefault:\n\t\tsig.extras.exts.push({\n\t\t\toid: extId,\n\t\t\tcritical: critical,\n\t\t\tdata: der.readString(asn1.Ber.OctetString, true)\n\t\t});\n\t\tbreak;\n\t}\n\n\tder._offset = after;\n}\n\nvar UTCTIME_RE =\n /^([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})?Z$/;\nfunction utcTimeToDate(t) {\n\tvar m = t.match(UTCTIME_RE);\n\tassert.ok(m, 'timestamps must be in UTC');\n\tvar d = new Date();\n\n\tvar thisYear = d.getUTCFullYear();\n\tvar century = Math.floor(thisYear / 100) * 100;\n\n\tvar year = parseInt(m[1], 10);\n\tif (thisYear % 100 < 50 && year >= 60)\n\t\tyear += (century - 1);\n\telse\n\t\tyear += century;\n\td.setUTCFullYear(year, parseInt(m[2], 10) - 1, parseInt(m[3], 10));\n\td.setUTCHours(parseInt(m[4], 10), parseInt(m[5], 10));\n\tif (m[6] && m[6].length > 0)\n\t\td.setUTCSeconds(parseInt(m[6], 10));\n\treturn (d);\n}\n\nvar GTIME_RE =\n /^([0-9]{4})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})?Z$/;\nfunction gTimeToDate(t) {\n\tvar m = t.match(GTIME_RE);\n\tassert.ok(m);\n\tvar d = new Date();\n\n\td.setUTCFullYear(parseInt(m[1], 10), parseInt(m[2], 10) - 1,\n\t parseInt(m[3], 10));\n\td.setUTCHours(parseInt(m[4], 10), parseInt(m[5], 10));\n\tif (m[6] && m[6].length > 0)\n\t\td.setUTCSeconds(parseInt(m[6], 10));\n\treturn (d);\n}\n\nfunction zeroPad(n, m) {\n\tif (m === undefined)\n\t\tm = 2;\n\tvar s = '' + n;\n\twhile (s.length < m)\n\t\ts = '0' + s;\n\treturn (s);\n}\n\nfunction dateToUTCTime(d) {\n\tvar s = '';\n\ts += zeroPad(d.getUTCFullYear() % 100);\n\ts += zeroPad(d.getUTCMonth() + 1);\n\ts += zeroPad(d.getUTCDate());\n\ts += zeroPad(d.getUTCHours());\n\ts += zeroPad(d.getUTCMinutes());\n\ts += zeroPad(d.getUTCSeconds());\n\ts += 'Z';\n\treturn (s);\n}\n\nfunction dateToGTime(d) {\n\tvar s = '';\n\ts += zeroPad(d.getUTCFullYear(), 4);\n\ts += zeroPad(d.getUTCMonth() + 1);\n\ts += zeroPad(d.getUTCDate());\n\ts += zeroPad(d.getUTCHours());\n\ts += zeroPad(d.getUTCMinutes());\n\ts += zeroPad(d.getUTCSeconds());\n\ts += 'Z';\n\treturn (s);\n}\n\nfunction sign(cert, key) {\n\tif (cert.signatures.x509 === undefined)\n\t\tcert.signatures.x509 = {};\n\tvar sig = cert.signatures.x509;\n\n\tsig.algo = key.type + '-' + key.defaultHashAlgorithm();\n\tif (SIGN_ALGS[sig.algo] === undefined)\n\t\treturn (false);\n\n\tvar der = new asn1.BerWriter();\n\twriteTBSCert(cert, der);\n\tvar blob = der.buffer;\n\tsig.cache = blob;\n\n\tvar signer = key.createSign();\n\tsigner.write(blob);\n\tcert.signatures.x509.signature = signer.sign();\n\n\treturn (true);\n}\n\nfunction signAsync(cert, signer, done) {\n\tif (cert.signatures.x509 === undefined)\n\t\tcert.signatures.x509 = {};\n\tvar sig = cert.signatures.x509;\n\n\tvar der = new asn1.BerWriter();\n\twriteTBSCert(cert, der);\n\tvar blob = der.buffer;\n\tsig.cache = blob;\n\n\tsigner(blob, function (err, signature) {\n\t\tif (err) {\n\t\t\tdone(err);\n\t\t\treturn;\n\t\t}\n\t\tsig.algo = signature.type + '-' + signature.hashAlgorithm;\n\t\tif (SIGN_ALGS[sig.algo] === undefined) {\n\t\t\tdone(new Error('Invalid signing algorithm \"' +\n\t\t\t sig.algo + '\"'));\n\t\t\treturn;\n\t\t}\n\t\tsig.signature = signature;\n\t\tdone();\n\t});\n}\n\nfunction write(cert, options) {\n\tvar sig = cert.signatures.x509;\n\tassert.object(sig, 'x509 signature');\n\n\tvar der = new asn1.BerWriter();\n\tder.startSequence();\n\tif (sig.cache) {\n\t\tder._ensure(sig.cache.length);\n\t\tsig.cache.copy(der._buf, der._offset);\n\t\tder._offset += sig.cache.length;\n\t} else {\n\t\twriteTBSCert(cert, der);\n\t}\n\n\tder.startSequence();\n\tder.writeOID(SIGN_ALGS[sig.algo]);\n\tif (sig.algo.match(/^rsa-/))\n\t\tder.writeNull();\n\tder.endSequence();\n\n\tvar sigData = sig.signature.toBuffer('asn1');\n\tvar data = Buffer.alloc(sigData.length + 1);\n\tdata[0] = 0;\n\tsigData.copy(data, 1);\n\tder.writeBuffer(data, asn1.Ber.BitString);\n\tder.endSequence();\n\n\treturn (der.buffer);\n}\n\nfunction writeTBSCert(cert, der) {\n\tvar sig = cert.signatures.x509;\n\tassert.object(sig, 'x509 signature');\n\n\tder.startSequence();\n\n\tder.startSequence(Local(0));\n\tder.writeInt(2);\n\tder.endSequence();\n\n\tder.writeBuffer(utils.mpNormalize(cert.serial), asn1.Ber.Integer);\n\n\tder.startSequence();\n\tder.writeOID(SIGN_ALGS[sig.algo]);\n\tif (sig.algo.match(/^rsa-/))\n\t\tder.writeNull();\n\tder.endSequence();\n\n\tcert.issuer.toAsn1(der);\n\n\tder.startSequence();\n\twriteDate(der, cert.validFrom);\n\twriteDate(der, cert.validUntil);\n\tder.endSequence();\n\n\tvar subject = cert.subjects[0];\n\tvar altNames = cert.subjects.slice(1);\n\tsubject.toAsn1(der);\n\n\tpkcs8.writePkcs8(der, cert.subjectKey);\n\n\tif (sig.extras && sig.extras.issuerUniqueID) {\n\t\tder.writeBuffer(sig.extras.issuerUniqueID, Local(1));\n\t}\n\n\tif (sig.extras && sig.extras.subjectUniqueID) {\n\t\tder.writeBuffer(sig.extras.subjectUniqueID, Local(2));\n\t}\n\n\tif (altNames.length > 0 || subject.type === 'host' ||\n\t (cert.purposes !== undefined && cert.purposes.length > 0) ||\n\t (sig.extras && sig.extras.exts)) {\n\t\tder.startSequence(Local(3));\n\t\tder.startSequence();\n\n\t\tvar exts = [];\n\t\tif (cert.purposes !== undefined && cert.purposes.length > 0) {\n\t\t\texts.push({\n\t\t\t\toid: EXTS.basicConstraints,\n\t\t\t\tcritical: true\n\t\t\t});\n\t\t\texts.push({\n\t\t\t\toid: EXTS.keyUsage,\n\t\t\t\tcritical: true\n\t\t\t});\n\t\t\texts.push({\n\t\t\t\toid: EXTS.extKeyUsage,\n\t\t\t\tcritical: true\n\t\t\t});\n\t\t}\n\t\texts.push({ oid: EXTS.altName });\n\t\tif (sig.extras && sig.extras.exts)\n\t\t\texts = sig.extras.exts;\n\n\t\tfor (var i = 0; i < exts.length; ++i) {\n\t\t\tder.startSequence();\n\t\t\tder.writeOID(exts[i].oid);\n\n\t\t\tif (exts[i].critical !== undefined)\n\t\t\t\tder.writeBoolean(exts[i].critical);\n\n\t\t\tif (exts[i].oid === EXTS.altName) {\n\t\t\t\tder.startSequence(asn1.Ber.OctetString);\n\t\t\t\tder.startSequence();\n\t\t\t\tif (subject.type === 'host') {\n\t\t\t\t\tder.writeString(subject.hostname,\n\t\t\t\t\t Context(2));\n\t\t\t\t}\n\t\t\t\tfor (var j = 0; j < altNames.length; ++j) {\n\t\t\t\t\tif (altNames[j].type === 'host') {\n\t\t\t\t\t\tder.writeString(\n\t\t\t\t\t\t altNames[j].hostname,\n\t\t\t\t\t\t ALTNAME.DNSName);\n\t\t\t\t\t} else if (altNames[j].type ===\n\t\t\t\t\t 'email') {\n\t\t\t\t\t\tder.writeString(\n\t\t\t\t\t\t altNames[j].email,\n\t\t\t\t\t\t ALTNAME.RFC822Name);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * Encode anything else as a\n\t\t\t\t\t\t * DN style name for now.\n\t\t\t\t\t\t */\n\t\t\t\t\t\tder.startSequence(\n\t\t\t\t\t\t ALTNAME.DirectoryName);\n\t\t\t\t\t\taltNames[j].toAsn1(der);\n\t\t\t\t\t\tder.endSequence();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tder.endSequence();\n\t\t\t\tder.endSequence();\n\t\t\t} else if (exts[i].oid === EXTS.basicConstraints) {\n\t\t\t\tder.startSequence(asn1.Ber.OctetString);\n\t\t\t\tder.startSequence();\n\t\t\t\tvar ca = (cert.purposes.indexOf('ca') !== -1);\n\t\t\t\tvar pathLen = exts[i].pathLen;\n\t\t\t\tder.writeBoolean(ca);\n\t\t\t\tif (pathLen !== undefined)\n\t\t\t\t\tder.writeInt(pathLen);\n\t\t\t\tder.endSequence();\n\t\t\t\tder.endSequence();\n\t\t\t} else if (exts[i].oid === EXTS.extKeyUsage) {\n\t\t\t\tder.startSequence(asn1.Ber.OctetString);\n\t\t\t\tder.startSequence();\n\t\t\t\tcert.purposes.forEach(function (purpose) {\n\t\t\t\t\tif (purpose === 'ca')\n\t\t\t\t\t\treturn;\n\t\t\t\t\tif (KEYUSEBITS.indexOf(purpose) !== -1)\n\t\t\t\t\t\treturn;\n\t\t\t\t\tvar oid = purpose;\n\t\t\t\t\tif (EXTPURPOSE[purpose] !== undefined)\n\t\t\t\t\t\toid = EXTPURPOSE[purpose];\n\t\t\t\t\tder.writeOID(oid);\n\t\t\t\t});\n\t\t\t\tder.endSequence();\n\t\t\t\tder.endSequence();\n\t\t\t} else if (exts[i].oid === EXTS.keyUsage) {\n\t\t\t\tder.startSequence(asn1.Ber.OctetString);\n\t\t\t\t/*\n\t\t\t\t * If we parsed this certificate from a byte\n\t\t\t\t * stream (i.e. we didn't generate it in sshpk)\n\t\t\t\t * then we'll have a \".bits\" property on the\n\t\t\t\t * ext with the original raw byte contents.\n\t\t\t\t *\n\t\t\t\t * If we have this, use it here instead of\n\t\t\t\t * regenerating it. This guarantees we output\n\t\t\t\t * the same data we parsed, so signatures still\n\t\t\t\t * validate.\n\t\t\t\t */\n\t\t\t\tif (exts[i].bits !== undefined) {\n\t\t\t\t\tder.writeBuffer(exts[i].bits,\n\t\t\t\t\t asn1.Ber.BitString);\n\t\t\t\t} else {\n\t\t\t\t\tvar bits = writeBitField(cert.purposes,\n\t\t\t\t\t KEYUSEBITS);\n\t\t\t\t\tder.writeBuffer(bits,\n\t\t\t\t\t asn1.Ber.BitString);\n\t\t\t\t}\n\t\t\t\tder.endSequence();\n\t\t\t} else {\n\t\t\t\tder.writeBuffer(exts[i].data,\n\t\t\t\t asn1.Ber.OctetString);\n\t\t\t}\n\n\t\t\tder.endSequence();\n\t\t}\n\n\t\tder.endSequence();\n\t\tder.endSequence();\n\t}\n\n\tder.endSequence();\n}\n\n/*\n * Reads an ASN.1 BER bitfield out of the Buffer produced by doing\n * `BerReader#readString(asn1.Ber.BitString)`. That function gives us the raw\n * contents of the BitString tag, which is a count of unused bits followed by\n * the bits as a right-padded byte string.\n *\n * `bits` is the Buffer, `bitIndex` should contain an array of string names\n * for the bits in the string, ordered starting with bit #0 in the ASN.1 spec.\n *\n * Returns an array of Strings, the names of the bits that were set to 1.\n */\nfunction readBitField(bits, bitIndex) {\n\tvar bitLen = 8 * (bits.length - 1) - bits[0];\n\tvar setBits = {};\n\tfor (var i = 0; i < bitLen; ++i) {\n\t\tvar byteN = 1 + Math.floor(i / 8);\n\t\tvar bit = 7 - (i % 8);\n\t\tvar mask = 1 << bit;\n\t\tvar bitVal = ((bits[byteN] & mask) !== 0);\n\t\tvar name = bitIndex[i];\n\t\tif (bitVal && typeof (name) === 'string') {\n\t\t\tsetBits[name] = true;\n\t\t}\n\t}\n\treturn (Object.keys(setBits));\n}\n\n/*\n * `setBits` is an array of strings, containing the names for each bit that\n * sould be set to 1. `bitIndex` is same as in `readBitField()`.\n *\n * Returns a Buffer, ready to be written out with `BerWriter#writeString()`.\n */\nfunction writeBitField(setBits, bitIndex) {\n\tvar bitLen = bitIndex.length;\n\tvar blen = Math.ceil(bitLen / 8);\n\tvar unused = blen * 8 - bitLen;\n\tvar bits = Buffer.alloc(1 + blen); // zero-filled\n\tbits[0] = unused;\n\tfor (var i = 0; i < bitLen; ++i) {\n\t\tvar byteN = 1 + Math.floor(i / 8);\n\t\tvar bit = 7 - (i % 8);\n\t\tvar mask = 1 << bit;\n\t\tvar name = bitIndex[i];\n\t\tif (name === undefined)\n\t\t\tcontinue;\n\t\tvar bitVal = (setBits.indexOf(name) !== -1);\n\t\tif (bitVal) {\n\t\t\tbits[byteN] |= mask;\n\t\t}\n\t}\n\treturn (bits);\n}\n", "// Copyright 2016 Joyent, Inc.\n\nvar x509 = require('./x509');\n\nmodule.exports = {\n\tread: read,\n\tverify: x509.verify,\n\tsign: x509.sign,\n\twrite: write\n};\n\nvar assert = require('assert-plus');\nvar asn1 = require('asn1');\nvar Buffer = require('safer-buffer').Buffer;\nvar algs = require('../algs');\nvar utils = require('../utils');\nvar Key = require('../key');\nvar PrivateKey = require('../private-key');\nvar pem = require('./pem');\nvar Identity = require('../identity');\nvar Signature = require('../signature');\nvar Certificate = require('../certificate');\n\nfunction read(buf, options) {\n\tif (typeof (buf) !== 'string') {\n\t\tassert.buffer(buf, 'buf');\n\t\tbuf = buf.toString('ascii');\n\t}\n\n\tvar lines = buf.trim().split(/[\\r\\n]+/g);\n\n\tvar m;\n\tvar si = -1;\n\twhile (!m && si < lines.length) {\n\t\tm = lines[++si].match(/*JSSTYLED*/\n\t\t /[-]+[ ]*BEGIN CERTIFICATE[ ]*[-]+/);\n\t}\n\tassert.ok(m, 'invalid PEM header');\n\n\tvar m2;\n\tvar ei = lines.length;\n\twhile (!m2 && ei > 0) {\n\t\tm2 = lines[--ei].match(/*JSSTYLED*/\n\t\t /[-]+[ ]*END CERTIFICATE[ ]*[-]+/);\n\t}\n\tassert.ok(m2, 'invalid PEM footer');\n\n\tlines = lines.slice(si, ei + 1);\n\n\tvar headers = {};\n\twhile (true) {\n\t\tlines = lines.slice(1);\n\t\tm = lines[0].match(/*JSSTYLED*/\n\t\t /^([A-Za-z0-9-]+): (.+)$/);\n\t\tif (!m)\n\t\t\tbreak;\n\t\theaders[m[1].toLowerCase()] = m[2];\n\t}\n\n\t/* Chop off the first and last lines */\n\tlines = lines.slice(0, -1).join('');\n\tbuf = Buffer.from(lines, 'base64');\n\n\treturn (x509.read(buf, options));\n}\n\nfunction write(cert, options) {\n\tvar dbuf = x509.write(cert, options);\n\n\tvar header = 'CERTIFICATE';\n\tvar tmp = dbuf.toString('base64');\n\tvar len = tmp.length + (tmp.length / 64) +\n\t 18 + 16 + header.length*2 + 10;\n\tvar buf = Buffer.alloc(len);\n\tvar o = 0;\n\to += buf.write('-----BEGIN ' + header + '-----\\n', o);\n\tfor (var i = 0; i < tmp.length; ) {\n\t\tvar limit = i + 64;\n\t\tif (limit > tmp.length)\n\t\t\tlimit = tmp.length;\n\t\to += buf.write(tmp.slice(i, limit), o);\n\t\tbuf[o++] = 10;\n\t\ti = limit;\n\t}\n\to += buf.write('-----END ' + header + '-----\\n', o);\n\n\treturn (buf.slice(0, o));\n}\n", "// Copyright 2016 Joyent, Inc.\n\nmodule.exports = Certificate;\n\nvar assert = require('assert-plus');\nvar Buffer = require('safer-buffer').Buffer;\nvar algs = require('./algs');\nvar crypto = require('crypto');\nvar Fingerprint = require('./fingerprint');\nvar Signature = require('./signature');\nvar errs = require('./errors');\nvar util = require('util');\nvar utils = require('./utils');\nvar Key = require('./key');\nvar PrivateKey = require('./private-key');\nvar Identity = require('./identity');\n\nvar formats = {};\nformats['openssh'] = require('./formats/openssh-cert');\nformats['x509'] = require('./formats/x509');\nformats['pem'] = require('./formats/x509-pem');\n\nvar CertificateParseError = errs.CertificateParseError;\nvar InvalidAlgorithmError = errs.InvalidAlgorithmError;\n\nfunction Certificate(opts) {\n\tassert.object(opts, 'options');\n\tassert.arrayOfObject(opts.subjects, 'options.subjects');\n\tutils.assertCompatible(opts.subjects[0], Identity, [1, 0],\n\t 'options.subjects');\n\tutils.assertCompatible(opts.subjectKey, Key, [1, 0],\n\t 'options.subjectKey');\n\tutils.assertCompatible(opts.issuer, Identity, [1, 0], 'options.issuer');\n\tif (opts.issuerKey !== undefined) {\n\t\tutils.assertCompatible(opts.issuerKey, Key, [1, 0],\n\t\t 'options.issuerKey');\n\t}\n\tassert.object(opts.signatures, 'options.signatures');\n\tassert.buffer(opts.serial, 'options.serial');\n\tassert.date(opts.validFrom, 'options.validFrom');\n\tassert.date(opts.validUntil, 'optons.validUntil');\n\n\tassert.optionalArrayOfString(opts.purposes, 'options.purposes');\n\n\tthis._hashCache = {};\n\n\tthis.subjects = opts.subjects;\n\tthis.issuer = opts.issuer;\n\tthis.subjectKey = opts.subjectKey;\n\tthis.issuerKey = opts.issuerKey;\n\tthis.signatures = opts.signatures;\n\tthis.serial = opts.serial;\n\tthis.validFrom = opts.validFrom;\n\tthis.validUntil = opts.validUntil;\n\tthis.purposes = opts.purposes;\n}\n\nCertificate.formats = formats;\n\nCertificate.prototype.toBuffer = function (format, options) {\n\tif (format === undefined)\n\t\tformat = 'x509';\n\tassert.string(format, 'format');\n\tassert.object(formats[format], 'formats[format]');\n\tassert.optionalObject(options, 'options');\n\n\treturn (formats[format].write(this, options));\n};\n\nCertificate.prototype.toString = function (format, options) {\n\tif (format === undefined)\n\t\tformat = 'pem';\n\treturn (this.toBuffer(format, options).toString());\n};\n\nCertificate.prototype.fingerprint = function (algo) {\n\tif (algo === undefined)\n\t\talgo = 'sha256';\n\tassert.string(algo, 'algorithm');\n\tvar opts = {\n\t\ttype: 'certificate',\n\t\thash: this.hash(algo),\n\t\talgorithm: algo\n\t};\n\treturn (new Fingerprint(opts));\n};\n\nCertificate.prototype.hash = function (algo) {\n\tassert.string(algo, 'algorithm');\n\talgo = algo.toLowerCase();\n\tif (algs.hashAlgs[algo] === undefined)\n\t\tthrow (new InvalidAlgorithmError(algo));\n\n\tif (this._hashCache[algo])\n\t\treturn (this._hashCache[algo]);\n\n\tvar hash = crypto.createHash(algo).\n\t update(this.toBuffer('x509')).digest();\n\tthis._hashCache[algo] = hash;\n\treturn (hash);\n};\n\nCertificate.prototype.isExpired = function (when) {\n\tif (when === undefined)\n\t\twhen = new Date();\n\treturn (!((when.getTime() >= this.validFrom.getTime()) &&\n\t\t(when.getTime() < this.validUntil.getTime())));\n};\n\nCertificate.prototype.isSignedBy = function (issuerCert) {\n\tutils.assertCompatible(issuerCert, Certificate, [1, 0], 'issuer');\n\n\tif (!this.issuer.equals(issuerCert.subjects[0]))\n\t\treturn (false);\n\tif (this.issuer.purposes && this.issuer.purposes.length > 0 &&\n\t this.issuer.purposes.indexOf('ca') === -1) {\n\t\treturn (false);\n\t}\n\n\treturn (this.isSignedByKey(issuerCert.subjectKey));\n};\n\nCertificate.prototype.getExtension = function (keyOrOid) {\n\tassert.string(keyOrOid, 'keyOrOid');\n\tvar ext = this.getExtensions().filter(function (maybeExt) {\n\t\tif (maybeExt.format === 'x509')\n\t\t\treturn (maybeExt.oid === keyOrOid);\n\t\tif (maybeExt.format === 'openssh')\n\t\t\treturn (maybeExt.name === keyOrOid);\n\t\treturn (false);\n\t})[0];\n\treturn (ext);\n};\n\nCertificate.prototype.getExtensions = function () {\n\tvar exts = [];\n\tvar x509 = this.signatures.x509;\n\tif (x509 && x509.extras && x509.extras.exts) {\n\t\tx509.extras.exts.forEach(function (ext) {\n\t\t\text.format = 'x509';\n\t\t\texts.push(ext);\n\t\t});\n\t}\n\tvar openssh = this.signatures.openssh;\n\tif (openssh && openssh.exts) {\n\t\topenssh.exts.forEach(function (ext) {\n\t\t\text.format = 'openssh';\n\t\t\texts.push(ext);\n\t\t});\n\t}\n\treturn (exts);\n};\n\nCertificate.prototype.isSignedByKey = function (issuerKey) {\n\tutils.assertCompatible(issuerKey, Key, [1, 2], 'issuerKey');\n\n\tif (this.issuerKey !== undefined) {\n\t\treturn (this.issuerKey.\n\t\t fingerprint('sha512').matches(issuerKey));\n\t}\n\n\tvar fmt = Object.keys(this.signatures)[0];\n\tvar valid = formats[fmt].verify(this, issuerKey);\n\tif (valid)\n\t\tthis.issuerKey = issuerKey;\n\treturn (valid);\n};\n\nCertificate.prototype.signWith = function (key) {\n\tutils.assertCompatible(key, PrivateKey, [1, 2], 'key');\n\tvar fmts = Object.keys(formats);\n\tvar didOne = false;\n\tfor (var i = 0; i < fmts.length; ++i) {\n\t\tif (fmts[i] !== 'pem') {\n\t\t\tvar ret = formats[fmts[i]].sign(this, key);\n\t\t\tif (ret === true)\n\t\t\t\tdidOne = true;\n\t\t}\n\t}\n\tif (!didOne) {\n\t\tthrow (new Error('Failed to sign the certificate for any ' +\n\t\t 'available certificate formats'));\n\t}\n};\n\nCertificate.createSelfSigned = function (subjectOrSubjects, key, options) {\n\tvar subjects;\n\tif (Array.isArray(subjectOrSubjects))\n\t\tsubjects = subjectOrSubjects;\n\telse\n\t\tsubjects = [subjectOrSubjects];\n\n\tassert.arrayOfObject(subjects);\n\tsubjects.forEach(function (subject) {\n\t\tutils.assertCompatible(subject, Identity, [1, 0], 'subject');\n\t});\n\n\tutils.assertCompatible(key, PrivateKey, [1, 2], 'private key');\n\n\tassert.optionalObject(options, 'options');\n\tif (options === undefined)\n\t\toptions = {};\n\tassert.optionalObject(options.validFrom, 'options.validFrom');\n\tassert.optionalObject(options.validUntil, 'options.validUntil');\n\tvar validFrom = options.validFrom;\n\tvar validUntil = options.validUntil;\n\tif (validFrom === undefined)\n\t\tvalidFrom = new Date();\n\tif (validUntil === undefined) {\n\t\tassert.optionalNumber(options.lifetime, 'options.lifetime');\n\t\tvar lifetime = options.lifetime;\n\t\tif (lifetime === undefined)\n\t\t\tlifetime = 10*365*24*3600;\n\t\tvalidUntil = new Date();\n\t\tvalidUntil.setTime(validUntil.getTime() + lifetime*1000);\n\t}\n\tassert.optionalBuffer(options.serial, 'options.serial');\n\tvar serial = options.serial;\n\tif (serial === undefined)\n\t\tserial = Buffer.from('0000000000000001', 'hex');\n\n\tvar purposes = options.purposes;\n\tif (purposes === undefined)\n\t\tpurposes = [];\n\n\tif (purposes.indexOf('signature') === -1)\n\t\tpurposes.push('signature');\n\n\t/* Self-signed certs are always CAs. */\n\tif (purposes.indexOf('ca') === -1)\n\t\tpurposes.push('ca');\n\tif (purposes.indexOf('crl') === -1)\n\t\tpurposes.push('crl');\n\n\t/*\n\t * If we weren't explicitly given any other purposes, do the sensible\n\t * thing and add some basic ones depending on the subject type.\n\t */\n\tif (purposes.length <= 3) {\n\t\tvar hostSubjects = subjects.filter(function (subject) {\n\t\t\treturn (subject.type === 'host');\n\t\t});\n\t\tvar userSubjects = subjects.filter(function (subject) {\n\t\t\treturn (subject.type === 'user');\n\t\t});\n\t\tif (hostSubjects.length > 0) {\n\t\t\tif (purposes.indexOf('serverAuth') === -1)\n\t\t\t\tpurposes.push('serverAuth');\n\t\t}\n\t\tif (userSubjects.length > 0) {\n\t\t\tif (purposes.indexOf('clientAuth') === -1)\n\t\t\t\tpurposes.push('clientAuth');\n\t\t}\n\t\tif (userSubjects.length > 0 || hostSubjects.length > 0) {\n\t\t\tif (purposes.indexOf('keyAgreement') === -1)\n\t\t\t\tpurposes.push('keyAgreement');\n\t\t\tif (key.type === 'rsa' &&\n\t\t\t purposes.indexOf('encryption') === -1)\n\t\t\t\tpurposes.push('encryption');\n\t\t}\n\t}\n\n\tvar cert = new Certificate({\n\t\tsubjects: subjects,\n\t\tissuer: subjects[0],\n\t\tsubjectKey: key.toPublic(),\n\t\tissuerKey: key.toPublic(),\n\t\tsignatures: {},\n\t\tserial: serial,\n\t\tvalidFrom: validFrom,\n\t\tvalidUntil: validUntil,\n\t\tpurposes: purposes\n\t});\n\tcert.signWith(key);\n\n\treturn (cert);\n};\n\nCertificate.create =\n function (subjectOrSubjects, key, issuer, issuerKey, options) {\n\tvar subjects;\n\tif (Array.isArray(subjectOrSubjects))\n\t\tsubjects = subjectOrSubjects;\n\telse\n\t\tsubjects = [subjectOrSubjects];\n\n\tassert.arrayOfObject(subjects);\n\tsubjects.forEach(function (subject) {\n\t\tutils.assertCompatible(subject, Identity, [1, 0], 'subject');\n\t});\n\n\tutils.assertCompatible(key, Key, [1, 0], 'key');\n\tif (PrivateKey.isPrivateKey(key))\n\t\tkey = key.toPublic();\n\tutils.assertCompatible(issuer, Identity, [1, 0], 'issuer');\n\tutils.assertCompatible(issuerKey, PrivateKey, [1, 2], 'issuer key');\n\n\tassert.optionalObject(options, 'options');\n\tif (options === undefined)\n\t\toptions = {};\n\tassert.optionalObject(options.validFrom, 'options.validFrom');\n\tassert.optionalObject(options.validUntil, 'options.validUntil');\n\tvar validFrom = options.validFrom;\n\tvar validUntil = options.validUntil;\n\tif (validFrom === undefined)\n\t\tvalidFrom = new Date();\n\tif (validUntil === undefined) {\n\t\tassert.optionalNumber(options.lifetime, 'options.lifetime');\n\t\tvar lifetime = options.lifetime;\n\t\tif (lifetime === undefined)\n\t\t\tlifetime = 10*365*24*3600;\n\t\tvalidUntil = new Date();\n\t\tvalidUntil.setTime(validUntil.getTime() + lifetime*1000);\n\t}\n\tassert.optionalBuffer(options.serial, 'options.serial');\n\tvar serial = options.serial;\n\tif (serial === undefined)\n\t\tserial = Buffer.from('0000000000000001', 'hex');\n\n\tvar purposes = options.purposes;\n\tif (purposes === undefined)\n\t\tpurposes = [];\n\n\tif (purposes.indexOf('signature') === -1)\n\t\tpurposes.push('signature');\n\n\tif (options.ca === true) {\n\t\tif (purposes.indexOf('ca') === -1)\n\t\t\tpurposes.push('ca');\n\t\tif (purposes.indexOf('crl') === -1)\n\t\t\tpurposes.push('crl');\n\t}\n\n\tvar hostSubjects = subjects.filter(function (subject) {\n\t\treturn (subject.type === 'host');\n\t});\n\tvar userSubjects = subjects.filter(function (subject) {\n\t\treturn (subject.type === 'user');\n\t});\n\tif (hostSubjects.length > 0) {\n\t\tif (purposes.indexOf('serverAuth') === -1)\n\t\t\tpurposes.push('serverAuth');\n\t}\n\tif (userSubjects.length > 0) {\n\t\tif (purposes.indexOf('clientAuth') === -1)\n\t\t\tpurposes.push('clientAuth');\n\t}\n\tif (userSubjects.length > 0 || hostSubjects.length > 0) {\n\t\tif (purposes.indexOf('keyAgreement') === -1)\n\t\t\tpurposes.push('keyAgreement');\n\t\tif (key.type === 'rsa' &&\n\t\t purposes.indexOf('encryption') === -1)\n\t\t\tpurposes.push('encryption');\n\t}\n\n\tvar cert = new Certificate({\n\t\tsubjects: subjects,\n\t\tissuer: issuer,\n\t\tsubjectKey: key,\n\t\tissuerKey: issuerKey.toPublic(),\n\t\tsignatures: {},\n\t\tserial: serial,\n\t\tvalidFrom: validFrom,\n\t\tvalidUntil: validUntil,\n\t\tpurposes: purposes\n\t});\n\tcert.signWith(issuerKey);\n\n\treturn (cert);\n};\n\nCertificate.parse = function (data, format, options) {\n\tif (typeof (data) !== 'string')\n\t\tassert.buffer(data, 'data');\n\tif (format === undefined)\n\t\tformat = 'auto';\n\tassert.string(format, 'format');\n\tif (typeof (options) === 'string')\n\t\toptions = { filename: options };\n\tassert.optionalObject(options, 'options');\n\tif (options === undefined)\n\t\toptions = {};\n\tassert.optionalString(options.filename, 'options.filename');\n\tif (options.filename === undefined)\n\t\toptions.filename = '(unnamed)';\n\n\tassert.object(formats[format], 'formats[format]');\n\n\ttry {\n\t\tvar k = formats[format].read(data, options);\n\t\treturn (k);\n\t} catch (e) {\n\t\tthrow (new CertificateParseError(options.filename, format, e));\n\t}\n};\n\nCertificate.isCertificate = function (obj, ver) {\n\treturn (utils.isCompatible(obj, Certificate, ver));\n};\n\n/*\n * API versions for Certificate:\n * [1,0] -- initial ver\n * [1,1] -- openssh format now unpacks extensions\n */\nCertificate.prototype._sshpkApiVersion = [1, 1];\n\nCertificate._oldVersionDetect = function (obj) {\n\treturn ([1, 0]);\n};\n", "// Copyright 2018 Joyent, Inc.\n\nmodule.exports = Fingerprint;\n\nvar assert = require('assert-plus');\nvar Buffer = require('safer-buffer').Buffer;\nvar algs = require('./algs');\nvar crypto = require('crypto');\nvar errs = require('./errors');\nvar Key = require('./key');\nvar PrivateKey = require('./private-key');\nvar Certificate = require('./certificate');\nvar utils = require('./utils');\n\nvar FingerprintFormatError = errs.FingerprintFormatError;\nvar InvalidAlgorithmError = errs.InvalidAlgorithmError;\n\nfunction Fingerprint(opts) {\n\tassert.object(opts, 'options');\n\tassert.string(opts.type, 'options.type');\n\tassert.buffer(opts.hash, 'options.hash');\n\tassert.string(opts.algorithm, 'options.algorithm');\n\n\tthis.algorithm = opts.algorithm.toLowerCase();\n\tif (algs.hashAlgs[this.algorithm] !== true)\n\t\tthrow (new InvalidAlgorithmError(this.algorithm));\n\n\tthis.hash = opts.hash;\n\tthis.type = opts.type;\n\tthis.hashType = opts.hashType;\n}\n\nFingerprint.prototype.toString = function (format) {\n\tif (format === undefined) {\n\t\tif (this.algorithm === 'md5' || this.hashType === 'spki')\n\t\t\tformat = 'hex';\n\t\telse\n\t\t\tformat = 'base64';\n\t}\n\tassert.string(format);\n\n\tswitch (format) {\n\tcase 'hex':\n\t\tif (this.hashType === 'spki')\n\t\t\treturn (this.hash.toString('hex'));\n\t\treturn (addColons(this.hash.toString('hex')));\n\tcase 'base64':\n\t\tif (this.hashType === 'spki')\n\t\t\treturn (this.hash.toString('base64'));\n\t\treturn (sshBase64Format(this.algorithm,\n\t\t this.hash.toString('base64')));\n\tdefault:\n\t\tthrow (new FingerprintFormatError(undefined, format));\n\t}\n};\n\nFingerprint.prototype.matches = function (other) {\n\tassert.object(other, 'key or certificate');\n\tif (this.type === 'key' && this.hashType !== 'ssh') {\n\t\tutils.assertCompatible(other, Key, [1, 7], 'key with spki');\n\t\tif (PrivateKey.isPrivateKey(other)) {\n\t\t\tutils.assertCompatible(other, PrivateKey, [1, 6],\n\t\t\t 'privatekey with spki support');\n\t\t}\n\t} else if (this.type === 'key') {\n\t\tutils.assertCompatible(other, Key, [1, 0], 'key');\n\t} else {\n\t\tutils.assertCompatible(other, Certificate, [1, 0],\n\t\t 'certificate');\n\t}\n\n\tvar theirHash = other.hash(this.algorithm, this.hashType);\n\tvar theirHash2 = crypto.createHash(this.algorithm).\n\t update(theirHash).digest('base64');\n\n\tif (this.hash2 === undefined)\n\t\tthis.hash2 = crypto.createHash(this.algorithm).\n\t\t update(this.hash).digest('base64');\n\n\treturn (this.hash2 === theirHash2);\n};\n\n/*JSSTYLED*/\nvar base64RE = /^[A-Za-z0-9+\\/=]+$/;\n/*JSSTYLED*/\nvar hexRE = /^[a-fA-F0-9]+$/;\n\nFingerprint.parse = function (fp, options) {\n\tassert.string(fp, 'fingerprint');\n\n\tvar alg, hash, enAlgs;\n\tif (Array.isArray(options)) {\n\t\tenAlgs = options;\n\t\toptions = {};\n\t}\n\tassert.optionalObject(options, 'options');\n\tif (options === undefined)\n\t\toptions = {};\n\tif (options.enAlgs !== undefined)\n\t\tenAlgs = options.enAlgs;\n\tif (options.algorithms !== undefined)\n\t\tenAlgs = options.algorithms;\n\tassert.optionalArrayOfString(enAlgs, 'algorithms');\n\n\tvar hashType = 'ssh';\n\tif (options.hashType !== undefined)\n\t\thashType = options.hashType;\n\tassert.string(hashType, 'options.hashType');\n\n\tvar parts = fp.split(':');\n\tif (parts.length == 2) {\n\t\talg = parts[0].toLowerCase();\n\t\tif (!base64RE.test(parts[1]))\n\t\t\tthrow (new FingerprintFormatError(fp));\n\t\ttry {\n\t\t\thash = Buffer.from(parts[1], 'base64');\n\t\t} catch (e) {\n\t\t\tthrow (new FingerprintFormatError(fp));\n\t\t}\n\t} else if (parts.length > 2) {\n\t\talg = 'md5';\n\t\tif (parts[0].toLowerCase() === 'md5')\n\t\t\tparts = parts.slice(1);\n\t\tparts = parts.map(function (p) {\n\t\t\twhile (p.length < 2)\n\t\t\t\tp = '0' + p;\n\t\t\tif (p.length > 2)\n\t\t\t\tthrow (new FingerprintFormatError(fp));\n\t\t\treturn (p);\n\t\t});\n\t\tparts = parts.join('');\n\t\tif (!hexRE.test(parts) || parts.length % 2 !== 0)\n\t\t\tthrow (new FingerprintFormatError(fp));\n\t\ttry {\n\t\t\thash = Buffer.from(parts, 'hex');\n\t\t} catch (e) {\n\t\t\tthrow (new FingerprintFormatError(fp));\n\t\t}\n\t} else {\n\t\tif (hexRE.test(fp)) {\n\t\t\thash = Buffer.from(fp, 'hex');\n\t\t} else if (base64RE.test(fp)) {\n\t\t\thash = Buffer.from(fp, 'base64');\n\t\t} else {\n\t\t\tthrow (new FingerprintFormatError(fp));\n\t\t}\n\n\t\tswitch (hash.length) {\n\t\tcase 32:\n\t\t\talg = 'sha256';\n\t\t\tbreak;\n\t\tcase 16:\n\t\t\talg = 'md5';\n\t\t\tbreak;\n\t\tcase 20:\n\t\t\talg = 'sha1';\n\t\t\tbreak;\n\t\tcase 64:\n\t\t\talg = 'sha512';\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tthrow (new FingerprintFormatError(fp));\n\t\t}\n\n\t\t/* Plain hex/base64: guess it's probably SPKI unless told. */\n\t\tif (options.hashType === undefined)\n\t\t\thashType = 'spki';\n\t}\n\n\tif (alg === undefined)\n\t\tthrow (new FingerprintFormatError(fp));\n\n\tif (algs.hashAlgs[alg] === undefined)\n\t\tthrow (new InvalidAlgorithmError(alg));\n\n\tif (enAlgs !== undefined) {\n\t\tenAlgs = enAlgs.map(function (a) { return a.toLowerCase(); });\n\t\tif (enAlgs.indexOf(alg) === -1)\n\t\t\tthrow (new InvalidAlgorithmError(alg));\n\t}\n\n\treturn (new Fingerprint({\n\t\talgorithm: alg,\n\t\thash: hash,\n\t\ttype: options.type || 'key',\n\t\thashType: hashType\n\t}));\n};\n\nfunction addColons(s) {\n\t/*JSSTYLED*/\n\treturn (s.replace(/(.{2})(?=.)/g, '$1:'));\n}\n\nfunction base64Strip(s) {\n\t/*JSSTYLED*/\n\treturn (s.replace(/=*$/, ''));\n}\n\nfunction sshBase64Format(alg, h) {\n\treturn (alg.toUpperCase() + ':' + base64Strip(h));\n}\n\nFingerprint.isFingerprint = function (obj, ver) {\n\treturn (utils.isCompatible(obj, Fingerprint, ver));\n};\n\n/*\n * API versions for Fingerprint:\n * [1,0] -- initial ver\n * [1,1] -- first tagged ver\n * [1,2] -- hashType and spki support\n */\nFingerprint.prototype._sshpkApiVersion = [1, 2];\n\nFingerprint._oldVersionDetect = function (obj) {\n\tassert.func(obj.toString);\n\tassert.func(obj.matches);\n\treturn ([1, 0]);\n};\n", "// Copyright 2018 Joyent, Inc.\n\nmodule.exports = Key;\n\nvar assert = require('assert-plus');\nvar algs = require('./algs');\nvar crypto = require('crypto');\nvar Fingerprint = require('./fingerprint');\nvar Signature = require('./signature');\nvar DiffieHellman = require('./dhe').DiffieHellman;\nvar errs = require('./errors');\nvar utils = require('./utils');\nvar PrivateKey = require('./private-key');\nvar edCompat;\n\ntry {\n\tedCompat = require('./ed-compat');\n} catch (e) {\n\t/* Just continue through, and bail out if we try to use it. */\n}\n\nvar InvalidAlgorithmError = errs.InvalidAlgorithmError;\nvar KeyParseError = errs.KeyParseError;\n\nvar formats = {};\nformats['auto'] = require('./formats/auto');\nformats['pem'] = require('./formats/pem');\nformats['pkcs1'] = require('./formats/pkcs1');\nformats['pkcs8'] = require('./formats/pkcs8');\nformats['rfc4253'] = require('./formats/rfc4253');\nformats['ssh'] = require('./formats/ssh');\nformats['ssh-private'] = require('./formats/ssh-private');\nformats['openssh'] = formats['ssh-private'];\nformats['dnssec'] = require('./formats/dnssec');\nformats['putty'] = require('./formats/putty');\nformats['ppk'] = formats['putty'];\n\nfunction Key(opts) {\n\tassert.object(opts, 'options');\n\tassert.arrayOfObject(opts.parts, 'options.parts');\n\tassert.string(opts.type, 'options.type');\n\tassert.optionalString(opts.comment, 'options.comment');\n\n\tvar algInfo = algs.info[opts.type];\n\tif (typeof (algInfo) !== 'object')\n\t\tthrow (new InvalidAlgorithmError(opts.type));\n\n\tvar partLookup = {};\n\tfor (var i = 0; i < opts.parts.length; ++i) {\n\t\tvar part = opts.parts[i];\n\t\tpartLookup[part.name] = part;\n\t}\n\n\tthis.type = opts.type;\n\tthis.parts = opts.parts;\n\tthis.part = partLookup;\n\tthis.comment = undefined;\n\tthis.source = opts.source;\n\n\t/* for speeding up hashing/fingerprint operations */\n\tthis._rfc4253Cache = opts._rfc4253Cache;\n\tthis._hashCache = {};\n\n\tvar sz;\n\tthis.curve = undefined;\n\tif (this.type === 'ecdsa') {\n\t\tvar curve = this.part.curve.data.toString();\n\t\tthis.curve = curve;\n\t\tsz = algs.curves[curve].size;\n\t} else if (this.type === 'ed25519' || this.type === 'curve25519') {\n\t\tsz = 256;\n\t\tthis.curve = 'curve25519';\n\t} else {\n\t\tvar szPart = this.part[algInfo.sizePart];\n\t\tsz = szPart.data.length;\n\t\tsz = sz * 8 - utils.countZeros(szPart.data);\n\t}\n\tthis.size = sz;\n}\n\nKey.formats = formats;\n\nKey.prototype.toBuffer = function (format, options) {\n\tif (format === undefined)\n\t\tformat = 'ssh';\n\tassert.string(format, 'format');\n\tassert.object(formats[format], 'formats[format]');\n\tassert.optionalObject(options, 'options');\n\n\tif (format === 'rfc4253') {\n\t\tif (this._rfc4253Cache === undefined)\n\t\t\tthis._rfc4253Cache = formats['rfc4253'].write(this);\n\t\treturn (this._rfc4253Cache);\n\t}\n\n\treturn (formats[format].write(this, options));\n};\n\nKey.prototype.toString = function (format, options) {\n\treturn (this.toBuffer(format, options).toString());\n};\n\nKey.prototype.hash = function (algo, type) {\n\tassert.string(algo, 'algorithm');\n\tassert.optionalString(type, 'type');\n\tif (type === undefined)\n\t\ttype = 'ssh';\n\talgo = algo.toLowerCase();\n\tif (algs.hashAlgs[algo] === undefined)\n\t\tthrow (new InvalidAlgorithmError(algo));\n\n\tvar cacheKey = algo + '||' + type;\n\tif (this._hashCache[cacheKey])\n\t\treturn (this._hashCache[cacheKey]);\n\n\tvar buf;\n\tif (type === 'ssh') {\n\t\tbuf = this.toBuffer('rfc4253');\n\t} else if (type === 'spki') {\n\t\tbuf = formats.pkcs8.pkcs8ToBuffer(this);\n\t} else {\n\t\tthrow (new Error('Hash type ' + type + ' not supported'));\n\t}\n\tvar hash = crypto.createHash(algo).update(buf).digest();\n\tthis._hashCache[cacheKey] = hash;\n\treturn (hash);\n};\n\nKey.prototype.fingerprint = function (algo, type) {\n\tif (algo === undefined)\n\t\talgo = 'sha256';\n\tif (type === undefined)\n\t\ttype = 'ssh';\n\tassert.string(algo, 'algorithm');\n\tassert.string(type, 'type');\n\tvar opts = {\n\t\ttype: 'key',\n\t\thash: this.hash(algo, type),\n\t\talgorithm: algo,\n\t\thashType: type\n\t};\n\treturn (new Fingerprint(opts));\n};\n\nKey.prototype.defaultHashAlgorithm = function () {\n\tvar hashAlgo = 'sha1';\n\tif (this.type === 'rsa')\n\t\thashAlgo = 'sha256';\n\tif (this.type === 'dsa' && this.size > 1024)\n\t\thashAlgo = 'sha256';\n\tif (this.type === 'ed25519')\n\t\thashAlgo = 'sha512';\n\tif (this.type === 'ecdsa') {\n\t\tif (this.size <= 256)\n\t\t\thashAlgo = 'sha256';\n\t\telse if (this.size <= 384)\n\t\t\thashAlgo = 'sha384';\n\t\telse\n\t\t\thashAlgo = 'sha512';\n\t}\n\treturn (hashAlgo);\n};\n\nKey.prototype.createVerify = function (hashAlgo) {\n\tif (hashAlgo === undefined)\n\t\thashAlgo = this.defaultHashAlgorithm();\n\tassert.string(hashAlgo, 'hash algorithm');\n\n\t/* ED25519 is not supported by OpenSSL, use a javascript impl. */\n\tif (this.type === 'ed25519' && edCompat !== undefined)\n\t\treturn (new edCompat.Verifier(this, hashAlgo));\n\tif (this.type === 'curve25519')\n\t\tthrow (new Error('Curve25519 keys are not suitable for ' +\n\t\t 'signing or verification'));\n\n\tvar v, nm, err;\n\ttry {\n\t\tnm = hashAlgo.toUpperCase();\n\t\tv = crypto.createVerify(nm);\n\t} catch (e) {\n\t\terr = e;\n\t}\n\tif (v === undefined || (err instanceof Error &&\n\t err.message.match(/Unknown message digest/))) {\n\t\tnm = 'RSA-';\n\t\tnm += hashAlgo.toUpperCase();\n\t\tv = crypto.createVerify(nm);\n\t}\n\tassert.ok(v, 'failed to create verifier');\n\tvar oldVerify = v.verify.bind(v);\n\tvar key = this.toBuffer('pkcs8');\n\tvar curve = this.curve;\n\tvar self = this;\n\tv.verify = function (signature, fmt) {\n\t\tif (Signature.isSignature(signature, [2, 0])) {\n\t\t\tif (signature.type !== self.type)\n\t\t\t\treturn (false);\n\t\t\tif (signature.hashAlgorithm &&\n\t\t\t signature.hashAlgorithm !== hashAlgo)\n\t\t\t\treturn (false);\n\t\t\tif (signature.curve && self.type === 'ecdsa' &&\n\t\t\t signature.curve !== curve)\n\t\t\t\treturn (false);\n\t\t\treturn (oldVerify(key, signature.toBuffer('asn1')));\n\n\t\t} else if (typeof (signature) === 'string' ||\n\t\t Buffer.isBuffer(signature)) {\n\t\t\treturn (oldVerify(key, signature, fmt));\n\n\t\t/*\n\t\t * Avoid doing this on valid arguments, walking the prototype\n\t\t * chain can be quite slow.\n\t\t */\n\t\t} else if (Signature.isSignature(signature, [1, 0])) {\n\t\t\tthrow (new Error('signature was created by too old ' +\n\t\t\t 'a version of sshpk and cannot be verified'));\n\n\t\t} else {\n\t\t\tthrow (new TypeError('signature must be a string, ' +\n\t\t\t 'Buffer, or Signature object'));\n\t\t}\n\t};\n\treturn (v);\n};\n\nKey.prototype.createDiffieHellman = function () {\n\tif (this.type === 'rsa')\n\t\tthrow (new Error('RSA keys do not support Diffie-Hellman'));\n\n\treturn (new DiffieHellman(this));\n};\nKey.prototype.createDH = Key.prototype.createDiffieHellman;\n\nKey.parse = function (data, format, options) {\n\tif (typeof (data) !== 'string')\n\t\tassert.buffer(data, 'data');\n\tif (format === undefined)\n\t\tformat = 'auto';\n\tassert.string(format, 'format');\n\tif (typeof (options) === 'string')\n\t\toptions = { filename: options };\n\tassert.optionalObject(options, 'options');\n\tif (options === undefined)\n\t\toptions = {};\n\tassert.optionalString(options.filename, 'options.filename');\n\tif (options.filename === undefined)\n\t\toptions.filename = '(unnamed)';\n\n\tassert.object(formats[format], 'formats[format]');\n\n\ttry {\n\t\tvar k = formats[format].read(data, options);\n\t\tif (k instanceof PrivateKey)\n\t\t\tk = k.toPublic();\n\t\tif (!k.comment)\n\t\t\tk.comment = options.filename;\n\t\treturn (k);\n\t} catch (e) {\n\t\tif (e.name === 'KeyEncryptedError')\n\t\t\tthrow (e);\n\t\tthrow (new KeyParseError(options.filename, format, e));\n\t}\n};\n\nKey.isKey = function (obj, ver) {\n\treturn (utils.isCompatible(obj, Key, ver));\n};\n\n/*\n * API versions for Key:\n * [1,0] -- initial ver, may take Signature for createVerify or may not\n * [1,1] -- added pkcs1, pkcs8 formats\n * [1,2] -- added auto, ssh-private, openssh formats\n * [1,3] -- added defaultHashAlgorithm\n * [1,4] -- added ed support, createDH\n * [1,5] -- first explicitly tagged version\n * [1,6] -- changed ed25519 part names\n * [1,7] -- spki hash types\n */\nKey.prototype._sshpkApiVersion = [1, 7];\n\nKey._oldVersionDetect = function (obj) {\n\tassert.func(obj.toBuffer);\n\tassert.func(obj.fingerprint);\n\tif (obj.createDH)\n\t\treturn ([1, 4]);\n\tif (obj.defaultHashAlgorithm)\n\t\treturn ([1, 3]);\n\tif (obj.formats['auto'])\n\t\treturn ([1, 2]);\n\tif (obj.formats['pkcs1'])\n\t\treturn ([1, 1]);\n\treturn ([1, 0]);\n};\n", "// Copyright 2015 Joyent, Inc.\n\nvar Key = require('./key');\nvar Fingerprint = require('./fingerprint');\nvar Signature = require('./signature');\nvar PrivateKey = require('./private-key');\nvar Certificate = require('./certificate');\nvar Identity = require('./identity');\nvar errs = require('./errors');\n\nmodule.exports = {\n\t/* top-level classes */\n\tKey: Key,\n\tparseKey: Key.parse,\n\tFingerprint: Fingerprint,\n\tparseFingerprint: Fingerprint.parse,\n\tSignature: Signature,\n\tparseSignature: Signature.parse,\n\tPrivateKey: PrivateKey,\n\tparsePrivateKey: PrivateKey.parse,\n\tgeneratePrivateKey: PrivateKey.generate,\n\tCertificate: Certificate,\n\tparseCertificate: Certificate.parse,\n\tcreateSelfSignedCertificate: Certificate.createSelfSigned,\n\tcreateCertificate: Certificate.create,\n\tIdentity: Identity,\n\tidentityFromDN: Identity.parseDN,\n\tidentityForHost: Identity.forHost,\n\tidentityForUser: Identity.forUser,\n\tidentityForEmail: Identity.forEmail,\n\tidentityFromArray: Identity.fromArray,\n\n\t/* errors */\n\tFingerprintFormatError: errs.FingerprintFormatError,\n\tInvalidAlgorithmError: errs.InvalidAlgorithmError,\n\tKeyParseError: errs.KeyParseError,\n\tSignatureParseError: errs.SignatureParseError,\n\tKeyEncryptedError: errs.KeyEncryptedError,\n\tCertificateParseError: errs.CertificateParseError\n};\n", "// Copyright 2012 Joyent, Inc. All rights reserved.\n\nvar assert = require('assert-plus');\nvar sshpk = require('sshpk');\nvar util = require('util');\n\nvar HASH_ALGOS = {\n 'sha1': true,\n 'sha256': true,\n 'sha512': true\n};\n\nvar PK_ALGOS = {\n 'rsa': true,\n 'dsa': true,\n 'ecdsa': true\n};\n\nfunction HttpSignatureError(message, caller) {\n if (Error.captureStackTrace)\n Error.captureStackTrace(this, caller || HttpSignatureError);\n\n this.message = message;\n this.name = caller.name;\n}\nutil.inherits(HttpSignatureError, Error);\n\nfunction InvalidAlgorithmError(message) {\n HttpSignatureError.call(this, message, InvalidAlgorithmError);\n}\nutil.inherits(InvalidAlgorithmError, HttpSignatureError);\n\nfunction validateAlgorithm(algorithm) {\n var alg = algorithm.toLowerCase().split('-');\n\n if (alg.length !== 2) {\n throw (new InvalidAlgorithmError(alg[0].toUpperCase() + ' is not a ' +\n 'valid algorithm'));\n }\n\n if (alg[0] !== 'hmac' && !PK_ALGOS[alg[0]]) {\n throw (new InvalidAlgorithmError(alg[0].toUpperCase() + ' type keys ' +\n 'are not supported'));\n }\n\n if (!HASH_ALGOS[alg[1]]) {\n throw (new InvalidAlgorithmError(alg[1].toUpperCase() + ' is not a ' +\n 'supported hash algorithm'));\n }\n\n return (alg);\n}\n\n///--- API\n\nmodule.exports = {\n\n HASH_ALGOS: HASH_ALGOS,\n PK_ALGOS: PK_ALGOS,\n\n HttpSignatureError: HttpSignatureError,\n InvalidAlgorithmError: InvalidAlgorithmError,\n\n validateAlgorithm: validateAlgorithm,\n\n /**\n * Converts an OpenSSH public key (rsa only) to a PKCS#8 PEM file.\n *\n * The intent of this module is to interoperate with OpenSSL only,\n * specifically the node crypto module's `verify` method.\n *\n * @param {String} key an OpenSSH public key.\n * @return {String} PEM encoded form of the RSA public key.\n * @throws {TypeError} on bad input.\n * @throws {Error} on invalid ssh key formatted data.\n */\n sshKeyToPEM: function sshKeyToPEM(key) {\n assert.string(key, 'ssh_key');\n\n var k = sshpk.parseKey(key, 'ssh');\n return (k.toString('pem'));\n },\n\n\n /**\n * Generates an OpenSSH fingerprint from an ssh public key.\n *\n * @param {String} key an OpenSSH public key.\n * @return {String} key fingerprint.\n * @throws {TypeError} on bad input.\n * @throws {Error} if what you passed doesn't look like an ssh public key.\n */\n fingerprint: function fingerprint(key) {\n assert.string(key, 'ssh_key');\n\n var k = sshpk.parseKey(key, 'ssh');\n return (k.fingerprint('md5').toString('hex'));\n },\n\n /**\n * Converts a PKGCS#8 PEM file to an OpenSSH public key (rsa)\n *\n * The reverse of the above function.\n */\n pemToRsaSSHKey: function pemToRsaSSHKey(pem, comment) {\n assert.equal('string', typeof (pem), 'typeof pem');\n\n var k = sshpk.parseKey(pem, 'pem');\n k.comment = comment;\n return (k.toString('ssh'));\n }\n};\n", "// Copyright 2012 Joyent, Inc. All rights reserved.\n\nvar assert = require('assert-plus');\nvar util = require('util');\nvar utils = require('./utils');\n\n\n\n///--- Globals\n\nvar HASH_ALGOS = utils.HASH_ALGOS;\nvar PK_ALGOS = utils.PK_ALGOS;\nvar HttpSignatureError = utils.HttpSignatureError;\nvar InvalidAlgorithmError = utils.InvalidAlgorithmError;\nvar validateAlgorithm = utils.validateAlgorithm;\n\nvar State = {\n New: 0,\n Params: 1\n};\n\nvar ParamsState = {\n Name: 0,\n Quote: 1,\n Value: 2,\n Comma: 3\n};\n\n\n///--- Specific Errors\n\n\nfunction ExpiredRequestError(message) {\n HttpSignatureError.call(this, message, ExpiredRequestError);\n}\nutil.inherits(ExpiredRequestError, HttpSignatureError);\n\n\nfunction InvalidHeaderError(message) {\n HttpSignatureError.call(this, message, InvalidHeaderError);\n}\nutil.inherits(InvalidHeaderError, HttpSignatureError);\n\n\nfunction InvalidParamsError(message) {\n HttpSignatureError.call(this, message, InvalidParamsError);\n}\nutil.inherits(InvalidParamsError, HttpSignatureError);\n\n\nfunction MissingHeaderError(message) {\n HttpSignatureError.call(this, message, MissingHeaderError);\n}\nutil.inherits(MissingHeaderError, HttpSignatureError);\n\nfunction StrictParsingError(message) {\n HttpSignatureError.call(this, message, StrictParsingError);\n}\nutil.inherits(StrictParsingError, HttpSignatureError);\n\n///--- Exported API\n\nmodule.exports = {\n\n /**\n * Parses the 'Authorization' header out of an http.ServerRequest object.\n *\n * Note that this API will fully validate the Authorization header, and throw\n * on any error. It will not however check the signature, or the keyId format\n * as those are specific to your environment. You can use the options object\n * to pass in extra constraints.\n *\n * As a response object you can expect this:\n *\n * {\n * \"scheme\": \"Signature\",\n * \"params\": {\n * \"keyId\": \"foo\",\n * \"algorithm\": \"rsa-sha256\",\n * \"headers\": [\n * \"date\" or \"x-date\",\n * \"digest\"\n * ],\n * \"signature\": \"base64\"\n * },\n * \"signingString\": \"ready to be passed to crypto.verify()\"\n * }\n *\n * @param {Object} request an http.ServerRequest.\n * @param {Object} options an optional options object with:\n * - clockSkew: allowed clock skew in seconds (default 300).\n * - headers: required header names (def: date or x-date)\n * - algorithms: algorithms to support (default: all).\n * - strict: should enforce latest spec parsing\n * (default: false).\n * @return {Object} parsed out object (see above).\n * @throws {TypeError} on invalid input.\n * @throws {InvalidHeaderError} on an invalid Authorization header error.\n * @throws {InvalidParamsError} if the params in the scheme are invalid.\n * @throws {MissingHeaderError} if the params indicate a header not present,\n * either in the request headers from the params,\n * or not in the params from a required header\n * in options.\n * @throws {StrictParsingError} if old attributes are used in strict parsing\n * mode.\n * @throws {ExpiredRequestError} if the value of date or x-date exceeds skew.\n */\n parseRequest: function parseRequest(request, options) {\n assert.object(request, 'request');\n assert.object(request.headers, 'request.headers');\n if (options === undefined) {\n options = {};\n }\n if (options.headers === undefined) {\n options.headers = [request.headers['x-date'] ? 'x-date' : 'date'];\n }\n assert.object(options, 'options');\n assert.arrayOfString(options.headers, 'options.headers');\n assert.optionalFinite(options.clockSkew, 'options.clockSkew');\n\n var authzHeaderName = options.authorizationHeaderName || 'authorization';\n\n if (!request.headers[authzHeaderName]) {\n throw new MissingHeaderError('no ' + authzHeaderName + ' header ' +\n 'present in the request');\n }\n\n options.clockSkew = options.clockSkew || 300;\n\n\n var i = 0;\n var state = State.New;\n var substate = ParamsState.Name;\n var tmpName = '';\n var tmpValue = '';\n\n var parsed = {\n scheme: '',\n params: {},\n signingString: ''\n };\n\n var authz = request.headers[authzHeaderName];\n for (i = 0; i < authz.length; i++) {\n var c = authz.charAt(i);\n\n switch (Number(state)) {\n\n case State.New:\n if (c !== ' ') parsed.scheme += c;\n else state = State.Params;\n break;\n\n case State.Params:\n switch (Number(substate)) {\n\n case ParamsState.Name:\n var code = c.charCodeAt(0);\n // restricted name of A-Z / a-z\n if ((code >= 0x41 && code <= 0x5a) || // A-Z\n (code >= 0x61 && code <= 0x7a)) { // a-z\n tmpName += c;\n } else if (c === '=') {\n if (tmpName.length === 0)\n throw new InvalidHeaderError('bad param format');\n substate = ParamsState.Quote;\n } else {\n throw new InvalidHeaderError('bad param format');\n }\n break;\n\n case ParamsState.Quote:\n if (c === '\"') {\n tmpValue = '';\n substate = ParamsState.Value;\n } else {\n throw new InvalidHeaderError('bad param format');\n }\n break;\n\n case ParamsState.Value:\n if (c === '\"') {\n parsed.params[tmpName] = tmpValue;\n substate = ParamsState.Comma;\n } else {\n tmpValue += c;\n }\n break;\n\n case ParamsState.Comma:\n if (c === ',') {\n tmpName = '';\n substate = ParamsState.Name;\n } else {\n throw new InvalidHeaderError('bad param format');\n }\n break;\n\n default:\n throw new Error('Invalid substate');\n }\n break;\n\n default:\n throw new Error('Invalid substate');\n }\n\n }\n\n if (!parsed.params.headers || parsed.params.headers === '') {\n if (request.headers['x-date']) {\n parsed.params.headers = ['x-date'];\n } else {\n parsed.params.headers = ['date'];\n }\n } else {\n parsed.params.headers = parsed.params.headers.split(' ');\n }\n\n // Minimally validate the parsed object\n if (!parsed.scheme || parsed.scheme !== 'Signature')\n throw new InvalidHeaderError('scheme was not \"Signature\"');\n\n if (!parsed.params.keyId)\n throw new InvalidHeaderError('keyId was not specified');\n\n if (!parsed.params.algorithm)\n throw new InvalidHeaderError('algorithm was not specified');\n\n if (!parsed.params.signature)\n throw new InvalidHeaderError('signature was not specified');\n\n // Check the algorithm against the official list\n parsed.params.algorithm = parsed.params.algorithm.toLowerCase();\n try {\n validateAlgorithm(parsed.params.algorithm);\n } catch (e) {\n if (e instanceof InvalidAlgorithmError)\n throw (new InvalidParamsError(parsed.params.algorithm + ' is not ' +\n 'supported'));\n else\n throw (e);\n }\n\n // Build the signingString\n for (i = 0; i < parsed.params.headers.length; i++) {\n var h = parsed.params.headers[i].toLowerCase();\n parsed.params.headers[i] = h;\n\n if (h === 'request-line') {\n if (!options.strict) {\n /*\n * We allow headers from the older spec drafts if strict parsing isn't\n * specified in options.\n */\n parsed.signingString +=\n request.method + ' ' + request.url + ' HTTP/' + request.httpVersion;\n } else {\n /* Strict parsing doesn't allow older draft headers. */\n throw (new StrictParsingError('request-line is not a valid header ' +\n 'with strict parsing enabled.'));\n }\n } else if (h === '(request-target)') {\n parsed.signingString +=\n '(request-target): ' + request.method.toLowerCase() + ' ' +\n request.url;\n } else {\n var value = request.headers[h];\n if (value === undefined)\n throw new MissingHeaderError(h + ' was not in the request');\n parsed.signingString += h + ': ' + value;\n }\n\n if ((i + 1) < parsed.params.headers.length)\n parsed.signingString += '\\n';\n }\n\n // Check against the constraints\n var date;\n if (request.headers.date || request.headers['x-date']) {\n if (request.headers['x-date']) {\n date = new Date(request.headers['x-date']);\n } else {\n date = new Date(request.headers.date);\n }\n var now = new Date();\n var skew = Math.abs(now.getTime() - date.getTime());\n\n if (skew > options.clockSkew * 1000) {\n throw new ExpiredRequestError('clock skew of ' +\n (skew / 1000) +\n 's was greater than ' +\n options.clockSkew + 's');\n }\n }\n\n options.headers.forEach(function (hdr) {\n // Remember that we already checked any headers in the params\n // were in the request, so if this passes we're good.\n if (parsed.params.headers.indexOf(hdr.toLowerCase()) < 0)\n throw new MissingHeaderError(hdr + ' was not a signed header');\n });\n\n if (options.algorithms) {\n if (options.algorithms.indexOf(parsed.params.algorithm) === -1)\n throw new InvalidParamsError(parsed.params.algorithm +\n ' is not a supported algorithm');\n }\n\n parsed.algorithm = parsed.params.algorithm.toUpperCase();\n parsed.keyId = parsed.params.keyId;\n return parsed;\n }\n\n};\n", "/*\n * extsprintf.js: extended POSIX-style sprintf\n */\n\nvar mod_assert = require('assert');\nvar mod_util = require('util');\n\n/*\n * Public interface\n */\nexports.sprintf = jsSprintf;\nexports.printf = jsPrintf;\nexports.fprintf = jsFprintf;\n\n/*\n * Stripped down version of s[n]printf(3c). We make a best effort to throw an\n * exception when given a format string we don't understand, rather than\n * ignoring it, so that we won't break existing programs if/when we go implement\n * the rest of this.\n *\n * This implementation currently supports specifying\n *\t- field alignment ('-' flag),\n * \t- zero-pad ('0' flag)\n *\t- always show numeric sign ('+' flag),\n *\t- field width\n *\t- conversions for strings, decimal integers, and floats (numbers).\n *\t- argument size specifiers. These are all accepted but ignored, since\n *\t Javascript has no notion of the physical size of an argument.\n *\n * Everything else is currently unsupported, most notably precision, unsigned\n * numbers, non-decimal numbers, and characters.\n */\nfunction jsSprintf(fmt)\n{\n\tvar regex = [\n\t '([^%]*)',\t\t\t\t/* normal text */\n\t '%',\t\t\t\t/* start of format */\n\t '([\\'\\\\-+ #0]*?)',\t\t\t/* flags (optional) */\n\t '([1-9]\\\\d*)?',\t\t\t/* width (optional) */\n\t '(\\\\.([1-9]\\\\d*))?',\t\t/* precision (optional) */\n\t '[lhjztL]*?',\t\t\t/* length mods (ignored) */\n\t '([diouxXfFeEgGaAcCsSp%jr])'\t/* conversion */\n\t].join('');\n\n\tvar re = new RegExp(regex);\n\tvar args = Array.prototype.slice.call(arguments, 1);\n\tvar flags, width, precision, conversion;\n\tvar left, pad, sign, arg, match;\n\tvar ret = '';\n\tvar argn = 1;\n\n\tmod_assert.equal('string', typeof (fmt));\n\n\twhile ((match = re.exec(fmt)) !== null) {\n\t\tret += match[1];\n\t\tfmt = fmt.substring(match[0].length);\n\n\t\tflags = match[2] || '';\n\t\twidth = match[3] || 0;\n\t\tprecision = match[4] || '';\n\t\tconversion = match[6];\n\t\tleft = false;\n\t\tsign = false;\n\t\tpad = ' ';\n\n\t\tif (conversion == '%') {\n\t\t\tret += '%';\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (args.length === 0)\n\t\t\tthrow (new Error('too few args to sprintf'));\n\n\t\targ = args.shift();\n\t\targn++;\n\n\t\tif (flags.match(/[\\' #]/))\n\t\t\tthrow (new Error(\n\t\t\t 'unsupported flags: ' + flags));\n\n\t\tif (precision.length > 0)\n\t\t\tthrow (new Error(\n\t\t\t 'non-zero precision not supported'));\n\n\t\tif (flags.match(/-/))\n\t\t\tleft = true;\n\n\t\tif (flags.match(/0/))\n\t\t\tpad = '0';\n\n\t\tif (flags.match(/\\+/))\n\t\t\tsign = true;\n\n\t\tswitch (conversion) {\n\t\tcase 's':\n\t\t\tif (arg === undefined || arg === null)\n\t\t\t\tthrow (new Error('argument ' + argn +\n\t\t\t\t ': attempted to print undefined or null ' +\n\t\t\t\t 'as a string'));\n\t\t\tret += doPad(pad, width, left, arg.toString());\n\t\t\tbreak;\n\n\t\tcase 'd':\n\t\t\targ = Math.floor(arg);\n\t\t\t/*jsl:fallthru*/\n\t\tcase 'f':\n\t\t\tsign = sign && arg > 0 ? '+' : '';\n\t\t\tret += sign + doPad(pad, width, left,\n\t\t\t arg.toString());\n\t\t\tbreak;\n\n\t\tcase 'x':\n\t\t\tret += doPad(pad, width, left, arg.toString(16));\n\t\t\tbreak;\n\n\t\tcase 'j': /* non-standard */\n\t\t\tif (width === 0)\n\t\t\t\twidth = 10;\n\t\t\tret += mod_util.inspect(arg, false, width);\n\t\t\tbreak;\n\n\t\tcase 'r': /* non-standard */\n\t\t\tret += dumpException(arg);\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tthrow (new Error('unsupported conversion: ' +\n\t\t\t conversion));\n\t\t}\n\t}\n\n\tret += fmt;\n\treturn (ret);\n}\n\nfunction jsPrintf() {\n\tvar args = Array.prototype.slice.call(arguments);\n\targs.unshift(process.stdout);\n\tjsFprintf.apply(null, args);\n}\n\nfunction jsFprintf(stream) {\n\tvar args = Array.prototype.slice.call(arguments, 1);\n\treturn (stream.write(jsSprintf.apply(this, args)));\n}\n\nfunction doPad(chr, width, left, str)\n{\n\tvar ret = str;\n\n\twhile (ret.length < width) {\n\t\tif (left)\n\t\t\tret += chr;\n\t\telse\n\t\t\tret = chr + ret;\n\t}\n\n\treturn (ret);\n}\n\n/*\n * This function dumps long stack traces for exceptions having a cause() method.\n * See node-verror for an example.\n */\nfunction dumpException(ex)\n{\n\tvar ret;\n\n\tif (!(ex instanceof Error))\n\t\tthrow (new Error(jsSprintf('invalid type for %%r: %j', ex)));\n\n\t/* Note that V8 prepends \"ex.stack\" with ex.toString(). */\n\tret = 'EXCEPTION: ' + ex.constructor.name + ': ' + ex.stack;\n\n\tif (ex.cause && typeof (ex.cause) === 'function') {\n\t\tvar cex = ex.cause();\n\t\tif (cex) {\n\t\t\tret += '\\nCaused by: ' + dumpException(cex);\n\t\t}\n\t}\n\n\treturn (ret);\n}\n", "/*\n * extsprintf.js: extended POSIX-style sprintf\n */\n\nvar mod_assert = require('assert');\nvar mod_util = require('util');\n\n/*\n * Public interface\n */\nexports.sprintf = jsSprintf;\nexports.printf = jsPrintf;\nexports.fprintf = jsFprintf;\n\n/*\n * Stripped down version of s[n]printf(3c). We make a best effort to throw an\n * exception when given a format string we don't understand, rather than\n * ignoring it, so that we won't break existing programs if/when we go implement\n * the rest of this.\n *\n * This implementation currently supports specifying\n *\t- field alignment ('-' flag),\n * \t- zero-pad ('0' flag)\n *\t- always show numeric sign ('+' flag),\n *\t- field width\n *\t- conversions for strings, decimal integers, and floats (numbers).\n *\t- argument size specifiers. These are all accepted but ignored, since\n *\t Javascript has no notion of the physical size of an argument.\n *\n * Everything else is currently unsupported, most notably precision, unsigned\n * numbers, non-decimal numbers, and characters.\n */\nfunction jsSprintf(ofmt)\n{\n\tvar regex = [\n\t '([^%]*)',\t\t\t\t/* normal text */\n\t '%',\t\t\t\t/* start of format */\n\t '([\\'\\\\-+ #0]*?)',\t\t\t/* flags (optional) */\n\t '([1-9]\\\\d*)?',\t\t\t/* width (optional) */\n\t '(\\\\.([1-9]\\\\d*))?',\t\t/* precision (optional) */\n\t '[lhjztL]*?',\t\t\t/* length mods (ignored) */\n\t '([diouxXfFeEgGaAcCsSp%jr])'\t/* conversion */\n\t].join('');\n\n\tvar re = new RegExp(regex);\n\n\t/* variadic arguments used to fill in conversion specifiers */\n\tvar args = Array.prototype.slice.call(arguments, 1);\n\t/* remaining format string */\n\tvar fmt = ofmt;\n\n\t/* components of the current conversion specifier */\n\tvar flags, width, precision, conversion;\n\tvar left, pad, sign, arg, match;\n\n\t/* return value */\n\tvar ret = '';\n\n\t/* current variadic argument (1-based) */\n\tvar argn = 1;\n\t/* 0-based position in the format string that we've read */\n\tvar posn = 0;\n\t/* 1-based position in the format string of the current conversion */\n\tvar convposn;\n\t/* current conversion specifier */\n\tvar curconv;\n\n\tmod_assert.equal('string', typeof (fmt),\n\t 'first argument must be a format string');\n\n\twhile ((match = re.exec(fmt)) !== null) {\n\t\tret += match[1];\n\t\tfmt = fmt.substring(match[0].length);\n\n\t\t/*\n\t\t * Update flags related to the current conversion specifier's\n\t\t * position so that we can report clear error messages.\n\t\t */\n\t\tcurconv = match[0].substring(match[1].length);\n\t\tconvposn = posn + match[1].length + 1;\n\t\tposn += match[0].length;\n\n\t\tflags = match[2] || '';\n\t\twidth = match[3] || 0;\n\t\tprecision = match[4] || '';\n\t\tconversion = match[6];\n\t\tleft = false;\n\t\tsign = false;\n\t\tpad = ' ';\n\n\t\tif (conversion == '%') {\n\t\t\tret += '%';\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (args.length === 0) {\n\t\t\tthrow (jsError(ofmt, convposn, curconv,\n\t\t\t 'has no matching argument ' +\n\t\t\t '(too few arguments passed)'));\n\t\t}\n\n\t\targ = args.shift();\n\t\targn++;\n\n\t\tif (flags.match(/[\\' #]/)) {\n\t\t\tthrow (jsError(ofmt, convposn, curconv,\n\t\t\t 'uses unsupported flags'));\n\t\t}\n\n\t\tif (precision.length > 0) {\n\t\t\tthrow (jsError(ofmt, convposn, curconv,\n\t\t\t 'uses non-zero precision (not supported)'));\n\t\t}\n\n\t\tif (flags.match(/-/))\n\t\t\tleft = true;\n\n\t\tif (flags.match(/0/))\n\t\t\tpad = '0';\n\n\t\tif (flags.match(/\\+/))\n\t\t\tsign = true;\n\n\t\tswitch (conversion) {\n\t\tcase 's':\n\t\t\tif (arg === undefined || arg === null) {\n\t\t\t\tthrow (jsError(ofmt, convposn, curconv,\n\t\t\t\t 'attempted to print undefined or null ' +\n\t\t\t\t 'as a string (argument ' + argn + ' to ' +\n\t\t\t\t 'sprintf)'));\n\t\t\t}\n\t\t\tret += doPad(pad, width, left, arg.toString());\n\t\t\tbreak;\n\n\t\tcase 'd':\n\t\t\targ = Math.floor(arg);\n\t\t\t/*jsl:fallthru*/\n\t\tcase 'f':\n\t\t\tsign = sign && arg > 0 ? '+' : '';\n\t\t\tret += sign + doPad(pad, width, left,\n\t\t\t arg.toString());\n\t\t\tbreak;\n\n\t\tcase 'x':\n\t\t\tret += doPad(pad, width, left, arg.toString(16));\n\t\t\tbreak;\n\n\t\tcase 'j': /* non-standard */\n\t\t\tif (width === 0)\n\t\t\t\twidth = 10;\n\t\t\tret += mod_util.inspect(arg, false, width);\n\t\t\tbreak;\n\n\t\tcase 'r': /* non-standard */\n\t\t\tret += dumpException(arg);\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tthrow (jsError(ofmt, convposn, curconv,\n\t\t\t 'is not supported'));\n\t\t}\n\t}\n\n\tret += fmt;\n\treturn (ret);\n}\n\nfunction jsError(fmtstr, convposn, curconv, reason) {\n\tmod_assert.equal(typeof (fmtstr), 'string');\n\tmod_assert.equal(typeof (curconv), 'string');\n\tmod_assert.equal(typeof (convposn), 'number');\n\tmod_assert.equal(typeof (reason), 'string');\n\treturn (new Error('format string \"' + fmtstr +\n\t '\": conversion specifier \"' + curconv + '\" at character ' +\n\t convposn + ' ' + reason));\n}\n\nfunction jsPrintf() {\n\tvar args = Array.prototype.slice.call(arguments);\n\targs.unshift(process.stdout);\n\tjsFprintf.apply(null, args);\n}\n\nfunction jsFprintf(stream) {\n\tvar args = Array.prototype.slice.call(arguments, 1);\n\treturn (stream.write(jsSprintf.apply(this, args)));\n}\n\nfunction doPad(chr, width, left, str)\n{\n\tvar ret = str;\n\n\twhile (ret.length < width) {\n\t\tif (left)\n\t\t\tret += chr;\n\t\telse\n\t\t\tret = chr + ret;\n\t}\n\n\treturn (ret);\n}\n\n/*\n * This function dumps long stack traces for exceptions having a cause() method.\n * See node-verror for an example.\n */\nfunction dumpException(ex)\n{\n\tvar ret;\n\n\tif (!(ex instanceof Error))\n\t\tthrow (new Error(jsSprintf('invalid type for %%r: %j', ex)));\n\n\t/* Note that V8 prepends \"ex.stack\" with ex.toString(). */\n\tret = 'EXCEPTION: ' + ex.constructor.name + ': ' + ex.stack;\n\n\tif (ex.cause && typeof (ex.cause) === 'function') {\n\t\tvar cex = ex.cause();\n\t\tif (cex) {\n\t\t\tret += '\\nCaused by: ' + dumpException(cex);\n\t\t}\n\t}\n\n\treturn (ret);\n}\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\n\nfunction isArray(arg) {\n if (Array.isArray) {\n return Array.isArray(arg);\n }\n return objectToString(arg) === '[object Array]';\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = Buffer.isBuffer;\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n", "/*\n * verror.js: richer JavaScript errors\n */\n\nvar mod_assertplus = require('assert-plus');\nvar mod_util = require('util');\n\nvar mod_extsprintf = require('extsprintf');\nvar mod_isError = require('core-util-is').isError;\nvar sprintf = mod_extsprintf.sprintf;\n\n/*\n * Public interface\n */\n\n/* So you can 'var VError = require('verror')' */\nmodule.exports = VError;\n/* For compatibility */\nVError.VError = VError;\n/* Other exported classes */\nVError.SError = SError;\nVError.WError = WError;\nVError.MultiError = MultiError;\n\n/*\n * Common function used to parse constructor arguments for VError, WError, and\n * SError. Named arguments to this function:\n *\n * strict\t\tforce strict interpretation of sprintf arguments, even\n * \t\t\tif the options in \"argv\" don't say so\n *\n * argv\t\terror's constructor arguments, which are to be\n * \t\t\tinterpreted as described in README.md. For quick\n * \t\t\treference, \"argv\" has one of the following forms:\n *\n * [ sprintf_args... ] (argv[0] is a string)\n * [ cause, sprintf_args... ] (argv[0] is an Error)\n * [ options, sprintf_args... ] (argv[0] is an object)\n *\n * This function normalizes these forms, producing an object with the following\n * properties:\n *\n * options equivalent to \"options\" in third form. This will never\n * \t\t\tbe a direct reference to what the caller passed in\n * \t\t\t(i.e., it may be a shallow copy), so it can be freely\n * \t\t\tmodified.\n *\n * shortmessage result of sprintf(sprintf_args), taking options.strict\n * \t\t\tinto account as described in README.md.\n */\nfunction parseConstructorArguments(args)\n{\n\tvar argv, options, sprintf_args, shortmessage, k;\n\n\tmod_assertplus.object(args, 'args');\n\tmod_assertplus.bool(args.strict, 'args.strict');\n\tmod_assertplus.array(args.argv, 'args.argv');\n\targv = args.argv;\n\n\t/*\n\t * First, figure out which form of invocation we've been given.\n\t */\n\tif (argv.length === 0) {\n\t\toptions = {};\n\t\tsprintf_args = [];\n\t} else if (mod_isError(argv[0])) {\n\t\toptions = { 'cause': argv[0] };\n\t\tsprintf_args = argv.slice(1);\n\t} else if (typeof (argv[0]) === 'object') {\n\t\toptions = {};\n\t\tfor (k in argv[0]) {\n\t\t\toptions[k] = argv[0][k];\n\t\t}\n\t\tsprintf_args = argv.slice(1);\n\t} else {\n\t\tmod_assertplus.string(argv[0],\n\t\t 'first argument to VError, SError, or WError ' +\n\t\t 'constructor must be a string, object, or Error');\n\t\toptions = {};\n\t\tsprintf_args = argv;\n\t}\n\n\t/*\n\t * Now construct the error's message.\n\t *\n\t * extsprintf (which we invoke here with our caller's arguments in order\n\t * to construct this Error's message) is strict in its interpretation of\n\t * values to be processed by the \"%s\" specifier. The value passed to\n\t * extsprintf must actually be a string or something convertible to a\n\t * String using .toString(). Passing other values (notably \"null\" and\n\t * \"undefined\") is considered a programmer error. The assumption is\n\t * that if you actually want to print the string \"null\" or \"undefined\",\n\t * then that's easy to do that when you're calling extsprintf; on the\n\t * other hand, if you did NOT want that (i.e., there's actually a bug\n\t * where the program assumes some variable is non-null and tries to\n\t * print it, which might happen when constructing a packet or file in\n\t * some specific format), then it's better to stop immediately than\n\t * produce bogus output.\n\t *\n\t * However, sometimes the bug is only in the code calling VError, and a\n\t * programmer might prefer to have the error message contain \"null\" or\n\t * \"undefined\" rather than have the bug in the error path crash the\n\t * program (making the first bug harder to identify). For that reason,\n\t * by default VError converts \"null\" or \"undefined\" arguments to their\n\t * string representations and passes those to extsprintf. Programmers\n\t * desiring the strict behavior can use the SError class or pass the\n\t * \"strict\" option to the VError constructor.\n\t */\n\tmod_assertplus.object(options);\n\tif (!options.strict && !args.strict) {\n\t\tsprintf_args = sprintf_args.map(function (a) {\n\t\t\treturn (a === null ? 'null' :\n\t\t\t a === undefined ? 'undefined' : a);\n\t\t});\n\t}\n\n\tif (sprintf_args.length === 0) {\n\t\tshortmessage = '';\n\t} else {\n\t\tshortmessage = sprintf.apply(null, sprintf_args);\n\t}\n\n\treturn ({\n\t 'options': options,\n\t 'shortmessage': shortmessage\n\t});\n}\n\n/*\n * See README.md for reference documentation.\n */\nfunction VError()\n{\n\tvar args, obj, parsed, cause, ctor, message, k;\n\n\targs = Array.prototype.slice.call(arguments, 0);\n\n\t/*\n\t * This is a regrettable pattern, but JavaScript's built-in Error class\n\t * is defined to work this way, so we allow the constructor to be called\n\t * without \"new\".\n\t */\n\tif (!(this instanceof VError)) {\n\t\tobj = Object.create(VError.prototype);\n\t\tVError.apply(obj, arguments);\n\t\treturn (obj);\n\t}\n\n\t/*\n\t * For convenience and backwards compatibility, we support several\n\t * different calling forms. Normalize them here.\n\t */\n\tparsed = parseConstructorArguments({\n\t 'argv': args,\n\t 'strict': false\n\t});\n\n\t/*\n\t * If we've been given a name, apply it now.\n\t */\n\tif (parsed.options.name) {\n\t\tmod_assertplus.string(parsed.options.name,\n\t\t 'error\\'s \"name\" must be a string');\n\t\tthis.name = parsed.options.name;\n\t}\n\n\t/*\n\t * For debugging, we keep track of the original short message (attached\n\t * this Error particularly) separately from the complete message (which\n\t * includes the messages of our cause chain).\n\t */\n\tthis.jse_shortmsg = parsed.shortmessage;\n\tmessage = parsed.shortmessage;\n\n\t/*\n\t * If we've been given a cause, record a reference to it and update our\n\t * message appropriately.\n\t */\n\tcause = parsed.options.cause;\n\tif (cause) {\n\t\tmod_assertplus.ok(mod_isError(cause), 'cause is not an Error');\n\t\tthis.jse_cause = cause;\n\n\t\tif (!parsed.options.skipCauseMessage) {\n\t\t\tmessage += ': ' + cause.message;\n\t\t}\n\t}\n\n\t/*\n\t * If we've been given an object with properties, shallow-copy that\n\t * here. We don't want to use a deep copy in case there are non-plain\n\t * objects here, but we don't want to use the original object in case\n\t * the caller modifies it later.\n\t */\n\tthis.jse_info = {};\n\tif (parsed.options.info) {\n\t\tfor (k in parsed.options.info) {\n\t\t\tthis.jse_info[k] = parsed.options.info[k];\n\t\t}\n\t}\n\n\tthis.message = message;\n\tError.call(this, message);\n\n\tif (Error.captureStackTrace) {\n\t\tctor = parsed.options.constructorOpt || this.constructor;\n\t\tError.captureStackTrace(this, ctor);\n\t}\n\n\treturn (this);\n}\n\nmod_util.inherits(VError, Error);\nVError.prototype.name = 'VError';\n\nVError.prototype.toString = function ve_toString()\n{\n\tvar str = (this.hasOwnProperty('name') && this.name ||\n\t\tthis.constructor.name || this.constructor.prototype.name);\n\tif (this.message)\n\t\tstr += ': ' + this.message;\n\n\treturn (str);\n};\n\n/*\n * This method is provided for compatibility. New callers should use\n * VError.cause() instead. That method also uses the saner `null` return value\n * when there is no cause.\n */\nVError.prototype.cause = function ve_cause()\n{\n\tvar cause = VError.cause(this);\n\treturn (cause === null ? undefined : cause);\n};\n\n/*\n * Static methods\n *\n * These class-level methods are provided so that callers can use them on\n * instances of Errors that are not VErrors. New interfaces should be provided\n * only using static methods to eliminate the class of programming mistake where\n * people fail to check whether the Error object has the corresponding methods.\n */\n\nVError.cause = function (err)\n{\n\tmod_assertplus.ok(mod_isError(err), 'err must be an Error');\n\treturn (mod_isError(err.jse_cause) ? err.jse_cause : null);\n};\n\nVError.info = function (err)\n{\n\tvar rv, cause, k;\n\n\tmod_assertplus.ok(mod_isError(err), 'err must be an Error');\n\tcause = VError.cause(err);\n\tif (cause !== null) {\n\t\trv = VError.info(cause);\n\t} else {\n\t\trv = {};\n\t}\n\n\tif (typeof (err.jse_info) == 'object' && err.jse_info !== null) {\n\t\tfor (k in err.jse_info) {\n\t\t\trv[k] = err.jse_info[k];\n\t\t}\n\t}\n\n\treturn (rv);\n};\n\nVError.findCauseByName = function (err, name)\n{\n\tvar cause;\n\n\tmod_assertplus.ok(mod_isError(err), 'err must be an Error');\n\tmod_assertplus.string(name, 'name');\n\tmod_assertplus.ok(name.length > 0, 'name cannot be empty');\n\n\tfor (cause = err; cause !== null; cause = VError.cause(cause)) {\n\t\tmod_assertplus.ok(mod_isError(cause));\n\t\tif (cause.name == name) {\n\t\t\treturn (cause);\n\t\t}\n\t}\n\n\treturn (null);\n};\n\nVError.hasCauseWithName = function (err, name)\n{\n\treturn (VError.findCauseByName(err, name) !== null);\n};\n\nVError.fullStack = function (err)\n{\n\tmod_assertplus.ok(mod_isError(err), 'err must be an Error');\n\n\tvar cause = VError.cause(err);\n\n\tif (cause) {\n\t\treturn (err.stack + '\\ncaused by: ' + VError.fullStack(cause));\n\t}\n\n\treturn (err.stack);\n};\n\nVError.errorFromList = function (errors)\n{\n\tmod_assertplus.arrayOfObject(errors, 'errors');\n\n\tif (errors.length === 0) {\n\t\treturn (null);\n\t}\n\n\terrors.forEach(function (e) {\n\t\tmod_assertplus.ok(mod_isError(e));\n\t});\n\n\tif (errors.length == 1) {\n\t\treturn (errors[0]);\n\t}\n\n\treturn (new MultiError(errors));\n};\n\nVError.errorForEach = function (err, func)\n{\n\tmod_assertplus.ok(mod_isError(err), 'err must be an Error');\n\tmod_assertplus.func(func, 'func');\n\n\tif (err instanceof MultiError) {\n\t\terr.errors().forEach(function iterError(e) { func(e); });\n\t} else {\n\t\tfunc(err);\n\t}\n};\n\n\n/*\n * SError is like VError, but stricter about types. You cannot pass \"null\" or\n * \"undefined\" as string arguments to the formatter.\n */\nfunction SError()\n{\n\tvar args, obj, parsed, options;\n\n\targs = Array.prototype.slice.call(arguments, 0);\n\tif (!(this instanceof SError)) {\n\t\tobj = Object.create(SError.prototype);\n\t\tSError.apply(obj, arguments);\n\t\treturn (obj);\n\t}\n\n\tparsed = parseConstructorArguments({\n\t 'argv': args,\n\t 'strict': true\n\t});\n\n\toptions = parsed.options;\n\tVError.call(this, options, '%s', parsed.shortmessage);\n\n\treturn (this);\n}\n\n/*\n * We don't bother setting SError.prototype.name because once constructed,\n * SErrors are just like VErrors.\n */\nmod_util.inherits(SError, VError);\n\n\n/*\n * Represents a collection of errors for the purpose of consumers that generally\n * only deal with one error. Callers can extract the individual errors\n * contained in this object, but may also just treat it as a normal single\n * error, in which case a summary message will be printed.\n */\nfunction MultiError(errors)\n{\n\tmod_assertplus.array(errors, 'list of errors');\n\tmod_assertplus.ok(errors.length > 0, 'must be at least one error');\n\tthis.ase_errors = errors;\n\n\tVError.call(this, {\n\t 'cause': errors[0]\n\t}, 'first of %d error%s', errors.length, errors.length == 1 ? '' : 's');\n}\n\nmod_util.inherits(MultiError, VError);\nMultiError.prototype.name = 'MultiError';\n\nMultiError.prototype.errors = function me_errors()\n{\n\treturn (this.ase_errors.slice(0));\n};\n\n\n/*\n * See README.md for reference details.\n */\nfunction WError()\n{\n\tvar args, obj, parsed, options;\n\n\targs = Array.prototype.slice.call(arguments, 0);\n\tif (!(this instanceof WError)) {\n\t\tobj = Object.create(WError.prototype);\n\t\tWError.apply(obj, args);\n\t\treturn (obj);\n\t}\n\n\tparsed = parseConstructorArguments({\n\t 'argv': args,\n\t 'strict': false\n\t});\n\n\toptions = parsed.options;\n\toptions['skipCauseMessage'] = true;\n\tVError.call(this, options, '%s', parsed.shortmessage);\n\n\treturn (this);\n}\n\nmod_util.inherits(WError, VError);\nWError.prototype.name = 'WError';\n\nWError.prototype.toString = function we_toString()\n{\n\tvar str = (this.hasOwnProperty('name') && this.name ||\n\t\tthis.constructor.name || this.constructor.prototype.name);\n\tif (this.message)\n\t\tstr += ': ' + this.message;\n\tif (this.jse_cause && this.jse_cause.message)\n\t\tstr += '; caused by ' + this.jse_cause.toString();\n\n\treturn (str);\n};\n\n/*\n * For purely historical reasons, WError's cause() function allows you to set\n * the cause.\n */\nWError.prototype.cause = function we_cause(c)\n{\n\tif (mod_isError(c))\n\t\tthis.jse_cause = c;\n\n\treturn (this.jse_cause);\n};\n", "/**\r\n * JSONSchema Validator - Validates JavaScript objects using JSON Schemas\r\n *\t(http://www.json.com/json-schema-proposal/)\r\n * Licensed under AFL-2.1 OR BSD-3-Clause\r\nTo use the validator call the validate function with an instance object and an optional schema object.\r\nIf a schema is provided, it will be used to validate. If the instance object refers to a schema (self-validating),\r\nthat schema will be used to validate and the schema parameter is not necessary (if both exist,\r\nboth validations will occur).\r\nThe validate method will return an array of validation errors. If there are no errors, then an\r\nempty list will be returned. A validation error will have two properties:\r\n\"property\" which indicates which property had the error\r\n\"message\" which indicates what the error was\r\n */\r\n(function (root, factory) {\r\n if (typeof define === 'function' && define.amd) {\r\n // AMD. Register as an anonymous module.\r\n define([], function () {\r\n return factory();\r\n });\r\n } else if (typeof module === 'object' && module.exports) {\r\n // Node. Does not work with strict CommonJS, but\r\n // only CommonJS-like environments that support module.exports,\r\n // like Node.\r\n module.exports = factory();\r\n } else {\r\n // Browser globals\r\n root.jsonSchema = factory();\r\n }\r\n}(this, function () {// setup primitive classes to be JSON Schema types\r\nvar exports = validate\r\nexports.Integer = {type:\"integer\"};\r\nvar primitiveConstructors = {\r\n\tString: String,\r\n\tBoolean: Boolean,\r\n\tNumber: Number,\r\n\tObject: Object,\r\n\tArray: Array,\r\n\tDate: Date\r\n}\r\nexports.validate = validate;\r\nfunction validate(/*Any*/instance,/*Object*/schema) {\r\n\t\t// Summary:\r\n\t\t// \tTo use the validator call JSONSchema.validate with an instance object and an optional schema object.\r\n\t\t// \t\tIf a schema is provided, it will be used to validate. If the instance object refers to a schema (self-validating),\r\n\t\t// \t\tthat schema will be used to validate and the schema parameter is not necessary (if both exist,\r\n\t\t// \t\tboth validations will occur).\r\n\t\t// \t\tThe validate method will return an object with two properties:\r\n\t\t// \t\t\tvalid: A boolean indicating if the instance is valid by the schema\r\n\t\t// \t\t\terrors: An array of validation errors. If there are no errors, then an\r\n\t\t// \t\t\t\t\tempty list will be returned. A validation error will have two properties:\r\n\t\t// \t\t\t\t\t\tproperty: which indicates which property had the error\r\n\t\t// \t\t\t\t\t\tmessage: which indicates what the error was\r\n\t\t//\r\n\t\treturn validate(instance, schema, {changing: false});//, coerce: false, existingOnly: false});\r\n\t};\r\nexports.checkPropertyChange = function(/*Any*/value,/*Object*/schema, /*String*/property) {\r\n\t\t// Summary:\r\n\t\t// \t\tThe checkPropertyChange method will check to see if an value can legally be in property with the given schema\r\n\t\t// \t\tThis is slightly different than the validate method in that it will fail if the schema is readonly and it will\r\n\t\t// \t\tnot check for self-validation, it is assumed that the passed in value is already internally valid.\r\n\t\t// \t\tThe checkPropertyChange method will return the same object type as validate, see JSONSchema.validate for\r\n\t\t// \t\tinformation.\r\n\t\t//\r\n\t\treturn validate(value, schema, {changing: property || \"property\"});\r\n\t};\r\nvar validate = exports._validate = function(/*Any*/instance,/*Object*/schema,/*Object*/options) {\r\n\r\n\tif (!options) options = {};\r\n\tvar _changing = options.changing;\r\n\r\n\tfunction getType(schema){\r\n\t\treturn schema.type || (primitiveConstructors[schema.name] == schema && schema.name.toLowerCase());\r\n\t}\r\n\tvar errors = [];\r\n\t// validate a value against a property definition\r\n\tfunction checkProp(value, schema, path,i){\r\n\r\n\t\tvar l;\r\n\t\tpath += path ? typeof i == 'number' ? '[' + i + ']' : typeof i == 'undefined' ? '' : '.' + i : i;\r\n\t\tfunction addError(message){\r\n\t\t\terrors.push({property:path,message:message});\r\n\t\t}\r\n\r\n\t\tif((typeof schema != 'object' || schema instanceof Array) && (path || typeof schema != 'function') && !(schema && getType(schema))){\r\n\t\t\tif(typeof schema == 'function'){\r\n\t\t\t\tif(!(value instanceof schema)){\r\n\t\t\t\t\taddError(\"is not an instance of the class/constructor \" + schema.name);\r\n\t\t\t\t}\r\n\t\t\t}else if(schema){\r\n\t\t\t\taddError(\"Invalid schema/property definition \" + schema);\r\n\t\t\t}\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\tif(_changing && schema.readonly){\r\n\t\t\taddError(\"is a readonly field, it can not be changed\");\r\n\t\t}\r\n\t\tif(schema['extends']){ // if it extends another schema, it must pass that schema as well\r\n\t\t\tcheckProp(value,schema['extends'],path,i);\r\n\t\t}\r\n\t\t// validate a value against a type definition\r\n\t\tfunction checkType(type,value){\r\n\t\t\tif(type){\r\n\t\t\t\tif(typeof type == 'string' && type != 'any' &&\r\n\t\t\t\t\t\t(type == 'null' ? value !== null : typeof value != type) &&\r\n\t\t\t\t\t\t!(value instanceof Array && type == 'array') &&\r\n\t\t\t\t\t\t!(value instanceof Date && type == 'date') &&\r\n\t\t\t\t\t\t!(type == 'integer' && value%1===0)){\r\n\t\t\t\t\treturn [{property:path,message:value + \" - \" + (typeof value) + \" value found, but a \" + type + \" is required\"}];\r\n\t\t\t\t}\r\n\t\t\t\tif(type instanceof Array){\r\n\t\t\t\t\tvar unionErrors=[];\r\n\t\t\t\t\tfor(var j = 0; j < type.length; j++){ // a union type\r\n\t\t\t\t\t\tif(!(unionErrors=checkType(type[j],value)).length){\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(unionErrors.length){\r\n\t\t\t\t\t\treturn unionErrors;\r\n\t\t\t\t\t}\r\n\t\t\t\t}else if(typeof type == 'object'){\r\n\t\t\t\t\tvar priorErrors = errors;\r\n\t\t\t\t\terrors = [];\r\n\t\t\t\t\tcheckProp(value,type,path);\r\n\t\t\t\t\tvar theseErrors = errors;\r\n\t\t\t\t\terrors = priorErrors;\r\n\t\t\t\t\treturn theseErrors;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn [];\r\n\t\t}\r\n\t\tif(value === undefined){\r\n\t\t\tif(schema.required){\r\n\t\t\t\taddError(\"is missing and it is required\");\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\terrors = errors.concat(checkType(getType(schema),value));\r\n\t\t\tif(schema.disallow && !checkType(schema.disallow,value).length){\r\n\t\t\t\taddError(\" disallowed value was matched\");\r\n\t\t\t}\r\n\t\t\tif(value !== null){\r\n\t\t\t\tif(value instanceof Array){\r\n\t\t\t\t\tif(schema.items){\r\n\t\t\t\t\t\tvar itemsIsArray = schema.items instanceof Array;\r\n\t\t\t\t\t\tvar propDef = schema.items;\r\n\t\t\t\t\t\tfor (i = 0, l = value.length; i < l; i += 1) {\r\n\t\t\t\t\t\t\tif (itemsIsArray)\r\n\t\t\t\t\t\t\t\tpropDef = schema.items[i];\r\n\t\t\t\t\t\t\tif (options.coerce)\r\n\t\t\t\t\t\t\t\tvalue[i] = options.coerce(value[i], propDef);\r\n\t\t\t\t\t\t\terrors.concat(checkProp(value[i],propDef,path,i));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(schema.minItems && value.length < schema.minItems){\r\n\t\t\t\t\t\taddError(\"There must be a minimum of \" + schema.minItems + \" in the array\");\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(schema.maxItems && value.length > schema.maxItems){\r\n\t\t\t\t\t\taddError(\"There must be a maximum of \" + schema.maxItems + \" in the array\");\r\n\t\t\t\t\t}\r\n\t\t\t\t}else if(schema.properties || schema.additionalProperties){\r\n\t\t\t\t\terrors.concat(checkObj(value, schema.properties, path, schema.additionalProperties));\r\n\t\t\t\t}\r\n\t\t\t\tif(schema.pattern && typeof value == 'string' && !value.match(schema.pattern)){\r\n\t\t\t\t\taddError(\"does not match the regex pattern \" + schema.pattern);\r\n\t\t\t\t}\r\n\t\t\t\tif(schema.maxLength && typeof value == 'string' && value.length > schema.maxLength){\r\n\t\t\t\t\taddError(\"may only be \" + schema.maxLength + \" characters long\");\r\n\t\t\t\t}\r\n\t\t\t\tif(schema.minLength && typeof value == 'string' && value.length < schema.minLength){\r\n\t\t\t\t\taddError(\"must be at least \" + schema.minLength + \" characters long\");\r\n\t\t\t\t}\r\n\t\t\t\tif(typeof schema.minimum !== 'undefined' && typeof value == typeof schema.minimum &&\r\n\t\t\t\t\t\tschema.minimum > value){\r\n\t\t\t\t\taddError(\"must have a minimum value of \" + schema.minimum);\r\n\t\t\t\t}\r\n\t\t\t\tif(typeof schema.maximum !== 'undefined' && typeof value == typeof schema.maximum &&\r\n\t\t\t\t\t\tschema.maximum < value){\r\n\t\t\t\t\taddError(\"must have a maximum value of \" + schema.maximum);\r\n\t\t\t\t}\r\n\t\t\t\tif(schema['enum']){\r\n\t\t\t\t\tvar enumer = schema['enum'];\r\n\t\t\t\t\tl = enumer.length;\r\n\t\t\t\t\tvar found;\r\n\t\t\t\t\tfor(var j = 0; j < l; j++){\r\n\t\t\t\t\t\tif(enumer[j]===value){\r\n\t\t\t\t\t\t\tfound=1;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(!found){\r\n\t\t\t\t\t\taddError(\"does not have a value in the enumeration \" + enumer.join(\", \"));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif(typeof schema.maxDecimal == 'number' &&\r\n\t\t\t\t\t(value.toString().match(new RegExp(\"\\\\.[0-9]{\" + (schema.maxDecimal + 1) + \",}\")))){\r\n\t\t\t\t\taddError(\"may only have \" + schema.maxDecimal + \" digits of decimal places\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\t// validate an object against a schema\r\n\tfunction checkObj(instance,objTypeDef,path,additionalProp){\r\n\r\n\t\tif(typeof objTypeDef =='object'){\r\n\t\t\tif(typeof instance != 'object' || instance instanceof Array){\r\n\t\t\t\terrors.push({property:path,message:\"an object is required\"});\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tfor(var i in objTypeDef){ \r\n\t\t\t\tif(objTypeDef.hasOwnProperty(i) && i != '__proto__' && i != 'constructor'){\r\n\t\t\t\t\tvar value = instance.hasOwnProperty(i) ? instance[i] : undefined;\r\n\t\t\t\t\t// skip _not_ specified properties\r\n\t\t\t\t\tif (value === undefined && options.existingOnly) continue;\r\n\t\t\t\t\tvar propDef = objTypeDef[i];\r\n\t\t\t\t\t// set default\r\n\t\t\t\t\tif(value === undefined && propDef[\"default\"]){\r\n\t\t\t\t\t\tvalue = instance[i] = propDef[\"default\"];\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(options.coerce && i in instance){\r\n\t\t\t\t\t\tvalue = instance[i] = options.coerce(value, propDef);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcheckProp(value,propDef,path,i);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tfor(i in instance){\r\n\t\t\tif(instance.hasOwnProperty(i) && !(i.charAt(0) == '_' && i.charAt(1) == '_') && objTypeDef && !objTypeDef[i] && additionalProp===false){\r\n\t\t\t\tif (options.filter) {\r\n\t\t\t\t\tdelete instance[i];\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t} else {\r\n\t\t\t\t\terrors.push({property:path,message:\"The property \" + i +\r\n\t\t\t\t\t\t\" is not defined in the schema and the schema does not allow additional properties\"});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tvar requires = objTypeDef && objTypeDef[i] && objTypeDef[i].requires;\r\n\t\t\tif(requires && !(requires in instance)){\r\n\t\t\t\terrors.push({property:path,message:\"the presence of the property \" + i + \" requires that \" + requires + \" also be present\"});\r\n\t\t\t}\r\n\t\t\tvalue = instance[i];\r\n\t\t\tif(additionalProp && (!(objTypeDef && typeof objTypeDef == 'object') || !(i in objTypeDef))){\r\n\t\t\t\tif(options.coerce){\r\n\t\t\t\t\tvalue = instance[i] = options.coerce(value, additionalProp);\r\n\t\t\t\t}\r\n\t\t\t\tcheckProp(value,additionalProp,path,i);\r\n\t\t\t}\r\n\t\t\tif(!_changing && value && value.$schema){\r\n\t\t\t\terrors = errors.concat(checkProp(value,value.$schema,path,i));\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn errors;\r\n\t}\r\n\tif(schema){\r\n\t\tcheckProp(instance,schema,'',_changing || '');\r\n\t}\r\n\tif(!_changing && instance && instance.$schema){\r\n\t\tcheckProp(instance,instance.$schema,'','');\r\n\t}\r\n\treturn {valid:!errors.length,errors:errors};\r\n};\r\nexports.mustBeValid = function(result){\r\n\t//\tsummary:\r\n\t//\t\tThis checks to ensure that the result is valid and will throw an appropriate error message if it is not\r\n\t// result: the result returned from checkPropertyChange or validate\r\n\tif(!result.valid){\r\n\t\tthrow new TypeError(result.errors.map(function(error){return \"for property \" + error.property + ': ' + error.message;}).join(\", \\n\"));\r\n\t}\r\n}\r\n\r\nreturn exports;\r\n}));\r\n", "/*\n * lib/jsprim.js: utilities for primitive JavaScript types\n */\n\nvar mod_assert = require('assert-plus');\nvar mod_util = require('util');\n\nvar mod_extsprintf = require('extsprintf');\nvar mod_verror = require('verror');\nvar mod_jsonschema = require('json-schema');\n\n/*\n * Public interface\n */\nexports.deepCopy = deepCopy;\nexports.deepEqual = deepEqual;\nexports.isEmpty = isEmpty;\nexports.hasKey = hasKey;\nexports.forEachKey = forEachKey;\nexports.pluck = pluck;\nexports.flattenObject = flattenObject;\nexports.flattenIter = flattenIter;\nexports.validateJsonObject = validateJsonObjectJS;\nexports.validateJsonObjectJS = validateJsonObjectJS;\nexports.randElt = randElt;\nexports.extraProperties = extraProperties;\nexports.mergeObjects = mergeObjects;\n\nexports.startsWith = startsWith;\nexports.endsWith = endsWith;\n\nexports.parseInteger = parseInteger;\n\nexports.iso8601 = iso8601;\nexports.rfc1123 = rfc1123;\nexports.parseDateTime = parseDateTime;\n\nexports.hrtimediff = hrtimeDiff;\nexports.hrtimeDiff = hrtimeDiff;\nexports.hrtimeAccum = hrtimeAccum;\nexports.hrtimeAdd = hrtimeAdd;\nexports.hrtimeNanosec = hrtimeNanosec;\nexports.hrtimeMicrosec = hrtimeMicrosec;\nexports.hrtimeMillisec = hrtimeMillisec;\n\n\n/*\n * Deep copy an acyclic *basic* Javascript object. This only handles basic\n * scalars (strings, numbers, booleans) and arbitrarily deep arrays and objects\n * containing these. This does *not* handle instances of other classes.\n */\nfunction deepCopy(obj)\n{\n\tvar ret, key;\n\tvar marker = '__deepCopy';\n\n\tif (obj && obj[marker])\n\t\tthrow (new Error('attempted deep copy of cyclic object'));\n\n\tif (obj && obj.constructor == Object) {\n\t\tret = {};\n\t\tobj[marker] = true;\n\n\t\tfor (key in obj) {\n\t\t\tif (key == marker)\n\t\t\t\tcontinue;\n\n\t\t\tret[key] = deepCopy(obj[key]);\n\t\t}\n\n\t\tdelete (obj[marker]);\n\t\treturn (ret);\n\t}\n\n\tif (obj && obj.constructor == Array) {\n\t\tret = [];\n\t\tobj[marker] = true;\n\n\t\tfor (key = 0; key < obj.length; key++)\n\t\t\tret.push(deepCopy(obj[key]));\n\n\t\tdelete (obj[marker]);\n\t\treturn (ret);\n\t}\n\n\t/*\n\t * It must be a primitive type -- just return it.\n\t */\n\treturn (obj);\n}\n\nfunction deepEqual(obj1, obj2)\n{\n\tif (typeof (obj1) != typeof (obj2))\n\t\treturn (false);\n\n\tif (obj1 === null || obj2 === null || typeof (obj1) != 'object')\n\t\treturn (obj1 === obj2);\n\n\tif (obj1.constructor != obj2.constructor)\n\t\treturn (false);\n\n\tvar k;\n\tfor (k in obj1) {\n\t\tif (!obj2.hasOwnProperty(k))\n\t\t\treturn (false);\n\n\t\tif (!deepEqual(obj1[k], obj2[k]))\n\t\t\treturn (false);\n\t}\n\n\tfor (k in obj2) {\n\t\tif (!obj1.hasOwnProperty(k))\n\t\t\treturn (false);\n\t}\n\n\treturn (true);\n}\n\nfunction isEmpty(obj)\n{\n\tvar key;\n\tfor (key in obj)\n\t\treturn (false);\n\treturn (true);\n}\n\nfunction hasKey(obj, key)\n{\n\tmod_assert.equal(typeof (key), 'string');\n\treturn (Object.prototype.hasOwnProperty.call(obj, key));\n}\n\nfunction forEachKey(obj, callback)\n{\n\tfor (var key in obj) {\n\t\tif (hasKey(obj, key)) {\n\t\t\tcallback(key, obj[key]);\n\t\t}\n\t}\n}\n\nfunction pluck(obj, key)\n{\n\tmod_assert.equal(typeof (key), 'string');\n\treturn (pluckv(obj, key));\n}\n\nfunction pluckv(obj, key)\n{\n\tif (obj === null || typeof (obj) !== 'object')\n\t\treturn (undefined);\n\n\tif (obj.hasOwnProperty(key))\n\t\treturn (obj[key]);\n\n\tvar i = key.indexOf('.');\n\tif (i == -1)\n\t\treturn (undefined);\n\n\tvar key1 = key.substr(0, i);\n\tif (!obj.hasOwnProperty(key1))\n\t\treturn (undefined);\n\n\treturn (pluckv(obj[key1], key.substr(i + 1)));\n}\n\n/*\n * Invoke callback(row) for each entry in the array that would be returned by\n * flattenObject(data, depth). This is just like flattenObject(data,\n * depth).forEach(callback), except that the intermediate array is never\n * created.\n */\nfunction flattenIter(data, depth, callback)\n{\n\tdoFlattenIter(data, depth, [], callback);\n}\n\nfunction doFlattenIter(data, depth, accum, callback)\n{\n\tvar each;\n\tvar key;\n\n\tif (depth === 0) {\n\t\teach = accum.slice(0);\n\t\teach.push(data);\n\t\tcallback(each);\n\t\treturn;\n\t}\n\n\tmod_assert.ok(data !== null);\n\tmod_assert.equal(typeof (data), 'object');\n\tmod_assert.equal(typeof (depth), 'number');\n\tmod_assert.ok(depth >= 0);\n\n\tfor (key in data) {\n\t\teach = accum.slice(0);\n\t\teach.push(key);\n\t\tdoFlattenIter(data[key], depth - 1, each, callback);\n\t}\n}\n\nfunction flattenObject(data, depth)\n{\n\tif (depth === 0)\n\t\treturn ([ data ]);\n\n\tmod_assert.ok(data !== null);\n\tmod_assert.equal(typeof (data), 'object');\n\tmod_assert.equal(typeof (depth), 'number');\n\tmod_assert.ok(depth >= 0);\n\n\tvar rv = [];\n\tvar key;\n\n\tfor (key in data) {\n\t\tflattenObject(data[key], depth - 1).forEach(function (p) {\n\t\t\trv.push([ key ].concat(p));\n\t\t});\n\t}\n\n\treturn (rv);\n}\n\nfunction startsWith(str, prefix)\n{\n\treturn (str.substr(0, prefix.length) == prefix);\n}\n\nfunction endsWith(str, suffix)\n{\n\treturn (str.substr(\n\t str.length - suffix.length, suffix.length) == suffix);\n}\n\nfunction iso8601(d)\n{\n\tif (typeof (d) == 'number')\n\t\td = new Date(d);\n\tmod_assert.ok(d.constructor === Date);\n\treturn (mod_extsprintf.sprintf('%4d-%02d-%02dT%02d:%02d:%02d.%03dZ',\n\t d.getUTCFullYear(), d.getUTCMonth() + 1, d.getUTCDate(),\n\t d.getUTCHours(), d.getUTCMinutes(), d.getUTCSeconds(),\n\t d.getUTCMilliseconds()));\n}\n\nvar RFC1123_MONTHS = [\n 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',\n 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\nvar RFC1123_DAYS = [\n 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\n\nfunction rfc1123(date) {\n\treturn (mod_extsprintf.sprintf('%s, %02d %s %04d %02d:%02d:%02d GMT',\n\t RFC1123_DAYS[date.getUTCDay()], date.getUTCDate(),\n\t RFC1123_MONTHS[date.getUTCMonth()], date.getUTCFullYear(),\n\t date.getUTCHours(), date.getUTCMinutes(),\n\t date.getUTCSeconds()));\n}\n\n/*\n * Parses a date expressed as a string, as either a number of milliseconds since\n * the epoch or any string format that Date accepts, giving preference to the\n * former where these two sets overlap (e.g., small numbers).\n */\nfunction parseDateTime(str)\n{\n\t/*\n\t * This is irritatingly implicit, but significantly more concise than\n\t * alternatives. The \"+str\" will convert a string containing only a\n\t * number directly to a Number, or NaN for other strings. Thus, if the\n\t * conversion succeeds, we use it (this is the milliseconds-since-epoch\n\t * case). Otherwise, we pass the string directly to the Date\n\t * constructor to parse.\n\t */\n\tvar numeric = +str;\n\tif (!isNaN(numeric)) {\n\t\treturn (new Date(numeric));\n\t} else {\n\t\treturn (new Date(str));\n\t}\n}\n\n\n/*\n * Number.*_SAFE_INTEGER isn't present before node v0.12, so we hardcode\n * the ES6 definitions here, while allowing for them to someday be higher.\n */\nvar MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;\nvar MIN_SAFE_INTEGER = Number.MIN_SAFE_INTEGER || -9007199254740991;\n\n\n/*\n * Default options for parseInteger().\n */\nvar PI_DEFAULTS = {\n\tbase: 10,\n\tallowSign: true,\n\tallowPrefix: false,\n\tallowTrailing: false,\n\tallowImprecise: false,\n\ttrimWhitespace: false,\n\tleadingZeroIsOctal: false\n};\n\nvar CP_0 = 0x30;\nvar CP_9 = 0x39;\n\nvar CP_A = 0x41;\nvar CP_B = 0x42;\nvar CP_O = 0x4f;\nvar CP_T = 0x54;\nvar CP_X = 0x58;\nvar CP_Z = 0x5a;\n\nvar CP_a = 0x61;\nvar CP_b = 0x62;\nvar CP_o = 0x6f;\nvar CP_t = 0x74;\nvar CP_x = 0x78;\nvar CP_z = 0x7a;\n\nvar PI_CONV_DEC = 0x30;\nvar PI_CONV_UC = 0x37;\nvar PI_CONV_LC = 0x57;\n\n\n/*\n * A stricter version of parseInt() that provides options for changing what\n * is an acceptable string (for example, disallowing trailing characters).\n */\nfunction parseInteger(str, uopts)\n{\n\tmod_assert.string(str, 'str');\n\tmod_assert.optionalObject(uopts, 'options');\n\n\tvar baseOverride = false;\n\tvar options = PI_DEFAULTS;\n\n\tif (uopts) {\n\t\tbaseOverride = hasKey(uopts, 'base');\n\t\toptions = mergeObjects(options, uopts);\n\t\tmod_assert.number(options.base, 'options.base');\n\t\tmod_assert.ok(options.base >= 2, 'options.base >= 2');\n\t\tmod_assert.ok(options.base <= 36, 'options.base <= 36');\n\t\tmod_assert.bool(options.allowSign, 'options.allowSign');\n\t\tmod_assert.bool(options.allowPrefix, 'options.allowPrefix');\n\t\tmod_assert.bool(options.allowTrailing,\n\t\t 'options.allowTrailing');\n\t\tmod_assert.bool(options.allowImprecise,\n\t\t 'options.allowImprecise');\n\t\tmod_assert.bool(options.trimWhitespace,\n\t\t 'options.trimWhitespace');\n\t\tmod_assert.bool(options.leadingZeroIsOctal,\n\t\t 'options.leadingZeroIsOctal');\n\n\t\tif (options.leadingZeroIsOctal) {\n\t\t\tmod_assert.ok(!baseOverride,\n\t\t\t '\"base\" and \"leadingZeroIsOctal\" are ' +\n\t\t\t 'mutually exclusive');\n\t\t}\n\t}\n\n\tvar c;\n\tvar pbase = -1;\n\tvar base = options.base;\n\tvar start;\n\tvar mult = 1;\n\tvar value = 0;\n\tvar idx = 0;\n\tvar len = str.length;\n\n\t/* Trim any whitespace on the left side. */\n\tif (options.trimWhitespace) {\n\t\twhile (idx < len && isSpace(str.charCodeAt(idx))) {\n\t\t\t++idx;\n\t\t}\n\t}\n\n\t/* Check the number for a leading sign. */\n\tif (options.allowSign) {\n\t\tif (str[idx] === '-') {\n\t\t\tidx += 1;\n\t\t\tmult = -1;\n\t\t} else if (str[idx] === '+') {\n\t\t\tidx += 1;\n\t\t}\n\t}\n\n\t/* Parse the base-indicating prefix if there is one. */\n\tif (str[idx] === '0') {\n\t\tif (options.allowPrefix) {\n\t\t\tpbase = prefixToBase(str.charCodeAt(idx + 1));\n\t\t\tif (pbase !== -1 && (!baseOverride || pbase === base)) {\n\t\t\t\tbase = pbase;\n\t\t\t\tidx += 2;\n\t\t\t}\n\t\t}\n\n\t\tif (pbase === -1 && options.leadingZeroIsOctal) {\n\t\t\tbase = 8;\n\t\t}\n\t}\n\n\t/* Parse the actual digits. */\n\tfor (start = idx; idx < len; ++idx) {\n\t\tc = translateDigit(str.charCodeAt(idx));\n\t\tif (c !== -1 && c < base) {\n\t\t\tvalue *= base;\n\t\t\tvalue += c;\n\t\t} else {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t/* If we didn't parse any digits, we have an invalid number. */\n\tif (start === idx) {\n\t\treturn (new Error('invalid number: ' + JSON.stringify(str)));\n\t}\n\n\t/* Trim any whitespace on the right side. */\n\tif (options.trimWhitespace) {\n\t\twhile (idx < len && isSpace(str.charCodeAt(idx))) {\n\t\t\t++idx;\n\t\t}\n\t}\n\n\t/* Check for trailing characters. */\n\tif (idx < len && !options.allowTrailing) {\n\t\treturn (new Error('trailing characters after number: ' +\n\t\t JSON.stringify(str.slice(idx))));\n\t}\n\n\t/* If our value is 0, we return now, to avoid returning -0. */\n\tif (value === 0) {\n\t\treturn (0);\n\t}\n\n\t/* Calculate our final value. */\n\tvar result = value * mult;\n\n\t/*\n\t * If the string represents a value that cannot be precisely represented\n\t * by JavaScript, then we want to check that:\n\t *\n\t * - We never increased the value past MAX_SAFE_INTEGER\n\t * - We don't make the result negative and below MIN_SAFE_INTEGER\n\t *\n\t * Because we only ever increment the value during parsing, there's no\n\t * chance of moving past MAX_SAFE_INTEGER and then dropping below it\n\t * again, losing precision in the process. This means that we only need\n\t * to do our checks here, at the end.\n\t */\n\tif (!options.allowImprecise &&\n\t (value > MAX_SAFE_INTEGER || result < MIN_SAFE_INTEGER)) {\n\t\treturn (new Error('number is outside of the supported range: ' +\n\t\t JSON.stringify(str.slice(start, idx))));\n\t}\n\n\treturn (result);\n}\n\n\n/*\n * Interpret a character code as a base-36 digit.\n */\nfunction translateDigit(d)\n{\n\tif (d >= CP_0 && d <= CP_9) {\n\t\t/* '0' to '9' -> 0 to 9 */\n\t\treturn (d - PI_CONV_DEC);\n\t} else if (d >= CP_A && d <= CP_Z) {\n\t\t/* 'A' - 'Z' -> 10 to 35 */\n\t\treturn (d - PI_CONV_UC);\n\t} else if (d >= CP_a && d <= CP_z) {\n\t\t/* 'a' - 'z' -> 10 to 35 */\n\t\treturn (d - PI_CONV_LC);\n\t} else {\n\t\t/* Invalid character code */\n\t\treturn (-1);\n\t}\n}\n\n\n/*\n * Test if a value matches the ECMAScript definition of trimmable whitespace.\n */\nfunction isSpace(c)\n{\n\treturn (c === 0x20) ||\n\t (c >= 0x0009 && c <= 0x000d) ||\n\t (c === 0x00a0) ||\n\t (c === 0x1680) ||\n\t (c === 0x180e) ||\n\t (c >= 0x2000 && c <= 0x200a) ||\n\t (c === 0x2028) ||\n\t (c === 0x2029) ||\n\t (c === 0x202f) ||\n\t (c === 0x205f) ||\n\t (c === 0x3000) ||\n\t (c === 0xfeff);\n}\n\n\n/*\n * Determine which base a character indicates (e.g., 'x' indicates hex).\n */\nfunction prefixToBase(c)\n{\n\tif (c === CP_b || c === CP_B) {\n\t\t/* 0b/0B (binary) */\n\t\treturn (2);\n\t} else if (c === CP_o || c === CP_O) {\n\t\t/* 0o/0O (octal) */\n\t\treturn (8);\n\t} else if (c === CP_t || c === CP_T) {\n\t\t/* 0t/0T (decimal) */\n\t\treturn (10);\n\t} else if (c === CP_x || c === CP_X) {\n\t\t/* 0x/0X (hexadecimal) */\n\t\treturn (16);\n\t} else {\n\t\t/* Not a meaningful character */\n\t\treturn (-1);\n\t}\n}\n\n\nfunction validateJsonObjectJS(schema, input)\n{\n\tvar report = mod_jsonschema.validate(input, schema);\n\n\tif (report.errors.length === 0)\n\t\treturn (null);\n\n\t/* Currently, we only do anything useful with the first error. */\n\tvar error = report.errors[0];\n\n\t/* The failed property is given by a URI with an irrelevant prefix. */\n\tvar propname = error['property'];\n\tvar reason = error['message'].toLowerCase();\n\tvar i, j;\n\n\t/*\n\t * There's at least one case where the property error message is\n\t * confusing at best. We work around this here.\n\t */\n\tif ((i = reason.indexOf('the property ')) != -1 &&\n\t (j = reason.indexOf(' is not defined in the schema and the ' +\n\t 'schema does not allow additional properties')) != -1) {\n\t\ti += 'the property '.length;\n\t\tif (propname === '')\n\t\t\tpropname = reason.substr(i, j - i);\n\t\telse\n\t\t\tpropname = propname + '.' + reason.substr(i, j - i);\n\n\t\treason = 'unsupported property';\n\t}\n\n\tvar rv = new mod_verror.VError('property \"%s\": %s', propname, reason);\n\trv.jsv_details = error;\n\treturn (rv);\n}\n\nfunction randElt(arr)\n{\n\tmod_assert.ok(Array.isArray(arr) && arr.length > 0,\n\t 'randElt argument must be a non-empty array');\n\n\treturn (arr[Math.floor(Math.random() * arr.length)]);\n}\n\nfunction assertHrtime(a)\n{\n\tmod_assert.ok(a[0] >= 0 && a[1] >= 0,\n\t 'negative numbers not allowed in hrtimes');\n\tmod_assert.ok(a[1] < 1e9, 'nanoseconds column overflow');\n}\n\n/*\n * Compute the time elapsed between hrtime readings A and B, where A is later\n * than B. hrtime readings come from Node's process.hrtime(). There is no\n * defined way to represent negative deltas, so it's illegal to diff B from A\n * where the time denoted by B is later than the time denoted by A. If this\n * becomes valuable, we can define a representation and extend the\n * implementation to support it.\n */\nfunction hrtimeDiff(a, b)\n{\n\tassertHrtime(a);\n\tassertHrtime(b);\n\tmod_assert.ok(a[0] > b[0] || (a[0] == b[0] && a[1] >= b[1]),\n\t 'negative differences not allowed');\n\n\tvar rv = [ a[0] - b[0], 0 ];\n\n\tif (a[1] >= b[1]) {\n\t\trv[1] = a[1] - b[1];\n\t} else {\n\t\trv[0]--;\n\t\trv[1] = 1e9 - (b[1] - a[1]);\n\t}\n\n\treturn (rv);\n}\n\n/*\n * Convert a hrtime reading from the array format returned by Node's\n * process.hrtime() into a scalar number of nanoseconds.\n */\nfunction hrtimeNanosec(a)\n{\n\tassertHrtime(a);\n\n\treturn (Math.floor(a[0] * 1e9 + a[1]));\n}\n\n/*\n * Convert a hrtime reading from the array format returned by Node's\n * process.hrtime() into a scalar number of microseconds.\n */\nfunction hrtimeMicrosec(a)\n{\n\tassertHrtime(a);\n\n\treturn (Math.floor(a[0] * 1e6 + a[1] / 1e3));\n}\n\n/*\n * Convert a hrtime reading from the array format returned by Node's\n * process.hrtime() into a scalar number of milliseconds.\n */\nfunction hrtimeMillisec(a)\n{\n\tassertHrtime(a);\n\n\treturn (Math.floor(a[0] * 1e3 + a[1] / 1e6));\n}\n\n/*\n * Add two hrtime readings A and B, overwriting A with the result of the\n * addition. This function is useful for accumulating several hrtime intervals\n * into a counter. Returns A.\n */\nfunction hrtimeAccum(a, b)\n{\n\tassertHrtime(a);\n\tassertHrtime(b);\n\n\t/*\n\t * Accumulate the nanosecond component.\n\t */\n\ta[1] += b[1];\n\tif (a[1] >= 1e9) {\n\t\t/*\n\t\t * The nanosecond component overflowed, so carry to the seconds\n\t\t * field.\n\t\t */\n\t\ta[0]++;\n\t\ta[1] -= 1e9;\n\t}\n\n\t/*\n\t * Accumulate the seconds component.\n\t */\n\ta[0] += b[0];\n\n\treturn (a);\n}\n\n/*\n * Add two hrtime readings A and B, returning the result as a new hrtime array.\n * Does not modify either input argument.\n */\nfunction hrtimeAdd(a, b)\n{\n\tassertHrtime(a);\n\n\tvar rv = [ a[0], a[1] ];\n\n\treturn (hrtimeAccum(rv, b));\n}\n\n\n/*\n * Check an object for unexpected properties. Accepts the object to check, and\n * an array of allowed property names (strings). Returns an array of key names\n * that were found on the object, but did not appear in the list of allowed\n * properties. If no properties were found, the returned array will be of\n * zero length.\n */\nfunction extraProperties(obj, allowed)\n{\n\tmod_assert.ok(typeof (obj) === 'object' && obj !== null,\n\t 'obj argument must be a non-null object');\n\tmod_assert.ok(Array.isArray(allowed),\n\t 'allowed argument must be an array of strings');\n\tfor (var i = 0; i < allowed.length; i++) {\n\t\tmod_assert.ok(typeof (allowed[i]) === 'string',\n\t\t 'allowed argument must be an array of strings');\n\t}\n\n\treturn (Object.keys(obj).filter(function (key) {\n\t\treturn (allowed.indexOf(key) === -1);\n\t}));\n}\n\n/*\n * Given three sets of properties \"provided\" (may be undefined), \"overrides\"\n * (required), and \"defaults\" (may be undefined), construct an object containing\n * the union of these sets with \"overrides\" overriding \"provided\", and\n * \"provided\" overriding \"defaults\". None of the input objects are modified.\n */\nfunction mergeObjects(provided, overrides, defaults)\n{\n\tvar rv, k;\n\n\trv = {};\n\tif (defaults) {\n\t\tfor (k in defaults)\n\t\t\trv[k] = defaults[k];\n\t}\n\n\tif (provided) {\n\t\tfor (k in provided)\n\t\t\trv[k] = provided[k];\n\t}\n\n\tif (overrides) {\n\t\tfor (k in overrides)\n\t\t\trv[k] = overrides[k];\n\t}\n\n\treturn (rv);\n}\n", "// Copyright 2012 Joyent, Inc. All rights reserved.\n\nvar assert = require('assert-plus');\nvar crypto = require('crypto');\nvar http = require('http');\nvar util = require('util');\nvar sshpk = require('sshpk');\nvar jsprim = require('jsprim');\nvar utils = require('./utils');\n\nvar sprintf = require('util').format;\n\nvar HASH_ALGOS = utils.HASH_ALGOS;\nvar PK_ALGOS = utils.PK_ALGOS;\nvar InvalidAlgorithmError = utils.InvalidAlgorithmError;\nvar HttpSignatureError = utils.HttpSignatureError;\nvar validateAlgorithm = utils.validateAlgorithm;\n\n///--- Globals\n\nvar AUTHZ_FMT =\n 'Signature keyId=\"%s\",algorithm=\"%s\",headers=\"%s\",signature=\"%s\"';\n\n///--- Specific Errors\n\nfunction MissingHeaderError(message) {\n HttpSignatureError.call(this, message, MissingHeaderError);\n}\nutil.inherits(MissingHeaderError, HttpSignatureError);\n\nfunction StrictParsingError(message) {\n HttpSignatureError.call(this, message, StrictParsingError);\n}\nutil.inherits(StrictParsingError, HttpSignatureError);\n\n/* See createSigner() */\nfunction RequestSigner(options) {\n assert.object(options, 'options');\n\n var alg = [];\n if (options.algorithm !== undefined) {\n assert.string(options.algorithm, 'options.algorithm');\n alg = validateAlgorithm(options.algorithm);\n }\n this.rs_alg = alg;\n\n /*\n * RequestSigners come in two varieties: ones with an rs_signFunc, and ones\n * with an rs_signer.\n *\n * rs_signFunc-based RequestSigners have to build up their entire signing\n * string within the rs_lines array and give it to rs_signFunc as a single\n * concat'd blob. rs_signer-based RequestSigners can add a line at a time to\n * their signing state by using rs_signer.update(), thus only needing to\n * buffer the hash function state and one line at a time.\n */\n if (options.sign !== undefined) {\n assert.func(options.sign, 'options.sign');\n this.rs_signFunc = options.sign;\n\n } else if (alg[0] === 'hmac' && options.key !== undefined) {\n assert.string(options.keyId, 'options.keyId');\n this.rs_keyId = options.keyId;\n\n if (typeof (options.key) !== 'string' && !Buffer.isBuffer(options.key))\n throw (new TypeError('options.key for HMAC must be a string or Buffer'));\n\n /*\n * Make an rs_signer for HMACs, not a rs_signFunc -- HMACs digest their\n * data in chunks rather than requiring it all to be given in one go\n * at the end, so they are more similar to signers than signFuncs.\n */\n this.rs_signer = crypto.createHmac(alg[1].toUpperCase(), options.key);\n this.rs_signer.sign = function () {\n var digest = this.digest('base64');\n return ({\n hashAlgorithm: alg[1],\n toString: function () { return (digest); }\n });\n };\n\n } else if (options.key !== undefined) {\n var key = options.key;\n if (typeof (key) === 'string' || Buffer.isBuffer(key))\n key = sshpk.parsePrivateKey(key);\n\n assert.ok(sshpk.PrivateKey.isPrivateKey(key, [1, 2]),\n 'options.key must be a sshpk.PrivateKey');\n this.rs_key = key;\n\n assert.string(options.keyId, 'options.keyId');\n this.rs_keyId = options.keyId;\n\n if (!PK_ALGOS[key.type]) {\n throw (new InvalidAlgorithmError(key.type.toUpperCase() + ' type ' +\n 'keys are not supported'));\n }\n\n if (alg[0] !== undefined && key.type !== alg[0]) {\n throw (new InvalidAlgorithmError('options.key must be a ' +\n alg[0].toUpperCase() + ' key, was given a ' +\n key.type.toUpperCase() + ' key instead'));\n }\n\n this.rs_signer = key.createSign(alg[1]);\n\n } else {\n throw (new TypeError('options.sign (func) or options.key is required'));\n }\n\n this.rs_headers = [];\n this.rs_lines = [];\n}\n\n/**\n * Adds a header to be signed, with its value, into this signer.\n *\n * @param {String} header\n * @param {String} value\n * @return {String} value written\n */\nRequestSigner.prototype.writeHeader = function (header, value) {\n assert.string(header, 'header');\n header = header.toLowerCase();\n assert.string(value, 'value');\n\n this.rs_headers.push(header);\n\n if (this.rs_signFunc) {\n this.rs_lines.push(header + ': ' + value);\n\n } else {\n var line = header + ': ' + value;\n if (this.rs_headers.length > 0)\n line = '\\n' + line;\n this.rs_signer.update(line);\n }\n\n return (value);\n};\n\n/**\n * Adds a default Date header, returning its value.\n *\n * @return {String}\n */\nRequestSigner.prototype.writeDateHeader = function () {\n return (this.writeHeader('date', jsprim.rfc1123(new Date())));\n};\n\n/**\n * Adds the request target line to be signed.\n *\n * @param {String} method, HTTP method (e.g. 'get', 'post', 'put')\n * @param {String} path\n */\nRequestSigner.prototype.writeTarget = function (method, path) {\n assert.string(method, 'method');\n assert.string(path, 'path');\n method = method.toLowerCase();\n this.writeHeader('(request-target)', method + ' ' + path);\n};\n\n/**\n * Calculate the value for the Authorization header on this request\n * asynchronously.\n *\n * @param {Func} callback (err, authz)\n */\nRequestSigner.prototype.sign = function (cb) {\n assert.func(cb, 'callback');\n\n if (this.rs_headers.length < 1)\n throw (new Error('At least one header must be signed'));\n\n var alg, authz;\n if (this.rs_signFunc) {\n var data = this.rs_lines.join('\\n');\n var self = this;\n this.rs_signFunc(data, function (err, sig) {\n if (err) {\n cb(err);\n return;\n }\n try {\n assert.object(sig, 'signature');\n assert.string(sig.keyId, 'signature.keyId');\n assert.string(sig.algorithm, 'signature.algorithm');\n assert.string(sig.signature, 'signature.signature');\n alg = validateAlgorithm(sig.algorithm);\n\n authz = sprintf(AUTHZ_FMT,\n sig.keyId,\n sig.algorithm,\n self.rs_headers.join(' '),\n sig.signature);\n } catch (e) {\n cb(e);\n return;\n }\n cb(null, authz);\n });\n\n } else {\n try {\n var sigObj = this.rs_signer.sign();\n } catch (e) {\n cb(e);\n return;\n }\n alg = (this.rs_alg[0] || this.rs_key.type) + '-' + sigObj.hashAlgorithm;\n var signature = sigObj.toString();\n authz = sprintf(AUTHZ_FMT,\n this.rs_keyId,\n alg,\n this.rs_headers.join(' '),\n signature);\n cb(null, authz);\n }\n};\n\n///--- Exported API\n\nmodule.exports = {\n /**\n * Identifies whether a given object is a request signer or not.\n *\n * @param {Object} object, the object to identify\n * @returns {Boolean}\n */\n isSigner: function (obj) {\n if (typeof (obj) === 'object' && obj instanceof RequestSigner)\n return (true);\n return (false);\n },\n\n /**\n * Creates a request signer, used to asynchronously build a signature\n * for a request (does not have to be an http.ClientRequest).\n *\n * @param {Object} options, either:\n * - {String} keyId\n * - {String|Buffer} key\n * - {String} algorithm (optional, required for HMAC)\n * or:\n * - {Func} sign (data, cb)\n * @return {RequestSigner}\n */\n createSigner: function createSigner(options) {\n return (new RequestSigner(options));\n },\n\n /**\n * Adds an 'Authorization' header to an http.ClientRequest object.\n *\n * Note that this API will add a Date header if it's not already set. Any\n * other headers in the options.headers array MUST be present, or this\n * will throw.\n *\n * You shouldn't need to check the return type; it's just there if you want\n * to be pedantic.\n *\n * The optional flag indicates whether parsing should use strict enforcement\n * of the version draft-cavage-http-signatures-04 of the spec or beyond.\n * The default is to be loose and support\n * older versions for compatibility.\n *\n * @param {Object} request an instance of http.ClientRequest.\n * @param {Object} options signing parameters object:\n * - {String} keyId required.\n * - {String} key required (either a PEM or HMAC key).\n * - {Array} headers optional; defaults to ['date'].\n * - {String} algorithm optional (unless key is HMAC);\n * default is the same as the sshpk default\n * signing algorithm for the type of key given\n * - {String} httpVersion optional; defaults to '1.1'.\n * - {Boolean} strict optional; defaults to 'false'.\n * @return {Boolean} true if Authorization (and optionally Date) were added.\n * @throws {TypeError} on bad parameter types (input).\n * @throws {InvalidAlgorithmError} if algorithm was bad or incompatible with\n * the given key.\n * @throws {sshpk.KeyParseError} if key was bad.\n * @throws {MissingHeaderError} if a header to be signed was specified but\n * was not present.\n */\n signRequest: function signRequest(request, options) {\n assert.object(request, 'request');\n assert.object(options, 'options');\n assert.optionalString(options.algorithm, 'options.algorithm');\n assert.string(options.keyId, 'options.keyId');\n assert.optionalArrayOfString(options.headers, 'options.headers');\n assert.optionalString(options.httpVersion, 'options.httpVersion');\n\n if (!request.getHeader('Date'))\n request.setHeader('Date', jsprim.rfc1123(new Date()));\n if (!options.headers)\n options.headers = ['date'];\n if (!options.httpVersion)\n options.httpVersion = '1.1';\n\n var alg = [];\n if (options.algorithm) {\n options.algorithm = options.algorithm.toLowerCase();\n alg = validateAlgorithm(options.algorithm);\n }\n\n var i;\n var stringToSign = '';\n for (i = 0; i < options.headers.length; i++) {\n if (typeof (options.headers[i]) !== 'string')\n throw new TypeError('options.headers must be an array of Strings');\n\n var h = options.headers[i].toLowerCase();\n\n if (h === 'request-line') {\n if (!options.strict) {\n /**\n * We allow headers from the older spec drafts if strict parsing isn't\n * specified in options.\n */\n stringToSign +=\n request.method + ' ' + request.path + ' HTTP/' +\n options.httpVersion;\n } else {\n /* Strict parsing doesn't allow older draft headers. */\n throw (new StrictParsingError('request-line is not a valid header ' +\n 'with strict parsing enabled.'));\n }\n } else if (h === '(request-target)') {\n stringToSign +=\n '(request-target): ' + request.method.toLowerCase() + ' ' +\n request.path;\n } else {\n var value = request.getHeader(h);\n if (value === undefined || value === '') {\n throw new MissingHeaderError(h + ' was not in the request');\n }\n stringToSign += h + ': ' + value;\n }\n\n if ((i + 1) < options.headers.length)\n stringToSign += '\\n';\n }\n\n /* This is just for unit tests. */\n if (request.hasOwnProperty('_stringToSign')) {\n request._stringToSign = stringToSign;\n }\n\n var signature;\n if (alg[0] === 'hmac') {\n if (typeof (options.key) !== 'string' && !Buffer.isBuffer(options.key))\n throw (new TypeError('options.key must be a string or Buffer'));\n\n var hmac = crypto.createHmac(alg[1].toUpperCase(), options.key);\n hmac.update(stringToSign);\n signature = hmac.digest('base64');\n\n } else {\n var key = options.key;\n if (typeof (key) === 'string' || Buffer.isBuffer(key))\n key = sshpk.parsePrivateKey(options.key);\n\n assert.ok(sshpk.PrivateKey.isPrivateKey(key, [1, 2]),\n 'options.key must be a sshpk.PrivateKey');\n\n if (!PK_ALGOS[key.type]) {\n throw (new InvalidAlgorithmError(key.type.toUpperCase() + ' type ' +\n 'keys are not supported'));\n }\n\n if (alg[0] !== undefined && key.type !== alg[0]) {\n throw (new InvalidAlgorithmError('options.key must be a ' +\n alg[0].toUpperCase() + ' key, was given a ' +\n key.type.toUpperCase() + ' key instead'));\n }\n\n var signer = key.createSign(alg[1]);\n signer.update(stringToSign);\n var sigObj = signer.sign();\n if (!HASH_ALGOS[sigObj.hashAlgorithm]) {\n throw (new InvalidAlgorithmError(sigObj.hashAlgorithm.toUpperCase() +\n ' is not a supported hash algorithm'));\n }\n options.algorithm = key.type + '-' + sigObj.hashAlgorithm;\n signature = sigObj.toString();\n assert.notStrictEqual(signature, '', 'empty signature produced');\n }\n\n var authzHeaderName = options.authorizationHeaderName || 'Authorization';\n\n request.setHeader(authzHeaderName, sprintf(AUTHZ_FMT,\n options.keyId,\n options.algorithm,\n options.headers.join(' '),\n signature));\n\n return true;\n }\n\n};\n", "// Copyright 2015 Joyent, Inc.\n\nvar assert = require('assert-plus');\nvar crypto = require('crypto');\nvar sshpk = require('sshpk');\nvar utils = require('./utils');\n\nvar HASH_ALGOS = utils.HASH_ALGOS;\nvar PK_ALGOS = utils.PK_ALGOS;\nvar InvalidAlgorithmError = utils.InvalidAlgorithmError;\nvar HttpSignatureError = utils.HttpSignatureError;\nvar validateAlgorithm = utils.validateAlgorithm;\n\n///--- Exported API\n\nmodule.exports = {\n /**\n * Verify RSA/DSA signature against public key. You are expected to pass in\n * an object that was returned from `parse()`.\n *\n * @param {Object} parsedSignature the object you got from `parse`.\n * @param {String} pubkey RSA/DSA private key PEM.\n * @return {Boolean} true if valid, false otherwise.\n * @throws {TypeError} if you pass in bad arguments.\n * @throws {InvalidAlgorithmError}\n */\n verifySignature: function verifySignature(parsedSignature, pubkey) {\n assert.object(parsedSignature, 'parsedSignature');\n if (typeof (pubkey) === 'string' || Buffer.isBuffer(pubkey))\n pubkey = sshpk.parseKey(pubkey);\n assert.ok(sshpk.Key.isKey(pubkey, [1, 1]), 'pubkey must be a sshpk.Key');\n\n var alg = validateAlgorithm(parsedSignature.algorithm);\n if (alg[0] === 'hmac' || alg[0] !== pubkey.type)\n return (false);\n\n var v = pubkey.createVerify(alg[1]);\n v.update(parsedSignature.signingString);\n return (v.verify(parsedSignature.params.signature, 'base64'));\n },\n\n /**\n * Verify HMAC against shared secret. You are expected to pass in an object\n * that was returned from `parse()`.\n *\n * @param {Object} parsedSignature the object you got from `parse`.\n * @param {String} secret HMAC shared secret.\n * @return {Boolean} true if valid, false otherwise.\n * @throws {TypeError} if you pass in bad arguments.\n * @throws {InvalidAlgorithmError}\n */\n verifyHMAC: function verifyHMAC(parsedSignature, secret) {\n assert.object(parsedSignature, 'parsedHMAC');\n assert.string(secret, 'secret');\n\n var alg = validateAlgorithm(parsedSignature.algorithm);\n if (alg[0] !== 'hmac')\n return (false);\n\n var hashAlg = alg[1].toUpperCase();\n\n var hmac = crypto.createHmac(hashAlg, secret);\n hmac.update(parsedSignature.signingString);\n\n /*\n * Now double-hash to avoid leaking timing information - there's\n * no easy constant-time compare in JS, so we use this approach\n * instead. See for more info:\n * https://www.isecpartners.com/blog/2011/february/double-hmac-\n * verification.aspx\n */\n var h1 = crypto.createHmac(hashAlg, secret);\n h1.update(hmac.digest());\n h1 = h1.digest();\n var h2 = crypto.createHmac(hashAlg, secret);\n h2.update(new Buffer(parsedSignature.params.signature, 'base64'));\n h2 = h2.digest();\n\n /* Node 0.8 returns strings from .digest(). */\n if (typeof (h1) === 'string')\n return (h1 === h2);\n /* And node 0.10 lacks the .equals() method on Buffers. */\n if (Buffer.isBuffer(h1) && !h1.equals)\n return (h1.toString('binary') === h2.toString('binary'));\n\n return (h1.equals(h2));\n }\n};\n", "// Copyright 2015 Joyent, Inc.\n\nvar parser = require('./parser');\nvar signer = require('./signer');\nvar verify = require('./verify');\nvar utils = require('./utils');\n\n\n\n///--- API\n\nmodule.exports = {\n\n parse: parser.parseRequest,\n parseRequest: parser.parseRequest,\n\n sign: signer.signRequest,\n signRequest: signer.signRequest,\n createSigner: signer.createSigner,\n isSigner: signer.isSigner,\n\n sshKeyToPEM: utils.sshKeyToPEM,\n sshKeyFingerprint: utils.fingerprint,\n pemToRsaSSHKey: utils.pemToRsaSSHKey,\n\n verify: verify.verifySignature,\n verifySignature: verify.verifySignature,\n verifyHMAC: verify.verifyHMAC\n};\n", "{\n \"application/1d-interleaved-parityfec\": {\n \"source\": \"iana\"\n },\n \"application/3gpdash-qoe-report+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/3gpp-ims+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/3gpphal+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/3gpphalforms+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/a2l\": {\n \"source\": \"iana\"\n },\n \"application/ace+cbor\": {\n \"source\": \"iana\"\n },\n \"application/activemessage\": {\n \"source\": \"iana\"\n },\n \"application/activity+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-costmap+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-costmapfilter+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-directory+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-endpointcost+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-endpointcostparams+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-endpointprop+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-endpointpropparams+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-error+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-networkmap+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-networkmapfilter+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-updatestreamcontrol+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-updatestreamparams+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/aml\": {\n \"source\": \"iana\"\n },\n \"application/andrew-inset\": {\n \"source\": \"iana\",\n \"extensions\": [\"ez\"]\n },\n \"application/applefile\": {\n \"source\": \"iana\"\n },\n \"application/applixware\": {\n \"source\": \"apache\",\n \"extensions\": [\"aw\"]\n },\n \"application/at+jwt\": {\n \"source\": \"iana\"\n },\n \"application/atf\": {\n \"source\": \"iana\"\n },\n \"application/atfx\": {\n \"source\": \"iana\"\n },\n \"application/atom+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"atom\"]\n },\n \"application/atomcat+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"atomcat\"]\n },\n \"application/atomdeleted+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"atomdeleted\"]\n },\n \"application/atomicmail\": {\n \"source\": \"iana\"\n },\n \"application/atomsvc+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"atomsvc\"]\n },\n \"application/atsc-dwd+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"dwd\"]\n },\n \"application/atsc-dynamic-event-message\": {\n \"source\": \"iana\"\n },\n \"application/atsc-held+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"held\"]\n },\n \"application/atsc-rdt+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/atsc-rsat+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rsat\"]\n },\n \"application/atxml\": {\n \"source\": \"iana\"\n },\n \"application/auth-policy+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/bacnet-xdd+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/batch-smtp\": {\n \"source\": \"iana\"\n },\n \"application/bdoc\": {\n \"compressible\": false,\n \"extensions\": [\"bdoc\"]\n },\n \"application/beep+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/calendar+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/calendar+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xcs\"]\n },\n \"application/call-completion\": {\n \"source\": \"iana\"\n },\n \"application/cals-1840\": {\n \"source\": \"iana\"\n },\n \"application/captive+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/cbor\": {\n \"source\": \"iana\"\n },\n \"application/cbor-seq\": {\n \"source\": \"iana\"\n },\n \"application/cccex\": {\n \"source\": \"iana\"\n },\n \"application/ccmp+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/ccxml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"ccxml\"]\n },\n \"application/cdfx+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"cdfx\"]\n },\n \"application/cdmi-capability\": {\n \"source\": \"iana\",\n \"extensions\": [\"cdmia\"]\n },\n \"application/cdmi-container\": {\n \"source\": \"iana\",\n \"extensions\": [\"cdmic\"]\n },\n \"application/cdmi-domain\": {\n \"source\": \"iana\",\n \"extensions\": [\"cdmid\"]\n },\n \"application/cdmi-object\": {\n \"source\": \"iana\",\n \"extensions\": [\"cdmio\"]\n },\n \"application/cdmi-queue\": {\n \"source\": \"iana\",\n \"extensions\": [\"cdmiq\"]\n },\n \"application/cdni\": {\n \"source\": \"iana\"\n },\n \"application/cea\": {\n \"source\": \"iana\"\n },\n \"application/cea-2018+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/cellml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/cfw\": {\n \"source\": \"iana\"\n },\n \"application/city+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/clr\": {\n \"source\": \"iana\"\n },\n \"application/clue+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/clue_info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/cms\": {\n \"source\": \"iana\"\n },\n \"application/cnrp+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/coap-group+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/coap-payload\": {\n \"source\": \"iana\"\n },\n \"application/commonground\": {\n \"source\": \"iana\"\n },\n \"application/conference-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/cose\": {\n \"source\": \"iana\"\n },\n \"application/cose-key\": {\n \"source\": \"iana\"\n },\n \"application/cose-key-set\": {\n \"source\": \"iana\"\n },\n \"application/cpl+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"cpl\"]\n },\n \"application/csrattrs\": {\n \"source\": \"iana\"\n },\n \"application/csta+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/cstadata+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/csvm+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/cu-seeme\": {\n \"source\": \"apache\",\n \"extensions\": [\"cu\"]\n },\n \"application/cwt\": {\n \"source\": \"iana\"\n },\n \"application/cybercash\": {\n \"source\": \"iana\"\n },\n \"application/dart\": {\n \"compressible\": true\n },\n \"application/dash+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mpd\"]\n },\n \"application/dash-patch+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mpp\"]\n },\n \"application/dashdelta\": {\n \"source\": \"iana\"\n },\n \"application/davmount+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"davmount\"]\n },\n \"application/dca-rft\": {\n \"source\": \"iana\"\n },\n \"application/dcd\": {\n \"source\": \"iana\"\n },\n \"application/dec-dx\": {\n \"source\": \"iana\"\n },\n \"application/dialog-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/dicom\": {\n \"source\": \"iana\"\n },\n \"application/dicom+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/dicom+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/dii\": {\n \"source\": \"iana\"\n },\n \"application/dit\": {\n \"source\": \"iana\"\n },\n \"application/dns\": {\n \"source\": \"iana\"\n },\n \"application/dns+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/dns-message\": {\n \"source\": \"iana\"\n },\n \"application/docbook+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"dbk\"]\n },\n \"application/dots+cbor\": {\n \"source\": \"iana\"\n },\n \"application/dskpp+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/dssc+der\": {\n \"source\": \"iana\",\n \"extensions\": [\"dssc\"]\n },\n \"application/dssc+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xdssc\"]\n },\n \"application/dvcs\": {\n \"source\": \"iana\"\n },\n \"application/ecmascript\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"es\",\"ecma\"]\n },\n \"application/edi-consent\": {\n \"source\": \"iana\"\n },\n \"application/edi-x12\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/edifact\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/efi\": {\n \"source\": \"iana\"\n },\n \"application/elm+json\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/elm+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/emergencycalldata.cap+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/emergencycalldata.comment+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/emergencycalldata.control+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/emergencycalldata.deviceinfo+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/emergencycalldata.ecall.msd\": {\n \"source\": \"iana\"\n },\n \"application/emergencycalldata.providerinfo+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/emergencycalldata.serviceinfo+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/emergencycalldata.subscriberinfo+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/emergencycalldata.veds+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/emma+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"emma\"]\n },\n \"application/emotionml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"emotionml\"]\n },\n \"application/encaprtp\": {\n \"source\": \"iana\"\n },\n \"application/epp+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/epub+zip\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"epub\"]\n },\n \"application/eshop\": {\n \"source\": \"iana\"\n },\n \"application/exi\": {\n \"source\": \"iana\",\n \"extensions\": [\"exi\"]\n },\n \"application/expect-ct-report+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/express\": {\n \"source\": \"iana\",\n \"extensions\": [\"exp\"]\n },\n \"application/fastinfoset\": {\n \"source\": \"iana\"\n },\n \"application/fastsoap\": {\n \"source\": \"iana\"\n },\n \"application/fdt+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"fdt\"]\n },\n \"application/fhir+json\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/fhir+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/fido.trusted-apps+json\": {\n \"compressible\": true\n },\n \"application/fits\": {\n \"source\": \"iana\"\n },\n \"application/flexfec\": {\n \"source\": \"iana\"\n },\n \"application/font-sfnt\": {\n \"source\": \"iana\"\n },\n \"application/font-tdpfr\": {\n \"source\": \"iana\",\n \"extensions\": [\"pfr\"]\n },\n \"application/font-woff\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/framework-attributes+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/geo+json\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"geojson\"]\n },\n \"application/geo+json-seq\": {\n \"source\": \"iana\"\n },\n \"application/geopackage+sqlite3\": {\n \"source\": \"iana\"\n },\n \"application/geoxacml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/gltf-buffer\": {\n \"source\": \"iana\"\n },\n \"application/gml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"gml\"]\n },\n \"application/gpx+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"gpx\"]\n },\n \"application/gxf\": {\n \"source\": \"apache\",\n \"extensions\": [\"gxf\"]\n },\n \"application/gzip\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"gz\"]\n },\n \"application/h224\": {\n \"source\": \"iana\"\n },\n \"application/held+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/hjson\": {\n \"extensions\": [\"hjson\"]\n },\n \"application/http\": {\n \"source\": \"iana\"\n },\n \"application/hyperstudio\": {\n \"source\": \"iana\",\n \"extensions\": [\"stk\"]\n },\n \"application/ibe-key-request+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/ibe-pkg-reply+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/ibe-pp-data\": {\n \"source\": \"iana\"\n },\n \"application/iges\": {\n \"source\": \"iana\"\n },\n \"application/im-iscomposing+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/index\": {\n \"source\": \"iana\"\n },\n \"application/index.cmd\": {\n \"source\": \"iana\"\n },\n \"application/index.obj\": {\n \"source\": \"iana\"\n },\n \"application/index.response\": {\n \"source\": \"iana\"\n },\n \"application/index.vnd\": {\n \"source\": \"iana\"\n },\n \"application/inkml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"ink\",\"inkml\"]\n },\n \"application/iotp\": {\n \"source\": \"iana\"\n },\n \"application/ipfix\": {\n \"source\": \"iana\",\n \"extensions\": [\"ipfix\"]\n },\n \"application/ipp\": {\n \"source\": \"iana\"\n },\n \"application/isup\": {\n \"source\": \"iana\"\n },\n \"application/its+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"its\"]\n },\n \"application/java-archive\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"jar\",\"war\",\"ear\"]\n },\n \"application/java-serialized-object\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"ser\"]\n },\n \"application/java-vm\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"class\"]\n },\n \"application/javascript\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true,\n \"extensions\": [\"js\",\"mjs\"]\n },\n \"application/jf2feed+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/jose\": {\n \"source\": \"iana\"\n },\n \"application/jose+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/jrd+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/jscalendar+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/json\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true,\n \"extensions\": [\"json\",\"map\"]\n },\n \"application/json-patch+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/json-seq\": {\n \"source\": \"iana\"\n },\n \"application/json5\": {\n \"extensions\": [\"json5\"]\n },\n \"application/jsonml+json\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"jsonml\"]\n },\n \"application/jwk+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/jwk-set+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/jwt\": {\n \"source\": \"iana\"\n },\n \"application/kpml-request+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/kpml-response+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/ld+json\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"jsonld\"]\n },\n \"application/lgr+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"lgr\"]\n },\n \"application/link-format\": {\n \"source\": \"iana\"\n },\n \"application/load-control+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/lost+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"lostxml\"]\n },\n \"application/lostsync+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/lpf+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/lxf\": {\n \"source\": \"iana\"\n },\n \"application/mac-binhex40\": {\n \"source\": \"iana\",\n \"extensions\": [\"hqx\"]\n },\n \"application/mac-compactpro\": {\n \"source\": \"apache\",\n \"extensions\": [\"cpt\"]\n },\n \"application/macwriteii\": {\n \"source\": \"iana\"\n },\n \"application/mads+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mads\"]\n },\n \"application/manifest+json\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true,\n \"extensions\": [\"webmanifest\"]\n },\n \"application/marc\": {\n \"source\": \"iana\",\n \"extensions\": [\"mrc\"]\n },\n \"application/marcxml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mrcx\"]\n },\n \"application/mathematica\": {\n \"source\": \"iana\",\n \"extensions\": [\"ma\",\"nb\",\"mb\"]\n },\n \"application/mathml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mathml\"]\n },\n \"application/mathml-content+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mathml-presentation+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-associated-procedure-description+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-deregister+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-envelope+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-msk+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-msk-response+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-protection-description+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-reception-report+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-register+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-register-response+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-schedule+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-user-service-description+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbox\": {\n \"source\": \"iana\",\n \"extensions\": [\"mbox\"]\n },\n \"application/media-policy-dataset+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mpf\"]\n },\n \"application/media_control+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mediaservercontrol+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mscml\"]\n },\n \"application/merge-patch+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/metalink+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"metalink\"]\n },\n \"application/metalink4+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"meta4\"]\n },\n \"application/mets+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mets\"]\n },\n \"application/mf4\": {\n \"source\": \"iana\"\n },\n \"application/mikey\": {\n \"source\": \"iana\"\n },\n \"application/mipc\": {\n \"source\": \"iana\"\n },\n \"application/missing-blocks+cbor-seq\": {\n \"source\": \"iana\"\n },\n \"application/mmt-aei+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"maei\"]\n },\n \"application/mmt-usd+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"musd\"]\n },\n \"application/mods+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mods\"]\n },\n \"application/moss-keys\": {\n \"source\": \"iana\"\n },\n \"application/moss-signature\": {\n \"source\": \"iana\"\n },\n \"application/mosskey-data\": {\n \"source\": \"iana\"\n },\n \"application/mosskey-request\": {\n \"source\": \"iana\"\n },\n \"application/mp21\": {\n \"source\": \"iana\",\n \"extensions\": [\"m21\",\"mp21\"]\n },\n \"application/mp4\": {\n \"source\": \"iana\",\n \"extensions\": [\"mp4s\",\"m4p\"]\n },\n \"application/mpeg4-generic\": {\n \"source\": \"iana\"\n },\n \"application/mpeg4-iod\": {\n \"source\": \"iana\"\n },\n \"application/mpeg4-iod-xmt\": {\n \"source\": \"iana\"\n },\n \"application/mrb-consumer+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mrb-publish+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/msc-ivr+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/msc-mixer+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/msword\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"doc\",\"dot\"]\n },\n \"application/mud+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/multipart-core\": {\n \"source\": \"iana\"\n },\n \"application/mxf\": {\n \"source\": \"iana\",\n \"extensions\": [\"mxf\"]\n },\n \"application/n-quads\": {\n \"source\": \"iana\",\n \"extensions\": [\"nq\"]\n },\n \"application/n-triples\": {\n \"source\": \"iana\",\n \"extensions\": [\"nt\"]\n },\n \"application/nasdata\": {\n \"source\": \"iana\"\n },\n \"application/news-checkgroups\": {\n \"source\": \"iana\",\n \"charset\": \"US-ASCII\"\n },\n \"application/news-groupinfo\": {\n \"source\": \"iana\",\n \"charset\": \"US-ASCII\"\n },\n \"application/news-transmission\": {\n \"source\": \"iana\"\n },\n \"application/nlsml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/node\": {\n \"source\": \"iana\",\n \"extensions\": [\"cjs\"]\n },\n \"application/nss\": {\n \"source\": \"iana\"\n },\n \"application/oauth-authz-req+jwt\": {\n \"source\": \"iana\"\n },\n \"application/oblivious-dns-message\": {\n \"source\": \"iana\"\n },\n \"application/ocsp-request\": {\n \"source\": \"iana\"\n },\n \"application/ocsp-response\": {\n \"source\": \"iana\"\n },\n \"application/octet-stream\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"bin\",\"dms\",\"lrf\",\"mar\",\"so\",\"dist\",\"distz\",\"pkg\",\"bpk\",\"dump\",\"elc\",\"deploy\",\"exe\",\"dll\",\"deb\",\"dmg\",\"iso\",\"img\",\"msi\",\"msp\",\"msm\",\"buffer\"]\n },\n \"application/oda\": {\n \"source\": \"iana\",\n \"extensions\": [\"oda\"]\n },\n \"application/odm+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/odx\": {\n \"source\": \"iana\"\n },\n \"application/oebps-package+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"opf\"]\n },\n \"application/ogg\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"ogx\"]\n },\n \"application/omdoc+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"omdoc\"]\n },\n \"application/onenote\": {\n \"source\": \"apache\",\n \"extensions\": [\"onetoc\",\"onetoc2\",\"onetmp\",\"onepkg\"]\n },\n \"application/opc-nodeset+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/oscore\": {\n \"source\": \"iana\"\n },\n \"application/oxps\": {\n \"source\": \"iana\",\n \"extensions\": [\"oxps\"]\n },\n \"application/p21\": {\n \"source\": \"iana\"\n },\n \"application/p21+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/p2p-overlay+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"relo\"]\n },\n \"application/parityfec\": {\n \"source\": \"iana\"\n },\n \"application/passport\": {\n \"source\": \"iana\"\n },\n \"application/patch-ops-error+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xer\"]\n },\n \"application/pdf\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"pdf\"]\n },\n \"application/pdx\": {\n \"source\": \"iana\"\n },\n \"application/pem-certificate-chain\": {\n \"source\": \"iana\"\n },\n \"application/pgp-encrypted\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"pgp\"]\n },\n \"application/pgp-keys\": {\n \"source\": \"iana\",\n \"extensions\": [\"asc\"]\n },\n \"application/pgp-signature\": {\n \"source\": \"iana\",\n \"extensions\": [\"asc\",\"sig\"]\n },\n \"application/pics-rules\": {\n \"source\": \"apache\",\n \"extensions\": [\"prf\"]\n },\n \"application/pidf+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/pidf-diff+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/pkcs10\": {\n \"source\": \"iana\",\n \"extensions\": [\"p10\"]\n },\n \"application/pkcs12\": {\n \"source\": \"iana\"\n },\n \"application/pkcs7-mime\": {\n \"source\": \"iana\",\n \"extensions\": [\"p7m\",\"p7c\"]\n },\n \"application/pkcs7-signature\": {\n \"source\": \"iana\",\n \"extensions\": [\"p7s\"]\n },\n \"application/pkcs8\": {\n \"source\": \"iana\",\n \"extensions\": [\"p8\"]\n },\n \"application/pkcs8-encrypted\": {\n \"source\": \"iana\"\n },\n \"application/pkix-attr-cert\": {\n \"source\": \"iana\",\n \"extensions\": [\"ac\"]\n },\n \"application/pkix-cert\": {\n \"source\": \"iana\",\n \"extensions\": [\"cer\"]\n },\n \"application/pkix-crl\": {\n \"source\": \"iana\",\n \"extensions\": [\"crl\"]\n },\n \"application/pkix-pkipath\": {\n \"source\": \"iana\",\n \"extensions\": [\"pkipath\"]\n },\n \"application/pkixcmp\": {\n \"source\": \"iana\",\n \"extensions\": [\"pki\"]\n },\n \"application/pls+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"pls\"]\n },\n \"application/poc-settings+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/postscript\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"ai\",\"eps\",\"ps\"]\n },\n \"application/ppsp-tracker+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/problem+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/problem+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/provenance+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"provx\"]\n },\n \"application/prs.alvestrand.titrax-sheet\": {\n \"source\": \"iana\"\n },\n \"application/prs.cww\": {\n \"source\": \"iana\",\n \"extensions\": [\"cww\"]\n },\n \"application/prs.cyn\": {\n \"source\": \"iana\",\n \"charset\": \"7-BIT\"\n },\n \"application/prs.hpub+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/prs.nprend\": {\n \"source\": \"iana\"\n },\n \"application/prs.plucker\": {\n \"source\": \"iana\"\n },\n \"application/prs.rdf-xml-crypt\": {\n \"source\": \"iana\"\n },\n \"application/prs.xsf+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/pskc+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"pskcxml\"]\n },\n \"application/pvd+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/qsig\": {\n \"source\": \"iana\"\n },\n \"application/raml+yaml\": {\n \"compressible\": true,\n \"extensions\": [\"raml\"]\n },\n \"application/raptorfec\": {\n \"source\": \"iana\"\n },\n \"application/rdap+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/rdf+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rdf\",\"owl\"]\n },\n \"application/reginfo+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rif\"]\n },\n \"application/relax-ng-compact-syntax\": {\n \"source\": \"iana\",\n \"extensions\": [\"rnc\"]\n },\n \"application/remote-printing\": {\n \"source\": \"iana\"\n },\n \"application/reputon+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/resource-lists+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rl\"]\n },\n \"application/resource-lists-diff+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rld\"]\n },\n \"application/rfc+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/riscos\": {\n \"source\": \"iana\"\n },\n \"application/rlmi+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/rls-services+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rs\"]\n },\n \"application/route-apd+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rapd\"]\n },\n \"application/route-s-tsid+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"sls\"]\n },\n \"application/route-usd+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rusd\"]\n },\n \"application/rpki-ghostbusters\": {\n \"source\": \"iana\",\n \"extensions\": [\"gbr\"]\n },\n \"application/rpki-manifest\": {\n \"source\": \"iana\",\n \"extensions\": [\"mft\"]\n },\n \"application/rpki-publication\": {\n \"source\": \"iana\"\n },\n \"application/rpki-roa\": {\n \"source\": \"iana\",\n \"extensions\": [\"roa\"]\n },\n \"application/rpki-updown\": {\n \"source\": \"iana\"\n },\n \"application/rsd+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"rsd\"]\n },\n \"application/rss+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"rss\"]\n },\n \"application/rtf\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rtf\"]\n },\n \"application/rtploopback\": {\n \"source\": \"iana\"\n },\n \"application/rtx\": {\n \"source\": \"iana\"\n },\n \"application/samlassertion+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/samlmetadata+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/sarif+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/sarif-external-properties+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/sbe\": {\n \"source\": \"iana\"\n },\n \"application/sbml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"sbml\"]\n },\n \"application/scaip+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/scim+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/scvp-cv-request\": {\n \"source\": \"iana\",\n \"extensions\": [\"scq\"]\n },\n \"application/scvp-cv-response\": {\n \"source\": \"iana\",\n \"extensions\": [\"scs\"]\n },\n \"application/scvp-vp-request\": {\n \"source\": \"iana\",\n \"extensions\": [\"spq\"]\n },\n \"application/scvp-vp-response\": {\n \"source\": \"iana\",\n \"extensions\": [\"spp\"]\n },\n \"application/sdp\": {\n \"source\": \"iana\",\n \"extensions\": [\"sdp\"]\n },\n \"application/secevent+jwt\": {\n \"source\": \"iana\"\n },\n \"application/senml+cbor\": {\n \"source\": \"iana\"\n },\n \"application/senml+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/senml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"senmlx\"]\n },\n \"application/senml-etch+cbor\": {\n \"source\": \"iana\"\n },\n \"application/senml-etch+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/senml-exi\": {\n \"source\": \"iana\"\n },\n \"application/sensml+cbor\": {\n \"source\": \"iana\"\n },\n \"application/sensml+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/sensml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"sensmlx\"]\n },\n \"application/sensml-exi\": {\n \"source\": \"iana\"\n },\n \"application/sep+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/sep-exi\": {\n \"source\": \"iana\"\n },\n \"application/session-info\": {\n \"source\": \"iana\"\n },\n \"application/set-payment\": {\n \"source\": \"iana\"\n },\n \"application/set-payment-initiation\": {\n \"source\": \"iana\",\n \"extensions\": [\"setpay\"]\n },\n \"application/set-registration\": {\n \"source\": \"iana\"\n },\n \"application/set-registration-initiation\": {\n \"source\": \"iana\",\n \"extensions\": [\"setreg\"]\n },\n \"application/sgml\": {\n \"source\": \"iana\"\n },\n \"application/sgml-open-catalog\": {\n \"source\": \"iana\"\n },\n \"application/shf+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"shf\"]\n },\n \"application/sieve\": {\n \"source\": \"iana\",\n \"extensions\": [\"siv\",\"sieve\"]\n },\n \"application/simple-filter+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/simple-message-summary\": {\n \"source\": \"iana\"\n },\n \"application/simplesymbolcontainer\": {\n \"source\": \"iana\"\n },\n \"application/sipc\": {\n \"source\": \"iana\"\n },\n \"application/slate\": {\n \"source\": \"iana\"\n },\n \"application/smil\": {\n \"source\": \"iana\"\n },\n \"application/smil+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"smi\",\"smil\"]\n },\n \"application/smpte336m\": {\n \"source\": \"iana\"\n },\n \"application/soap+fastinfoset\": {\n \"source\": \"iana\"\n },\n \"application/soap+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/sparql-query\": {\n \"source\": \"iana\",\n \"extensions\": [\"rq\"]\n },\n \"application/sparql-results+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"srx\"]\n },\n \"application/spdx+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/spirits-event+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/sql\": {\n \"source\": \"iana\"\n },\n \"application/srgs\": {\n \"source\": \"iana\",\n \"extensions\": [\"gram\"]\n },\n \"application/srgs+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"grxml\"]\n },\n \"application/sru+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"sru\"]\n },\n \"application/ssdl+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"ssdl\"]\n },\n \"application/ssml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"ssml\"]\n },\n \"application/stix+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/swid+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"swidtag\"]\n },\n \"application/tamp-apex-update\": {\n \"source\": \"iana\"\n },\n \"application/tamp-apex-update-confirm\": {\n \"source\": \"iana\"\n },\n \"application/tamp-community-update\": {\n \"source\": \"iana\"\n },\n \"application/tamp-community-update-confirm\": {\n \"source\": \"iana\"\n },\n \"application/tamp-error\": {\n \"source\": \"iana\"\n },\n \"application/tamp-sequence-adjust\": {\n \"source\": \"iana\"\n },\n \"application/tamp-sequence-adjust-confirm\": {\n \"source\": \"iana\"\n },\n \"application/tamp-status-query\": {\n \"source\": \"iana\"\n },\n \"application/tamp-status-response\": {\n \"source\": \"iana\"\n },\n \"application/tamp-update\": {\n \"source\": \"iana\"\n },\n \"application/tamp-update-confirm\": {\n \"source\": \"iana\"\n },\n \"application/tar\": {\n \"compressible\": true\n },\n \"application/taxii+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/td+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/tei+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"tei\",\"teicorpus\"]\n },\n \"application/tetra_isi\": {\n \"source\": \"iana\"\n },\n \"application/thraud+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"tfi\"]\n },\n \"application/timestamp-query\": {\n \"source\": \"iana\"\n },\n \"application/timestamp-reply\": {\n \"source\": \"iana\"\n },\n \"application/timestamped-data\": {\n \"source\": \"iana\",\n \"extensions\": [\"tsd\"]\n },\n \"application/tlsrpt+gzip\": {\n \"source\": \"iana\"\n },\n \"application/tlsrpt+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/tnauthlist\": {\n \"source\": \"iana\"\n },\n \"application/token-introspection+jwt\": {\n \"source\": \"iana\"\n },\n \"application/toml\": {\n \"compressible\": true,\n \"extensions\": [\"toml\"]\n },\n \"application/trickle-ice-sdpfrag\": {\n \"source\": \"iana\"\n },\n \"application/trig\": {\n \"source\": \"iana\",\n \"extensions\": [\"trig\"]\n },\n \"application/ttml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"ttml\"]\n },\n \"application/tve-trigger\": {\n \"source\": \"iana\"\n },\n \"application/tzif\": {\n \"source\": \"iana\"\n },\n \"application/tzif-leap\": {\n \"source\": \"iana\"\n },\n \"application/ubjson\": {\n \"compressible\": false,\n \"extensions\": [\"ubj\"]\n },\n \"application/ulpfec\": {\n \"source\": \"iana\"\n },\n \"application/urc-grpsheet+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/urc-ressheet+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rsheet\"]\n },\n \"application/urc-targetdesc+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"td\"]\n },\n \"application/urc-uisocketdesc+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vcard+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vcard+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vemmi\": {\n \"source\": \"iana\"\n },\n \"application/vividence.scriptfile\": {\n \"source\": \"apache\"\n },\n \"application/vnd.1000minds.decision-model+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"1km\"]\n },\n \"application/vnd.3gpp-prose+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp-prose-pc3ch+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp-v2x-local-service-information\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.5gnas\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.access-transfer-events+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.bsf+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.gmop+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.gtpc\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.interworking-data\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.lpp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.mc-signalling-ear\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.mcdata-affiliation-command+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcdata-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcdata-payload\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.mcdata-service-config+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcdata-signalling\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.mcdata-ue-config+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcdata-user-profile+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcptt-affiliation-command+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcptt-floor-request+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcptt-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcptt-location-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcptt-mbms-usage-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcptt-service-config+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcptt-signed+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcptt-ue-config+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcptt-ue-init-config+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcptt-user-profile+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcvideo-affiliation-command+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcvideo-affiliation-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcvideo-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcvideo-location-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcvideo-mbms-usage-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcvideo-service-config+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcvideo-transmission-request+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcvideo-ue-config+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcvideo-user-profile+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mid-call+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.ngap\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.pfcp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.pic-bw-large\": {\n \"source\": \"iana\",\n \"extensions\": [\"plb\"]\n },\n \"application/vnd.3gpp.pic-bw-small\": {\n \"source\": \"iana\",\n \"extensions\": [\"psb\"]\n },\n \"application/vnd.3gpp.pic-bw-var\": {\n \"source\": \"iana\",\n \"extensions\": [\"pvb\"]\n },\n \"application/vnd.3gpp.s1ap\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.sms\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.sms+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.srvcc-ext+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.srvcc-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.state-and-event-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.ussd+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp2.bcmcsinfo+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp2.sms\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp2.tcap\": {\n \"source\": \"iana\",\n \"extensions\": [\"tcap\"]\n },\n \"application/vnd.3lightssoftware.imagescal\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3m.post-it-notes\": {\n \"source\": \"iana\",\n \"extensions\": [\"pwn\"]\n },\n \"application/vnd.accpac.simply.aso\": {\n \"source\": \"iana\",\n \"extensions\": [\"aso\"]\n },\n \"application/vnd.accpac.simply.imp\": {\n \"source\": \"iana\",\n \"extensions\": [\"imp\"]\n },\n \"application/vnd.acucobol\": {\n \"source\": \"iana\",\n \"extensions\": [\"acu\"]\n },\n \"application/vnd.acucorp\": {\n \"source\": \"iana\",\n \"extensions\": [\"atc\",\"acutc\"]\n },\n \"application/vnd.adobe.air-application-installer-package+zip\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"air\"]\n },\n \"application/vnd.adobe.flash.movie\": {\n \"source\": \"iana\"\n },\n \"application/vnd.adobe.formscentral.fcdt\": {\n \"source\": \"iana\",\n \"extensions\": [\"fcdt\"]\n },\n \"application/vnd.adobe.fxp\": {\n \"source\": \"iana\",\n \"extensions\": [\"fxp\",\"fxpl\"]\n },\n \"application/vnd.adobe.partial-upload\": {\n \"source\": \"iana\"\n },\n \"application/vnd.adobe.xdp+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xdp\"]\n },\n \"application/vnd.adobe.xfdf\": {\n \"source\": \"iana\",\n \"extensions\": [\"xfdf\"]\n },\n \"application/vnd.aether.imp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.afplinedata\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.afplinedata-pagedef\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.cmoca-cmresource\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.foca-charset\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.foca-codedfont\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.foca-codepage\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.modca\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.modca-cmtable\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.modca-formdef\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.modca-mediummap\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.modca-objectcontainer\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.modca-overlay\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.modca-pagesegment\": {\n \"source\": \"iana\"\n },\n \"application/vnd.age\": {\n \"source\": \"iana\",\n \"extensions\": [\"age\"]\n },\n \"application/vnd.ah-barcode\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ahead.space\": {\n \"source\": \"iana\",\n \"extensions\": [\"ahead\"]\n },\n \"application/vnd.airzip.filesecure.azf\": {\n \"source\": \"iana\",\n \"extensions\": [\"azf\"]\n },\n \"application/vnd.airzip.filesecure.azs\": {\n \"source\": \"iana\",\n \"extensions\": [\"azs\"]\n },\n \"application/vnd.amadeus+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.amazon.ebook\": {\n \"source\": \"apache\",\n \"extensions\": [\"azw\"]\n },\n \"application/vnd.amazon.mobi8-ebook\": {\n \"source\": \"iana\"\n },\n \"application/vnd.americandynamics.acc\": {\n \"source\": \"iana\",\n \"extensions\": [\"acc\"]\n },\n \"application/vnd.amiga.ami\": {\n \"source\": \"iana\",\n \"extensions\": [\"ami\"]\n },\n \"application/vnd.amundsen.maze+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.android.ota\": {\n \"source\": \"iana\"\n },\n \"application/vnd.android.package-archive\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"apk\"]\n },\n \"application/vnd.anki\": {\n \"source\": \"iana\"\n },\n \"application/vnd.anser-web-certificate-issue-initiation\": {\n \"source\": \"iana\",\n \"extensions\": [\"cii\"]\n },\n \"application/vnd.anser-web-funds-transfer-initiation\": {\n \"source\": \"apache\",\n \"extensions\": [\"fti\"]\n },\n \"application/vnd.antix.game-component\": {\n \"source\": \"iana\",\n \"extensions\": [\"atx\"]\n },\n \"application/vnd.apache.arrow.file\": {\n \"source\": \"iana\"\n },\n \"application/vnd.apache.arrow.stream\": {\n \"source\": \"iana\"\n },\n \"application/vnd.apache.thrift.binary\": {\n \"source\": \"iana\"\n },\n \"application/vnd.apache.thrift.compact\": {\n \"source\": \"iana\"\n },\n \"application/vnd.apache.thrift.json\": {\n \"source\": \"iana\"\n },\n \"application/vnd.api+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.aplextor.warrp+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.apothekende.reservation+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.apple.installer+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mpkg\"]\n },\n \"application/vnd.apple.keynote\": {\n \"source\": \"iana\",\n \"extensions\": [\"key\"]\n },\n \"application/vnd.apple.mpegurl\": {\n \"source\": \"iana\",\n \"extensions\": [\"m3u8\"]\n },\n \"application/vnd.apple.numbers\": {\n \"source\": \"iana\",\n \"extensions\": [\"numbers\"]\n },\n \"application/vnd.apple.pages\": {\n \"source\": \"iana\",\n \"extensions\": [\"pages\"]\n },\n \"application/vnd.apple.pkpass\": {\n \"compressible\": false,\n \"extensions\": [\"pkpass\"]\n },\n \"application/vnd.arastra.swi\": {\n \"source\": \"iana\"\n },\n \"application/vnd.aristanetworks.swi\": {\n \"source\": \"iana\",\n \"extensions\": [\"swi\"]\n },\n \"application/vnd.artisan+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.artsquare\": {\n \"source\": \"iana\"\n },\n \"application/vnd.astraea-software.iota\": {\n \"source\": \"iana\",\n \"extensions\": [\"iota\"]\n },\n \"application/vnd.audiograph\": {\n \"source\": \"iana\",\n \"extensions\": [\"aep\"]\n },\n \"application/vnd.autopackage\": {\n \"source\": \"iana\"\n },\n \"application/vnd.avalon+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.avistar+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.balsamiq.bmml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"bmml\"]\n },\n \"application/vnd.balsamiq.bmpr\": {\n \"source\": \"iana\"\n },\n \"application/vnd.banana-accounting\": {\n \"source\": \"iana\"\n },\n \"application/vnd.bbf.usp.error\": {\n \"source\": \"iana\"\n },\n \"application/vnd.bbf.usp.msg\": {\n \"source\": \"iana\"\n },\n \"application/vnd.bbf.usp.msg+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.bekitzur-stech+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.bint.med-content\": {\n \"source\": \"iana\"\n },\n \"application/vnd.biopax.rdf+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.blink-idb-value-wrapper\": {\n \"source\": \"iana\"\n },\n \"application/vnd.blueice.multipass\": {\n \"source\": \"iana\",\n \"extensions\": [\"mpm\"]\n },\n \"application/vnd.bluetooth.ep.oob\": {\n \"source\": \"iana\"\n },\n \"application/vnd.bluetooth.le.oob\": {\n \"source\": \"iana\"\n },\n \"application/vnd.bmi\": {\n \"source\": \"iana\",\n \"extensions\": [\"bmi\"]\n },\n \"application/vnd.bpf\": {\n \"source\": \"iana\"\n },\n \"application/vnd.bpf3\": {\n \"source\": \"iana\"\n },\n \"application/vnd.businessobjects\": {\n \"source\": \"iana\",\n \"extensions\": [\"rep\"]\n },\n \"application/vnd.byu.uapi+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.cab-jscript\": {\n \"source\": \"iana\"\n },\n \"application/vnd.canon-cpdl\": {\n \"source\": \"iana\"\n },\n \"application/vnd.canon-lips\": {\n \"source\": \"iana\"\n },\n \"application/vnd.capasystems-pg+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.cendio.thinlinc.clientconf\": {\n \"source\": \"iana\"\n },\n \"application/vnd.century-systems.tcp_stream\": {\n \"source\": \"iana\"\n },\n \"application/vnd.chemdraw+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"cdxml\"]\n },\n \"application/vnd.chess-pgn\": {\n \"source\": \"iana\"\n },\n \"application/vnd.chipnuts.karaoke-mmd\": {\n \"source\": \"iana\",\n \"extensions\": [\"mmd\"]\n },\n \"application/vnd.ciedi\": {\n \"source\": \"iana\"\n },\n \"application/vnd.cinderella\": {\n \"source\": \"iana\",\n \"extensions\": [\"cdy\"]\n },\n \"application/vnd.cirpack.isdn-ext\": {\n \"source\": \"iana\"\n },\n \"application/vnd.citationstyles.style+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"csl\"]\n },\n \"application/vnd.claymore\": {\n \"source\": \"iana\",\n \"extensions\": [\"cla\"]\n },\n \"application/vnd.cloanto.rp9\": {\n \"source\": \"iana\",\n \"extensions\": [\"rp9\"]\n },\n \"application/vnd.clonk.c4group\": {\n \"source\": \"iana\",\n \"extensions\": [\"c4g\",\"c4d\",\"c4f\",\"c4p\",\"c4u\"]\n },\n \"application/vnd.cluetrust.cartomobile-config\": {\n \"source\": \"iana\",\n \"extensions\": [\"c11amc\"]\n },\n \"application/vnd.cluetrust.cartomobile-config-pkg\": {\n \"source\": \"iana\",\n \"extensions\": [\"c11amz\"]\n },\n \"application/vnd.coffeescript\": {\n \"source\": \"iana\"\n },\n \"application/vnd.collabio.xodocuments.document\": {\n \"source\": \"iana\"\n },\n \"application/vnd.collabio.xodocuments.document-template\": {\n \"source\": \"iana\"\n },\n \"application/vnd.collabio.xodocuments.presentation\": {\n \"source\": \"iana\"\n },\n \"application/vnd.collabio.xodocuments.presentation-template\": {\n \"source\": \"iana\"\n },\n \"application/vnd.collabio.xodocuments.spreadsheet\": {\n \"source\": \"iana\"\n },\n \"application/vnd.collabio.xodocuments.spreadsheet-template\": {\n \"source\": \"iana\"\n },\n \"application/vnd.collection+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.collection.doc+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.collection.next+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.comicbook+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.comicbook-rar\": {\n \"source\": \"iana\"\n },\n \"application/vnd.commerce-battelle\": {\n \"source\": \"iana\"\n },\n \"application/vnd.commonspace\": {\n \"source\": \"iana\",\n \"extensions\": [\"csp\"]\n },\n \"application/vnd.contact.cmsg\": {\n \"source\": \"iana\",\n \"extensions\": [\"cdbcmsg\"]\n },\n \"application/vnd.coreos.ignition+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.cosmocaller\": {\n \"source\": \"iana\",\n \"extensions\": [\"cmc\"]\n },\n \"application/vnd.crick.clicker\": {\n \"source\": \"iana\",\n \"extensions\": [\"clkx\"]\n },\n \"application/vnd.crick.clicker.keyboard\": {\n \"source\": \"iana\",\n \"extensions\": [\"clkk\"]\n },\n \"application/vnd.crick.clicker.palette\": {\n \"source\": \"iana\",\n \"extensions\": [\"clkp\"]\n },\n \"application/vnd.crick.clicker.template\": {\n \"source\": \"iana\",\n \"extensions\": [\"clkt\"]\n },\n \"application/vnd.crick.clicker.wordbank\": {\n \"source\": \"iana\",\n \"extensions\": [\"clkw\"]\n },\n \"application/vnd.criticaltools.wbs+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"wbs\"]\n },\n \"application/vnd.cryptii.pipe+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.crypto-shade-file\": {\n \"source\": \"iana\"\n },\n \"application/vnd.cryptomator.encrypted\": {\n \"source\": \"iana\"\n },\n \"application/vnd.cryptomator.vault\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ctc-posml\": {\n \"source\": \"iana\",\n \"extensions\": [\"pml\"]\n },\n \"application/vnd.ctct.ws+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.cups-pdf\": {\n \"source\": \"iana\"\n },\n \"application/vnd.cups-postscript\": {\n \"source\": \"iana\"\n },\n \"application/vnd.cups-ppd\": {\n \"source\": \"iana\",\n \"extensions\": [\"ppd\"]\n },\n \"application/vnd.cups-raster\": {\n \"source\": \"iana\"\n },\n \"application/vnd.cups-raw\": {\n \"source\": \"iana\"\n },\n \"application/vnd.curl\": {\n \"source\": \"iana\"\n },\n \"application/vnd.curl.car\": {\n \"source\": \"apache\",\n \"extensions\": [\"car\"]\n },\n \"application/vnd.curl.pcurl\": {\n \"source\": \"apache\",\n \"extensions\": [\"pcurl\"]\n },\n \"application/vnd.cyan.dean.root+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.cybank\": {\n \"source\": \"iana\"\n },\n \"application/vnd.cyclonedx+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.cyclonedx+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.d2l.coursepackage1p0+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.d3m-dataset\": {\n \"source\": \"iana\"\n },\n \"application/vnd.d3m-problem\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dart\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"dart\"]\n },\n \"application/vnd.data-vision.rdz\": {\n \"source\": \"iana\",\n \"extensions\": [\"rdz\"]\n },\n \"application/vnd.datapackage+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dataresource+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dbf\": {\n \"source\": \"iana\",\n \"extensions\": [\"dbf\"]\n },\n \"application/vnd.debian.binary-package\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dece.data\": {\n \"source\": \"iana\",\n \"extensions\": [\"uvf\",\"uvvf\",\"uvd\",\"uvvd\"]\n },\n \"application/vnd.dece.ttml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"uvt\",\"uvvt\"]\n },\n \"application/vnd.dece.unspecified\": {\n \"source\": \"iana\",\n \"extensions\": [\"uvx\",\"uvvx\"]\n },\n \"application/vnd.dece.zip\": {\n \"source\": \"iana\",\n \"extensions\": [\"uvz\",\"uvvz\"]\n },\n \"application/vnd.denovo.fcselayout-link\": {\n \"source\": \"iana\",\n \"extensions\": [\"fe_launch\"]\n },\n \"application/vnd.desmume.movie\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dir-bi.plate-dl-nosuffix\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dm.delegation+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dna\": {\n \"source\": \"iana\",\n \"extensions\": [\"dna\"]\n },\n \"application/vnd.document+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dolby.mlp\": {\n \"source\": \"apache\",\n \"extensions\": [\"mlp\"]\n },\n \"application/vnd.dolby.mobile.1\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dolby.mobile.2\": {\n \"source\": \"iana\"\n },\n \"application/vnd.doremir.scorecloud-binary-document\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dpgraph\": {\n \"source\": \"iana\",\n \"extensions\": [\"dpg\"]\n },\n \"application/vnd.dreamfactory\": {\n \"source\": \"iana\",\n \"extensions\": [\"dfac\"]\n },\n \"application/vnd.drive+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ds-keypoint\": {\n \"source\": \"apache\",\n \"extensions\": [\"kpxx\"]\n },\n \"application/vnd.dtg.local\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dtg.local.flash\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dtg.local.html\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.ait\": {\n \"source\": \"iana\",\n \"extensions\": [\"ait\"]\n },\n \"application/vnd.dvb.dvbisl+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dvb.dvbj\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.esgcontainer\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.ipdcdftnotifaccess\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.ipdcesgaccess\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.ipdcesgaccess2\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.ipdcesgpdd\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.ipdcroaming\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.iptv.alfec-base\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.iptv.alfec-enhancement\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.notif-aggregate-root+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dvb.notif-container+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dvb.notif-generic+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dvb.notif-ia-msglist+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dvb.notif-ia-registration-request+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dvb.notif-ia-registration-response+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dvb.notif-init+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dvb.pfr\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.service\": {\n \"source\": \"iana\",\n \"extensions\": [\"svc\"]\n },\n \"application/vnd.dxr\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dynageo\": {\n \"source\": \"iana\",\n \"extensions\": [\"geo\"]\n },\n \"application/vnd.dzr\": {\n \"source\": \"iana\"\n },\n \"application/vnd.easykaraoke.cdgdownload\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ecdis-update\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ecip.rlp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.eclipse.ditto+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ecowin.chart\": {\n \"source\": \"iana\",\n \"extensions\": [\"mag\"]\n },\n \"application/vnd.ecowin.filerequest\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ecowin.fileupdate\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ecowin.series\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ecowin.seriesrequest\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ecowin.seriesupdate\": {\n \"source\": \"iana\"\n },\n \"application/vnd.efi.img\": {\n \"source\": \"iana\"\n },\n \"application/vnd.efi.iso\": {\n \"source\": \"iana\"\n },\n \"application/vnd.emclient.accessrequest+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.enliven\": {\n \"source\": \"iana\",\n \"extensions\": [\"nml\"]\n },\n \"application/vnd.enphase.envoy\": {\n \"source\": \"iana\"\n },\n \"application/vnd.eprints.data+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.epson.esf\": {\n \"source\": \"iana\",\n \"extensions\": [\"esf\"]\n },\n \"application/vnd.epson.msf\": {\n \"source\": \"iana\",\n \"extensions\": [\"msf\"]\n },\n \"application/vnd.epson.quickanime\": {\n \"source\": \"iana\",\n \"extensions\": [\"qam\"]\n },\n \"application/vnd.epson.salt\": {\n \"source\": \"iana\",\n \"extensions\": [\"slt\"]\n },\n \"application/vnd.epson.ssf\": {\n \"source\": \"iana\",\n \"extensions\": [\"ssf\"]\n },\n \"application/vnd.ericsson.quickcall\": {\n \"source\": \"iana\"\n },\n \"application/vnd.espass-espass+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.eszigno3+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"es3\",\"et3\"]\n },\n \"application/vnd.etsi.aoc+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.asic-e+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.etsi.asic-s+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.etsi.cug+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.iptvcommand+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.iptvdiscovery+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.iptvprofile+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.iptvsad-bc+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.iptvsad-cod+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.iptvsad-npvr+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.iptvservice+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.iptvsync+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.iptvueprofile+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.mcid+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.mheg5\": {\n \"source\": \"iana\"\n },\n \"application/vnd.etsi.overload-control-policy-dataset+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.pstn+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.sci+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.simservs+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.timestamp-token\": {\n \"source\": \"iana\"\n },\n \"application/vnd.etsi.tsl+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.tsl.der\": {\n \"source\": \"iana\"\n },\n \"application/vnd.eu.kasparian.car+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.eudora.data\": {\n \"source\": \"iana\"\n },\n \"application/vnd.evolv.ecig.profile\": {\n \"source\": \"iana\"\n },\n \"application/vnd.evolv.ecig.settings\": {\n \"source\": \"iana\"\n },\n \"application/vnd.evolv.ecig.theme\": {\n \"source\": \"iana\"\n },\n \"application/vnd.exstream-empower+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.exstream-package\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ezpix-album\": {\n \"source\": \"iana\",\n \"extensions\": [\"ez2\"]\n },\n \"application/vnd.ezpix-package\": {\n \"source\": \"iana\",\n \"extensions\": [\"ez3\"]\n },\n \"application/vnd.f-secure.mobile\": {\n \"source\": \"iana\"\n },\n \"application/vnd.familysearch.gedcom+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.fastcopy-disk-image\": {\n \"source\": \"iana\"\n },\n \"application/vnd.fdf\": {\n \"source\": \"iana\",\n \"extensions\": [\"fdf\"]\n },\n \"application/vnd.fdsn.mseed\": {\n \"source\": \"iana\",\n \"extensions\": [\"mseed\"]\n },\n \"application/vnd.fdsn.seed\": {\n \"source\": \"iana\",\n \"extensions\": [\"seed\",\"dataless\"]\n },\n \"application/vnd.ffsns\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ficlab.flb+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.filmit.zfc\": {\n \"source\": \"iana\"\n },\n \"application/vnd.fints\": {\n \"source\": \"iana\"\n },\n \"application/vnd.firemonkeys.cloudcell\": {\n \"source\": \"iana\"\n },\n \"application/vnd.flographit\": {\n \"source\": \"iana\",\n \"extensions\": [\"gph\"]\n },\n \"application/vnd.fluxtime.clip\": {\n \"source\": \"iana\",\n \"extensions\": [\"ftc\"]\n },\n \"application/vnd.font-fontforge-sfd\": {\n \"source\": \"iana\"\n },\n \"application/vnd.framemaker\": {\n \"source\": \"iana\",\n \"extensions\": [\"fm\",\"frame\",\"maker\",\"book\"]\n },\n \"application/vnd.frogans.fnc\": {\n \"source\": \"iana\",\n \"extensions\": [\"fnc\"]\n },\n \"application/vnd.frogans.ltf\": {\n \"source\": \"iana\",\n \"extensions\": [\"ltf\"]\n },\n \"application/vnd.fsc.weblaunch\": {\n \"source\": \"iana\",\n \"extensions\": [\"fsc\"]\n },\n \"application/vnd.fujifilm.fb.docuworks\": {\n \"source\": \"iana\"\n },\n \"application/vnd.fujifilm.fb.docuworks.binder\": {\n \"source\": \"iana\"\n },\n \"application/vnd.fujifilm.fb.docuworks.container\": {\n \"source\": \"iana\"\n },\n \"application/vnd.fujifilm.fb.jfi+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.fujitsu.oasys\": {\n \"source\": \"iana\",\n \"extensions\": [\"oas\"]\n },\n \"application/vnd.fujitsu.oasys2\": {\n \"source\": \"iana\",\n \"extensions\": [\"oa2\"]\n },\n \"application/vnd.fujitsu.oasys3\": {\n \"source\": \"iana\",\n \"extensions\": [\"oa3\"]\n },\n \"application/vnd.fujitsu.oasysgp\": {\n \"source\": \"iana\",\n \"extensions\": [\"fg5\"]\n },\n \"application/vnd.fujitsu.oasysprs\": {\n \"source\": \"iana\",\n \"extensions\": [\"bh2\"]\n },\n \"application/vnd.fujixerox.art-ex\": {\n \"source\": \"iana\"\n },\n \"application/vnd.fujixerox.art4\": {\n \"source\": \"iana\"\n },\n \"application/vnd.fujixerox.ddd\": {\n \"source\": \"iana\",\n \"extensions\": [\"ddd\"]\n },\n \"application/vnd.fujixerox.docuworks\": {\n \"source\": \"iana\",\n \"extensions\": [\"xdw\"]\n },\n \"application/vnd.fujixerox.docuworks.binder\": {\n \"source\": \"iana\",\n \"extensions\": [\"xbd\"]\n },\n \"application/vnd.fujixerox.docuworks.container\": {\n \"source\": \"iana\"\n },\n \"application/vnd.fujixerox.hbpl\": {\n \"source\": \"iana\"\n },\n \"application/vnd.fut-misnet\": {\n \"source\": \"iana\"\n },\n \"application/vnd.futoin+cbor\": {\n \"source\": \"iana\"\n },\n \"application/vnd.futoin+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.fuzzysheet\": {\n \"source\": \"iana\",\n \"extensions\": [\"fzs\"]\n },\n \"application/vnd.genomatix.tuxedo\": {\n \"source\": \"iana\",\n \"extensions\": [\"txd\"]\n },\n \"application/vnd.gentics.grd+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.geo+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.geocube+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.geogebra.file\": {\n \"source\": \"iana\",\n \"extensions\": [\"ggb\"]\n },\n \"application/vnd.geogebra.slides\": {\n \"source\": \"iana\"\n },\n \"application/vnd.geogebra.tool\": {\n \"source\": \"iana\",\n \"extensions\": [\"ggt\"]\n },\n \"application/vnd.geometry-explorer\": {\n \"source\": \"iana\",\n \"extensions\": [\"gex\",\"gre\"]\n },\n \"application/vnd.geonext\": {\n \"source\": \"iana\",\n \"extensions\": [\"gxt\"]\n },\n \"application/vnd.geoplan\": {\n \"source\": \"iana\",\n \"extensions\": [\"g2w\"]\n },\n \"application/vnd.geospace\": {\n \"source\": \"iana\",\n \"extensions\": [\"g3w\"]\n },\n \"application/vnd.gerber\": {\n \"source\": \"iana\"\n },\n \"application/vnd.globalplatform.card-content-mgt\": {\n \"source\": \"iana\"\n },\n \"application/vnd.globalplatform.card-content-mgt-response\": {\n \"source\": \"iana\"\n },\n \"application/vnd.gmx\": {\n \"source\": \"iana\",\n \"extensions\": [\"gmx\"]\n },\n \"application/vnd.google-apps.document\": {\n \"compressible\": false,\n \"extensions\": [\"gdoc\"]\n },\n \"application/vnd.google-apps.presentation\": {\n \"compressible\": false,\n \"extensions\": [\"gslides\"]\n },\n \"application/vnd.google-apps.spreadsheet\": {\n \"compressible\": false,\n \"extensions\": [\"gsheet\"]\n },\n \"application/vnd.google-earth.kml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"kml\"]\n },\n \"application/vnd.google-earth.kmz\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"kmz\"]\n },\n \"application/vnd.gov.sk.e-form+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.gov.sk.e-form+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.gov.sk.xmldatacontainer+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.grafeq\": {\n \"source\": \"iana\",\n \"extensions\": [\"gqf\",\"gqs\"]\n },\n \"application/vnd.gridmp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.groove-account\": {\n \"source\": \"iana\",\n \"extensions\": [\"gac\"]\n },\n \"application/vnd.groove-help\": {\n \"source\": \"iana\",\n \"extensions\": [\"ghf\"]\n },\n \"application/vnd.groove-identity-message\": {\n \"source\": \"iana\",\n \"extensions\": [\"gim\"]\n },\n \"application/vnd.groove-injector\": {\n \"source\": \"iana\",\n \"extensions\": [\"grv\"]\n },\n \"application/vnd.groove-tool-message\": {\n \"source\": \"iana\",\n \"extensions\": [\"gtm\"]\n },\n \"application/vnd.groove-tool-template\": {\n \"source\": \"iana\",\n \"extensions\": [\"tpl\"]\n },\n \"application/vnd.groove-vcard\": {\n \"source\": \"iana\",\n \"extensions\": [\"vcg\"]\n },\n \"application/vnd.hal+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.hal+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"hal\"]\n },\n \"application/vnd.handheld-entertainment+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"zmm\"]\n },\n \"application/vnd.hbci\": {\n \"source\": \"iana\",\n \"extensions\": [\"hbci\"]\n },\n \"application/vnd.hc+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.hcl-bireports\": {\n \"source\": \"iana\"\n },\n \"application/vnd.hdt\": {\n \"source\": \"iana\"\n },\n \"application/vnd.heroku+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.hhe.lesson-player\": {\n \"source\": \"iana\",\n \"extensions\": [\"les\"]\n },\n \"application/vnd.hl7cda+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/vnd.hl7v2+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/vnd.hp-hpgl\": {\n \"source\": \"iana\",\n \"extensions\": [\"hpgl\"]\n },\n \"application/vnd.hp-hpid\": {\n \"source\": \"iana\",\n \"extensions\": [\"hpid\"]\n },\n \"application/vnd.hp-hps\": {\n \"source\": \"iana\",\n \"extensions\": [\"hps\"]\n },\n \"application/vnd.hp-jlyt\": {\n \"source\": \"iana\",\n \"extensions\": [\"jlt\"]\n },\n \"application/vnd.hp-pcl\": {\n \"source\": \"iana\",\n \"extensions\": [\"pcl\"]\n },\n \"application/vnd.hp-pclxl\": {\n \"source\": \"iana\",\n \"extensions\": [\"pclxl\"]\n },\n \"application/vnd.httphone\": {\n \"source\": \"iana\"\n },\n \"application/vnd.hydrostatix.sof-data\": {\n \"source\": \"iana\",\n \"extensions\": [\"sfd-hdstx\"]\n },\n \"application/vnd.hyper+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.hyper-item+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.hyperdrive+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.hzn-3d-crossword\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ibm.afplinedata\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ibm.electronic-media\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ibm.minipay\": {\n \"source\": \"iana\",\n \"extensions\": [\"mpy\"]\n },\n \"application/vnd.ibm.modcap\": {\n \"source\": \"iana\",\n \"extensions\": [\"afp\",\"listafp\",\"list3820\"]\n },\n \"application/vnd.ibm.rights-management\": {\n \"source\": \"iana\",\n \"extensions\": [\"irm\"]\n },\n \"application/vnd.ibm.secure-container\": {\n \"source\": \"iana\",\n \"extensions\": [\"sc\"]\n },\n \"application/vnd.iccprofile\": {\n \"source\": \"iana\",\n \"extensions\": [\"icc\",\"icm\"]\n },\n \"application/vnd.ieee.1905\": {\n \"source\": \"iana\"\n },\n \"application/vnd.igloader\": {\n \"source\": \"iana\",\n \"extensions\": [\"igl\"]\n },\n \"application/vnd.imagemeter.folder+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.imagemeter.image+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.immervision-ivp\": {\n \"source\": \"iana\",\n \"extensions\": [\"ivp\"]\n },\n \"application/vnd.immervision-ivu\": {\n \"source\": \"iana\",\n \"extensions\": [\"ivu\"]\n },\n \"application/vnd.ims.imsccv1p1\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ims.imsccv1p2\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ims.imsccv1p3\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ims.lis.v2.result+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ims.lti.v2.toolconsumerprofile+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ims.lti.v2.toolproxy+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ims.lti.v2.toolproxy.id+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ims.lti.v2.toolsettings+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ims.lti.v2.toolsettings.simple+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.informedcontrol.rms+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.informix-visionary\": {\n \"source\": \"iana\"\n },\n \"application/vnd.infotech.project\": {\n \"source\": \"iana\"\n },\n \"application/vnd.infotech.project+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.innopath.wamp.notification\": {\n \"source\": \"iana\"\n },\n \"application/vnd.insors.igm\": {\n \"source\": \"iana\",\n \"extensions\": [\"igm\"]\n },\n \"application/vnd.intercon.formnet\": {\n \"source\": \"iana\",\n \"extensions\": [\"xpw\",\"xpx\"]\n },\n \"application/vnd.intergeo\": {\n \"source\": \"iana\",\n \"extensions\": [\"i2g\"]\n },\n \"application/vnd.intertrust.digibox\": {\n \"source\": \"iana\"\n },\n \"application/vnd.intertrust.nncp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.intu.qbo\": {\n \"source\": \"iana\",\n \"extensions\": [\"qbo\"]\n },\n \"application/vnd.intu.qfx\": {\n \"source\": \"iana\",\n \"extensions\": [\"qfx\"]\n },\n \"application/vnd.iptc.g2.catalogitem+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.iptc.g2.conceptitem+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.iptc.g2.knowledgeitem+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.iptc.g2.newsitem+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.iptc.g2.newsmessage+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.iptc.g2.packageitem+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.iptc.g2.planningitem+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ipunplugged.rcprofile\": {\n \"source\": \"iana\",\n \"extensions\": [\"rcprofile\"]\n },\n \"application/vnd.irepository.package+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"irp\"]\n },\n \"application/vnd.is-xpr\": {\n \"source\": \"iana\",\n \"extensions\": [\"xpr\"]\n },\n \"application/vnd.isac.fcs\": {\n \"source\": \"iana\",\n \"extensions\": [\"fcs\"]\n },\n \"application/vnd.iso11783-10+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.jam\": {\n \"source\": \"iana\",\n \"extensions\": [\"jam\"]\n },\n \"application/vnd.japannet-directory-service\": {\n \"source\": \"iana\"\n },\n \"application/vnd.japannet-jpnstore-wakeup\": {\n \"source\": \"iana\"\n },\n \"application/vnd.japannet-payment-wakeup\": {\n \"source\": \"iana\"\n },\n \"application/vnd.japannet-registration\": {\n \"source\": \"iana\"\n },\n \"application/vnd.japannet-registration-wakeup\": {\n \"source\": \"iana\"\n },\n \"application/vnd.japannet-setstore-wakeup\": {\n \"source\": \"iana\"\n },\n \"application/vnd.japannet-verification\": {\n \"source\": \"iana\"\n },\n \"application/vnd.japannet-verification-wakeup\": {\n \"source\": \"iana\"\n },\n \"application/vnd.jcp.javame.midlet-rms\": {\n \"source\": \"iana\",\n \"extensions\": [\"rms\"]\n },\n \"application/vnd.jisp\": {\n \"source\": \"iana\",\n \"extensions\": [\"jisp\"]\n },\n \"application/vnd.joost.joda-archive\": {\n \"source\": \"iana\",\n \"extensions\": [\"joda\"]\n },\n \"application/vnd.jsk.isdn-ngn\": {\n \"source\": \"iana\"\n },\n \"application/vnd.kahootz\": {\n \"source\": \"iana\",\n \"extensions\": [\"ktz\",\"ktr\"]\n },\n \"application/vnd.kde.karbon\": {\n \"source\": \"iana\",\n \"extensions\": [\"karbon\"]\n },\n \"application/vnd.kde.kchart\": {\n \"source\": \"iana\",\n \"extensions\": [\"chrt\"]\n },\n \"application/vnd.kde.kformula\": {\n \"source\": \"iana\",\n \"extensions\": [\"kfo\"]\n },\n \"application/vnd.kde.kivio\": {\n \"source\": \"iana\",\n \"extensions\": [\"flw\"]\n },\n \"application/vnd.kde.kontour\": {\n \"source\": \"iana\",\n \"extensions\": [\"kon\"]\n },\n \"application/vnd.kde.kpresenter\": {\n \"source\": \"iana\",\n \"extensions\": [\"kpr\",\"kpt\"]\n },\n \"application/vnd.kde.kspread\": {\n \"source\": \"iana\",\n \"extensions\": [\"ksp\"]\n },\n \"application/vnd.kde.kword\": {\n \"source\": \"iana\",\n \"extensions\": [\"kwd\",\"kwt\"]\n },\n \"application/vnd.kenameaapp\": {\n \"source\": \"iana\",\n \"extensions\": [\"htke\"]\n },\n \"application/vnd.kidspiration\": {\n \"source\": \"iana\",\n \"extensions\": [\"kia\"]\n },\n \"application/vnd.kinar\": {\n \"source\": \"iana\",\n \"extensions\": [\"kne\",\"knp\"]\n },\n \"application/vnd.koan\": {\n \"source\": \"iana\",\n \"extensions\": [\"skp\",\"skd\",\"skt\",\"skm\"]\n },\n \"application/vnd.kodak-descriptor\": {\n \"source\": \"iana\",\n \"extensions\": [\"sse\"]\n },\n \"application/vnd.las\": {\n \"source\": \"iana\"\n },\n \"application/vnd.las.las+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.las.las+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"lasxml\"]\n },\n \"application/vnd.laszip\": {\n \"source\": \"iana\"\n },\n \"application/vnd.leap+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.liberty-request+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.llamagraphics.life-balance.desktop\": {\n \"source\": \"iana\",\n \"extensions\": [\"lbd\"]\n },\n \"application/vnd.llamagraphics.life-balance.exchange+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"lbe\"]\n },\n \"application/vnd.logipipe.circuit+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.loom\": {\n \"source\": \"iana\"\n },\n \"application/vnd.lotus-1-2-3\": {\n \"source\": \"iana\",\n \"extensions\": [\"123\"]\n },\n \"application/vnd.lotus-approach\": {\n \"source\": \"iana\",\n \"extensions\": [\"apr\"]\n },\n \"application/vnd.lotus-freelance\": {\n \"source\": \"iana\",\n \"extensions\": [\"pre\"]\n },\n \"application/vnd.lotus-notes\": {\n \"source\": \"iana\",\n \"extensions\": [\"nsf\"]\n },\n \"application/vnd.lotus-organizer\": {\n \"source\": \"iana\",\n \"extensions\": [\"org\"]\n },\n \"application/vnd.lotus-screencam\": {\n \"source\": \"iana\",\n \"extensions\": [\"scm\"]\n },\n \"application/vnd.lotus-wordpro\": {\n \"source\": \"iana\",\n \"extensions\": [\"lwp\"]\n },\n \"application/vnd.macports.portpkg\": {\n \"source\": \"iana\",\n \"extensions\": [\"portpkg\"]\n },\n \"application/vnd.mapbox-vector-tile\": {\n \"source\": \"iana\",\n \"extensions\": [\"mvt\"]\n },\n \"application/vnd.marlin.drm.actiontoken+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.marlin.drm.conftoken+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.marlin.drm.license+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.marlin.drm.mdcf\": {\n \"source\": \"iana\"\n },\n \"application/vnd.mason+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.maxar.archive.3tz+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.maxmind.maxmind-db\": {\n \"source\": \"iana\"\n },\n \"application/vnd.mcd\": {\n \"source\": \"iana\",\n \"extensions\": [\"mcd\"]\n },\n \"application/vnd.medcalcdata\": {\n \"source\": \"iana\",\n \"extensions\": [\"mc1\"]\n },\n \"application/vnd.mediastation.cdkey\": {\n \"source\": \"iana\",\n \"extensions\": [\"cdkey\"]\n },\n \"application/vnd.meridian-slingshot\": {\n \"source\": \"iana\"\n },\n \"application/vnd.mfer\": {\n \"source\": \"iana\",\n \"extensions\": [\"mwf\"]\n },\n \"application/vnd.mfmp\": {\n \"source\": \"iana\",\n \"extensions\": [\"mfm\"]\n },\n \"application/vnd.micro+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.micrografx.flo\": {\n \"source\": \"iana\",\n \"extensions\": [\"flo\"]\n },\n \"application/vnd.micrografx.igx\": {\n \"source\": \"iana\",\n \"extensions\": [\"igx\"]\n },\n \"application/vnd.microsoft.portable-executable\": {\n \"source\": \"iana\"\n },\n \"application/vnd.microsoft.windows.thumbnail-cache\": {\n \"source\": \"iana\"\n },\n \"application/vnd.miele+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.mif\": {\n \"source\": \"iana\",\n \"extensions\": [\"mif\"]\n },\n \"application/vnd.minisoft-hp3000-save\": {\n \"source\": \"iana\"\n },\n \"application/vnd.mitsubishi.misty-guard.trustweb\": {\n \"source\": \"iana\"\n },\n \"application/vnd.mobius.daf\": {\n \"source\": \"iana\",\n \"extensions\": [\"daf\"]\n },\n \"application/vnd.mobius.dis\": {\n \"source\": \"iana\",\n \"extensions\": [\"dis\"]\n },\n \"application/vnd.mobius.mbk\": {\n \"source\": \"iana\",\n \"extensions\": [\"mbk\"]\n },\n \"application/vnd.mobius.mqy\": {\n \"source\": \"iana\",\n \"extensions\": [\"mqy\"]\n },\n \"application/vnd.mobius.msl\": {\n \"source\": \"iana\",\n \"extensions\": [\"msl\"]\n },\n \"application/vnd.mobius.plc\": {\n \"source\": \"iana\",\n \"extensions\": [\"plc\"]\n },\n \"application/vnd.mobius.txf\": {\n \"source\": \"iana\",\n \"extensions\": [\"txf\"]\n },\n \"application/vnd.mophun.application\": {\n \"source\": \"iana\",\n \"extensions\": [\"mpn\"]\n },\n \"application/vnd.mophun.certificate\": {\n \"source\": \"iana\",\n \"extensions\": [\"mpc\"]\n },\n \"application/vnd.motorola.flexsuite\": {\n \"source\": \"iana\"\n },\n \"application/vnd.motorola.flexsuite.adsi\": {\n \"source\": \"iana\"\n },\n \"application/vnd.motorola.flexsuite.fis\": {\n \"source\": \"iana\"\n },\n \"application/vnd.motorola.flexsuite.gotap\": {\n \"source\": \"iana\"\n },\n \"application/vnd.motorola.flexsuite.kmr\": {\n \"source\": \"iana\"\n },\n \"application/vnd.motorola.flexsuite.ttc\": {\n \"source\": \"iana\"\n },\n \"application/vnd.motorola.flexsuite.wem\": {\n \"source\": \"iana\"\n },\n \"application/vnd.motorola.iprm\": {\n \"source\": \"iana\"\n },\n \"application/vnd.mozilla.xul+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xul\"]\n },\n \"application/vnd.ms-3mfdocument\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-artgalry\": {\n \"source\": \"iana\",\n \"extensions\": [\"cil\"]\n },\n \"application/vnd.ms-asf\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-cab-compressed\": {\n \"source\": \"iana\",\n \"extensions\": [\"cab\"]\n },\n \"application/vnd.ms-color.iccprofile\": {\n \"source\": \"apache\"\n },\n \"application/vnd.ms-excel\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"xls\",\"xlm\",\"xla\",\"xlc\",\"xlt\",\"xlw\"]\n },\n \"application/vnd.ms-excel.addin.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"xlam\"]\n },\n \"application/vnd.ms-excel.sheet.binary.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"xlsb\"]\n },\n \"application/vnd.ms-excel.sheet.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"xlsm\"]\n },\n \"application/vnd.ms-excel.template.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"xltm\"]\n },\n \"application/vnd.ms-fontobject\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"eot\"]\n },\n \"application/vnd.ms-htmlhelp\": {\n \"source\": \"iana\",\n \"extensions\": [\"chm\"]\n },\n \"application/vnd.ms-ims\": {\n \"source\": \"iana\",\n \"extensions\": [\"ims\"]\n },\n \"application/vnd.ms-lrm\": {\n \"source\": \"iana\",\n \"extensions\": [\"lrm\"]\n },\n \"application/vnd.ms-office.activex+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ms-officetheme\": {\n \"source\": \"iana\",\n \"extensions\": [\"thmx\"]\n },\n \"application/vnd.ms-opentype\": {\n \"source\": \"apache\",\n \"compressible\": true\n },\n \"application/vnd.ms-outlook\": {\n \"compressible\": false,\n \"extensions\": [\"msg\"]\n },\n \"application/vnd.ms-package.obfuscated-opentype\": {\n \"source\": \"apache\"\n },\n \"application/vnd.ms-pki.seccat\": {\n \"source\": \"apache\",\n \"extensions\": [\"cat\"]\n },\n \"application/vnd.ms-pki.stl\": {\n \"source\": \"apache\",\n \"extensions\": [\"stl\"]\n },\n \"application/vnd.ms-playready.initiator+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ms-powerpoint\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"ppt\",\"pps\",\"pot\"]\n },\n \"application/vnd.ms-powerpoint.addin.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"ppam\"]\n },\n \"application/vnd.ms-powerpoint.presentation.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"pptm\"]\n },\n \"application/vnd.ms-powerpoint.slide.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"sldm\"]\n },\n \"application/vnd.ms-powerpoint.slideshow.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"ppsm\"]\n },\n \"application/vnd.ms-powerpoint.template.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"potm\"]\n },\n \"application/vnd.ms-printdevicecapabilities+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ms-printing.printticket+xml\": {\n \"source\": \"apache\",\n \"compressible\": true\n },\n \"application/vnd.ms-printschematicket+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ms-project\": {\n \"source\": \"iana\",\n \"extensions\": [\"mpp\",\"mpt\"]\n },\n \"application/vnd.ms-tnef\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-windows.devicepairing\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-windows.nwprinting.oob\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-windows.printerpairing\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-windows.wsd.oob\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-wmdrm.lic-chlg-req\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-wmdrm.lic-resp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-wmdrm.meter-chlg-req\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-wmdrm.meter-resp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-word.document.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"docm\"]\n },\n \"application/vnd.ms-word.template.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"dotm\"]\n },\n \"application/vnd.ms-works\": {\n \"source\": \"iana\",\n \"extensions\": [\"wps\",\"wks\",\"wcm\",\"wdb\"]\n },\n \"application/vnd.ms-wpl\": {\n \"source\": \"iana\",\n \"extensions\": [\"wpl\"]\n },\n \"application/vnd.ms-xpsdocument\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"xps\"]\n },\n \"application/vnd.msa-disk-image\": {\n \"source\": \"iana\"\n },\n \"application/vnd.mseq\": {\n \"source\": \"iana\",\n \"extensions\": [\"mseq\"]\n },\n \"application/vnd.msign\": {\n \"source\": \"iana\"\n },\n \"application/vnd.multiad.creator\": {\n \"source\": \"iana\"\n },\n \"application/vnd.multiad.creator.cif\": {\n \"source\": \"iana\"\n },\n \"application/vnd.music-niff\": {\n \"source\": \"iana\"\n },\n \"application/vnd.musician\": {\n \"source\": \"iana\",\n \"extensions\": [\"mus\"]\n },\n \"application/vnd.muvee.style\": {\n \"source\": \"iana\",\n \"extensions\": [\"msty\"]\n },\n \"application/vnd.mynfc\": {\n \"source\": \"iana\",\n \"extensions\": [\"taglet\"]\n },\n \"application/vnd.nacamar.ybrid+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ncd.control\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ncd.reference\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nearst.inv+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.nebumind.line\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nervana\": {\n \"source\": \"iana\"\n },\n \"application/vnd.netfpx\": {\n \"source\": \"iana\"\n },\n \"application/vnd.neurolanguage.nlu\": {\n \"source\": \"iana\",\n \"extensions\": [\"nlu\"]\n },\n \"application/vnd.nimn\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nintendo.nitro.rom\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nintendo.snes.rom\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nitf\": {\n \"source\": \"iana\",\n \"extensions\": [\"ntf\",\"nitf\"]\n },\n \"application/vnd.noblenet-directory\": {\n \"source\": \"iana\",\n \"extensions\": [\"nnd\"]\n },\n \"application/vnd.noblenet-sealer\": {\n \"source\": \"iana\",\n \"extensions\": [\"nns\"]\n },\n \"application/vnd.noblenet-web\": {\n \"source\": \"iana\",\n \"extensions\": [\"nnw\"]\n },\n \"application/vnd.nokia.catalogs\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nokia.conml+wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nokia.conml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.nokia.iptv.config+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.nokia.isds-radio-presets\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nokia.landmark+wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nokia.landmark+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.nokia.landmarkcollection+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.nokia.n-gage.ac+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"ac\"]\n },\n \"application/vnd.nokia.n-gage.data\": {\n \"source\": \"iana\",\n \"extensions\": [\"ngdat\"]\n },\n \"application/vnd.nokia.n-gage.symbian.install\": {\n \"source\": \"iana\",\n \"extensions\": [\"n-gage\"]\n },\n \"application/vnd.nokia.ncd\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nokia.pcd+wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nokia.pcd+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.nokia.radio-preset\": {\n \"source\": \"iana\",\n \"extensions\": [\"rpst\"]\n },\n \"application/vnd.nokia.radio-presets\": {\n \"source\": \"iana\",\n \"extensions\": [\"rpss\"]\n },\n \"application/vnd.novadigm.edm\": {\n \"source\": \"iana\",\n \"extensions\": [\"edm\"]\n },\n \"application/vnd.novadigm.edx\": {\n \"source\": \"iana\",\n \"extensions\": [\"edx\"]\n },\n \"application/vnd.novadigm.ext\": {\n \"source\": \"iana\",\n \"extensions\": [\"ext\"]\n },\n \"application/vnd.ntt-local.content-share\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ntt-local.file-transfer\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ntt-local.ogw_remote-access\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ntt-local.sip-ta_remote\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ntt-local.sip-ta_tcp_stream\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oasis.opendocument.chart\": {\n \"source\": \"iana\",\n \"extensions\": [\"odc\"]\n },\n \"application/vnd.oasis.opendocument.chart-template\": {\n \"source\": \"iana\",\n \"extensions\": [\"otc\"]\n },\n \"application/vnd.oasis.opendocument.database\": {\n \"source\": \"iana\",\n \"extensions\": [\"odb\"]\n },\n \"application/vnd.oasis.opendocument.formula\": {\n \"source\": \"iana\",\n \"extensions\": [\"odf\"]\n },\n \"application/vnd.oasis.opendocument.formula-template\": {\n \"source\": \"iana\",\n \"extensions\": [\"odft\"]\n },\n \"application/vnd.oasis.opendocument.graphics\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"odg\"]\n },\n \"application/vnd.oasis.opendocument.graphics-template\": {\n \"source\": \"iana\",\n \"extensions\": [\"otg\"]\n },\n \"application/vnd.oasis.opendocument.image\": {\n \"source\": \"iana\",\n \"extensions\": [\"odi\"]\n },\n \"application/vnd.oasis.opendocument.image-template\": {\n \"source\": \"iana\",\n \"extensions\": [\"oti\"]\n },\n \"application/vnd.oasis.opendocument.presentation\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"odp\"]\n },\n \"application/vnd.oasis.opendocument.presentation-template\": {\n \"source\": \"iana\",\n \"extensions\": [\"otp\"]\n },\n \"application/vnd.oasis.opendocument.spreadsheet\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"ods\"]\n },\n \"application/vnd.oasis.opendocument.spreadsheet-template\": {\n \"source\": \"iana\",\n \"extensions\": [\"ots\"]\n },\n \"application/vnd.oasis.opendocument.text\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"odt\"]\n },\n \"application/vnd.oasis.opendocument.text-master\": {\n \"source\": \"iana\",\n \"extensions\": [\"odm\"]\n },\n \"application/vnd.oasis.opendocument.text-template\": {\n \"source\": \"iana\",\n \"extensions\": [\"ott\"]\n },\n \"application/vnd.oasis.opendocument.text-web\": {\n \"source\": \"iana\",\n \"extensions\": [\"oth\"]\n },\n \"application/vnd.obn\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ocf+cbor\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oci.image.manifest.v1+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oftn.l10n+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oipf.contentaccessdownload+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oipf.contentaccessstreaming+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oipf.cspg-hexbinary\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oipf.dae.svg+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oipf.dae.xhtml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oipf.mippvcontrolmessage+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oipf.pae.gem\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oipf.spdiscovery+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oipf.spdlist+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oipf.ueprofile+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oipf.userprofile+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.olpc-sugar\": {\n \"source\": \"iana\",\n \"extensions\": [\"xo\"]\n },\n \"application/vnd.oma-scws-config\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma-scws-http-request\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma-scws-http-response\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.bcast.associated-procedure-parameter+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.bcast.drm-trigger+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.bcast.imd+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.bcast.ltkm\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.bcast.notification+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.bcast.provisioningtrigger\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.bcast.sgboot\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.bcast.sgdd+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.bcast.sgdu\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.bcast.simple-symbol-container\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.bcast.smartcard-trigger+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.bcast.sprov+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.bcast.stkm\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.cab-address-book+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.cab-feature-handler+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.cab-pcc+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.cab-subs-invite+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.cab-user-prefs+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.dcd\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.dcdc\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.dd2+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"dd2\"]\n },\n \"application/vnd.oma.drm.risd+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.group-usage-list+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.lwm2m+cbor\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.lwm2m+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.lwm2m+tlv\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.pal+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.poc.detailed-progress-report+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.poc.final-report+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.poc.groups+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.poc.invocation-descriptor+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.poc.optimized-progress-report+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.push\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.scidm.messages+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.xcap-directory+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.omads-email+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/vnd.omads-file+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/vnd.omads-folder+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/vnd.omaloc-supl-init\": {\n \"source\": \"iana\"\n },\n \"application/vnd.onepager\": {\n \"source\": \"iana\"\n },\n \"application/vnd.onepagertamp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.onepagertamx\": {\n \"source\": \"iana\"\n },\n \"application/vnd.onepagertat\": {\n \"source\": \"iana\"\n },\n \"application/vnd.onepagertatp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.onepagertatx\": {\n \"source\": \"iana\"\n },\n \"application/vnd.openblox.game+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"obgx\"]\n },\n \"application/vnd.openblox.game-binary\": {\n \"source\": \"iana\"\n },\n \"application/vnd.openeye.oeb\": {\n \"source\": \"iana\"\n },\n \"application/vnd.openofficeorg.extension\": {\n \"source\": \"apache\",\n \"extensions\": [\"oxt\"]\n },\n \"application/vnd.openstreetmap.data+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"osm\"]\n },\n \"application/vnd.opentimestamps.ots\": {\n \"source\": \"iana\"\n },\n \"application/vnd.openxmlformats-officedocument.custom-properties+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.customxmlproperties+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.drawing+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.drawingml.chart+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.extended-properties+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.comments+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.presentation\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"pptx\"]\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.presprops+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.slide\": {\n \"source\": \"iana\",\n \"extensions\": [\"sldx\"]\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.slide+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.slideshow\": {\n \"source\": \"iana\",\n \"extensions\": [\"ppsx\"]\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.tags+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.template\": {\n \"source\": \"iana\",\n \"extensions\": [\"potx\"]\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.template.main+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"xlsx\"]\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.template\": {\n \"source\": \"iana\",\n \"extensions\": [\"xltx\"]\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.theme+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.themeoverride+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.vmldrawing\": {\n \"source\": \"iana\"\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"docx\"]\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.template\": {\n \"source\": \"iana\",\n \"extensions\": [\"dotx\"]\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-package.core-properties+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-package.relationships+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oracle.resource+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.orange.indata\": {\n \"source\": \"iana\"\n },\n \"application/vnd.osa.netdeploy\": {\n \"source\": \"iana\"\n },\n \"application/vnd.osgeo.mapguide.package\": {\n \"source\": \"iana\",\n \"extensions\": [\"mgp\"]\n },\n \"application/vnd.osgi.bundle\": {\n \"source\": \"iana\"\n },\n \"application/vnd.osgi.dp\": {\n \"source\": \"iana\",\n \"extensions\": [\"dp\"]\n },\n \"application/vnd.osgi.subsystem\": {\n \"source\": \"iana\",\n \"extensions\": [\"esa\"]\n },\n \"application/vnd.otps.ct-kip+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oxli.countgraph\": {\n \"source\": \"iana\"\n },\n \"application/vnd.pagerduty+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.palm\": {\n \"source\": \"iana\",\n \"extensions\": [\"pdb\",\"pqa\",\"oprc\"]\n },\n \"application/vnd.panoply\": {\n \"source\": \"iana\"\n },\n \"application/vnd.paos.xml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.patentdive\": {\n \"source\": \"iana\"\n },\n \"application/vnd.patientecommsdoc\": {\n \"source\": \"iana\"\n },\n \"application/vnd.pawaafile\": {\n \"source\": \"iana\",\n \"extensions\": [\"paw\"]\n },\n \"application/vnd.pcos\": {\n \"source\": \"iana\"\n },\n \"application/vnd.pg.format\": {\n \"source\": \"iana\",\n \"extensions\": [\"str\"]\n },\n \"application/vnd.pg.osasli\": {\n \"source\": \"iana\",\n \"extensions\": [\"ei6\"]\n },\n \"application/vnd.piaccess.application-licence\": {\n \"source\": \"iana\"\n },\n \"application/vnd.picsel\": {\n \"source\": \"iana\",\n \"extensions\": [\"efif\"]\n },\n \"application/vnd.pmi.widget\": {\n \"source\": \"iana\",\n \"extensions\": [\"wg\"]\n },\n \"application/vnd.poc.group-advertisement+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.pocketlearn\": {\n \"source\": \"iana\",\n \"extensions\": [\"plf\"]\n },\n \"application/vnd.powerbuilder6\": {\n \"source\": \"iana\",\n \"extensions\": [\"pbd\"]\n },\n \"application/vnd.powerbuilder6-s\": {\n \"source\": \"iana\"\n },\n \"application/vnd.powerbuilder7\": {\n \"source\": \"iana\"\n },\n \"application/vnd.powerbuilder7-s\": {\n \"source\": \"iana\"\n },\n \"application/vnd.powerbuilder75\": {\n \"source\": \"iana\"\n },\n \"application/vnd.powerbuilder75-s\": {\n \"source\": \"iana\"\n },\n \"application/vnd.preminet\": {\n \"source\": \"iana\"\n },\n \"application/vnd.previewsystems.box\": {\n \"source\": \"iana\",\n \"extensions\": [\"box\"]\n },\n \"application/vnd.proteus.magazine\": {\n \"source\": \"iana\",\n \"extensions\": [\"mgz\"]\n },\n \"application/vnd.psfs\": {\n \"source\": \"iana\"\n },\n \"application/vnd.publishare-delta-tree\": {\n \"source\": \"iana\",\n \"extensions\": [\"qps\"]\n },\n \"application/vnd.pvi.ptid1\": {\n \"source\": \"iana\",\n \"extensions\": [\"ptid\"]\n },\n \"application/vnd.pwg-multiplexed\": {\n \"source\": \"iana\"\n },\n \"application/vnd.pwg-xhtml-print+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.qualcomm.brew-app-res\": {\n \"source\": \"iana\"\n },\n \"application/vnd.quarantainenet\": {\n \"source\": \"iana\"\n },\n \"application/vnd.quark.quarkxpress\": {\n \"source\": \"iana\",\n \"extensions\": [\"qxd\",\"qxt\",\"qwd\",\"qwt\",\"qxl\",\"qxb\"]\n },\n \"application/vnd.quobject-quoxdocument\": {\n \"source\": \"iana\"\n },\n \"application/vnd.radisys.moml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-audit+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-audit-conf+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-audit-conn+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-audit-dialog+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-audit-stream+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-conf+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-dialog+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-dialog-base+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-dialog-fax-detect+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-dialog-fax-sendrecv+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-dialog-group+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-dialog-speech+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-dialog-transform+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.rainstor.data\": {\n \"source\": \"iana\"\n },\n \"application/vnd.rapid\": {\n \"source\": \"iana\"\n },\n \"application/vnd.rar\": {\n \"source\": \"iana\",\n \"extensions\": [\"rar\"]\n },\n \"application/vnd.realvnc.bed\": {\n \"source\": \"iana\",\n \"extensions\": [\"bed\"]\n },\n \"application/vnd.recordare.musicxml\": {\n \"source\": \"iana\",\n \"extensions\": [\"mxl\"]\n },\n \"application/vnd.recordare.musicxml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"musicxml\"]\n },\n \"application/vnd.renlearn.rlprint\": {\n \"source\": \"iana\"\n },\n \"application/vnd.resilient.logic\": {\n \"source\": \"iana\"\n },\n \"application/vnd.restful+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.rig.cryptonote\": {\n \"source\": \"iana\",\n \"extensions\": [\"cryptonote\"]\n },\n \"application/vnd.rim.cod\": {\n \"source\": \"apache\",\n \"extensions\": [\"cod\"]\n },\n \"application/vnd.rn-realmedia\": {\n \"source\": \"apache\",\n \"extensions\": [\"rm\"]\n },\n \"application/vnd.rn-realmedia-vbr\": {\n \"source\": \"apache\",\n \"extensions\": [\"rmvb\"]\n },\n \"application/vnd.route66.link66+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"link66\"]\n },\n \"application/vnd.rs-274x\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ruckus.download\": {\n \"source\": \"iana\"\n },\n \"application/vnd.s3sms\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sailingtracker.track\": {\n \"source\": \"iana\",\n \"extensions\": [\"st\"]\n },\n \"application/vnd.sar\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sbm.cid\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sbm.mid2\": {\n \"source\": \"iana\"\n },\n \"application/vnd.scribus\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealed.3df\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealed.csf\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealed.doc\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealed.eml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealed.mht\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealed.net\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealed.ppt\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealed.tiff\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealed.xls\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealedmedia.softseal.html\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealedmedia.softseal.pdf\": {\n \"source\": \"iana\"\n },\n \"application/vnd.seemail\": {\n \"source\": \"iana\",\n \"extensions\": [\"see\"]\n },\n \"application/vnd.seis+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.sema\": {\n \"source\": \"iana\",\n \"extensions\": [\"sema\"]\n },\n \"application/vnd.semd\": {\n \"source\": \"iana\",\n \"extensions\": [\"semd\"]\n },\n \"application/vnd.semf\": {\n \"source\": \"iana\",\n \"extensions\": [\"semf\"]\n },\n \"application/vnd.shade-save-file\": {\n \"source\": \"iana\"\n },\n \"application/vnd.shana.informed.formdata\": {\n \"source\": \"iana\",\n \"extensions\": [\"ifm\"]\n },\n \"application/vnd.shana.informed.formtemplate\": {\n \"source\": \"iana\",\n \"extensions\": [\"itp\"]\n },\n \"application/vnd.shana.informed.interchange\": {\n \"source\": \"iana\",\n \"extensions\": [\"iif\"]\n },\n \"application/vnd.shana.informed.package\": {\n \"source\": \"iana\",\n \"extensions\": [\"ipk\"]\n },\n \"application/vnd.shootproof+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.shopkick+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.shp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.shx\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sigrok.session\": {\n \"source\": \"iana\"\n },\n \"application/vnd.simtech-mindmapper\": {\n \"source\": \"iana\",\n \"extensions\": [\"twd\",\"twds\"]\n },\n \"application/vnd.siren+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.smaf\": {\n \"source\": \"iana\",\n \"extensions\": [\"mmf\"]\n },\n \"application/vnd.smart.notebook\": {\n \"source\": \"iana\"\n },\n \"application/vnd.smart.teacher\": {\n \"source\": \"iana\",\n \"extensions\": [\"teacher\"]\n },\n \"application/vnd.snesdev-page-table\": {\n \"source\": \"iana\"\n },\n \"application/vnd.software602.filler.form+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"fo\"]\n },\n \"application/vnd.software602.filler.form-xml-zip\": {\n \"source\": \"iana\"\n },\n \"application/vnd.solent.sdkm+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"sdkm\",\"sdkd\"]\n },\n \"application/vnd.spotfire.dxp\": {\n \"source\": \"iana\",\n \"extensions\": [\"dxp\"]\n },\n \"application/vnd.spotfire.sfs\": {\n \"source\": \"iana\",\n \"extensions\": [\"sfs\"]\n },\n \"application/vnd.sqlite3\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sss-cod\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sss-dtf\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sss-ntf\": {\n \"source\": \"iana\"\n },\n \"application/vnd.stardivision.calc\": {\n \"source\": \"apache\",\n \"extensions\": [\"sdc\"]\n },\n \"application/vnd.stardivision.draw\": {\n \"source\": \"apache\",\n \"extensions\": [\"sda\"]\n },\n \"application/vnd.stardivision.impress\": {\n \"source\": \"apache\",\n \"extensions\": [\"sdd\"]\n },\n \"application/vnd.stardivision.math\": {\n \"source\": \"apache\",\n \"extensions\": [\"smf\"]\n },\n \"application/vnd.stardivision.writer\": {\n \"source\": \"apache\",\n \"extensions\": [\"sdw\",\"vor\"]\n },\n \"application/vnd.stardivision.writer-global\": {\n \"source\": \"apache\",\n \"extensions\": [\"sgl\"]\n },\n \"application/vnd.stepmania.package\": {\n \"source\": \"iana\",\n \"extensions\": [\"smzip\"]\n },\n \"application/vnd.stepmania.stepchart\": {\n \"source\": \"iana\",\n \"extensions\": [\"sm\"]\n },\n \"application/vnd.street-stream\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sun.wadl+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"wadl\"]\n },\n \"application/vnd.sun.xml.calc\": {\n \"source\": \"apache\",\n \"extensions\": [\"sxc\"]\n },\n \"application/vnd.sun.xml.calc.template\": {\n \"source\": \"apache\",\n \"extensions\": [\"stc\"]\n },\n \"application/vnd.sun.xml.draw\": {\n \"source\": \"apache\",\n \"extensions\": [\"sxd\"]\n },\n \"application/vnd.sun.xml.draw.template\": {\n \"source\": \"apache\",\n \"extensions\": [\"std\"]\n },\n \"application/vnd.sun.xml.impress\": {\n \"source\": \"apache\",\n \"extensions\": [\"sxi\"]\n },\n \"application/vnd.sun.xml.impress.template\": {\n \"source\": \"apache\",\n \"extensions\": [\"sti\"]\n },\n \"application/vnd.sun.xml.math\": {\n \"source\": \"apache\",\n \"extensions\": [\"sxm\"]\n },\n \"application/vnd.sun.xml.writer\": {\n \"source\": \"apache\",\n \"extensions\": [\"sxw\"]\n },\n \"application/vnd.sun.xml.writer.global\": {\n \"source\": \"apache\",\n \"extensions\": [\"sxg\"]\n },\n \"application/vnd.sun.xml.writer.template\": {\n \"source\": \"apache\",\n \"extensions\": [\"stw\"]\n },\n \"application/vnd.sus-calendar\": {\n \"source\": \"iana\",\n \"extensions\": [\"sus\",\"susp\"]\n },\n \"application/vnd.svd\": {\n \"source\": \"iana\",\n \"extensions\": [\"svd\"]\n },\n \"application/vnd.swiftview-ics\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sycle+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.syft+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.symbian.install\": {\n \"source\": \"apache\",\n \"extensions\": [\"sis\",\"sisx\"]\n },\n \"application/vnd.syncml+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true,\n \"extensions\": [\"xsm\"]\n },\n \"application/vnd.syncml.dm+wbxml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"extensions\": [\"bdm\"]\n },\n \"application/vnd.syncml.dm+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true,\n \"extensions\": [\"xdm\"]\n },\n \"application/vnd.syncml.dm.notification\": {\n \"source\": \"iana\"\n },\n \"application/vnd.syncml.dmddf+wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.syncml.dmddf+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true,\n \"extensions\": [\"ddf\"]\n },\n \"application/vnd.syncml.dmtnds+wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.syncml.dmtnds+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/vnd.syncml.ds.notification\": {\n \"source\": \"iana\"\n },\n \"application/vnd.tableschema+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.tao.intent-module-archive\": {\n \"source\": \"iana\",\n \"extensions\": [\"tao\"]\n },\n \"application/vnd.tcpdump.pcap\": {\n \"source\": \"iana\",\n \"extensions\": [\"pcap\",\"cap\",\"dmp\"]\n },\n \"application/vnd.think-cell.ppttc+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.tmd.mediaflex.api+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.tml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.tmobile-livetv\": {\n \"source\": \"iana\",\n \"extensions\": [\"tmo\"]\n },\n \"application/vnd.tri.onesource\": {\n \"source\": \"iana\"\n },\n \"application/vnd.trid.tpt\": {\n \"source\": \"iana\",\n \"extensions\": [\"tpt\"]\n },\n \"application/vnd.triscape.mxs\": {\n \"source\": \"iana\",\n \"extensions\": [\"mxs\"]\n },\n \"application/vnd.trueapp\": {\n \"source\": \"iana\",\n \"extensions\": [\"tra\"]\n },\n \"application/vnd.truedoc\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ubisoft.webplayer\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ufdl\": {\n \"source\": \"iana\",\n \"extensions\": [\"ufd\",\"ufdl\"]\n },\n \"application/vnd.uiq.theme\": {\n \"source\": \"iana\",\n \"extensions\": [\"utz\"]\n },\n \"application/vnd.umajin\": {\n \"source\": \"iana\",\n \"extensions\": [\"umj\"]\n },\n \"application/vnd.unity\": {\n \"source\": \"iana\",\n \"extensions\": [\"unityweb\"]\n },\n \"application/vnd.uoml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"uoml\"]\n },\n \"application/vnd.uplanet.alert\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.alert-wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.bearer-choice\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.bearer-choice-wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.cacheop\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.cacheop-wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.channel\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.channel-wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.list\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.list-wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.listcmd\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.listcmd-wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.signal\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uri-map\": {\n \"source\": \"iana\"\n },\n \"application/vnd.valve.source.material\": {\n \"source\": \"iana\"\n },\n \"application/vnd.vcx\": {\n \"source\": \"iana\",\n \"extensions\": [\"vcx\"]\n },\n \"application/vnd.vd-study\": {\n \"source\": \"iana\"\n },\n \"application/vnd.vectorworks\": {\n \"source\": \"iana\"\n },\n \"application/vnd.vel+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.verimatrix.vcas\": {\n \"source\": \"iana\"\n },\n \"application/vnd.veritone.aion+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.veryant.thin\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ves.encrypted\": {\n \"source\": \"iana\"\n },\n \"application/vnd.vidsoft.vidconference\": {\n \"source\": \"iana\"\n },\n \"application/vnd.visio\": {\n \"source\": \"iana\",\n \"extensions\": [\"vsd\",\"vst\",\"vss\",\"vsw\"]\n },\n \"application/vnd.visionary\": {\n \"source\": \"iana\",\n \"extensions\": [\"vis\"]\n },\n \"application/vnd.vividence.scriptfile\": {\n \"source\": \"iana\"\n },\n \"application/vnd.vsf\": {\n \"source\": \"iana\",\n \"extensions\": [\"vsf\"]\n },\n \"application/vnd.wap.sic\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wap.slc\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wap.wbxml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"extensions\": [\"wbxml\"]\n },\n \"application/vnd.wap.wmlc\": {\n \"source\": \"iana\",\n \"extensions\": [\"wmlc\"]\n },\n \"application/vnd.wap.wmlscriptc\": {\n \"source\": \"iana\",\n \"extensions\": [\"wmlsc\"]\n },\n \"application/vnd.webturbo\": {\n \"source\": \"iana\",\n \"extensions\": [\"wtb\"]\n },\n \"application/vnd.wfa.dpp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wfa.p2p\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wfa.wsc\": {\n \"source\": \"iana\"\n },\n \"application/vnd.windows.devicepairing\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wmc\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wmf.bootstrap\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wolfram.mathematica\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wolfram.mathematica.package\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wolfram.player\": {\n \"source\": \"iana\",\n \"extensions\": [\"nbp\"]\n },\n \"application/vnd.wordperfect\": {\n \"source\": \"iana\",\n \"extensions\": [\"wpd\"]\n },\n \"application/vnd.wqd\": {\n \"source\": \"iana\",\n \"extensions\": [\"wqd\"]\n },\n \"application/vnd.wrq-hp3000-labelled\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wt.stf\": {\n \"source\": \"iana\",\n \"extensions\": [\"stf\"]\n },\n \"application/vnd.wv.csp+wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wv.csp+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.wv.ssp+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.xacml+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.xara\": {\n \"source\": \"iana\",\n \"extensions\": [\"xar\"]\n },\n \"application/vnd.xfdl\": {\n \"source\": \"iana\",\n \"extensions\": [\"xfdl\"]\n },\n \"application/vnd.xfdl.webform\": {\n \"source\": \"iana\"\n },\n \"application/vnd.xmi+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.xmpie.cpkg\": {\n \"source\": \"iana\"\n },\n \"application/vnd.xmpie.dpkg\": {\n \"source\": \"iana\"\n },\n \"application/vnd.xmpie.plan\": {\n \"source\": \"iana\"\n },\n \"application/vnd.xmpie.ppkg\": {\n \"source\": \"iana\"\n },\n \"application/vnd.xmpie.xlim\": {\n \"source\": \"iana\"\n },\n \"application/vnd.yamaha.hv-dic\": {\n \"source\": \"iana\",\n \"extensions\": [\"hvd\"]\n },\n \"application/vnd.yamaha.hv-script\": {\n \"source\": \"iana\",\n \"extensions\": [\"hvs\"]\n },\n \"application/vnd.yamaha.hv-voice\": {\n \"source\": \"iana\",\n \"extensions\": [\"hvp\"]\n },\n \"application/vnd.yamaha.openscoreformat\": {\n \"source\": \"iana\",\n \"extensions\": [\"osf\"]\n },\n \"application/vnd.yamaha.openscoreformat.osfpvg+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"osfpvg\"]\n },\n \"application/vnd.yamaha.remote-setup\": {\n \"source\": \"iana\"\n },\n \"application/vnd.yamaha.smaf-audio\": {\n \"source\": \"iana\",\n \"extensions\": [\"saf\"]\n },\n \"application/vnd.yamaha.smaf-phrase\": {\n \"source\": \"iana\",\n \"extensions\": [\"spf\"]\n },\n \"application/vnd.yamaha.through-ngn\": {\n \"source\": \"iana\"\n },\n \"application/vnd.yamaha.tunnel-udpencap\": {\n \"source\": \"iana\"\n },\n \"application/vnd.yaoweme\": {\n \"source\": \"iana\"\n },\n \"application/vnd.yellowriver-custom-menu\": {\n \"source\": \"iana\",\n \"extensions\": [\"cmp\"]\n },\n \"application/vnd.youtube.yt\": {\n \"source\": \"iana\"\n },\n \"application/vnd.zul\": {\n \"source\": \"iana\",\n \"extensions\": [\"zir\",\"zirz\"]\n },\n \"application/vnd.zzazz.deck+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"zaz\"]\n },\n \"application/voicexml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"vxml\"]\n },\n \"application/voucher-cms+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vq-rtcpxr\": {\n \"source\": \"iana\"\n },\n \"application/wasm\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"wasm\"]\n },\n \"application/watcherinfo+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"wif\"]\n },\n \"application/webpush-options+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/whoispp-query\": {\n \"source\": \"iana\"\n },\n \"application/whoispp-response\": {\n \"source\": \"iana\"\n },\n \"application/widget\": {\n \"source\": \"iana\",\n \"extensions\": [\"wgt\"]\n },\n \"application/winhlp\": {\n \"source\": \"apache\",\n \"extensions\": [\"hlp\"]\n },\n \"application/wita\": {\n \"source\": \"iana\"\n },\n \"application/wordperfect5.1\": {\n \"source\": \"iana\"\n },\n \"application/wsdl+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"wsdl\"]\n },\n \"application/wspolicy+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"wspolicy\"]\n },\n \"application/x-7z-compressed\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"7z\"]\n },\n \"application/x-abiword\": {\n \"source\": \"apache\",\n \"extensions\": [\"abw\"]\n },\n \"application/x-ace-compressed\": {\n \"source\": \"apache\",\n \"extensions\": [\"ace\"]\n },\n \"application/x-amf\": {\n \"source\": \"apache\"\n },\n \"application/x-apple-diskimage\": {\n \"source\": \"apache\",\n \"extensions\": [\"dmg\"]\n },\n \"application/x-arj\": {\n \"compressible\": false,\n \"extensions\": [\"arj\"]\n },\n \"application/x-authorware-bin\": {\n \"source\": \"apache\",\n \"extensions\": [\"aab\",\"x32\",\"u32\",\"vox\"]\n },\n \"application/x-authorware-map\": {\n \"source\": \"apache\",\n \"extensions\": [\"aam\"]\n },\n \"application/x-authorware-seg\": {\n \"source\": \"apache\",\n \"extensions\": [\"aas\"]\n },\n \"application/x-bcpio\": {\n \"source\": \"apache\",\n \"extensions\": [\"bcpio\"]\n },\n \"application/x-bdoc\": {\n \"compressible\": false,\n \"extensions\": [\"bdoc\"]\n },\n \"application/x-bittorrent\": {\n \"source\": \"apache\",\n \"extensions\": [\"torrent\"]\n },\n \"application/x-blorb\": {\n \"source\": \"apache\",\n \"extensions\": [\"blb\",\"blorb\"]\n },\n \"application/x-bzip\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"bz\"]\n },\n \"application/x-bzip2\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"bz2\",\"boz\"]\n },\n \"application/x-cbr\": {\n \"source\": \"apache\",\n \"extensions\": [\"cbr\",\"cba\",\"cbt\",\"cbz\",\"cb7\"]\n },\n \"application/x-cdlink\": {\n \"source\": \"apache\",\n \"extensions\": [\"vcd\"]\n },\n \"application/x-cfs-compressed\": {\n \"source\": \"apache\",\n \"extensions\": [\"cfs\"]\n },\n \"application/x-chat\": {\n \"source\": \"apache\",\n \"extensions\": [\"chat\"]\n },\n \"application/x-chess-pgn\": {\n \"source\": \"apache\",\n \"extensions\": [\"pgn\"]\n },\n \"application/x-chrome-extension\": {\n \"extensions\": [\"crx\"]\n },\n \"application/x-cocoa\": {\n \"source\": \"nginx\",\n \"extensions\": [\"cco\"]\n },\n \"application/x-compress\": {\n \"source\": \"apache\"\n },\n \"application/x-conference\": {\n \"source\": \"apache\",\n \"extensions\": [\"nsc\"]\n },\n \"application/x-cpio\": {\n \"source\": \"apache\",\n \"extensions\": [\"cpio\"]\n },\n \"application/x-csh\": {\n \"source\": \"apache\",\n \"extensions\": [\"csh\"]\n },\n \"application/x-deb\": {\n \"compressible\": false\n },\n \"application/x-debian-package\": {\n \"source\": \"apache\",\n \"extensions\": [\"deb\",\"udeb\"]\n },\n \"application/x-dgc-compressed\": {\n \"source\": \"apache\",\n \"extensions\": [\"dgc\"]\n },\n \"application/x-director\": {\n \"source\": \"apache\",\n \"extensions\": [\"dir\",\"dcr\",\"dxr\",\"cst\",\"cct\",\"cxt\",\"w3d\",\"fgd\",\"swa\"]\n },\n \"application/x-doom\": {\n \"source\": \"apache\",\n \"extensions\": [\"wad\"]\n },\n \"application/x-dtbncx+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"ncx\"]\n },\n \"application/x-dtbook+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"dtb\"]\n },\n \"application/x-dtbresource+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"res\"]\n },\n \"application/x-dvi\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"dvi\"]\n },\n \"application/x-envoy\": {\n \"source\": \"apache\",\n \"extensions\": [\"evy\"]\n },\n \"application/x-eva\": {\n \"source\": \"apache\",\n \"extensions\": [\"eva\"]\n },\n \"application/x-font-bdf\": {\n \"source\": \"apache\",\n \"extensions\": [\"bdf\"]\n },\n \"application/x-font-dos\": {\n \"source\": \"apache\"\n },\n \"application/x-font-framemaker\": {\n \"source\": \"apache\"\n },\n \"application/x-font-ghostscript\": {\n \"source\": \"apache\",\n \"extensions\": [\"gsf\"]\n },\n \"application/x-font-libgrx\": {\n \"source\": \"apache\"\n },\n \"application/x-font-linux-psf\": {\n \"source\": \"apache\",\n \"extensions\": [\"psf\"]\n },\n \"application/x-font-pcf\": {\n \"source\": \"apache\",\n \"extensions\": [\"pcf\"]\n },\n \"application/x-font-snf\": {\n \"source\": \"apache\",\n \"extensions\": [\"snf\"]\n },\n \"application/x-font-speedo\": {\n \"source\": \"apache\"\n },\n \"application/x-font-sunos-news\": {\n \"source\": \"apache\"\n },\n \"application/x-font-type1\": {\n \"source\": \"apache\",\n \"extensions\": [\"pfa\",\"pfb\",\"pfm\",\"afm\"]\n },\n \"application/x-font-vfont\": {\n \"source\": \"apache\"\n },\n \"application/x-freearc\": {\n \"source\": \"apache\",\n \"extensions\": [\"arc\"]\n },\n \"application/x-futuresplash\": {\n \"source\": \"apache\",\n \"extensions\": [\"spl\"]\n },\n \"application/x-gca-compressed\": {\n \"source\": \"apache\",\n \"extensions\": [\"gca\"]\n },\n \"application/x-glulx\": {\n \"source\": \"apache\",\n \"extensions\": [\"ulx\"]\n },\n \"application/x-gnumeric\": {\n \"source\": \"apache\",\n \"extensions\": [\"gnumeric\"]\n },\n \"application/x-gramps-xml\": {\n \"source\": \"apache\",\n \"extensions\": [\"gramps\"]\n },\n \"application/x-gtar\": {\n \"source\": \"apache\",\n \"extensions\": [\"gtar\"]\n },\n \"application/x-gzip\": {\n \"source\": \"apache\"\n },\n \"application/x-hdf\": {\n \"source\": \"apache\",\n \"extensions\": [\"hdf\"]\n },\n \"application/x-httpd-php\": {\n \"compressible\": true,\n \"extensions\": [\"php\"]\n },\n \"application/x-install-instructions\": {\n \"source\": \"apache\",\n \"extensions\": [\"install\"]\n },\n \"application/x-iso9660-image\": {\n \"source\": \"apache\",\n \"extensions\": [\"iso\"]\n },\n \"application/x-iwork-keynote-sffkey\": {\n \"extensions\": [\"key\"]\n },\n \"application/x-iwork-numbers-sffnumbers\": {\n \"extensions\": [\"numbers\"]\n },\n \"application/x-iwork-pages-sffpages\": {\n \"extensions\": [\"pages\"]\n },\n \"application/x-java-archive-diff\": {\n \"source\": \"nginx\",\n \"extensions\": [\"jardiff\"]\n },\n \"application/x-java-jnlp-file\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"jnlp\"]\n },\n \"application/x-javascript\": {\n \"compressible\": true\n },\n \"application/x-keepass2\": {\n \"extensions\": [\"kdbx\"]\n },\n \"application/x-latex\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"latex\"]\n },\n \"application/x-lua-bytecode\": {\n \"extensions\": [\"luac\"]\n },\n \"application/x-lzh-compressed\": {\n \"source\": \"apache\",\n \"extensions\": [\"lzh\",\"lha\"]\n },\n \"application/x-makeself\": {\n \"source\": \"nginx\",\n \"extensions\": [\"run\"]\n },\n \"application/x-mie\": {\n \"source\": \"apache\",\n \"extensions\": [\"mie\"]\n },\n \"application/x-mobipocket-ebook\": {\n \"source\": \"apache\",\n \"extensions\": [\"prc\",\"mobi\"]\n },\n \"application/x-mpegurl\": {\n \"compressible\": false\n },\n \"application/x-ms-application\": {\n \"source\": \"apache\",\n \"extensions\": [\"application\"]\n },\n \"application/x-ms-shortcut\": {\n \"source\": \"apache\",\n \"extensions\": [\"lnk\"]\n },\n \"application/x-ms-wmd\": {\n \"source\": \"apache\",\n \"extensions\": [\"wmd\"]\n },\n \"application/x-ms-wmz\": {\n \"source\": \"apache\",\n \"extensions\": [\"wmz\"]\n },\n \"application/x-ms-xbap\": {\n \"source\": \"apache\",\n \"extensions\": [\"xbap\"]\n },\n \"application/x-msaccess\": {\n \"source\": \"apache\",\n \"extensions\": [\"mdb\"]\n },\n \"application/x-msbinder\": {\n \"source\": \"apache\",\n \"extensions\": [\"obd\"]\n },\n \"application/x-mscardfile\": {\n \"source\": \"apache\",\n \"extensions\": [\"crd\"]\n },\n \"application/x-msclip\": {\n \"source\": \"apache\",\n \"extensions\": [\"clp\"]\n },\n \"application/x-msdos-program\": {\n \"extensions\": [\"exe\"]\n },\n \"application/x-msdownload\": {\n \"source\": \"apache\",\n \"extensions\": [\"exe\",\"dll\",\"com\",\"bat\",\"msi\"]\n },\n \"application/x-msmediaview\": {\n \"source\": \"apache\",\n \"extensions\": [\"mvb\",\"m13\",\"m14\"]\n },\n \"application/x-msmetafile\": {\n \"source\": \"apache\",\n \"extensions\": [\"wmf\",\"wmz\",\"emf\",\"emz\"]\n },\n \"application/x-msmoney\": {\n \"source\": \"apache\",\n \"extensions\": [\"mny\"]\n },\n \"application/x-mspublisher\": {\n \"source\": \"apache\",\n \"extensions\": [\"pub\"]\n },\n \"application/x-msschedule\": {\n \"source\": \"apache\",\n \"extensions\": [\"scd\"]\n },\n \"application/x-msterminal\": {\n \"source\": \"apache\",\n \"extensions\": [\"trm\"]\n },\n \"application/x-mswrite\": {\n \"source\": \"apache\",\n \"extensions\": [\"wri\"]\n },\n \"application/x-netcdf\": {\n \"source\": \"apache\",\n \"extensions\": [\"nc\",\"cdf\"]\n },\n \"application/x-ns-proxy-autoconfig\": {\n \"compressible\": true,\n \"extensions\": [\"pac\"]\n },\n \"application/x-nzb\": {\n \"source\": \"apache\",\n \"extensions\": [\"nzb\"]\n },\n \"application/x-perl\": {\n \"source\": \"nginx\",\n \"extensions\": [\"pl\",\"pm\"]\n },\n \"application/x-pilot\": {\n \"source\": \"nginx\",\n \"extensions\": [\"prc\",\"pdb\"]\n },\n \"application/x-pkcs12\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"p12\",\"pfx\"]\n },\n \"application/x-pkcs7-certificates\": {\n \"source\": \"apache\",\n \"extensions\": [\"p7b\",\"spc\"]\n },\n \"application/x-pkcs7-certreqresp\": {\n \"source\": \"apache\",\n \"extensions\": [\"p7r\"]\n },\n \"application/x-pki-message\": {\n \"source\": \"iana\"\n },\n \"application/x-rar-compressed\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"rar\"]\n },\n \"application/x-redhat-package-manager\": {\n \"source\": \"nginx\",\n \"extensions\": [\"rpm\"]\n },\n \"application/x-research-info-systems\": {\n \"source\": \"apache\",\n \"extensions\": [\"ris\"]\n },\n \"application/x-sea\": {\n \"source\": \"nginx\",\n \"extensions\": [\"sea\"]\n },\n \"application/x-sh\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"sh\"]\n },\n \"application/x-shar\": {\n \"source\": \"apache\",\n \"extensions\": [\"shar\"]\n },\n \"application/x-shockwave-flash\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"swf\"]\n },\n \"application/x-silverlight-app\": {\n \"source\": \"apache\",\n \"extensions\": [\"xap\"]\n },\n \"application/x-sql\": {\n \"source\": \"apache\",\n \"extensions\": [\"sql\"]\n },\n \"application/x-stuffit\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"sit\"]\n },\n \"application/x-stuffitx\": {\n \"source\": \"apache\",\n \"extensions\": [\"sitx\"]\n },\n \"application/x-subrip\": {\n \"source\": \"apache\",\n \"extensions\": [\"srt\"]\n },\n \"application/x-sv4cpio\": {\n \"source\": \"apache\",\n \"extensions\": [\"sv4cpio\"]\n },\n \"application/x-sv4crc\": {\n \"source\": \"apache\",\n \"extensions\": [\"sv4crc\"]\n },\n \"application/x-t3vm-image\": {\n \"source\": \"apache\",\n \"extensions\": [\"t3\"]\n },\n \"application/x-tads\": {\n \"source\": \"apache\",\n \"extensions\": [\"gam\"]\n },\n \"application/x-tar\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"tar\"]\n },\n \"application/x-tcl\": {\n \"source\": \"apache\",\n \"extensions\": [\"tcl\",\"tk\"]\n },\n \"application/x-tex\": {\n \"source\": \"apache\",\n \"extensions\": [\"tex\"]\n },\n \"application/x-tex-tfm\": {\n \"source\": \"apache\",\n \"extensions\": [\"tfm\"]\n },\n \"application/x-texinfo\": {\n \"source\": \"apache\",\n \"extensions\": [\"texinfo\",\"texi\"]\n },\n \"application/x-tgif\": {\n \"source\": \"apache\",\n \"extensions\": [\"obj\"]\n },\n \"application/x-ustar\": {\n \"source\": \"apache\",\n \"extensions\": [\"ustar\"]\n },\n \"application/x-virtualbox-hdd\": {\n \"compressible\": true,\n \"extensions\": [\"hdd\"]\n },\n \"application/x-virtualbox-ova\": {\n \"compressible\": true,\n \"extensions\": [\"ova\"]\n },\n \"application/x-virtualbox-ovf\": {\n \"compressible\": true,\n \"extensions\": [\"ovf\"]\n },\n \"application/x-virtualbox-vbox\": {\n \"compressible\": true,\n \"extensions\": [\"vbox\"]\n },\n \"application/x-virtualbox-vbox-extpack\": {\n \"compressible\": false,\n \"extensions\": [\"vbox-extpack\"]\n },\n \"application/x-virtualbox-vdi\": {\n \"compressible\": true,\n \"extensions\": [\"vdi\"]\n },\n \"application/x-virtualbox-vhd\": {\n \"compressible\": true,\n \"extensions\": [\"vhd\"]\n },\n \"application/x-virtualbox-vmdk\": {\n \"compressible\": true,\n \"extensions\": [\"vmdk\"]\n },\n \"application/x-wais-source\": {\n \"source\": \"apache\",\n \"extensions\": [\"src\"]\n },\n \"application/x-web-app-manifest+json\": {\n \"compressible\": true,\n \"extensions\": [\"webapp\"]\n },\n \"application/x-www-form-urlencoded\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/x-x509-ca-cert\": {\n \"source\": \"iana\",\n \"extensions\": [\"der\",\"crt\",\"pem\"]\n },\n \"application/x-x509-ca-ra-cert\": {\n \"source\": \"iana\"\n },\n \"application/x-x509-next-ca-cert\": {\n \"source\": \"iana\"\n },\n \"application/x-xfig\": {\n \"source\": \"apache\",\n \"extensions\": [\"fig\"]\n },\n \"application/x-xliff+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"xlf\"]\n },\n \"application/x-xpinstall\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"xpi\"]\n },\n \"application/x-xz\": {\n \"source\": \"apache\",\n \"extensions\": [\"xz\"]\n },\n \"application/x-zmachine\": {\n \"source\": \"apache\",\n \"extensions\": [\"z1\",\"z2\",\"z3\",\"z4\",\"z5\",\"z6\",\"z7\",\"z8\"]\n },\n \"application/x400-bp\": {\n \"source\": \"iana\"\n },\n \"application/xacml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/xaml+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"xaml\"]\n },\n \"application/xcap-att+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xav\"]\n },\n \"application/xcap-caps+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xca\"]\n },\n \"application/xcap-diff+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xdf\"]\n },\n \"application/xcap-el+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xel\"]\n },\n \"application/xcap-error+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/xcap-ns+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xns\"]\n },\n \"application/xcon-conference-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/xcon-conference-info-diff+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/xenc+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xenc\"]\n },\n \"application/xhtml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xhtml\",\"xht\"]\n },\n \"application/xhtml-voice+xml\": {\n \"source\": \"apache\",\n \"compressible\": true\n },\n \"application/xliff+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xlf\"]\n },\n \"application/xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xml\",\"xsl\",\"xsd\",\"rng\"]\n },\n \"application/xml-dtd\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"dtd\"]\n },\n \"application/xml-external-parsed-entity\": {\n \"source\": \"iana\"\n },\n \"application/xml-patch+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/xmpp+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/xop+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xop\"]\n },\n \"application/xproc+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"xpl\"]\n },\n \"application/xslt+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xsl\",\"xslt\"]\n },\n \"application/xspf+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"xspf\"]\n },\n \"application/xv+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mxml\",\"xhvml\",\"xvml\",\"xvm\"]\n },\n \"application/yang\": {\n \"source\": \"iana\",\n \"extensions\": [\"yang\"]\n },\n \"application/yang-data+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/yang-data+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/yang-patch+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/yang-patch+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/yin+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"yin\"]\n },\n \"application/zip\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"zip\"]\n },\n \"application/zlib\": {\n \"source\": \"iana\"\n },\n \"application/zstd\": {\n \"source\": \"iana\"\n },\n \"audio/1d-interleaved-parityfec\": {\n \"source\": \"iana\"\n },\n \"audio/32kadpcm\": {\n \"source\": \"iana\"\n },\n \"audio/3gpp\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"3gpp\"]\n },\n \"audio/3gpp2\": {\n \"source\": \"iana\"\n },\n \"audio/aac\": {\n \"source\": \"iana\"\n },\n \"audio/ac3\": {\n \"source\": \"iana\"\n },\n \"audio/adpcm\": {\n \"source\": \"apache\",\n \"extensions\": [\"adp\"]\n },\n \"audio/amr\": {\n \"source\": \"iana\",\n \"extensions\": [\"amr\"]\n },\n \"audio/amr-wb\": {\n \"source\": \"iana\"\n },\n \"audio/amr-wb+\": {\n \"source\": \"iana\"\n },\n \"audio/aptx\": {\n \"source\": \"iana\"\n },\n \"audio/asc\": {\n \"source\": \"iana\"\n },\n \"audio/atrac-advanced-lossless\": {\n \"source\": \"iana\"\n },\n \"audio/atrac-x\": {\n \"source\": \"iana\"\n },\n \"audio/atrac3\": {\n \"source\": \"iana\"\n },\n \"audio/basic\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"au\",\"snd\"]\n },\n \"audio/bv16\": {\n \"source\": \"iana\"\n },\n \"audio/bv32\": {\n \"source\": \"iana\"\n },\n \"audio/clearmode\": {\n \"source\": \"iana\"\n },\n \"audio/cn\": {\n \"source\": \"iana\"\n },\n \"audio/dat12\": {\n \"source\": \"iana\"\n },\n \"audio/dls\": {\n \"source\": \"iana\"\n },\n \"audio/dsr-es201108\": {\n \"source\": \"iana\"\n },\n \"audio/dsr-es202050\": {\n \"source\": \"iana\"\n },\n \"audio/dsr-es202211\": {\n \"source\": \"iana\"\n },\n \"audio/dsr-es202212\": {\n \"source\": \"iana\"\n },\n \"audio/dv\": {\n \"source\": \"iana\"\n },\n \"audio/dvi4\": {\n \"source\": \"iana\"\n },\n \"audio/eac3\": {\n \"source\": \"iana\"\n },\n \"audio/encaprtp\": {\n \"source\": \"iana\"\n },\n \"audio/evrc\": {\n \"source\": \"iana\"\n },\n \"audio/evrc-qcp\": {\n \"source\": \"iana\"\n },\n \"audio/evrc0\": {\n \"source\": \"iana\"\n },\n \"audio/evrc1\": {\n \"source\": \"iana\"\n },\n \"audio/evrcb\": {\n \"source\": \"iana\"\n },\n \"audio/evrcb0\": {\n \"source\": \"iana\"\n },\n \"audio/evrcb1\": {\n \"source\": \"iana\"\n },\n \"audio/evrcnw\": {\n \"source\": \"iana\"\n },\n \"audio/evrcnw0\": {\n \"source\": \"iana\"\n },\n \"audio/evrcnw1\": {\n \"source\": \"iana\"\n },\n \"audio/evrcwb\": {\n \"source\": \"iana\"\n },\n \"audio/evrcwb0\": {\n \"source\": \"iana\"\n },\n \"audio/evrcwb1\": {\n \"source\": \"iana\"\n },\n \"audio/evs\": {\n \"source\": \"iana\"\n },\n \"audio/flexfec\": {\n \"source\": \"iana\"\n },\n \"audio/fwdred\": {\n \"source\": \"iana\"\n },\n \"audio/g711-0\": {\n \"source\": \"iana\"\n },\n \"audio/g719\": {\n \"source\": \"iana\"\n },\n \"audio/g722\": {\n \"source\": \"iana\"\n },\n \"audio/g7221\": {\n \"source\": \"iana\"\n },\n \"audio/g723\": {\n \"source\": \"iana\"\n },\n \"audio/g726-16\": {\n \"source\": \"iana\"\n },\n \"audio/g726-24\": {\n \"source\": \"iana\"\n },\n \"audio/g726-32\": {\n \"source\": \"iana\"\n },\n \"audio/g726-40\": {\n \"source\": \"iana\"\n },\n \"audio/g728\": {\n \"source\": \"iana\"\n },\n \"audio/g729\": {\n \"source\": \"iana\"\n },\n \"audio/g7291\": {\n \"source\": \"iana\"\n },\n \"audio/g729d\": {\n \"source\": \"iana\"\n },\n \"audio/g729e\": {\n \"source\": \"iana\"\n },\n \"audio/gsm\": {\n \"source\": \"iana\"\n },\n \"audio/gsm-efr\": {\n \"source\": \"iana\"\n },\n \"audio/gsm-hr-08\": {\n \"source\": \"iana\"\n },\n \"audio/ilbc\": {\n \"source\": \"iana\"\n },\n \"audio/ip-mr_v2.5\": {\n \"source\": \"iana\"\n },\n \"audio/isac\": {\n \"source\": \"apache\"\n },\n \"audio/l16\": {\n \"source\": \"iana\"\n },\n \"audio/l20\": {\n \"source\": \"iana\"\n },\n \"audio/l24\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"audio/l8\": {\n \"source\": \"iana\"\n },\n \"audio/lpc\": {\n \"source\": \"iana\"\n },\n \"audio/melp\": {\n \"source\": \"iana\"\n },\n \"audio/melp1200\": {\n \"source\": \"iana\"\n },\n \"audio/melp2400\": {\n \"source\": \"iana\"\n },\n \"audio/melp600\": {\n \"source\": \"iana\"\n },\n \"audio/mhas\": {\n \"source\": \"iana\"\n },\n \"audio/midi\": {\n \"source\": \"apache\",\n \"extensions\": [\"mid\",\"midi\",\"kar\",\"rmi\"]\n },\n \"audio/mobile-xmf\": {\n \"source\": \"iana\",\n \"extensions\": [\"mxmf\"]\n },\n \"audio/mp3\": {\n \"compressible\": false,\n \"extensions\": [\"mp3\"]\n },\n \"audio/mp4\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"m4a\",\"mp4a\"]\n },\n \"audio/mp4a-latm\": {\n \"source\": \"iana\"\n },\n \"audio/mpa\": {\n \"source\": \"iana\"\n },\n \"audio/mpa-robust\": {\n \"source\": \"iana\"\n },\n \"audio/mpeg\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"mpga\",\"mp2\",\"mp2a\",\"mp3\",\"m2a\",\"m3a\"]\n },\n \"audio/mpeg4-generic\": {\n \"source\": \"iana\"\n },\n \"audio/musepack\": {\n \"source\": \"apache\"\n },\n \"audio/ogg\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"oga\",\"ogg\",\"spx\",\"opus\"]\n },\n \"audio/opus\": {\n \"source\": \"iana\"\n },\n \"audio/parityfec\": {\n \"source\": \"iana\"\n },\n \"audio/pcma\": {\n \"source\": \"iana\"\n },\n \"audio/pcma-wb\": {\n \"source\": \"iana\"\n },\n \"audio/pcmu\": {\n \"source\": \"iana\"\n },\n \"audio/pcmu-wb\": {\n \"source\": \"iana\"\n },\n \"audio/prs.sid\": {\n \"source\": \"iana\"\n },\n \"audio/qcelp\": {\n \"source\": \"iana\"\n },\n \"audio/raptorfec\": {\n \"source\": \"iana\"\n },\n \"audio/red\": {\n \"source\": \"iana\"\n },\n \"audio/rtp-enc-aescm128\": {\n \"source\": \"iana\"\n },\n \"audio/rtp-midi\": {\n \"source\": \"iana\"\n },\n \"audio/rtploopback\": {\n \"source\": \"iana\"\n },\n \"audio/rtx\": {\n \"source\": \"iana\"\n },\n \"audio/s3m\": {\n \"source\": \"apache\",\n \"extensions\": [\"s3m\"]\n },\n \"audio/scip\": {\n \"source\": \"iana\"\n },\n \"audio/silk\": {\n \"source\": \"apache\",\n \"extensions\": [\"sil\"]\n },\n \"audio/smv\": {\n \"source\": \"iana\"\n },\n \"audio/smv-qcp\": {\n \"source\": \"iana\"\n },\n \"audio/smv0\": {\n \"source\": \"iana\"\n },\n \"audio/sofa\": {\n \"source\": \"iana\"\n },\n \"audio/sp-midi\": {\n \"source\": \"iana\"\n },\n \"audio/speex\": {\n \"source\": \"iana\"\n },\n \"audio/t140c\": {\n \"source\": \"iana\"\n },\n \"audio/t38\": {\n \"source\": \"iana\"\n },\n \"audio/telephone-event\": {\n \"source\": \"iana\"\n },\n \"audio/tetra_acelp\": {\n \"source\": \"iana\"\n },\n \"audio/tetra_acelp_bb\": {\n \"source\": \"iana\"\n },\n \"audio/tone\": {\n \"source\": \"iana\"\n },\n \"audio/tsvcis\": {\n \"source\": \"iana\"\n },\n \"audio/uemclip\": {\n \"source\": \"iana\"\n },\n \"audio/ulpfec\": {\n \"source\": \"iana\"\n },\n \"audio/usac\": {\n \"source\": \"iana\"\n },\n \"audio/vdvi\": {\n \"source\": \"iana\"\n },\n \"audio/vmr-wb\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.3gpp.iufp\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.4sb\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.audiokoz\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.celp\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.cisco.nse\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.cmles.radio-events\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.cns.anp1\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.cns.inf1\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dece.audio\": {\n \"source\": \"iana\",\n \"extensions\": [\"uva\",\"uvva\"]\n },\n \"audio/vnd.digital-winds\": {\n \"source\": \"iana\",\n \"extensions\": [\"eol\"]\n },\n \"audio/vnd.dlna.adts\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dolby.heaac.1\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dolby.heaac.2\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dolby.mlp\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dolby.mps\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dolby.pl2\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dolby.pl2x\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dolby.pl2z\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dolby.pulse.1\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dra\": {\n \"source\": \"iana\",\n \"extensions\": [\"dra\"]\n },\n \"audio/vnd.dts\": {\n \"source\": \"iana\",\n \"extensions\": [\"dts\"]\n },\n \"audio/vnd.dts.hd\": {\n \"source\": \"iana\",\n \"extensions\": [\"dtshd\"]\n },\n \"audio/vnd.dts.uhd\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dvb.file\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.everad.plj\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.hns.audio\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.lucent.voice\": {\n \"source\": \"iana\",\n \"extensions\": [\"lvp\"]\n },\n \"audio/vnd.ms-playready.media.pya\": {\n \"source\": \"iana\",\n \"extensions\": [\"pya\"]\n },\n \"audio/vnd.nokia.mobile-xmf\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.nortel.vbk\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.nuera.ecelp4800\": {\n \"source\": \"iana\",\n \"extensions\": [\"ecelp4800\"]\n },\n \"audio/vnd.nuera.ecelp7470\": {\n \"source\": \"iana\",\n \"extensions\": [\"ecelp7470\"]\n },\n \"audio/vnd.nuera.ecelp9600\": {\n \"source\": \"iana\",\n \"extensions\": [\"ecelp9600\"]\n },\n \"audio/vnd.octel.sbc\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.presonus.multitrack\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.qcelp\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.rhetorex.32kadpcm\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.rip\": {\n \"source\": \"iana\",\n \"extensions\": [\"rip\"]\n },\n \"audio/vnd.rn-realaudio\": {\n \"compressible\": false\n },\n \"audio/vnd.sealedmedia.softseal.mpeg\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.vmx.cvsd\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.wave\": {\n \"compressible\": false\n },\n \"audio/vorbis\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"audio/vorbis-config\": {\n \"source\": \"iana\"\n },\n \"audio/wav\": {\n \"compressible\": false,\n \"extensions\": [\"wav\"]\n },\n \"audio/wave\": {\n \"compressible\": false,\n \"extensions\": [\"wav\"]\n },\n \"audio/webm\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"weba\"]\n },\n \"audio/x-aac\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"aac\"]\n },\n \"audio/x-aiff\": {\n \"source\": \"apache\",\n \"extensions\": [\"aif\",\"aiff\",\"aifc\"]\n },\n \"audio/x-caf\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"caf\"]\n },\n \"audio/x-flac\": {\n \"source\": \"apache\",\n \"extensions\": [\"flac\"]\n },\n \"audio/x-m4a\": {\n \"source\": \"nginx\",\n \"extensions\": [\"m4a\"]\n },\n \"audio/x-matroska\": {\n \"source\": \"apache\",\n \"extensions\": [\"mka\"]\n },\n \"audio/x-mpegurl\": {\n \"source\": \"apache\",\n \"extensions\": [\"m3u\"]\n },\n \"audio/x-ms-wax\": {\n \"source\": \"apache\",\n \"extensions\": [\"wax\"]\n },\n \"audio/x-ms-wma\": {\n \"source\": \"apache\",\n \"extensions\": [\"wma\"]\n },\n \"audio/x-pn-realaudio\": {\n \"source\": \"apache\",\n \"extensions\": [\"ram\",\"ra\"]\n },\n \"audio/x-pn-realaudio-plugin\": {\n \"source\": \"apache\",\n \"extensions\": [\"rmp\"]\n },\n \"audio/x-realaudio\": {\n \"source\": \"nginx\",\n \"extensions\": [\"ra\"]\n },\n \"audio/x-tta\": {\n \"source\": \"apache\"\n },\n \"audio/x-wav\": {\n \"source\": \"apache\",\n \"extensions\": [\"wav\"]\n },\n \"audio/xm\": {\n \"source\": \"apache\",\n \"extensions\": [\"xm\"]\n },\n \"chemical/x-cdx\": {\n \"source\": \"apache\",\n \"extensions\": [\"cdx\"]\n },\n \"chemical/x-cif\": {\n \"source\": \"apache\",\n \"extensions\": [\"cif\"]\n },\n \"chemical/x-cmdf\": {\n \"source\": \"apache\",\n \"extensions\": [\"cmdf\"]\n },\n \"chemical/x-cml\": {\n \"source\": \"apache\",\n \"extensions\": [\"cml\"]\n },\n \"chemical/x-csml\": {\n \"source\": \"apache\",\n \"extensions\": [\"csml\"]\n },\n \"chemical/x-pdb\": {\n \"source\": \"apache\"\n },\n \"chemical/x-xyz\": {\n \"source\": \"apache\",\n \"extensions\": [\"xyz\"]\n },\n \"font/collection\": {\n \"source\": \"iana\",\n \"extensions\": [\"ttc\"]\n },\n \"font/otf\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"otf\"]\n },\n \"font/sfnt\": {\n \"source\": \"iana\"\n },\n \"font/ttf\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"ttf\"]\n },\n \"font/woff\": {\n \"source\": \"iana\",\n \"extensions\": [\"woff\"]\n },\n \"font/woff2\": {\n \"source\": \"iana\",\n \"extensions\": [\"woff2\"]\n },\n \"image/aces\": {\n \"source\": \"iana\",\n \"extensions\": [\"exr\"]\n },\n \"image/apng\": {\n \"compressible\": false,\n \"extensions\": [\"apng\"]\n },\n \"image/avci\": {\n \"source\": \"iana\",\n \"extensions\": [\"avci\"]\n },\n \"image/avcs\": {\n \"source\": \"iana\",\n \"extensions\": [\"avcs\"]\n },\n \"image/avif\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"avif\"]\n },\n \"image/bmp\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"bmp\"]\n },\n \"image/cgm\": {\n \"source\": \"iana\",\n \"extensions\": [\"cgm\"]\n },\n \"image/dicom-rle\": {\n \"source\": \"iana\",\n \"extensions\": [\"drle\"]\n },\n \"image/emf\": {\n \"source\": \"iana\",\n \"extensions\": [\"emf\"]\n },\n \"image/fits\": {\n \"source\": \"iana\",\n \"extensions\": [\"fits\"]\n },\n \"image/g3fax\": {\n \"source\": \"iana\",\n \"extensions\": [\"g3\"]\n },\n \"image/gif\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"gif\"]\n },\n \"image/heic\": {\n \"source\": \"iana\",\n \"extensions\": [\"heic\"]\n },\n \"image/heic-sequence\": {\n \"source\": \"iana\",\n \"extensions\": [\"heics\"]\n },\n \"image/heif\": {\n \"source\": \"iana\",\n \"extensions\": [\"heif\"]\n },\n \"image/heif-sequence\": {\n \"source\": \"iana\",\n \"extensions\": [\"heifs\"]\n },\n \"image/hej2k\": {\n \"source\": \"iana\",\n \"extensions\": [\"hej2\"]\n },\n \"image/hsj2\": {\n \"source\": \"iana\",\n \"extensions\": [\"hsj2\"]\n },\n \"image/ief\": {\n \"source\": \"iana\",\n \"extensions\": [\"ief\"]\n },\n \"image/jls\": {\n \"source\": \"iana\",\n \"extensions\": [\"jls\"]\n },\n \"image/jp2\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"jp2\",\"jpg2\"]\n },\n \"image/jpeg\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"jpeg\",\"jpg\",\"jpe\"]\n },\n \"image/jph\": {\n \"source\": \"iana\",\n \"extensions\": [\"jph\"]\n },\n \"image/jphc\": {\n \"source\": \"iana\",\n \"extensions\": [\"jhc\"]\n },\n \"image/jpm\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"jpm\"]\n },\n \"image/jpx\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"jpx\",\"jpf\"]\n },\n \"image/jxr\": {\n \"source\": \"iana\",\n \"extensions\": [\"jxr\"]\n },\n \"image/jxra\": {\n \"source\": \"iana\",\n \"extensions\": [\"jxra\"]\n },\n \"image/jxrs\": {\n \"source\": \"iana\",\n \"extensions\": [\"jxrs\"]\n },\n \"image/jxs\": {\n \"source\": \"iana\",\n \"extensions\": [\"jxs\"]\n },\n \"image/jxsc\": {\n \"source\": \"iana\",\n \"extensions\": [\"jxsc\"]\n },\n \"image/jxsi\": {\n \"source\": \"iana\",\n \"extensions\": [\"jxsi\"]\n },\n \"image/jxss\": {\n \"source\": \"iana\",\n \"extensions\": [\"jxss\"]\n },\n \"image/ktx\": {\n \"source\": \"iana\",\n \"extensions\": [\"ktx\"]\n },\n \"image/ktx2\": {\n \"source\": \"iana\",\n \"extensions\": [\"ktx2\"]\n },\n \"image/naplps\": {\n \"source\": \"iana\"\n },\n \"image/pjpeg\": {\n \"compressible\": false\n },\n \"image/png\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"png\"]\n },\n \"image/prs.btif\": {\n \"source\": \"iana\",\n \"extensions\": [\"btif\"]\n },\n \"image/prs.pti\": {\n \"source\": \"iana\",\n \"extensions\": [\"pti\"]\n },\n \"image/pwg-raster\": {\n \"source\": \"iana\"\n },\n \"image/sgi\": {\n \"source\": \"apache\",\n \"extensions\": [\"sgi\"]\n },\n \"image/svg+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"svg\",\"svgz\"]\n },\n \"image/t38\": {\n \"source\": \"iana\",\n \"extensions\": [\"t38\"]\n },\n \"image/tiff\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"tif\",\"tiff\"]\n },\n \"image/tiff-fx\": {\n \"source\": \"iana\",\n \"extensions\": [\"tfx\"]\n },\n \"image/vnd.adobe.photoshop\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"psd\"]\n },\n \"image/vnd.airzip.accelerator.azv\": {\n \"source\": \"iana\",\n \"extensions\": [\"azv\"]\n },\n \"image/vnd.cns.inf2\": {\n \"source\": \"iana\"\n },\n \"image/vnd.dece.graphic\": {\n \"source\": \"iana\",\n \"extensions\": [\"uvi\",\"uvvi\",\"uvg\",\"uvvg\"]\n },\n \"image/vnd.djvu\": {\n \"source\": \"iana\",\n \"extensions\": [\"djvu\",\"djv\"]\n },\n \"image/vnd.dvb.subtitle\": {\n \"source\": \"iana\",\n \"extensions\": [\"sub\"]\n },\n \"image/vnd.dwg\": {\n \"source\": \"iana\",\n \"extensions\": [\"dwg\"]\n },\n \"image/vnd.dxf\": {\n \"source\": \"iana\",\n \"extensions\": [\"dxf\"]\n },\n \"image/vnd.fastbidsheet\": {\n \"source\": \"iana\",\n \"extensions\": [\"fbs\"]\n },\n \"image/vnd.fpx\": {\n \"source\": \"iana\",\n \"extensions\": [\"fpx\"]\n },\n \"image/vnd.fst\": {\n \"source\": \"iana\",\n \"extensions\": [\"fst\"]\n },\n \"image/vnd.fujixerox.edmics-mmr\": {\n \"source\": \"iana\",\n \"extensions\": [\"mmr\"]\n },\n \"image/vnd.fujixerox.edmics-rlc\": {\n \"source\": \"iana\",\n \"extensions\": [\"rlc\"]\n },\n \"image/vnd.globalgraphics.pgb\": {\n \"source\": \"iana\"\n },\n \"image/vnd.microsoft.icon\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"ico\"]\n },\n \"image/vnd.mix\": {\n \"source\": \"iana\"\n },\n \"image/vnd.mozilla.apng\": {\n \"source\": \"iana\"\n },\n \"image/vnd.ms-dds\": {\n \"compressible\": true,\n \"extensions\": [\"dds\"]\n },\n \"image/vnd.ms-modi\": {\n \"source\": \"iana\",\n \"extensions\": [\"mdi\"]\n },\n \"image/vnd.ms-photo\": {\n \"source\": \"apache\",\n \"extensions\": [\"wdp\"]\n },\n \"image/vnd.net-fpx\": {\n \"source\": \"iana\",\n \"extensions\": [\"npx\"]\n },\n \"image/vnd.pco.b16\": {\n \"source\": \"iana\",\n \"extensions\": [\"b16\"]\n },\n \"image/vnd.radiance\": {\n \"source\": \"iana\"\n },\n \"image/vnd.sealed.png\": {\n \"source\": \"iana\"\n },\n \"image/vnd.sealedmedia.softseal.gif\": {\n \"source\": \"iana\"\n },\n \"image/vnd.sealedmedia.softseal.jpg\": {\n \"source\": \"iana\"\n },\n \"image/vnd.svf\": {\n \"source\": \"iana\"\n },\n \"image/vnd.tencent.tap\": {\n \"source\": \"iana\",\n \"extensions\": [\"tap\"]\n },\n \"image/vnd.valve.source.texture\": {\n \"source\": \"iana\",\n \"extensions\": [\"vtf\"]\n },\n \"image/vnd.wap.wbmp\": {\n \"source\": \"iana\",\n \"extensions\": [\"wbmp\"]\n },\n \"image/vnd.xiff\": {\n \"source\": \"iana\",\n \"extensions\": [\"xif\"]\n },\n \"image/vnd.zbrush.pcx\": {\n \"source\": \"iana\",\n \"extensions\": [\"pcx\"]\n },\n \"image/webp\": {\n \"source\": \"apache\",\n \"extensions\": [\"webp\"]\n },\n \"image/wmf\": {\n \"source\": \"iana\",\n \"extensions\": [\"wmf\"]\n },\n \"image/x-3ds\": {\n \"source\": \"apache\",\n \"extensions\": [\"3ds\"]\n },\n \"image/x-cmu-raster\": {\n \"source\": \"apache\",\n \"extensions\": [\"ras\"]\n },\n \"image/x-cmx\": {\n \"source\": \"apache\",\n \"extensions\": [\"cmx\"]\n },\n \"image/x-freehand\": {\n \"source\": \"apache\",\n \"extensions\": [\"fh\",\"fhc\",\"fh4\",\"fh5\",\"fh7\"]\n },\n \"image/x-icon\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"ico\"]\n },\n \"image/x-jng\": {\n \"source\": \"nginx\",\n \"extensions\": [\"jng\"]\n },\n \"image/x-mrsid-image\": {\n \"source\": \"apache\",\n \"extensions\": [\"sid\"]\n },\n \"image/x-ms-bmp\": {\n \"source\": \"nginx\",\n \"compressible\": true,\n \"extensions\": [\"bmp\"]\n },\n \"image/x-pcx\": {\n \"source\": \"apache\",\n \"extensions\": [\"pcx\"]\n },\n \"image/x-pict\": {\n \"source\": \"apache\",\n \"extensions\": [\"pic\",\"pct\"]\n },\n \"image/x-portable-anymap\": {\n \"source\": \"apache\",\n \"extensions\": [\"pnm\"]\n },\n \"image/x-portable-bitmap\": {\n \"source\": \"apache\",\n \"extensions\": [\"pbm\"]\n },\n \"image/x-portable-graymap\": {\n \"source\": \"apache\",\n \"extensions\": [\"pgm\"]\n },\n \"image/x-portable-pixmap\": {\n \"source\": \"apache\",\n \"extensions\": [\"ppm\"]\n },\n \"image/x-rgb\": {\n \"source\": \"apache\",\n \"extensions\": [\"rgb\"]\n },\n \"image/x-tga\": {\n \"source\": \"apache\",\n \"extensions\": [\"tga\"]\n },\n \"image/x-xbitmap\": {\n \"source\": \"apache\",\n \"extensions\": [\"xbm\"]\n },\n \"image/x-xcf\": {\n \"compressible\": false\n },\n \"image/x-xpixmap\": {\n \"source\": \"apache\",\n \"extensions\": [\"xpm\"]\n },\n \"image/x-xwindowdump\": {\n \"source\": \"apache\",\n \"extensions\": [\"xwd\"]\n },\n \"message/cpim\": {\n \"source\": \"iana\"\n },\n \"message/delivery-status\": {\n \"source\": \"iana\"\n },\n \"message/disposition-notification\": {\n \"source\": \"iana\",\n \"extensions\": [\n \"disposition-notification\"\n ]\n },\n \"message/external-body\": {\n \"source\": \"iana\"\n },\n \"message/feedback-report\": {\n \"source\": \"iana\"\n },\n \"message/global\": {\n \"source\": \"iana\",\n \"extensions\": [\"u8msg\"]\n },\n \"message/global-delivery-status\": {\n \"source\": \"iana\",\n \"extensions\": [\"u8dsn\"]\n },\n \"message/global-disposition-notification\": {\n \"source\": \"iana\",\n \"extensions\": [\"u8mdn\"]\n },\n \"message/global-headers\": {\n \"source\": \"iana\",\n \"extensions\": [\"u8hdr\"]\n },\n \"message/http\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"message/imdn+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"message/news\": {\n \"source\": \"iana\"\n },\n \"message/partial\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"message/rfc822\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"eml\",\"mime\"]\n },\n \"message/s-http\": {\n \"source\": \"iana\"\n },\n \"message/sip\": {\n \"source\": \"iana\"\n },\n \"message/sipfrag\": {\n \"source\": \"iana\"\n },\n \"message/tracking-status\": {\n \"source\": \"iana\"\n },\n \"message/vnd.si.simp\": {\n \"source\": \"iana\"\n },\n \"message/vnd.wfa.wsc\": {\n \"source\": \"iana\",\n \"extensions\": [\"wsc\"]\n },\n \"model/3mf\": {\n \"source\": \"iana\",\n \"extensions\": [\"3mf\"]\n },\n \"model/e57\": {\n \"source\": \"iana\"\n },\n \"model/gltf+json\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"gltf\"]\n },\n \"model/gltf-binary\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"glb\"]\n },\n \"model/iges\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"igs\",\"iges\"]\n },\n \"model/mesh\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"msh\",\"mesh\",\"silo\"]\n },\n \"model/mtl\": {\n \"source\": \"iana\",\n \"extensions\": [\"mtl\"]\n },\n \"model/obj\": {\n \"source\": \"iana\",\n \"extensions\": [\"obj\"]\n },\n \"model/step\": {\n \"source\": \"iana\"\n },\n \"model/step+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"stpx\"]\n },\n \"model/step+zip\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"stpz\"]\n },\n \"model/step-xml+zip\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"stpxz\"]\n },\n \"model/stl\": {\n \"source\": \"iana\",\n \"extensions\": [\"stl\"]\n },\n \"model/vnd.collada+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"dae\"]\n },\n \"model/vnd.dwf\": {\n \"source\": \"iana\",\n \"extensions\": [\"dwf\"]\n },\n \"model/vnd.flatland.3dml\": {\n \"source\": \"iana\"\n },\n \"model/vnd.gdl\": {\n \"source\": \"iana\",\n \"extensions\": [\"gdl\"]\n },\n \"model/vnd.gs-gdl\": {\n \"source\": \"apache\"\n },\n \"model/vnd.gs.gdl\": {\n \"source\": \"iana\"\n },\n \"model/vnd.gtw\": {\n \"source\": \"iana\",\n \"extensions\": [\"gtw\"]\n },\n \"model/vnd.moml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"model/vnd.mts\": {\n \"source\": \"iana\",\n \"extensions\": [\"mts\"]\n },\n \"model/vnd.opengex\": {\n \"source\": \"iana\",\n \"extensions\": [\"ogex\"]\n },\n \"model/vnd.parasolid.transmit.binary\": {\n \"source\": \"iana\",\n \"extensions\": [\"x_b\"]\n },\n \"model/vnd.parasolid.transmit.text\": {\n \"source\": \"iana\",\n \"extensions\": [\"x_t\"]\n },\n \"model/vnd.pytha.pyox\": {\n \"source\": \"iana\"\n },\n \"model/vnd.rosette.annotated-data-model\": {\n \"source\": \"iana\"\n },\n \"model/vnd.sap.vds\": {\n \"source\": \"iana\",\n \"extensions\": [\"vds\"]\n },\n \"model/vnd.usdz+zip\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"usdz\"]\n },\n \"model/vnd.valve.source.compiled-map\": {\n \"source\": \"iana\",\n \"extensions\": [\"bsp\"]\n },\n \"model/vnd.vtu\": {\n \"source\": \"iana\",\n \"extensions\": [\"vtu\"]\n },\n \"model/vrml\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"wrl\",\"vrml\"]\n },\n \"model/x3d+binary\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"x3db\",\"x3dbz\"]\n },\n \"model/x3d+fastinfoset\": {\n \"source\": \"iana\",\n \"extensions\": [\"x3db\"]\n },\n \"model/x3d+vrml\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"x3dv\",\"x3dvz\"]\n },\n \"model/x3d+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"x3d\",\"x3dz\"]\n },\n \"model/x3d-vrml\": {\n \"source\": \"iana\",\n \"extensions\": [\"x3dv\"]\n },\n \"multipart/alternative\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"multipart/appledouble\": {\n \"source\": \"iana\"\n },\n \"multipart/byteranges\": {\n \"source\": \"iana\"\n },\n \"multipart/digest\": {\n \"source\": \"iana\"\n },\n \"multipart/encrypted\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"multipart/form-data\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"multipart/header-set\": {\n \"source\": \"iana\"\n },\n \"multipart/mixed\": {\n \"source\": \"iana\"\n },\n \"multipart/multilingual\": {\n \"source\": \"iana\"\n },\n \"multipart/parallel\": {\n \"source\": \"iana\"\n },\n \"multipart/related\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"multipart/report\": {\n \"source\": \"iana\"\n },\n \"multipart/signed\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"multipart/vnd.bint.med-plus\": {\n \"source\": \"iana\"\n },\n \"multipart/voice-message\": {\n \"source\": \"iana\"\n },\n \"multipart/x-mixed-replace\": {\n \"source\": \"iana\"\n },\n \"text/1d-interleaved-parityfec\": {\n \"source\": \"iana\"\n },\n \"text/cache-manifest\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"appcache\",\"manifest\"]\n },\n \"text/calendar\": {\n \"source\": \"iana\",\n \"extensions\": [\"ics\",\"ifb\"]\n },\n \"text/calender\": {\n \"compressible\": true\n },\n \"text/cmd\": {\n \"compressible\": true\n },\n \"text/coffeescript\": {\n \"extensions\": [\"coffee\",\"litcoffee\"]\n },\n \"text/cql\": {\n \"source\": \"iana\"\n },\n \"text/cql-expression\": {\n \"source\": \"iana\"\n },\n \"text/cql-identifier\": {\n \"source\": \"iana\"\n },\n \"text/css\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true,\n \"extensions\": [\"css\"]\n },\n \"text/csv\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"csv\"]\n },\n \"text/csv-schema\": {\n \"source\": \"iana\"\n },\n \"text/directory\": {\n \"source\": \"iana\"\n },\n \"text/dns\": {\n \"source\": \"iana\"\n },\n \"text/ecmascript\": {\n \"source\": \"iana\"\n },\n \"text/encaprtp\": {\n \"source\": \"iana\"\n },\n \"text/enriched\": {\n \"source\": \"iana\"\n },\n \"text/fhirpath\": {\n \"source\": \"iana\"\n },\n \"text/flexfec\": {\n \"source\": \"iana\"\n },\n \"text/fwdred\": {\n \"source\": \"iana\"\n },\n \"text/gff3\": {\n \"source\": \"iana\"\n },\n \"text/grammar-ref-list\": {\n \"source\": \"iana\"\n },\n \"text/html\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"html\",\"htm\",\"shtml\"]\n },\n \"text/jade\": {\n \"extensions\": [\"jade\"]\n },\n \"text/javascript\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"text/jcr-cnd\": {\n \"source\": \"iana\"\n },\n \"text/jsx\": {\n \"compressible\": true,\n \"extensions\": [\"jsx\"]\n },\n \"text/less\": {\n \"compressible\": true,\n \"extensions\": [\"less\"]\n },\n \"text/markdown\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"markdown\",\"md\"]\n },\n \"text/mathml\": {\n \"source\": \"nginx\",\n \"extensions\": [\"mml\"]\n },\n \"text/mdx\": {\n \"compressible\": true,\n \"extensions\": [\"mdx\"]\n },\n \"text/mizar\": {\n \"source\": \"iana\"\n },\n \"text/n3\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true,\n \"extensions\": [\"n3\"]\n },\n \"text/parameters\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\"\n },\n \"text/parityfec\": {\n \"source\": \"iana\"\n },\n \"text/plain\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"txt\",\"text\",\"conf\",\"def\",\"list\",\"log\",\"in\",\"ini\"]\n },\n \"text/provenance-notation\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\"\n },\n \"text/prs.fallenstein.rst\": {\n \"source\": \"iana\"\n },\n \"text/prs.lines.tag\": {\n \"source\": \"iana\",\n \"extensions\": [\"dsc\"]\n },\n \"text/prs.prop.logic\": {\n \"source\": \"iana\"\n },\n \"text/raptorfec\": {\n \"source\": \"iana\"\n },\n \"text/red\": {\n \"source\": \"iana\"\n },\n \"text/rfc822-headers\": {\n \"source\": \"iana\"\n },\n \"text/richtext\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rtx\"]\n },\n \"text/rtf\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rtf\"]\n },\n \"text/rtp-enc-aescm128\": {\n \"source\": \"iana\"\n },\n \"text/rtploopback\": {\n \"source\": \"iana\"\n },\n \"text/rtx\": {\n \"source\": \"iana\"\n },\n \"text/sgml\": {\n \"source\": \"iana\",\n \"extensions\": [\"sgml\",\"sgm\"]\n },\n \"text/shaclc\": {\n \"source\": \"iana\"\n },\n \"text/shex\": {\n \"source\": \"iana\",\n \"extensions\": [\"shex\"]\n },\n \"text/slim\": {\n \"extensions\": [\"slim\",\"slm\"]\n },\n \"text/spdx\": {\n \"source\": \"iana\",\n \"extensions\": [\"spdx\"]\n },\n \"text/strings\": {\n \"source\": \"iana\"\n },\n \"text/stylus\": {\n \"extensions\": [\"stylus\",\"styl\"]\n },\n \"text/t140\": {\n \"source\": \"iana\"\n },\n \"text/tab-separated-values\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"tsv\"]\n },\n \"text/troff\": {\n \"source\": \"iana\",\n \"extensions\": [\"t\",\"tr\",\"roff\",\"man\",\"me\",\"ms\"]\n },\n \"text/turtle\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"extensions\": [\"ttl\"]\n },\n \"text/ulpfec\": {\n \"source\": \"iana\"\n },\n \"text/uri-list\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"uri\",\"uris\",\"urls\"]\n },\n \"text/vcard\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"vcard\"]\n },\n \"text/vnd.a\": {\n \"source\": \"iana\"\n },\n \"text/vnd.abc\": {\n \"source\": \"iana\"\n },\n \"text/vnd.ascii-art\": {\n \"source\": \"iana\"\n },\n \"text/vnd.curl\": {\n \"source\": \"iana\",\n \"extensions\": [\"curl\"]\n },\n \"text/vnd.curl.dcurl\": {\n \"source\": \"apache\",\n \"extensions\": [\"dcurl\"]\n },\n \"text/vnd.curl.mcurl\": {\n \"source\": \"apache\",\n \"extensions\": [\"mcurl\"]\n },\n \"text/vnd.curl.scurl\": {\n \"source\": \"apache\",\n \"extensions\": [\"scurl\"]\n },\n \"text/vnd.debian.copyright\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\"\n },\n \"text/vnd.dmclientscript\": {\n \"source\": \"iana\"\n },\n \"text/vnd.dvb.subtitle\": {\n \"source\": \"iana\",\n \"extensions\": [\"sub\"]\n },\n \"text/vnd.esmertec.theme-descriptor\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\"\n },\n \"text/vnd.familysearch.gedcom\": {\n \"source\": \"iana\",\n \"extensions\": [\"ged\"]\n },\n \"text/vnd.ficlab.flt\": {\n \"source\": \"iana\"\n },\n \"text/vnd.fly\": {\n \"source\": \"iana\",\n \"extensions\": [\"fly\"]\n },\n \"text/vnd.fmi.flexstor\": {\n \"source\": \"iana\",\n \"extensions\": [\"flx\"]\n },\n \"text/vnd.gml\": {\n \"source\": \"iana\"\n },\n \"text/vnd.graphviz\": {\n \"source\": \"iana\",\n \"extensions\": [\"gv\"]\n },\n \"text/vnd.hans\": {\n \"source\": \"iana\"\n },\n \"text/vnd.hgl\": {\n \"source\": \"iana\"\n },\n \"text/vnd.in3d.3dml\": {\n \"source\": \"iana\",\n \"extensions\": [\"3dml\"]\n },\n \"text/vnd.in3d.spot\": {\n \"source\": \"iana\",\n \"extensions\": [\"spot\"]\n },\n \"text/vnd.iptc.newsml\": {\n \"source\": \"iana\"\n },\n \"text/vnd.iptc.nitf\": {\n \"source\": \"iana\"\n },\n \"text/vnd.latex-z\": {\n \"source\": \"iana\"\n },\n \"text/vnd.motorola.reflex\": {\n \"source\": \"iana\"\n },\n \"text/vnd.ms-mediapackage\": {\n \"source\": \"iana\"\n },\n \"text/vnd.net2phone.commcenter.command\": {\n \"source\": \"iana\"\n },\n \"text/vnd.radisys.msml-basic-layout\": {\n \"source\": \"iana\"\n },\n \"text/vnd.senx.warpscript\": {\n \"source\": \"iana\"\n },\n \"text/vnd.si.uricatalogue\": {\n \"source\": \"iana\"\n },\n \"text/vnd.sosi\": {\n \"source\": \"iana\"\n },\n \"text/vnd.sun.j2me.app-descriptor\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"extensions\": [\"jad\"]\n },\n \"text/vnd.trolltech.linguist\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\"\n },\n \"text/vnd.wap.si\": {\n \"source\": \"iana\"\n },\n \"text/vnd.wap.sl\": {\n \"source\": \"iana\"\n },\n \"text/vnd.wap.wml\": {\n \"source\": \"iana\",\n \"extensions\": [\"wml\"]\n },\n \"text/vnd.wap.wmlscript\": {\n \"source\": \"iana\",\n \"extensions\": [\"wmls\"]\n },\n \"text/vtt\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true,\n \"extensions\": [\"vtt\"]\n },\n \"text/x-asm\": {\n \"source\": \"apache\",\n \"extensions\": [\"s\",\"asm\"]\n },\n \"text/x-c\": {\n \"source\": \"apache\",\n \"extensions\": [\"c\",\"cc\",\"cxx\",\"cpp\",\"h\",\"hh\",\"dic\"]\n },\n \"text/x-component\": {\n \"source\": \"nginx\",\n \"extensions\": [\"htc\"]\n },\n \"text/x-fortran\": {\n \"source\": \"apache\",\n \"extensions\": [\"f\",\"for\",\"f77\",\"f90\"]\n },\n \"text/x-gwt-rpc\": {\n \"compressible\": true\n },\n \"text/x-handlebars-template\": {\n \"extensions\": [\"hbs\"]\n },\n \"text/x-java-source\": {\n \"source\": \"apache\",\n \"extensions\": [\"java\"]\n },\n \"text/x-jquery-tmpl\": {\n \"compressible\": true\n },\n \"text/x-lua\": {\n \"extensions\": [\"lua\"]\n },\n \"text/x-markdown\": {\n \"compressible\": true,\n \"extensions\": [\"mkd\"]\n },\n \"text/x-nfo\": {\n \"source\": \"apache\",\n \"extensions\": [\"nfo\"]\n },\n \"text/x-opml\": {\n \"source\": \"apache\",\n \"extensions\": [\"opml\"]\n },\n \"text/x-org\": {\n \"compressible\": true,\n \"extensions\": [\"org\"]\n },\n \"text/x-pascal\": {\n \"source\": \"apache\",\n \"extensions\": [\"p\",\"pas\"]\n },\n \"text/x-processing\": {\n \"compressible\": true,\n \"extensions\": [\"pde\"]\n },\n \"text/x-sass\": {\n \"extensions\": [\"sass\"]\n },\n \"text/x-scss\": {\n \"extensions\": [\"scss\"]\n },\n \"text/x-setext\": {\n \"source\": \"apache\",\n \"extensions\": [\"etx\"]\n },\n \"text/x-sfv\": {\n \"source\": \"apache\",\n \"extensions\": [\"sfv\"]\n },\n \"text/x-suse-ymp\": {\n \"compressible\": true,\n \"extensions\": [\"ymp\"]\n },\n \"text/x-uuencode\": {\n \"source\": \"apache\",\n \"extensions\": [\"uu\"]\n },\n \"text/x-vcalendar\": {\n \"source\": \"apache\",\n \"extensions\": [\"vcs\"]\n },\n \"text/x-vcard\": {\n \"source\": \"apache\",\n \"extensions\": [\"vcf\"]\n },\n \"text/xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xml\"]\n },\n \"text/xml-external-parsed-entity\": {\n \"source\": \"iana\"\n },\n \"text/yaml\": {\n \"compressible\": true,\n \"extensions\": [\"yaml\",\"yml\"]\n },\n \"video/1d-interleaved-parityfec\": {\n \"source\": \"iana\"\n },\n \"video/3gpp\": {\n \"source\": \"iana\",\n \"extensions\": [\"3gp\",\"3gpp\"]\n },\n \"video/3gpp-tt\": {\n \"source\": \"iana\"\n },\n \"video/3gpp2\": {\n \"source\": \"iana\",\n \"extensions\": [\"3g2\"]\n },\n \"video/av1\": {\n \"source\": \"iana\"\n },\n \"video/bmpeg\": {\n \"source\": \"iana\"\n },\n \"video/bt656\": {\n \"source\": \"iana\"\n },\n \"video/celb\": {\n \"source\": \"iana\"\n },\n \"video/dv\": {\n \"source\": \"iana\"\n },\n \"video/encaprtp\": {\n \"source\": \"iana\"\n },\n \"video/ffv1\": {\n \"source\": \"iana\"\n },\n \"video/flexfec\": {\n \"source\": \"iana\"\n },\n \"video/h261\": {\n \"source\": \"iana\",\n \"extensions\": [\"h261\"]\n },\n \"video/h263\": {\n \"source\": \"iana\",\n \"extensions\": [\"h263\"]\n },\n \"video/h263-1998\": {\n \"source\": \"iana\"\n },\n \"video/h263-2000\": {\n \"source\": \"iana\"\n },\n \"video/h264\": {\n \"source\": \"iana\",\n \"extensions\": [\"h264\"]\n },\n \"video/h264-rcdo\": {\n \"source\": \"iana\"\n },\n \"video/h264-svc\": {\n \"source\": \"iana\"\n },\n \"video/h265\": {\n \"source\": \"iana\"\n },\n \"video/iso.segment\": {\n \"source\": \"iana\",\n \"extensions\": [\"m4s\"]\n },\n \"video/jpeg\": {\n \"source\": \"iana\",\n \"extensions\": [\"jpgv\"]\n },\n \"video/jpeg2000\": {\n \"source\": \"iana\"\n },\n \"video/jpm\": {\n \"source\": \"apache\",\n \"extensions\": [\"jpm\",\"jpgm\"]\n },\n \"video/jxsv\": {\n \"source\": \"iana\"\n },\n \"video/mj2\": {\n \"source\": \"iana\",\n \"extensions\": [\"mj2\",\"mjp2\"]\n },\n \"video/mp1s\": {\n \"source\": \"iana\"\n },\n \"video/mp2p\": {\n \"source\": \"iana\"\n },\n \"video/mp2t\": {\n \"source\": \"iana\",\n \"extensions\": [\"ts\"]\n },\n \"video/mp4\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"mp4\",\"mp4v\",\"mpg4\"]\n },\n \"video/mp4v-es\": {\n \"source\": \"iana\"\n },\n \"video/mpeg\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"mpeg\",\"mpg\",\"mpe\",\"m1v\",\"m2v\"]\n },\n \"video/mpeg4-generic\": {\n \"source\": \"iana\"\n },\n \"video/mpv\": {\n \"source\": \"iana\"\n },\n \"video/nv\": {\n \"source\": \"iana\"\n },\n \"video/ogg\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"ogv\"]\n },\n \"video/parityfec\": {\n \"source\": \"iana\"\n },\n \"video/pointer\": {\n \"source\": \"iana\"\n },\n \"video/quicktime\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"qt\",\"mov\"]\n },\n \"video/raptorfec\": {\n \"source\": \"iana\"\n },\n \"video/raw\": {\n \"source\": \"iana\"\n },\n \"video/rtp-enc-aescm128\": {\n \"source\": \"iana\"\n },\n \"video/rtploopback\": {\n \"source\": \"iana\"\n },\n \"video/rtx\": {\n \"source\": \"iana\"\n },\n \"video/scip\": {\n \"source\": \"iana\"\n },\n \"video/smpte291\": {\n \"source\": \"iana\"\n },\n \"video/smpte292m\": {\n \"source\": \"iana\"\n },\n \"video/ulpfec\": {\n \"source\": \"iana\"\n },\n \"video/vc1\": {\n \"source\": \"iana\"\n },\n \"video/vc2\": {\n \"source\": \"iana\"\n },\n \"video/vnd.cctv\": {\n \"source\": \"iana\"\n },\n \"video/vnd.dece.hd\": {\n \"source\": \"iana\",\n \"extensions\": [\"uvh\",\"uvvh\"]\n },\n \"video/vnd.dece.mobile\": {\n \"source\": \"iana\",\n \"extensions\": [\"uvm\",\"uvvm\"]\n },\n \"video/vnd.dece.mp4\": {\n \"source\": \"iana\"\n },\n \"video/vnd.dece.pd\": {\n \"source\": \"iana\",\n \"extensions\": [\"uvp\",\"uvvp\"]\n },\n \"video/vnd.dece.sd\": {\n \"source\": \"iana\",\n \"extensions\": [\"uvs\",\"uvvs\"]\n },\n \"video/vnd.dece.video\": {\n \"source\": \"iana\",\n \"extensions\": [\"uvv\",\"uvvv\"]\n },\n \"video/vnd.directv.mpeg\": {\n \"source\": \"iana\"\n },\n \"video/vnd.directv.mpeg-tts\": {\n \"source\": \"iana\"\n },\n \"video/vnd.dlna.mpeg-tts\": {\n \"source\": \"iana\"\n },\n \"video/vnd.dvb.file\": {\n \"source\": \"iana\",\n \"extensions\": [\"dvb\"]\n },\n \"video/vnd.fvt\": {\n \"source\": \"iana\",\n \"extensions\": [\"fvt\"]\n },\n \"video/vnd.hns.video\": {\n \"source\": \"iana\"\n },\n \"video/vnd.iptvforum.1dparityfec-1010\": {\n \"source\": \"iana\"\n },\n \"video/vnd.iptvforum.1dparityfec-2005\": {\n \"source\": \"iana\"\n },\n \"video/vnd.iptvforum.2dparityfec-1010\": {\n \"source\": \"iana\"\n },\n \"video/vnd.iptvforum.2dparityfec-2005\": {\n \"source\": \"iana\"\n },\n \"video/vnd.iptvforum.ttsavc\": {\n \"source\": \"iana\"\n },\n \"video/vnd.iptvforum.ttsmpeg2\": {\n \"source\": \"iana\"\n },\n \"video/vnd.motorola.video\": {\n \"source\": \"iana\"\n },\n \"video/vnd.motorola.videop\": {\n \"source\": \"iana\"\n },\n \"video/vnd.mpegurl\": {\n \"source\": \"iana\",\n \"extensions\": [\"mxu\",\"m4u\"]\n },\n \"video/vnd.ms-playready.media.pyv\": {\n \"source\": \"iana\",\n \"extensions\": [\"pyv\"]\n },\n \"video/vnd.nokia.interleaved-multimedia\": {\n \"source\": \"iana\"\n },\n \"video/vnd.nokia.mp4vr\": {\n \"source\": \"iana\"\n },\n \"video/vnd.nokia.videovoip\": {\n \"source\": \"iana\"\n },\n \"video/vnd.objectvideo\": {\n \"source\": \"iana\"\n },\n \"video/vnd.radgamettools.bink\": {\n \"source\": \"iana\"\n },\n \"video/vnd.radgamettools.smacker\": {\n \"source\": \"iana\"\n },\n \"video/vnd.sealed.mpeg1\": {\n \"source\": \"iana\"\n },\n \"video/vnd.sealed.mpeg4\": {\n \"source\": \"iana\"\n },\n \"video/vnd.sealed.swf\": {\n \"source\": \"iana\"\n },\n \"video/vnd.sealedmedia.softseal.mov\": {\n \"source\": \"iana\"\n },\n \"video/vnd.uvvu.mp4\": {\n \"source\": \"iana\",\n \"extensions\": [\"uvu\",\"uvvu\"]\n },\n \"video/vnd.vivo\": {\n \"source\": \"iana\",\n \"extensions\": [\"viv\"]\n },\n \"video/vnd.youtube.yt\": {\n \"source\": \"iana\"\n },\n \"video/vp8\": {\n \"source\": \"iana\"\n },\n \"video/vp9\": {\n \"source\": \"iana\"\n },\n \"video/webm\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"webm\"]\n },\n \"video/x-f4v\": {\n \"source\": \"apache\",\n \"extensions\": [\"f4v\"]\n },\n \"video/x-fli\": {\n \"source\": \"apache\",\n \"extensions\": [\"fli\"]\n },\n \"video/x-flv\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"flv\"]\n },\n \"video/x-m4v\": {\n \"source\": \"apache\",\n \"extensions\": [\"m4v\"]\n },\n \"video/x-matroska\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"mkv\",\"mk3d\",\"mks\"]\n },\n \"video/x-mng\": {\n \"source\": \"apache\",\n \"extensions\": [\"mng\"]\n },\n \"video/x-ms-asf\": {\n \"source\": \"apache\",\n \"extensions\": [\"asf\",\"asx\"]\n },\n \"video/x-ms-vob\": {\n \"source\": \"apache\",\n \"extensions\": [\"vob\"]\n },\n \"video/x-ms-wm\": {\n \"source\": \"apache\",\n \"extensions\": [\"wm\"]\n },\n \"video/x-ms-wmv\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"wmv\"]\n },\n \"video/x-ms-wmx\": {\n \"source\": \"apache\",\n \"extensions\": [\"wmx\"]\n },\n \"video/x-ms-wvx\": {\n \"source\": \"apache\",\n \"extensions\": [\"wvx\"]\n },\n \"video/x-msvideo\": {\n \"source\": \"apache\",\n \"extensions\": [\"avi\"]\n },\n \"video/x-sgi-movie\": {\n \"source\": \"apache\",\n \"extensions\": [\"movie\"]\n },\n \"video/x-smv\": {\n \"source\": \"apache\",\n \"extensions\": [\"smv\"]\n },\n \"x-conference/x-cooltalk\": {\n \"source\": \"apache\",\n \"extensions\": [\"ice\"]\n },\n \"x-shader/x-fragment\": {\n \"compressible\": true\n },\n \"x-shader/x-vertex\": {\n \"compressible\": true\n }\n}\n", "/*!\n * mime-db\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2015-2022 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n/**\n * Module exports.\n */\n\nmodule.exports = require('./db.json')\n", "/*!\n * mime-types\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar db = require('mime-db')\nvar extname = require('path').extname\n\n/**\n * Module variables.\n * @private\n */\n\nvar EXTRACT_TYPE_REGEXP = /^\\s*([^;\\s]*)(?:;|\\s|$)/\nvar TEXT_TYPE_REGEXP = /^text\\//i\n\n/**\n * Module exports.\n * @public\n */\n\nexports.charset = charset\nexports.charsets = { lookup: charset }\nexports.contentType = contentType\nexports.extension = extension\nexports.extensions = Object.create(null)\nexports.lookup = lookup\nexports.types = Object.create(null)\n\n// Populate the extensions/types maps\npopulateMaps(exports.extensions, exports.types)\n\n/**\n * Get the default charset for a MIME type.\n *\n * @param {string} type\n * @return {boolean|string}\n */\n\nfunction charset (type) {\n if (!type || typeof type !== 'string') {\n return false\n }\n\n // TODO: use media-typer\n var match = EXTRACT_TYPE_REGEXP.exec(type)\n var mime = match && db[match[1].toLowerCase()]\n\n if (mime && mime.charset) {\n return mime.charset\n }\n\n // default text/* to utf-8\n if (match && TEXT_TYPE_REGEXP.test(match[1])) {\n return 'UTF-8'\n }\n\n return false\n}\n\n/**\n * Create a full Content-Type header given a MIME type or extension.\n *\n * @param {string} str\n * @return {boolean|string}\n */\n\nfunction contentType (str) {\n // TODO: should this even be in this module?\n if (!str || typeof str !== 'string') {\n return false\n }\n\n var mime = str.indexOf('/') === -1\n ? exports.lookup(str)\n : str\n\n if (!mime) {\n return false\n }\n\n // TODO: use content-type or other module\n if (mime.indexOf('charset') === -1) {\n var charset = exports.charset(mime)\n if (charset) mime += '; charset=' + charset.toLowerCase()\n }\n\n return mime\n}\n\n/**\n * Get the default extension for a MIME type.\n *\n * @param {string} type\n * @return {boolean|string}\n */\n\nfunction extension (type) {\n if (!type || typeof type !== 'string') {\n return false\n }\n\n // TODO: use media-typer\n var match = EXTRACT_TYPE_REGEXP.exec(type)\n\n // get extensions\n var exts = match && exports.extensions[match[1].toLowerCase()]\n\n if (!exts || !exts.length) {\n return false\n }\n\n return exts[0]\n}\n\n/**\n * Lookup the MIME type for a file path/extension.\n *\n * @param {string} path\n * @return {boolean|string}\n */\n\nfunction lookup (path) {\n if (!path || typeof path !== 'string') {\n return false\n }\n\n // get the extension (\"ext\" or \".ext\" or full path)\n var extension = extname('x.' + path)\n .toLowerCase()\n .substr(1)\n\n if (!extension) {\n return false\n }\n\n return exports.types[extension] || false\n}\n\n/**\n * Populate the extensions and types maps.\n * @private\n */\n\nfunction populateMaps (extensions, types) {\n // source preference (least -> most)\n var preference = ['nginx', 'apache', undefined, 'iana']\n\n Object.keys(db).forEach(function forEachMimeType (type) {\n var mime = db[type]\n var exts = mime.extensions\n\n if (!exts || !exts.length) {\n return\n }\n\n // mime -> extensions\n extensions[type] = exts\n\n // extension -> mime\n for (var i = 0; i < exts.length; i++) {\n var extension = exts[i]\n\n if (types[extension]) {\n var from = preference.indexOf(db[types[extension]].source)\n var to = preference.indexOf(mime.source)\n\n if (types[extension] !== 'application/octet-stream' &&\n (from > to || (from === to && types[extension].substr(0, 12) === 'application/'))) {\n // skip the remapping\n continue\n }\n }\n\n // set the extension -> mime\n types[extension] = type\n }\n })\n}\n", "function Caseless (dict) {\n this.dict = dict || {}\n}\nCaseless.prototype.set = function (name, value, clobber) {\n if (typeof name === 'object') {\n for (var i in name) {\n this.set(i, name[i], value)\n }\n } else {\n if (typeof clobber === 'undefined') clobber = true\n var has = this.has(name)\n\n if (!clobber && has) this.dict[has] = this.dict[has] + ',' + value\n else this.dict[has || name] = value\n return has\n }\n}\nCaseless.prototype.has = function (name) {\n var keys = Object.keys(this.dict)\n , name = name.toLowerCase()\n ;\n for (var i=0;i 0 && !req.useChunkedEncodingByDefault) {\n var idleSocket = this.freeSockets[name].pop()\n idleSocket.removeListener('error', idleSocket._onIdleError)\n delete idleSocket._onIdleError\n req._reusedSocket = true\n req.onSocket(idleSocket)\n } else {\n this.addRequestNoreuse(req, host, port)\n }\n}\n\nForeverAgent.prototype.removeSocket = function(s, name, host, port) {\n if (this.sockets[name]) {\n var index = this.sockets[name].indexOf(s)\n if (index !== -1) {\n this.sockets[name].splice(index, 1)\n }\n } else if (this.sockets[name] && this.sockets[name].length === 0) {\n // don't leak\n delete this.sockets[name]\n delete this.requests[name]\n }\n \n if (this.freeSockets[name]) {\n var index = this.freeSockets[name].indexOf(s)\n if (index !== -1) {\n this.freeSockets[name].splice(index, 1)\n if (this.freeSockets[name].length === 0) {\n delete this.freeSockets[name]\n }\n }\n }\n\n if (this.requests[name] && this.requests[name].length) {\n // If we have pending requests and a socket gets closed a new one\n // needs to be created to take over in the pool for the one that closed.\n this.createSocket(name, host, port).emit('free')\n }\n}\n\nfunction ForeverAgentSSL (options) {\n ForeverAgent.call(this, options)\n}\nutil.inherits(ForeverAgentSSL, ForeverAgent)\n\nForeverAgentSSL.prototype.createConnection = createConnectionSSL\nForeverAgentSSL.prototype.addRequestNoreuse = AgentSSL.prototype.addRequest\n\nfunction createConnectionSSL (port, host, options) {\n if (typeof port === 'object') {\n options = port;\n } else if (typeof host === 'object') {\n options = host;\n } else if (typeof options === 'object') {\n options = options;\n } else {\n options = {};\n }\n\n if (typeof port === 'number') {\n options.port = port;\n }\n\n if (typeof host === 'string') {\n options.host = host;\n }\n\n return tls.connect(options);\n}\n", "var Stream = require('stream').Stream;\nvar util = require('util');\n\nmodule.exports = DelayedStream;\nfunction DelayedStream() {\n this.source = null;\n this.dataSize = 0;\n this.maxDataSize = 1024 * 1024;\n this.pauseStream = true;\n\n this._maxDataSizeExceeded = false;\n this._released = false;\n this._bufferedEvents = [];\n}\nutil.inherits(DelayedStream, Stream);\n\nDelayedStream.create = function(source, options) {\n var delayedStream = new this();\n\n options = options || {};\n for (var option in options) {\n delayedStream[option] = options[option];\n }\n\n delayedStream.source = source;\n\n var realEmit = source.emit;\n source.emit = function() {\n delayedStream._handleEmit(arguments);\n return realEmit.apply(source, arguments);\n };\n\n source.on('error', function() {});\n if (delayedStream.pauseStream) {\n source.pause();\n }\n\n return delayedStream;\n};\n\nObject.defineProperty(DelayedStream.prototype, 'readable', {\n configurable: true,\n enumerable: true,\n get: function() {\n return this.source.readable;\n }\n});\n\nDelayedStream.prototype.setEncoding = function() {\n return this.source.setEncoding.apply(this.source, arguments);\n};\n\nDelayedStream.prototype.resume = function() {\n if (!this._released) {\n this.release();\n }\n\n this.source.resume();\n};\n\nDelayedStream.prototype.pause = function() {\n this.source.pause();\n};\n\nDelayedStream.prototype.release = function() {\n this._released = true;\n\n this._bufferedEvents.forEach(function(args) {\n this.emit.apply(this, args);\n }.bind(this));\n this._bufferedEvents = [];\n};\n\nDelayedStream.prototype.pipe = function() {\n var r = Stream.prototype.pipe.apply(this, arguments);\n this.resume();\n return r;\n};\n\nDelayedStream.prototype._handleEmit = function(args) {\n if (this._released) {\n this.emit.apply(this, args);\n return;\n }\n\n if (args[0] === 'data') {\n this.dataSize += args[1].length;\n this._checkIfMaxDataSizeExceeded();\n }\n\n this._bufferedEvents.push(args);\n};\n\nDelayedStream.prototype._checkIfMaxDataSizeExceeded = function() {\n if (this._maxDataSizeExceeded) {\n return;\n }\n\n if (this.dataSize <= this.maxDataSize) {\n return;\n }\n\n this._maxDataSizeExceeded = true;\n var message =\n 'DelayedStream#maxDataSize of ' + this.maxDataSize + ' bytes exceeded.'\n this.emit('error', new Error(message));\n};\n", "var util = require('util');\nvar Stream = require('stream').Stream;\nvar DelayedStream = require('delayed-stream');\n\nmodule.exports = CombinedStream;\nfunction CombinedStream() {\n this.writable = false;\n this.readable = true;\n this.dataSize = 0;\n this.maxDataSize = 2 * 1024 * 1024;\n this.pauseStreams = true;\n\n this._released = false;\n this._streams = [];\n this._currentStream = null;\n this._insideLoop = false;\n this._pendingNext = false;\n}\nutil.inherits(CombinedStream, Stream);\n\nCombinedStream.create = function(options) {\n var combinedStream = new this();\n\n options = options || {};\n for (var option in options) {\n combinedStream[option] = options[option];\n }\n\n return combinedStream;\n};\n\nCombinedStream.isStreamLike = function(stream) {\n return (typeof stream !== 'function')\n && (typeof stream !== 'string')\n && (typeof stream !== 'boolean')\n && (typeof stream !== 'number')\n && (!Buffer.isBuffer(stream));\n};\n\nCombinedStream.prototype.append = function(stream) {\n var isStreamLike = CombinedStream.isStreamLike(stream);\n\n if (isStreamLike) {\n if (!(stream instanceof DelayedStream)) {\n var newStream = DelayedStream.create(stream, {\n maxDataSize: Infinity,\n pauseStream: this.pauseStreams,\n });\n stream.on('data', this._checkDataSize.bind(this));\n stream = newStream;\n }\n\n this._handleErrors(stream);\n\n if (this.pauseStreams) {\n stream.pause();\n }\n }\n\n this._streams.push(stream);\n return this;\n};\n\nCombinedStream.prototype.pipe = function(dest, options) {\n Stream.prototype.pipe.call(this, dest, options);\n this.resume();\n return dest;\n};\n\nCombinedStream.prototype._getNext = function() {\n this._currentStream = null;\n\n if (this._insideLoop) {\n this._pendingNext = true;\n return; // defer call\n }\n\n this._insideLoop = true;\n try {\n do {\n this._pendingNext = false;\n this._realGetNext();\n } while (this._pendingNext);\n } finally {\n this._insideLoop = false;\n }\n};\n\nCombinedStream.prototype._realGetNext = function() {\n var stream = this._streams.shift();\n\n\n if (typeof stream == 'undefined') {\n this.end();\n return;\n }\n\n if (typeof stream !== 'function') {\n this._pipeNext(stream);\n return;\n }\n\n var getStream = stream;\n getStream(function(stream) {\n var isStreamLike = CombinedStream.isStreamLike(stream);\n if (isStreamLike) {\n stream.on('data', this._checkDataSize.bind(this));\n this._handleErrors(stream);\n }\n\n this._pipeNext(stream);\n }.bind(this));\n};\n\nCombinedStream.prototype._pipeNext = function(stream) {\n this._currentStream = stream;\n\n var isStreamLike = CombinedStream.isStreamLike(stream);\n if (isStreamLike) {\n stream.on('end', this._getNext.bind(this));\n stream.pipe(this, {end: false});\n return;\n }\n\n var value = stream;\n this.write(value);\n this._getNext();\n};\n\nCombinedStream.prototype._handleErrors = function(stream) {\n var self = this;\n stream.on('error', function(err) {\n self._emitError(err);\n });\n};\n\nCombinedStream.prototype.write = function(data) {\n this.emit('data', data);\n};\n\nCombinedStream.prototype.pause = function() {\n if (!this.pauseStreams) {\n return;\n }\n\n if(this.pauseStreams && this._currentStream && typeof(this._currentStream.pause) == 'function') this._currentStream.pause();\n this.emit('pause');\n};\n\nCombinedStream.prototype.resume = function() {\n if (!this._released) {\n this._released = true;\n this.writable = true;\n this._getNext();\n }\n\n if(this.pauseStreams && this._currentStream && typeof(this._currentStream.resume) == 'function') this._currentStream.resume();\n this.emit('resume');\n};\n\nCombinedStream.prototype.end = function() {\n this._reset();\n this.emit('end');\n};\n\nCombinedStream.prototype.destroy = function() {\n this._reset();\n this.emit('close');\n};\n\nCombinedStream.prototype._reset = function() {\n this.writable = false;\n this._streams = [];\n this._currentStream = null;\n};\n\nCombinedStream.prototype._checkDataSize = function() {\n this._updateDataSize();\n if (this.dataSize <= this.maxDataSize) {\n return;\n }\n\n var message =\n 'DelayedStream#maxDataSize of ' + this.maxDataSize + ' bytes exceeded.';\n this._emitError(new Error(message));\n};\n\nCombinedStream.prototype._updateDataSize = function() {\n this.dataSize = 0;\n\n var self = this;\n this._streams.forEach(function(stream) {\n if (!stream.dataSize) {\n return;\n }\n\n self.dataSize += stream.dataSize;\n });\n\n if (this._currentStream && this._currentStream.dataSize) {\n this.dataSize += this._currentStream.dataSize;\n }\n};\n\nCombinedStream.prototype._emitError = function(err) {\n this._reset();\n this.emit('error', err);\n};\n", "module.exports = defer;\n\n/**\n * Runs provided function on next iteration of the event loop\n *\n * @param {function} fn - function to run\n */\nfunction defer(fn)\n{\n var nextTick = typeof setImmediate == 'function'\n ? setImmediate\n : (\n typeof process == 'object' && typeof process.nextTick == 'function'\n ? process.nextTick\n : null\n );\n\n if (nextTick)\n {\n nextTick(fn);\n }\n else\n {\n setTimeout(fn, 0);\n }\n}\n", "var defer = require('./defer.js');\n\n// API\nmodule.exports = async;\n\n/**\n * Runs provided callback asynchronously\n * even if callback itself is not\n *\n * @param {function} callback - callback to invoke\n * @returns {function} - augmented callback\n */\nfunction async(callback)\n{\n var isAsync = false;\n\n // check if async happened\n defer(function() { isAsync = true; });\n\n return function async_callback(err, result)\n {\n if (isAsync)\n {\n callback(err, result);\n }\n else\n {\n defer(function nextTick_callback()\n {\n callback(err, result);\n });\n }\n };\n}\n", "// API\nmodule.exports = abort;\n\n/**\n * Aborts leftover active jobs\n *\n * @param {object} state - current state object\n */\nfunction abort(state)\n{\n Object.keys(state.jobs).forEach(clean.bind(state));\n\n // reset leftover jobs\n state.jobs = {};\n}\n\n/**\n * Cleans up leftover job by invoking abort function for the provided job id\n *\n * @this state\n * @param {string|number} key - job id to abort\n */\nfunction clean(key)\n{\n if (typeof this.jobs[key] == 'function')\n {\n this.jobs[key]();\n }\n}\n", "var async = require('./async.js')\n , abort = require('./abort.js')\n ;\n\n// API\nmodule.exports = iterate;\n\n/**\n * Iterates over each job object\n *\n * @param {array|object} list - array or object (named list) to iterate over\n * @param {function} iterator - iterator to run\n * @param {object} state - current job status\n * @param {function} callback - invoked when all elements processed\n */\nfunction iterate(list, iterator, state, callback)\n{\n // store current index\n var key = state['keyedList'] ? state['keyedList'][state.index] : state.index;\n\n state.jobs[key] = runJob(iterator, key, list[key], function(error, output)\n {\n // don't repeat yourself\n // skip secondary callbacks\n if (!(key in state.jobs))\n {\n return;\n }\n\n // clean up jobs\n delete state.jobs[key];\n\n if (error)\n {\n // don't process rest of the results\n // stop still active jobs\n // and reset the list\n abort(state);\n }\n else\n {\n state.results[key] = output;\n }\n\n // return salvaged results\n callback(error, state.results);\n });\n}\n\n/**\n * Runs iterator over provided job element\n *\n * @param {function} iterator - iterator to invoke\n * @param {string|number} key - key/index of the element in the list of jobs\n * @param {mixed} item - job description\n * @param {function} callback - invoked after iterator is done with the job\n * @returns {function|mixed} - job abort function or something else\n */\nfunction runJob(iterator, key, item, callback)\n{\n var aborter;\n\n // allow shortcut if iterator expects only two arguments\n if (iterator.length == 2)\n {\n aborter = iterator(item, async(callback));\n }\n // otherwise go with full three arguments\n else\n {\n aborter = iterator(item, key, async(callback));\n }\n\n return aborter;\n}\n", "// API\nmodule.exports = state;\n\n/**\n * Creates initial state object\n * for iteration over list\n *\n * @param {array|object} list - list to iterate over\n * @param {function|null} sortMethod - function to use for keys sort,\n * or `null` to keep them as is\n * @returns {object} - initial state object\n */\nfunction state(list, sortMethod)\n{\n var isNamedList = !Array.isArray(list)\n , initState =\n {\n index : 0,\n keyedList: isNamedList || sortMethod ? Object.keys(list) : null,\n jobs : {},\n results : isNamedList ? {} : [],\n size : isNamedList ? Object.keys(list).length : list.length\n }\n ;\n\n if (sortMethod)\n {\n // sort array keys based on it's values\n // sort object's keys just on own merit\n initState.keyedList.sort(isNamedList ? sortMethod : function(a, b)\n {\n return sortMethod(list[a], list[b]);\n });\n }\n\n return initState;\n}\n", "var abort = require('./abort.js')\n , async = require('./async.js')\n ;\n\n// API\nmodule.exports = terminator;\n\n/**\n * Terminates jobs in the attached state context\n *\n * @this AsyncKitState#\n * @param {function} callback - final callback to invoke after termination\n */\nfunction terminator(callback)\n{\n if (!Object.keys(this.jobs).length)\n {\n return;\n }\n\n // fast forward iteration index\n this.index = this.size;\n\n // abort jobs\n abort(this);\n\n // send back results we have so far\n async(callback)(null, this.results);\n}\n", "var iterate = require('./lib/iterate.js')\n , initState = require('./lib/state.js')\n , terminator = require('./lib/terminator.js')\n ;\n\n// Public API\nmodule.exports = parallel;\n\n/**\n * Runs iterator over provided array elements in parallel\n *\n * @param {array|object} list - array or object (named list) to iterate over\n * @param {function} iterator - iterator to run\n * @param {function} callback - invoked when all elements processed\n * @returns {function} - jobs terminator\n */\nfunction parallel(list, iterator, callback)\n{\n var state = initState(list);\n\n while (state.index < (state['keyedList'] || list).length)\n {\n iterate(list, iterator, state, function(error, result)\n {\n if (error)\n {\n callback(error, result);\n return;\n }\n\n // looks like it's the last one\n if (Object.keys(state.jobs).length === 0)\n {\n callback(null, state.results);\n return;\n }\n });\n\n state.index++;\n }\n\n return terminator.bind(state, callback);\n}\n", "var iterate = require('./lib/iterate.js')\n , initState = require('./lib/state.js')\n , terminator = require('./lib/terminator.js')\n ;\n\n// Public API\nmodule.exports = serialOrdered;\n// sorting helpers\nmodule.exports.ascending = ascending;\nmodule.exports.descending = descending;\n\n/**\n * Runs iterator over provided sorted array elements in series\n *\n * @param {array|object} list - array or object (named list) to iterate over\n * @param {function} iterator - iterator to run\n * @param {function} sortMethod - custom sort function\n * @param {function} callback - invoked when all elements processed\n * @returns {function} - jobs terminator\n */\nfunction serialOrdered(list, iterator, sortMethod, callback)\n{\n var state = initState(list, sortMethod);\n\n iterate(list, iterator, state, function iteratorHandler(error, result)\n {\n if (error)\n {\n callback(error, result);\n return;\n }\n\n state.index++;\n\n // are we there yet?\n if (state.index < (state['keyedList'] || list).length)\n {\n iterate(list, iterator, state, iteratorHandler);\n return;\n }\n\n // done here\n callback(null, state.results);\n });\n\n return terminator.bind(state, callback);\n}\n\n/*\n * -- Sort methods\n */\n\n/**\n * sort helper to sort array elements in ascending order\n *\n * @param {mixed} a - an item to compare\n * @param {mixed} b - an item to compare\n * @returns {number} - comparison result\n */\nfunction ascending(a, b)\n{\n return a < b ? -1 : a > b ? 1 : 0;\n}\n\n/**\n * sort helper to sort array elements in descending order\n *\n * @param {mixed} a - an item to compare\n * @param {mixed} b - an item to compare\n * @returns {number} - comparison result\n */\nfunction descending(a, b)\n{\n return -1 * ascending(a, b);\n}\n", "var serialOrdered = require('./serialOrdered.js');\n\n// Public API\nmodule.exports = serial;\n\n/**\n * Runs iterator over provided array elements in series\n *\n * @param {array|object} list - array or object (named list) to iterate over\n * @param {function} iterator - iterator to run\n * @param {function} callback - invoked when all elements processed\n * @returns {function} - jobs terminator\n */\nfunction serial(list, iterator, callback)\n{\n return serialOrdered(list, iterator, null, callback);\n}\n", "module.exports =\n{\n parallel : require('./parallel.js'),\n serial : require('./serial.js'),\n serialOrdered : require('./serialOrdered.js')\n};\n", "// populates missing values\nmodule.exports = function(dst, src) {\n\n Object.keys(src).forEach(function(prop)\n {\n dst[prop] = dst[prop] || src[prop];\n });\n\n return dst;\n};\n", "var CombinedStream = require('combined-stream');\nvar util = require('util');\nvar path = require('path');\nvar http = require('http');\nvar https = require('https');\nvar parseUrl = require('url').parse;\nvar fs = require('fs');\nvar mime = require('mime-types');\nvar asynckit = require('asynckit');\nvar populate = require('./populate.js');\n\n// Public API\nmodule.exports = FormData;\n\n// make it a Stream\nutil.inherits(FormData, CombinedStream);\n\n/**\n * Create readable \"multipart/form-data\" streams.\n * Can be used to submit forms\n * and file uploads to other web applications.\n *\n * @constructor\n * @param {Object} options - Properties to be added/overriden for FormData and CombinedStream\n */\nfunction FormData(options) {\n if (!(this instanceof FormData)) {\n return new FormData();\n }\n\n this._overheadLength = 0;\n this._valueLength = 0;\n this._valuesToMeasure = [];\n\n CombinedStream.call(this);\n\n options = options || {};\n for (var option in options) {\n this[option] = options[option];\n }\n}\n\nFormData.LINE_BREAK = '\\r\\n';\nFormData.DEFAULT_CONTENT_TYPE = 'application/octet-stream';\n\nFormData.prototype.append = function(field, value, options) {\n\n options = options || {};\n\n // allow filename as single option\n if (typeof options == 'string') {\n options = {filename: options};\n }\n\n var append = CombinedStream.prototype.append.bind(this);\n\n // all that streamy business can't handle numbers\n if (typeof value == 'number') {\n value = '' + value;\n }\n\n // https://github.com/felixge/node-form-data/issues/38\n if (util.isArray(value)) {\n // Please convert your array into string\n // the way web server expects it\n this._error(new Error('Arrays are not supported.'));\n return;\n }\n\n var header = this._multiPartHeader(field, value, options);\n var footer = this._multiPartFooter();\n\n append(header);\n append(value);\n append(footer);\n\n // pass along options.knownLength\n this._trackLength(header, value, options);\n};\n\nFormData.prototype._trackLength = function(header, value, options) {\n var valueLength = 0;\n\n // used w/ getLengthSync(), when length is known.\n // e.g. for streaming directly from a remote server,\n // w/ a known file a size, and not wanting to wait for\n // incoming file to finish to get its size.\n if (options.knownLength != null) {\n valueLength += +options.knownLength;\n } else if (Buffer.isBuffer(value)) {\n valueLength = value.length;\n } else if (typeof value === 'string') {\n valueLength = Buffer.byteLength(value);\n }\n\n this._valueLength += valueLength;\n\n // @check why add CRLF? does this account for custom/multiple CRLFs?\n this._overheadLength +=\n Buffer.byteLength(header) +\n FormData.LINE_BREAK.length;\n\n // empty or either doesn't have path or not an http response\n if (!value || ( !value.path && !(value.readable && value.hasOwnProperty('httpVersion')) )) {\n return;\n }\n\n // no need to bother with the length\n if (!options.knownLength) {\n this._valuesToMeasure.push(value);\n }\n};\n\nFormData.prototype._lengthRetriever = function(value, callback) {\n\n if (value.hasOwnProperty('fd')) {\n\n // take read range into a account\n // `end` = Infinity \u2013> read file till the end\n //\n // TODO: Looks like there is bug in Node fs.createReadStream\n // it doesn't respect `end` options without `start` options\n // Fix it when node fixes it.\n // https://github.com/joyent/node/issues/7819\n if (value.end != undefined && value.end != Infinity && value.start != undefined) {\n\n // when end specified\n // no need to calculate range\n // inclusive, starts with 0\n callback(null, value.end + 1 - (value.start ? value.start : 0));\n\n // not that fast snoopy\n } else {\n // still need to fetch file size from fs\n fs.stat(value.path, function(err, stat) {\n\n var fileSize;\n\n if (err) {\n callback(err);\n return;\n }\n\n // update final size based on the range options\n fileSize = stat.size - (value.start ? value.start : 0);\n callback(null, fileSize);\n });\n }\n\n // or http response\n } else if (value.hasOwnProperty('httpVersion')) {\n callback(null, +value.headers['content-length']);\n\n // or request stream http://github.com/mikeal/request\n } else if (value.hasOwnProperty('httpModule')) {\n // wait till response come back\n value.on('response', function(response) {\n value.pause();\n callback(null, +response.headers['content-length']);\n });\n value.resume();\n\n // something else\n } else {\n callback('Unknown stream');\n }\n};\n\nFormData.prototype._multiPartHeader = function(field, value, options) {\n // custom header specified (as string)?\n // it becomes responsible for boundary\n // (e.g. to handle extra CRLFs on .NET servers)\n if (typeof options.header == 'string') {\n return options.header;\n }\n\n var contentDisposition = this._getContentDisposition(value, options);\n var contentType = this._getContentType(value, options);\n\n var contents = '';\n var headers = {\n // add custom disposition as third element or keep it two elements if not\n 'Content-Disposition': ['form-data', 'name=\"' + field + '\"'].concat(contentDisposition || []),\n // if no content type. allow it to be empty array\n 'Content-Type': [].concat(contentType || [])\n };\n\n // allow custom headers.\n if (typeof options.header == 'object') {\n populate(headers, options.header);\n }\n\n var header;\n for (var prop in headers) {\n if (!headers.hasOwnProperty(prop)) continue;\n header = headers[prop];\n\n // skip nullish headers.\n if (header == null) {\n continue;\n }\n\n // convert all headers to arrays.\n if (!Array.isArray(header)) {\n header = [header];\n }\n\n // add non-empty headers.\n if (header.length) {\n contents += prop + ': ' + header.join('; ') + FormData.LINE_BREAK;\n }\n }\n\n return '--' + this.getBoundary() + FormData.LINE_BREAK + contents + FormData.LINE_BREAK;\n};\n\nFormData.prototype._getContentDisposition = function(value, options) {\n\n var filename\n , contentDisposition\n ;\n\n if (typeof options.filepath === 'string') {\n // custom filepath for relative paths\n filename = path.normalize(options.filepath).replace(/\\\\/g, '/');\n } else if (options.filename || value.name || value.path) {\n // custom filename take precedence\n // formidable and the browser add a name property\n // fs- and request- streams have path property\n filename = path.basename(options.filename || value.name || value.path);\n } else if (value.readable && value.hasOwnProperty('httpVersion')) {\n // or try http response\n filename = path.basename(value.client._httpMessage.path);\n }\n\n if (filename) {\n contentDisposition = 'filename=\"' + filename + '\"';\n }\n\n return contentDisposition;\n};\n\nFormData.prototype._getContentType = function(value, options) {\n\n // use custom content-type above all\n var contentType = options.contentType;\n\n // or try `name` from formidable, browser\n if (!contentType && value.name) {\n contentType = mime.lookup(value.name);\n }\n\n // or try `path` from fs-, request- streams\n if (!contentType && value.path) {\n contentType = mime.lookup(value.path);\n }\n\n // or if it's http-reponse\n if (!contentType && value.readable && value.hasOwnProperty('httpVersion')) {\n contentType = value.headers['content-type'];\n }\n\n // or guess it from the filepath or filename\n if (!contentType && (options.filepath || options.filename)) {\n contentType = mime.lookup(options.filepath || options.filename);\n }\n\n // fallback to the default content type if `value` is not simple value\n if (!contentType && typeof value == 'object') {\n contentType = FormData.DEFAULT_CONTENT_TYPE;\n }\n\n return contentType;\n};\n\nFormData.prototype._multiPartFooter = function() {\n return function(next) {\n var footer = FormData.LINE_BREAK;\n\n var lastPart = (this._streams.length === 0);\n if (lastPart) {\n footer += this._lastBoundary();\n }\n\n next(footer);\n }.bind(this);\n};\n\nFormData.prototype._lastBoundary = function() {\n return '--' + this.getBoundary() + '--' + FormData.LINE_BREAK;\n};\n\nFormData.prototype.getHeaders = function(userHeaders) {\n var header;\n var formHeaders = {\n 'content-type': 'multipart/form-data; boundary=' + this.getBoundary()\n };\n\n for (header in userHeaders) {\n if (userHeaders.hasOwnProperty(header)) {\n formHeaders[header.toLowerCase()] = userHeaders[header];\n }\n }\n\n return formHeaders;\n};\n\nFormData.prototype.getBoundary = function() {\n if (!this._boundary) {\n this._generateBoundary();\n }\n\n return this._boundary;\n};\n\nFormData.prototype._generateBoundary = function() {\n // This generates a 50 character boundary similar to those used by Firefox.\n // They are optimized for boyer-moore parsing.\n var boundary = '--------------------------';\n for (var i = 0; i < 24; i++) {\n boundary += Math.floor(Math.random() * 10).toString(16);\n }\n\n this._boundary = boundary;\n};\n\n// Note: getLengthSync DOESN'T calculate streams length\n// As workaround one can calculate file size manually\n// and add it as knownLength option\nFormData.prototype.getLengthSync = function() {\n var knownLength = this._overheadLength + this._valueLength;\n\n // Don't get confused, there are 3 \"internal\" streams for each keyval pair\n // so it basically checks if there is any value added to the form\n if (this._streams.length) {\n knownLength += this._lastBoundary().length;\n }\n\n // https://github.com/form-data/form-data/issues/40\n if (!this.hasKnownLength()) {\n // Some async length retrievers are present\n // therefore synchronous length calculation is false.\n // Please use getLength(callback) to get proper length\n this._error(new Error('Cannot calculate proper length in synchronous way.'));\n }\n\n return knownLength;\n};\n\n// Public API to check if length of added values is known\n// https://github.com/form-data/form-data/issues/196\n// https://github.com/form-data/form-data/issues/262\nFormData.prototype.hasKnownLength = function() {\n var hasKnownLength = true;\n\n if (this._valuesToMeasure.length) {\n hasKnownLength = false;\n }\n\n return hasKnownLength;\n};\n\nFormData.prototype.getLength = function(cb) {\n var knownLength = this._overheadLength + this._valueLength;\n\n if (this._streams.length) {\n knownLength += this._lastBoundary().length;\n }\n\n if (!this._valuesToMeasure.length) {\n process.nextTick(cb.bind(this, null, knownLength));\n return;\n }\n\n asynckit.parallel(this._valuesToMeasure, this._lengthRetriever, function(err, values) {\n if (err) {\n cb(err);\n return;\n }\n\n values.forEach(function(length) {\n knownLength += length;\n });\n\n cb(null, knownLength);\n });\n};\n\nFormData.prototype.submit = function(params, cb) {\n var request\n , options\n , defaults = {method: 'post'}\n ;\n\n // parse provided url if it's string\n // or treat it as options object\n if (typeof params == 'string') {\n\n params = parseUrl(params);\n options = populate({\n port: params.port,\n path: params.pathname,\n host: params.hostname,\n protocol: params.protocol\n }, defaults);\n\n // use custom params\n } else {\n\n options = populate(params, defaults);\n // if no port provided use default one\n if (!options.port) {\n options.port = options.protocol == 'https:' ? 443 : 80;\n }\n }\n\n // put that good code in getHeaders to some use\n options.headers = this.getHeaders(params.headers);\n\n // https if specified, fallback to http in any other case\n if (options.protocol == 'https:') {\n request = https.request(options);\n } else {\n request = http.request(options);\n }\n\n // get content length and fire away\n this.getLength(function(err, length) {\n if (err) {\n this._error(err);\n return;\n }\n\n // add content length\n request.setHeader('Content-Length', length);\n\n this.pipe(request);\n if (cb) {\n request.on('error', cb);\n request.on('response', cb.bind(this, null));\n }\n }.bind(this));\n\n return request;\n};\n\nFormData.prototype._error = function(err) {\n if (!this.error) {\n this.error = err;\n this.pause();\n this.emit('error', err);\n }\n};\n\nFormData.prototype.toString = function () {\n return '[object FormData]';\n};\n", "var stream = require('stream')\n\n\nfunction isStream (obj) {\n return obj instanceof stream.Stream\n}\n\n\nfunction isReadable (obj) {\n return isStream(obj) && typeof obj._read == 'function' && typeof obj._readableState == 'object'\n}\n\n\nfunction isWritable (obj) {\n return isStream(obj) && typeof obj._write == 'function' && typeof obj._writableState == 'object'\n}\n\n\nfunction isDuplex (obj) {\n return isReadable(obj) && isWritable(obj)\n}\n\n\nmodule.exports = isStream\nmodule.exports.isReadable = isReadable\nmodule.exports.isWritable = isWritable\nmodule.exports.isDuplex = isDuplex\n", "module.exports = isTypedArray\nisTypedArray.strict = isStrictTypedArray\nisTypedArray.loose = isLooseTypedArray\n\nvar toString = Object.prototype.toString\nvar names = {\n '[object Int8Array]': true\n , '[object Int16Array]': true\n , '[object Int32Array]': true\n , '[object Uint8Array]': true\n , '[object Uint8ClampedArray]': true\n , '[object Uint16Array]': true\n , '[object Uint32Array]': true\n , '[object Float32Array]': true\n , '[object Float64Array]': true\n}\n\nfunction isTypedArray(arr) {\n return (\n isStrictTypedArray(arr)\n || isLooseTypedArray(arr)\n )\n}\n\nfunction isStrictTypedArray(arr) {\n return (\n arr instanceof Int8Array\n || arr instanceof Int16Array\n || arr instanceof Int32Array\n || arr instanceof Uint8Array\n || arr instanceof Uint8ClampedArray\n || arr instanceof Uint16Array\n || arr instanceof Uint32Array\n || arr instanceof Float32Array\n || arr instanceof Float64Array\n )\n}\n\nfunction isLooseTypedArray(arr) {\n return names[toString.call(arr)]\n}\n", "'use strict'\n\nfunction formatHostname (hostname) {\n // canonicalize the hostname, so that 'oogle.com' won't match 'google.com'\n return hostname.replace(/^\\.*/, '.').toLowerCase()\n}\n\nfunction parseNoProxyZone (zone) {\n zone = zone.trim().toLowerCase()\n\n var zoneParts = zone.split(':', 2)\n var zoneHost = formatHostname(zoneParts[0])\n var zonePort = zoneParts[1]\n var hasPort = zone.indexOf(':') > -1\n\n return {hostname: zoneHost, port: zonePort, hasPort: hasPort}\n}\n\nfunction uriInNoProxy (uri, noProxy) {\n var port = uri.port || (uri.protocol === 'https:' ? '443' : '80')\n var hostname = formatHostname(uri.hostname)\n var noProxyList = noProxy.split(',')\n\n // iterate through the noProxyList until it finds a match.\n return noProxyList.map(parseNoProxyZone).some(function (noProxyZone) {\n var isMatchedAt = hostname.indexOf(noProxyZone.hostname)\n var hostnameMatched = (\n isMatchedAt > -1 &&\n (isMatchedAt === hostname.length - noProxyZone.hostname.length)\n )\n\n if (noProxyZone.hasPort) {\n return (port === noProxyZone.port) && hostnameMatched\n }\n\n return hostnameMatched\n })\n}\n\nfunction getProxyFromURI (uri) {\n // Decide the proper request proxy to use based on the request URI object and the\n // environmental variables (NO_PROXY, HTTP_PROXY, etc.)\n // respect NO_PROXY environment variables (see: https://lynx.invisible-island.net/lynx2.8.7/breakout/lynx_help/keystrokes/environments.html)\n\n var noProxy = process.env.NO_PROXY || process.env.no_proxy || ''\n\n // if the noProxy is a wildcard then return null\n\n if (noProxy === '*') {\n return null\n }\n\n // if the noProxy is not empty and the uri is found return null\n\n if (noProxy !== '' && uriInNoProxy(uri, noProxy)) {\n return null\n }\n\n // Check for HTTP or HTTPS Proxy in environment Else default to null\n\n if (uri.protocol === 'http:') {\n return process.env.HTTP_PROXY ||\n process.env.http_proxy || null\n }\n\n if (uri.protocol === 'https:') {\n return process.env.HTTPS_PROXY ||\n process.env.https_proxy ||\n process.env.HTTP_PROXY ||\n process.env.http_proxy || null\n }\n\n // if none of that works, return null\n // (What uri protocol are you using then?)\n\n return null\n}\n\nmodule.exports = getProxyFromURI\n", "'use strict';\n\nvar has = Object.prototype.hasOwnProperty;\n\nvar hexTable = (function () {\n var array = [];\n for (var i = 0; i < 256; ++i) {\n array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n }\n\n return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n var obj;\n\n while (queue.length) {\n var item = queue.pop();\n obj = item.obj[item.prop];\n\n if (Array.isArray(obj)) {\n var compacted = [];\n\n for (var j = 0; j < obj.length; ++j) {\n if (typeof obj[j] !== 'undefined') {\n compacted.push(obj[j]);\n }\n }\n\n item.obj[item.prop] = compacted;\n }\n }\n\n return obj;\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n var obj = options && options.plainObjects ? Object.create(null) : {};\n for (var i = 0; i < source.length; ++i) {\n if (typeof source[i] !== 'undefined') {\n obj[i] = source[i];\n }\n }\n\n return obj;\n};\n\nvar merge = function merge(target, source, options) {\n if (!source) {\n return target;\n }\n\n if (typeof source !== 'object') {\n if (Array.isArray(target)) {\n target.push(source);\n } else if (target && typeof target === 'object') {\n if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) {\n target[source] = true;\n }\n } else {\n return [target, source];\n }\n\n return target;\n }\n\n if (!target || typeof target !== 'object') {\n return [target].concat(source);\n }\n\n var mergeTarget = target;\n if (Array.isArray(target) && !Array.isArray(source)) {\n mergeTarget = arrayToObject(target, options);\n }\n\n if (Array.isArray(target) && Array.isArray(source)) {\n source.forEach(function (item, i) {\n if (has.call(target, i)) {\n var targetItem = target[i];\n if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n target[i] = merge(targetItem, item, options);\n } else {\n target.push(item);\n }\n } else {\n target[i] = item;\n }\n });\n return target;\n }\n\n return Object.keys(source).reduce(function (acc, key) {\n var value = source[key];\n\n if (has.call(acc, key)) {\n acc[key] = merge(acc[key], value, options);\n } else {\n acc[key] = value;\n }\n return acc;\n }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n return Object.keys(source).reduce(function (acc, key) {\n acc[key] = source[key];\n return acc;\n }, target);\n};\n\nvar decode = function (str) {\n try {\n return decodeURIComponent(str.replace(/\\+/g, ' '));\n } catch (e) {\n return str;\n }\n};\n\nvar encode = function encode(str) {\n // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n // It has been adapted here for stricter adherence to RFC 3986\n if (str.length === 0) {\n return str;\n }\n\n var string = typeof str === 'string' ? str : String(str);\n\n var out = '';\n for (var i = 0; i < string.length; ++i) {\n var c = string.charCodeAt(i);\n\n if (\n c === 0x2D // -\n || c === 0x2E // .\n || c === 0x5F // _\n || c === 0x7E // ~\n || (c >= 0x30 && c <= 0x39) // 0-9\n || (c >= 0x41 && c <= 0x5A) // a-z\n || (c >= 0x61 && c <= 0x7A) // A-Z\n ) {\n out += string.charAt(i);\n continue;\n }\n\n if (c < 0x80) {\n out = out + hexTable[c];\n continue;\n }\n\n if (c < 0x800) {\n out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n if (c < 0xD800 || c >= 0xE000) {\n out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n i += 1;\n c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));\n /* eslint operator-linebreak: [2, \"before\"] */\n out += hexTable[0xF0 | (c >> 18)]\n + hexTable[0x80 | ((c >> 12) & 0x3F)]\n + hexTable[0x80 | ((c >> 6) & 0x3F)]\n + hexTable[0x80 | (c & 0x3F)];\n }\n\n return out;\n};\n\nvar compact = function compact(value) {\n var queue = [{ obj: { o: value }, prop: 'o' }];\n var refs = [];\n\n for (var i = 0; i < queue.length; ++i) {\n var item = queue[i];\n var obj = item.obj[item.prop];\n\n var keys = Object.keys(obj);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n var val = obj[key];\n if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n queue.push({ obj: obj, prop: key });\n refs.push(val);\n }\n }\n }\n\n return compactQueue(queue);\n};\n\nvar isRegExp = function isRegExp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n if (obj === null || typeof obj === 'undefined') {\n return false;\n }\n\n return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nmodule.exports = {\n arrayToObject: arrayToObject,\n assign: assign,\n compact: compact,\n decode: decode,\n encode: encode,\n isBuffer: isBuffer,\n isRegExp: isRegExp,\n merge: merge\n};\n", "'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nmodule.exports = {\n 'default': 'RFC3986',\n formatters: {\n RFC1738: function (value) {\n return replace.call(value, percentTwenties, '+');\n },\n RFC3986: function (value) {\n return String(value);\n }\n },\n RFC1738: 'RFC1738',\n RFC3986: 'RFC3986'\n};\n", "'use strict';\n\nvar utils = require('./utils');\nvar formats = require('./formats');\n\nvar arrayPrefixGenerators = {\n brackets: function brackets(prefix) {\n return prefix + '[]';\n },\n indices: function indices(prefix, key) {\n return prefix + '[' + key + ']';\n },\n repeat: function repeat(prefix) {\n return prefix;\n }\n};\n\nvar isArray = Array.isArray;\nvar push = Array.prototype.push;\nvar pushToArray = function (arr, valueOrArray) {\n push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaults = {\n delimiter: '&',\n encode: true,\n encoder: utils.encode,\n encodeValuesOnly: false,\n serializeDate: function serializeDate(date) {\n return toISO.call(date);\n },\n skipNulls: false,\n strictNullHandling: false\n};\n\nvar stringify = function stringify(\n object,\n prefix,\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n formatter,\n encodeValuesOnly\n) {\n var obj = object;\n if (typeof filter === 'function') {\n obj = filter(prefix, obj);\n } else if (obj instanceof Date) {\n obj = serializeDate(obj);\n }\n\n if (obj === null) {\n if (strictNullHandling) {\n return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder) : prefix;\n }\n\n obj = '';\n }\n\n if (typeof obj === 'string' || typeof obj === 'number' || typeof obj === 'boolean' || utils.isBuffer(obj)) {\n if (encoder) {\n var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder);\n return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder))];\n }\n return [formatter(prefix) + '=' + formatter(String(obj))];\n }\n\n var values = [];\n\n if (typeof obj === 'undefined') {\n return values;\n }\n\n var objKeys;\n if (isArray(filter)) {\n objKeys = filter;\n } else {\n var keys = Object.keys(obj);\n objKeys = sort ? keys.sort(sort) : keys;\n }\n\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n\n if (skipNulls && obj[key] === null) {\n continue;\n }\n\n if (isArray(obj)) {\n pushToArray(values, stringify(\n obj[key],\n generateArrayPrefix(prefix, key),\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n formatter,\n encodeValuesOnly\n ));\n } else {\n pushToArray(values, stringify(\n obj[key],\n prefix + (allowDots ? '.' + key : '[' + key + ']'),\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n formatter,\n encodeValuesOnly\n ));\n }\n }\n\n return values;\n};\n\nmodule.exports = function (object, opts) {\n var obj = object;\n var options = opts ? utils.assign({}, opts) : {};\n\n if (options.encoder !== null && typeof options.encoder !== 'undefined' && typeof options.encoder !== 'function') {\n throw new TypeError('Encoder has to be a function.');\n }\n\n var delimiter = typeof options.delimiter === 'undefined' ? defaults.delimiter : options.delimiter;\n var strictNullHandling = typeof options.strictNullHandling === 'boolean' ? options.strictNullHandling : defaults.strictNullHandling;\n var skipNulls = typeof options.skipNulls === 'boolean' ? options.skipNulls : defaults.skipNulls;\n var encode = typeof options.encode === 'boolean' ? options.encode : defaults.encode;\n var encoder = typeof options.encoder === 'function' ? options.encoder : defaults.encoder;\n var sort = typeof options.sort === 'function' ? options.sort : null;\n var allowDots = typeof options.allowDots === 'undefined' ? false : options.allowDots;\n var serializeDate = typeof options.serializeDate === 'function' ? options.serializeDate : defaults.serializeDate;\n var encodeValuesOnly = typeof options.encodeValuesOnly === 'boolean' ? options.encodeValuesOnly : defaults.encodeValuesOnly;\n if (typeof options.format === 'undefined') {\n options.format = formats['default'];\n } else if (!Object.prototype.hasOwnProperty.call(formats.formatters, options.format)) {\n throw new TypeError('Unknown format option provided.');\n }\n var formatter = formats.formatters[options.format];\n var objKeys;\n var filter;\n\n if (typeof options.filter === 'function') {\n filter = options.filter;\n obj = filter('', obj);\n } else if (isArray(options.filter)) {\n filter = options.filter;\n objKeys = filter;\n }\n\n var keys = [];\n\n if (typeof obj !== 'object' || obj === null) {\n return '';\n }\n\n var arrayFormat;\n if (options.arrayFormat in arrayPrefixGenerators) {\n arrayFormat = options.arrayFormat;\n } else if ('indices' in options) {\n arrayFormat = options.indices ? 'indices' : 'repeat';\n } else {\n arrayFormat = 'indices';\n }\n\n var generateArrayPrefix = arrayPrefixGenerators[arrayFormat];\n\n if (!objKeys) {\n objKeys = Object.keys(obj);\n }\n\n if (sort) {\n objKeys.sort(sort);\n }\n\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n\n if (skipNulls && obj[key] === null) {\n continue;\n }\n pushToArray(keys, stringify(\n obj[key],\n key,\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encode ? encoder : null,\n filter,\n sort,\n allowDots,\n serializeDate,\n formatter,\n encodeValuesOnly\n ));\n }\n\n var joined = keys.join(delimiter);\n var prefix = options.addQueryPrefix === true ? '?' : '';\n\n return joined.length > 0 ? prefix + joined : '';\n};\n", "'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\n\nvar defaults = {\n allowDots: false,\n allowPrototypes: false,\n arrayLimit: 20,\n decoder: utils.decode,\n delimiter: '&',\n depth: 5,\n parameterLimit: 1000,\n plainObjects: false,\n strictNullHandling: false\n};\n\nvar parseValues = function parseQueryStringValues(str, options) {\n var obj = {};\n var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;\n var parts = cleanStr.split(options.delimiter, limit);\n\n for (var i = 0; i < parts.length; ++i) {\n var part = parts[i];\n\n var bracketEqualsPos = part.indexOf(']=');\n var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n var key, val;\n if (pos === -1) {\n key = options.decoder(part, defaults.decoder);\n val = options.strictNullHandling ? null : '';\n } else {\n key = options.decoder(part.slice(0, pos), defaults.decoder);\n val = options.decoder(part.slice(pos + 1), defaults.decoder);\n }\n if (has.call(obj, key)) {\n obj[key] = [].concat(obj[key]).concat(val);\n } else {\n obj[key] = val;\n }\n }\n\n return obj;\n};\n\nvar parseObject = function (chain, val, options) {\n var leaf = val;\n\n for (var i = chain.length - 1; i >= 0; --i) {\n var obj;\n var root = chain[i];\n\n if (root === '[]' && options.parseArrays) {\n obj = [].concat(leaf);\n } else {\n obj = options.plainObjects ? Object.create(null) : {};\n var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n var index = parseInt(cleanRoot, 10);\n if (!options.parseArrays && cleanRoot === '') {\n obj = { 0: leaf };\n } else if (\n !isNaN(index)\n && root !== cleanRoot\n && String(index) === cleanRoot\n && index >= 0\n && (options.parseArrays && index <= options.arrayLimit)\n ) {\n obj = [];\n obj[index] = leaf;\n } else if (cleanRoot !== '__proto__') {\n obj[cleanRoot] = leaf;\n }\n }\n\n leaf = obj;\n }\n\n return leaf;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options) {\n if (!givenKey) {\n return;\n }\n\n // Transform dot notation to bracket notation\n var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n // The regex chunks\n\n var brackets = /(\\[[^[\\]]*])/;\n var child = /(\\[[^[\\]]*])/g;\n\n // Get the parent\n\n var segment = brackets.exec(key);\n var parent = segment ? key.slice(0, segment.index) : key;\n\n // Stash the parent if it exists\n\n var keys = [];\n if (parent) {\n // If we aren't using plain objects, optionally prefix keys\n // that would overwrite object prototype properties\n if (!options.plainObjects && has.call(Object.prototype, parent)) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n\n keys.push(parent);\n }\n\n // Loop through children appending to the array until we hit depth\n\n var i = 0;\n while ((segment = child.exec(key)) !== null && i < options.depth) {\n i += 1;\n if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n keys.push(segment[1]);\n }\n\n // If there's a remainder, just add whatever is left\n\n if (segment) {\n keys.push('[' + key.slice(segment.index) + ']');\n }\n\n return parseObject(keys, val, options);\n};\n\nmodule.exports = function (str, opts) {\n var options = opts ? utils.assign({}, opts) : {};\n\n if (options.decoder !== null && options.decoder !== undefined && typeof options.decoder !== 'function') {\n throw new TypeError('Decoder has to be a function.');\n }\n\n options.ignoreQueryPrefix = options.ignoreQueryPrefix === true;\n options.delimiter = typeof options.delimiter === 'string' || utils.isRegExp(options.delimiter) ? options.delimiter : defaults.delimiter;\n options.depth = typeof options.depth === 'number' ? options.depth : defaults.depth;\n options.arrayLimit = typeof options.arrayLimit === 'number' ? options.arrayLimit : defaults.arrayLimit;\n options.parseArrays = options.parseArrays !== false;\n options.decoder = typeof options.decoder === 'function' ? options.decoder : defaults.decoder;\n options.allowDots = typeof options.allowDots === 'boolean' ? options.allowDots : defaults.allowDots;\n options.plainObjects = typeof options.plainObjects === 'boolean' ? options.plainObjects : defaults.plainObjects;\n options.allowPrototypes = typeof options.allowPrototypes === 'boolean' ? options.allowPrototypes : defaults.allowPrototypes;\n options.parameterLimit = typeof options.parameterLimit === 'number' ? options.parameterLimit : defaults.parameterLimit;\n options.strictNullHandling = typeof options.strictNullHandling === 'boolean' ? options.strictNullHandling : defaults.strictNullHandling;\n\n if (str === '' || str === null || typeof str === 'undefined') {\n return options.plainObjects ? Object.create(null) : {};\n }\n\n var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n var obj = options.plainObjects ? Object.create(null) : {};\n\n // Iterate over the keys and setup the new object\n\n var keys = Object.keys(tempObj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var newObj = parseKeys(key, tempObj[key], options);\n obj = utils.merge(obj, newObj, options);\n }\n\n return utils.compact(obj);\n};\n", "'use strict';\n\nvar stringify = require('./stringify');\nvar parse = require('./parse');\nvar formats = require('./formats');\n\nmodule.exports = {\n formats: formats,\n parse: parse,\n stringify: stringify\n};\n", "'use strict'\n\nvar qs = require('qs')\nvar querystring = require('querystring')\n\nfunction Querystring (request) {\n this.request = request\n this.lib = null\n this.useQuerystring = null\n this.parseOptions = null\n this.stringifyOptions = null\n}\n\nQuerystring.prototype.init = function (options) {\n if (this.lib) { return }\n\n this.useQuerystring = options.useQuerystring\n this.lib = (this.useQuerystring ? querystring : qs)\n\n this.parseOptions = options.qsParseOptions || {}\n this.stringifyOptions = options.qsStringifyOptions || {}\n}\n\nQuerystring.prototype.stringify = function (obj) {\n return (this.useQuerystring)\n ? this.rfc3986(this.lib.stringify(obj,\n this.stringifyOptions.sep || null,\n this.stringifyOptions.eq || null,\n this.stringifyOptions))\n : this.lib.stringify(obj, this.stringifyOptions)\n}\n\nQuerystring.prototype.parse = function (str) {\n return (this.useQuerystring)\n ? this.lib.parse(str,\n this.parseOptions.sep || null,\n this.parseOptions.eq || null,\n this.parseOptions)\n : this.lib.parse(str, this.parseOptions)\n}\n\nQuerystring.prototype.rfc3986 = function (str) {\n return str.replace(/[!'()*]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\nQuerystring.prototype.unescape = querystring.unescape\n\nexports.Querystring = Querystring\n", "import { SCHEMES } from \"./uri\";\n\nimport http from \"./schemes/http\";\nSCHEMES[http.scheme] = http;\n\nimport https from \"./schemes/https\";\nSCHEMES[https.scheme] = https;\n\nimport ws from \"./schemes/ws\";\nSCHEMES[ws.scheme] = ws;\n\nimport wss from \"./schemes/wss\";\nSCHEMES[wss.scheme] = wss;\n\nimport mailto from \"./schemes/mailto\";\nSCHEMES[mailto.scheme] = mailto;\n\nimport urn from \"./schemes/urn\";\nSCHEMES[urn.scheme] = urn;\n\nimport uuid from \"./schemes/urn-uuid\";\nSCHEMES[uuid.scheme] = uuid;\n\nexport * from \"./uri\";\n", "import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport { URNComponents } from \"./urn\";\nimport { SCHEMES } from \"../uri\";\n\nexport interface UUIDComponents extends URNComponents {\n\tuuid?: string;\n}\n\nconst UUID = /^[0-9A-Fa-f]{8}(?:\\-[0-9A-Fa-f]{4}){3}\\-[0-9A-Fa-f]{12}$/;\nconst UUID_PARSE = /^[0-9A-Fa-f\\-]{36}/;\n\n//RFC 4122\nconst handler:URISchemeHandler = {\n\tscheme : \"urn:uuid\",\n\n\tparse : function (urnComponents:URNComponents, options:URIOptions):UUIDComponents {\n\t\tconst uuidComponents = urnComponents as UUIDComponents;\n\t\tuuidComponents.uuid = uuidComponents.nss;\n\t\tuuidComponents.nss = undefined;\n\n\t\tif (!options.tolerant && (!uuidComponents.uuid || !uuidComponents.uuid.match(UUID))) {\n\t\t\tuuidComponents.error = uuidComponents.error || \"UUID is not valid.\";\n\t\t}\n\n\t\treturn uuidComponents;\n\t},\n\n\tserialize : function (uuidComponents:UUIDComponents, options:URIOptions):URNComponents {\n\t\tconst urnComponents = uuidComponents as URNComponents;\n\t\t//normalize UUID\n\t\turnComponents.nss = (uuidComponents.uuid || \"\").toLowerCase();\n\t\treturn urnComponents;\n\t},\n};\n\nexport default handler;", "import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport { pctEncChar, SCHEMES } from \"../uri\";\n\nexport interface URNComponents extends URIComponents {\n\tnid?:string;\n\tnss?:string;\n}\n\nexport interface URNOptions extends URIOptions {\n\tnid?:string;\n}\n\nconst NID$ = \"(?:[0-9A-Za-z][0-9A-Za-z\\\\-]{1,31})\";\nconst PCT_ENCODED$ = \"(?:\\\\%[0-9A-Fa-f]{2})\";\nconst TRANS$$ = \"[0-9A-Za-z\\\\(\\\\)\\\\+\\\\,\\\\-\\\\.\\\\:\\\\=\\\\@\\\\;\\\\$\\\\_\\\\!\\\\*\\\\'\\\\/\\\\?\\\\#]\";\nconst NSS$ = \"(?:(?:\" + PCT_ENCODED$ + \"|\" + TRANS$$ + \")+)\";\nconst URN_SCHEME = new RegExp(\"^urn\\\\:(\" + NID$ + \")$\");\nconst URN_PATH = new RegExp(\"^(\" + NID$ + \")\\\\:(\" + NSS$ + \")$\");\nconst URN_PARSE = /^([^\\:]+)\\:(.*)/;\nconst URN_EXCLUDED = /[\\x00-\\x20\\\\\\\"\\&\\<\\>\\[\\]\\^\\`\\{\\|\\}\\~\\x7F-\\xFF]/g;\n\n//RFC 2141\nconst handler:URISchemeHandler = {\n\tscheme : \"urn\",\n\n\tparse : function (components:URIComponents, options:URNOptions):URNComponents {\n\t\tconst matches = components.path && components.path.match(URN_PARSE);\n\t\tlet urnComponents = components as URNComponents;\n\n\t\tif (matches) {\n\t\t\tconst scheme = options.scheme || urnComponents.scheme || \"urn\";\n\t\t\tconst nid = matches[1].toLowerCase();\n\t\t\tconst nss = matches[2];\n\t\t\tconst urnScheme = `${scheme}:${options.nid || nid}`;\n\t\t\tconst schemeHandler = SCHEMES[urnScheme];\n\n\t\t\turnComponents.nid = nid;\n\t\t\turnComponents.nss = nss;\n\t\t\turnComponents.path = undefined;\n\n\t\t\tif (schemeHandler) {\n\t\t\t\turnComponents = schemeHandler.parse(urnComponents, options) as URNComponents;\n\t\t\t}\n\t\t} else {\n\t\t\turnComponents.error = urnComponents.error || \"URN can not be parsed.\";\n\t\t}\n\n\t\treturn urnComponents;\n\t},\n\n\tserialize : function (urnComponents:URNComponents, options:URNOptions):URIComponents {\n\t\tconst scheme = options.scheme || urnComponents.scheme || \"urn\";\n\t\tconst nid = urnComponents.nid;\n\t\tconst urnScheme = `${scheme}:${options.nid || nid}`;\n\t\tconst schemeHandler = SCHEMES[urnScheme];\n\n\t\tif (schemeHandler) {\n\t\t\turnComponents = schemeHandler.serialize(urnComponents, options) as URNComponents;\n\t\t}\n\n\t\tconst uriComponents = urnComponents as URIComponents;\n\t\tconst nss = urnComponents.nss;\n\t\turiComponents.path = `${nid || options.nid}:${nss}`;\n\n\t\treturn uriComponents;\n\t},\n};\n\nexport default handler;", "import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport { pctEncChar, pctDecChars, unescapeComponent } from \"../uri\";\nimport punycode from \"punycode\";\nimport { merge, subexp, toUpperCase, toArray } from \"../util\";\n\nexport interface MailtoHeaders {\n\t[hfname:string]:string\n}\n\nexport interface MailtoComponents extends URIComponents {\n\tto:Array,\n\theaders?:MailtoHeaders,\n\tsubject?:string,\n\tbody?:string\n}\n\nconst O:MailtoHeaders = {};\nconst isIRI = true;\n\n//RFC 3986\nconst UNRESERVED$$ = \"[A-Za-z0-9\\\\-\\\\.\\\\_\\\\~\" + (isIRI ? \"\\\\xA0-\\\\u200D\\\\u2010-\\\\u2029\\\\u202F-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFEF\" : \"\") + \"]\";\nconst HEXDIG$$ = \"[0-9A-Fa-f]\"; //case-insensitive\nconst PCT_ENCODED$ = subexp(subexp(\"%[EFef]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%[89A-Fa-f]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%\" + HEXDIG$$ + HEXDIG$$)); //expanded\n\n//RFC 5322, except these symbols as per RFC 6068: @ : / ? # [ ] & ; =\n//const ATEXT$$ = \"[A-Za-z0-9\\\\!\\\\#\\\\$\\\\%\\\\&\\\\'\\\\*\\\\+\\\\-\\\\/\\\\=\\\\?\\\\^\\\\_\\\\`\\\\{\\\\|\\\\}\\\\~]\";\n//const WSP$$ = \"[\\\\x20\\\\x09]\";\n//const OBS_QTEXT$$ = \"[\\\\x01-\\\\x08\\\\x0B\\\\x0C\\\\x0E-\\\\x1F\\\\x7F]\"; //(%d1-8 / %d11-12 / %d14-31 / %d127)\n//const QTEXT$$ = merge(\"[\\\\x21\\\\x23-\\\\x5B\\\\x5D-\\\\x7E]\", OBS_QTEXT$$); //%d33 / %d35-91 / %d93-126 / obs-qtext\n//const VCHAR$$ = \"[\\\\x21-\\\\x7E]\";\n//const WSP$$ = \"[\\\\x20\\\\x09]\";\n//const OBS_QP$ = subexp(\"\\\\\\\\\" + merge(\"[\\\\x00\\\\x0D\\\\x0A]\", OBS_QTEXT$$)); //%d0 / CR / LF / obs-qtext\n//const FWS$ = subexp(subexp(WSP$$ + \"*\" + \"\\\\x0D\\\\x0A\") + \"?\" + WSP$$ + \"+\");\n//const QUOTED_PAIR$ = subexp(subexp(\"\\\\\\\\\" + subexp(VCHAR$$ + \"|\" + WSP$$)) + \"|\" + OBS_QP$);\n//const QUOTED_STRING$ = subexp('\\\\\"' + subexp(FWS$ + \"?\" + QCONTENT$) + \"*\" + FWS$ + \"?\" + '\\\\\"');\nconst ATEXT$$ = \"[A-Za-z0-9\\\\!\\\\$\\\\%\\\\'\\\\*\\\\+\\\\-\\\\^\\\\_\\\\`\\\\{\\\\|\\\\}\\\\~]\";\nconst QTEXT$$ = \"[\\\\!\\\\$\\\\%\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\-\\\\.0-9\\\\<\\\\>A-Z\\\\x5E-\\\\x7E]\";\nconst VCHAR$$ = merge(QTEXT$$, \"[\\\\\\\"\\\\\\\\]\");\nconst DOT_ATOM_TEXT$ = subexp(ATEXT$$ + \"+\" + subexp(\"\\\\.\" + ATEXT$$ + \"+\") + \"*\");\nconst QUOTED_PAIR$ = subexp(\"\\\\\\\\\" + VCHAR$$);\nconst QCONTENT$ = subexp(QTEXT$$ + \"|\" + QUOTED_PAIR$);\nconst QUOTED_STRING$ = subexp('\\\\\"' + QCONTENT$ + \"*\" + '\\\\\"');\n\n//RFC 6068\nconst DTEXT_NO_OBS$$ = \"[\\\\x21-\\\\x5A\\\\x5E-\\\\x7E]\"; //%d33-90 / %d94-126\nconst SOME_DELIMS$$ = \"[\\\\!\\\\$\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\;\\\\:\\\\@]\";\nconst QCHAR$ = subexp(UNRESERVED$$ + \"|\" + PCT_ENCODED$ + \"|\" + SOME_DELIMS$$);\nconst DOMAIN$ = subexp(DOT_ATOM_TEXT$ + \"|\" + \"\\\\[\" + DTEXT_NO_OBS$$ + \"*\" + \"\\\\]\");\nconst LOCAL_PART$ = subexp(DOT_ATOM_TEXT$ + \"|\" + QUOTED_STRING$);\nconst ADDR_SPEC$ = subexp(LOCAL_PART$ + \"\\\\@\" + DOMAIN$);\nconst TO$ = subexp(ADDR_SPEC$ + subexp(\"\\\\,\" + ADDR_SPEC$) + \"*\");\nconst HFNAME$ = subexp(QCHAR$ + \"*\");\nconst HFVALUE$ = HFNAME$;\nconst HFIELD$ = subexp(HFNAME$ + \"\\\\=\" + HFVALUE$);\nconst HFIELDS2$ = subexp(HFIELD$ + subexp(\"\\\\&\" + HFIELD$) + \"*\");\nconst HFIELDS$ = subexp(\"\\\\?\" + HFIELDS2$);\nconst MAILTO_URI = new RegExp(\"^mailto\\\\:\" + TO$ + \"?\" + HFIELDS$ + \"?$\");\n\nconst UNRESERVED = new RegExp(UNRESERVED$$, \"g\");\nconst PCT_ENCODED = new RegExp(PCT_ENCODED$, \"g\");\nconst NOT_LOCAL_PART = new RegExp(merge(\"[^]\", ATEXT$$, \"[\\\\.]\", '[\\\\\"]', VCHAR$$), \"g\");\nconst NOT_DOMAIN = new RegExp(merge(\"[^]\", ATEXT$$, \"[\\\\.]\", \"[\\\\[]\", DTEXT_NO_OBS$$, \"[\\\\]]\"), \"g\");\nconst NOT_HFNAME = new RegExp(merge(\"[^]\", UNRESERVED$$, SOME_DELIMS$$), \"g\");\nconst NOT_HFVALUE = NOT_HFNAME;\nconst TO = new RegExp(\"^\" + TO$ + \"$\");\nconst HFIELDS = new RegExp(\"^\" + HFIELDS2$ + \"$\");\n\nfunction decodeUnreserved(str:string):string {\n\tconst decStr = pctDecChars(str);\n\treturn (!decStr.match(UNRESERVED) ? str : decStr);\n}\n\nconst handler:URISchemeHandler = {\n\tscheme : \"mailto\",\n\n\tparse : function (components:URIComponents, options:URIOptions):MailtoComponents {\n\t\tconst mailtoComponents = components as MailtoComponents;\n\t\tconst to = mailtoComponents.to = (mailtoComponents.path ? mailtoComponents.path.split(\",\") : []);\n\t\tmailtoComponents.path = undefined;\n\n\t\tif (mailtoComponents.query) {\n\t\t\tlet unknownHeaders = false\n\t\t\tconst headers:MailtoHeaders = {};\n\t\t\tconst hfields = mailtoComponents.query.split(\"&\");\n\n\t\t\tfor (let x = 0, xl = hfields.length; x < xl; ++x) {\n\t\t\t\tconst hfield = hfields[x].split(\"=\");\n\n\t\t\t\tswitch (hfield[0]) {\n\t\t\t\t\tcase \"to\":\n\t\t\t\t\t\tconst toAddrs = hfield[1].split(\",\");\n\t\t\t\t\t\tfor (let x = 0, xl = toAddrs.length; x < xl; ++x) {\n\t\t\t\t\t\t\tto.push(toAddrs[x]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"subject\":\n\t\t\t\t\t\tmailtoComponents.subject = unescapeComponent(hfield[1], options);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"body\":\n\t\t\t\t\t\tmailtoComponents.body = unescapeComponent(hfield[1], options);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tunknownHeaders = true;\n\t\t\t\t\t\theaders[unescapeComponent(hfield[0], options)] = unescapeComponent(hfield[1], options);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (unknownHeaders) mailtoComponents.headers = headers;\n\t\t}\n\n\t\tmailtoComponents.query = undefined;\n\n\t\tfor (let x = 0, xl = to.length; x < xl; ++x) {\n\t\t\tconst addr = to[x].split(\"@\");\n\n\t\t\taddr[0] = unescapeComponent(addr[0]);\n\n\t\t\tif (!options.unicodeSupport) {\n\t\t\t\t//convert Unicode IDN -> ASCII IDN\n\t\t\t\ttry {\n\t\t\t\t\taddr[1] = punycode.toASCII(unescapeComponent(addr[1], options).toLowerCase());\n\t\t\t\t} catch (e) {\n\t\t\t\t\tmailtoComponents.error = mailtoComponents.error || \"Email address's domain name can not be converted to ASCII via punycode: \" + e;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\taddr[1] = unescapeComponent(addr[1], options).toLowerCase();\n\t\t\t}\n\n\t\t\tto[x] = addr.join(\"@\");\n\t\t}\n\n\t\treturn mailtoComponents;\n\t},\n\n\tserialize : function (mailtoComponents:MailtoComponents, options:URIOptions):URIComponents {\n\t\tconst components = mailtoComponents as URIComponents;\n\t\tconst to = toArray(mailtoComponents.to);\n\t\tif (to) {\n\t\t\tfor (let x = 0, xl = to.length; x < xl; ++x) {\n\t\t\t\tconst toAddr = String(to[x]);\n\t\t\t\tconst atIdx = toAddr.lastIndexOf(\"@\");\n\t\t\t\tconst localPart = (toAddr.slice(0, atIdx)).replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_LOCAL_PART, pctEncChar);\n\t\t\t\tlet domain = toAddr.slice(atIdx + 1);\n\n\t\t\t\t//convert IDN via punycode\n\t\t\t\ttry {\n\t\t\t\t\tdomain = (!options.iri ? punycode.toASCII(unescapeComponent(domain, options).toLowerCase()) : punycode.toUnicode(domain));\n\t\t\t\t} catch (e) {\n\t\t\t\t\tcomponents.error = components.error || \"Email address's domain name can not be converted to \" + (!options.iri ? \"ASCII\" : \"Unicode\") + \" via punycode: \" + e;\n\t\t\t\t}\n\n\t\t\t\tto[x] = localPart + \"@\" + domain;\n\t\t\t}\n\n\t\t\tcomponents.path = to.join(\",\");\n\t\t}\n\n\t\tconst headers = mailtoComponents.headers = mailtoComponents.headers || {};\n\n\t\tif (mailtoComponents.subject) headers[\"subject\"] = mailtoComponents.subject;\n\t\tif (mailtoComponents.body) headers[\"body\"] = mailtoComponents.body;\n\n\t\tconst fields = [];\n\t\tfor (const name in headers) {\n\t\t\tif (headers[name] !== O[name]) {\n\t\t\t\tfields.push(\n\t\t\t\t\tname.replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFNAME, pctEncChar) +\n\t\t\t\t\t\"=\" +\n\t\t\t\t\theaders[name].replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFVALUE, pctEncChar)\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\tif (fields.length) {\n\t\t\tcomponents.query = fields.join(\"&\");\n\t\t}\n\n\t\treturn components;\n\t}\n}\n\nexport default handler;", "import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport ws from \"./ws\";\n\nconst handler:URISchemeHandler = {\n\tscheme : \"wss\",\n\tdomainHost : ws.domainHost,\n\tparse : ws.parse,\n\tserialize : ws.serialize\n}\n\nexport default handler;", "import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\n\nexport interface WSComponents extends URIComponents {\n\tresourceName?: string;\n\tsecure?: boolean;\n}\n\nfunction isSecure(wsComponents:WSComponents):boolean {\n\treturn typeof wsComponents.secure === 'boolean' ? wsComponents.secure : String(wsComponents.scheme).toLowerCase() === \"wss\";\n}\n\n//RFC 6455\nconst handler:URISchemeHandler = {\n\tscheme : \"ws\",\n\n\tdomainHost : true,\n\n\tparse : function (components:URIComponents, options:URIOptions):WSComponents {\n\t\tconst wsComponents = components as WSComponents;\n\n\t\t//indicate if the secure flag is set\n\t\twsComponents.secure = isSecure(wsComponents);\n\n\t\t//construct resouce name\n\t\twsComponents.resourceName = (wsComponents.path || '/') + (wsComponents.query ? '?' + wsComponents.query : '');\n\t\twsComponents.path = undefined;\n\t\twsComponents.query = undefined;\n\n\t\treturn wsComponents;\n\t},\n\n\tserialize : function (wsComponents:WSComponents, options:URIOptions):URIComponents {\n\t\t//normalize the default port\n\t\tif (wsComponents.port === (isSecure(wsComponents) ? 443 : 80) || wsComponents.port === \"\") {\n\t\t\twsComponents.port = undefined;\n\t\t}\n\n\t\t//ensure scheme matches secure flag\n\t\tif (typeof wsComponents.secure === 'boolean') {\n\t\t\twsComponents.scheme = (wsComponents.secure ? 'wss' : 'ws');\n\t\t\twsComponents.secure = undefined;\n\t\t}\n\n\t\t//reconstruct path from resource name\n\t\tif (wsComponents.resourceName) {\n\t\t\tconst [path, query] = wsComponents.resourceName.split('?');\n\t\t\twsComponents.path = (path && path !== '/' ? path : undefined);\n\t\t\twsComponents.query = query;\n\t\t\twsComponents.resourceName = undefined;\n\t\t}\n\n\t\t//forbid fragment component\n\t\twsComponents.fragment = undefined;\n\n\t\treturn wsComponents;\n\t}\n};\n\nexport default handler;", "import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport http from \"./http\";\n\nconst handler:URISchemeHandler = {\n\tscheme : \"https\",\n\tdomainHost : http.domainHost,\n\tparse : http.parse,\n\tserialize : http.serialize\n}\n\nexport default handler;", "import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\n\nconst handler:URISchemeHandler = {\n\tscheme : \"http\",\n\n\tdomainHost : true,\n\n\tparse : function (components:URIComponents, options:URIOptions):URIComponents {\n\t\t//report missing host\n\t\tif (!components.host) {\n\t\t\tcomponents.error = components.error || \"HTTP URIs must have a host.\";\n\t\t}\n\n\t\treturn components;\n\t},\n\n\tserialize : function (components:URIComponents, options:URIOptions):URIComponents {\n\t\tconst secure = String(components.scheme).toLowerCase() === \"https\";\n\n\t\t//normalize the default port\n\t\tif (components.port === (secure ? 443 : 80) || components.port === \"\") {\n\t\t\tcomponents.port = undefined;\n\t\t}\n\t\t\n\t\t//normalize the empty path\n\t\tif (!components.path) {\n\t\t\tcomponents.path = \"/\";\n\t\t}\n\n\t\t//NOTE: We do not parse query strings for HTTP URIs\n\t\t//as WWW Form Url Encoded query strings are part of the HTML4+ spec,\n\t\t//and not the HTTP spec.\n\n\t\treturn components;\n\t}\n};\n\nexport default handler;", "/**\n * URI.js\n *\n * @fileoverview An RFC 3986 compliant, scheme extendable URI parsing/validating/resolving library for JavaScript.\n * @author Gary Court\n * @see http://github.com/garycourt/uri-js\n */\n\n/**\n * Copyright 2011 Gary Court. All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification, are\n * permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice, this list of\n * conditions and the following disclaimer.\n *\n * 2. Redistributions in binary form must reproduce the above copyright notice, this list\n * of conditions and the following disclaimer in the documentation and/or other materials\n * provided with the distribution.\n *\n * THIS SOFTWARE IS PROVIDED BY GARY COURT ``AS IS'' AND ANY EXPRESS OR IMPLIED\n * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\n * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GARY COURT OR\n * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\n * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF\n * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * The views and conclusions contained in the software and documentation are those of the\n * authors and should not be interpreted as representing official policies, either expressed\n * or implied, of Gary Court.\n */\n\nimport URI_PROTOCOL from \"./regexps-uri\";\nimport IRI_PROTOCOL from \"./regexps-iri\";\nimport punycode from \"punycode\";\nimport { toUpperCase, typeOf, assign } from \"./util\";\n\nexport interface URIComponents {\n\tscheme?:string;\n\tuserinfo?:string;\n\thost?:string;\n\tport?:number|string;\n\tpath?:string;\n\tquery?:string;\n\tfragment?:string;\n\treference?:string;\n\terror?:string;\n}\n\nexport interface URIOptions {\n\tscheme?:string;\n\treference?:string;\n\ttolerant?:boolean;\n\tabsolutePath?:boolean;\n\tiri?:boolean;\n\tunicodeSupport?:boolean;\n\tdomainHost?:boolean;\n}\n\nexport interface URISchemeHandler {\n\tscheme:string;\n\tparse(components:ParentComponents, options:Options):Components;\n\tserialize(components:Components, options:Options):ParentComponents;\n\tunicodeSupport?:boolean;\n\tdomainHost?:boolean;\n\tabsolutePath?:boolean;\n}\n\nexport interface URIRegExps {\n\tNOT_SCHEME : RegExp,\n\tNOT_USERINFO : RegExp,\n\tNOT_HOST : RegExp,\n\tNOT_PATH : RegExp,\n\tNOT_PATH_NOSCHEME : RegExp,\n\tNOT_QUERY : RegExp,\n\tNOT_FRAGMENT : RegExp,\n\tESCAPE : RegExp,\n\tUNRESERVED : RegExp,\n\tOTHER_CHARS : RegExp,\n\tPCT_ENCODED : RegExp,\n\tIPV4ADDRESS : RegExp,\n\tIPV6ADDRESS : RegExp,\n}\n\nexport const SCHEMES:{[scheme:string]:URISchemeHandler} = {};\n\nexport function pctEncChar(chr:string):string {\n\tconst c = chr.charCodeAt(0);\n\tlet e:string;\n\n\tif (c < 16) e = \"%0\" + c.toString(16).toUpperCase();\n\telse if (c < 128) e = \"%\" + c.toString(16).toUpperCase();\n\telse if (c < 2048) e = \"%\" + ((c >> 6) | 192).toString(16).toUpperCase() + \"%\" + ((c & 63) | 128).toString(16).toUpperCase();\n\telse e = \"%\" + ((c >> 12) | 224).toString(16).toUpperCase() + \"%\" + (((c >> 6) & 63) | 128).toString(16).toUpperCase() + \"%\" + ((c & 63) | 128).toString(16).toUpperCase();\n\n\treturn e;\n}\n\nexport function pctDecChars(str:string):string {\n\tlet newStr = \"\";\n\tlet i = 0;\n\tconst il = str.length;\n\n\twhile (i < il) {\n\t\tconst c = parseInt(str.substr(i + 1, 2), 16);\n\n\t\tif (c < 128) {\n\t\t\tnewStr += String.fromCharCode(c);\n\t\t\ti += 3;\n\t\t}\n\t\telse if (c >= 194 && c < 224) {\n\t\t\tif ((il - i) >= 6) {\n\t\t\t\tconst c2 = parseInt(str.substr(i + 4, 2), 16);\n\t\t\t\tnewStr += String.fromCharCode(((c & 31) << 6) | (c2 & 63));\n\t\t\t} else {\n\t\t\t\tnewStr += str.substr(i, 6);\n\t\t\t}\n\t\t\ti += 6;\n\t\t}\n\t\telse if (c >= 224) {\n\t\t\tif ((il - i) >= 9) {\n\t\t\t\tconst c2 = parseInt(str.substr(i + 4, 2), 16);\n\t\t\t\tconst c3 = parseInt(str.substr(i + 7, 2), 16);\n\t\t\t\tnewStr += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));\n\t\t\t} else {\n\t\t\t\tnewStr += str.substr(i, 9);\n\t\t\t}\n\t\t\ti += 9;\n\t\t}\n\t\telse {\n\t\t\tnewStr += str.substr(i, 3);\n\t\t\ti += 3;\n\t\t}\n\t}\n\n\treturn newStr;\n}\n\nfunction _normalizeComponentEncoding(components:URIComponents, protocol:URIRegExps) {\n\tfunction decodeUnreserved(str:string):string {\n\t\tconst decStr = pctDecChars(str);\n\t\treturn (!decStr.match(protocol.UNRESERVED) ? str : decStr);\n\t}\n\n\tif (components.scheme) components.scheme = String(components.scheme).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_SCHEME, \"\");\n\tif (components.userinfo !== undefined) components.userinfo = String(components.userinfo).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_USERINFO, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\tif (components.host !== undefined) components.host = String(components.host).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_HOST, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\tif (components.path !== undefined) components.path = String(components.path).replace(protocol.PCT_ENCODED, decodeUnreserved).replace((components.scheme ? protocol.NOT_PATH : protocol.NOT_PATH_NOSCHEME), pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\tif (components.query !== undefined) components.query = String(components.query).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_QUERY, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\tif (components.fragment !== undefined) components.fragment = String(components.fragment).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_FRAGMENT, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\n\treturn components;\n};\n\nfunction _stripLeadingZeros(str:string):string {\n\treturn str.replace(/^0*(.*)/, \"$1\") || \"0\";\n}\n\nfunction _normalizeIPv4(host:string, protocol:URIRegExps):string {\n\tconst matches = host.match(protocol.IPV4ADDRESS) || [];\n\tconst [, address] = matches;\n\t\n\tif (address) {\n\t\treturn address.split(\".\").map(_stripLeadingZeros).join(\".\");\n\t} else {\n\t\treturn host;\n\t}\n}\n\nfunction _normalizeIPv6(host:string, protocol:URIRegExps):string {\n\tconst matches = host.match(protocol.IPV6ADDRESS) || [];\n\tconst [, address, zone] = matches;\n\n\tif (address) {\n\t\tconst [last, first] = address.toLowerCase().split('::').reverse();\n\t\tconst firstFields = first ? first.split(\":\").map(_stripLeadingZeros) : [];\n\t\tconst lastFields = last.split(\":\").map(_stripLeadingZeros);\n\t\tconst isLastFieldIPv4Address = protocol.IPV4ADDRESS.test(lastFields[lastFields.length - 1]);\n\t\tconst fieldCount = isLastFieldIPv4Address ? 7 : 8;\n\t\tconst lastFieldsStart = lastFields.length - fieldCount;\n\t\tconst fields = Array(fieldCount);\n\n\t\tfor (let x = 0; x < fieldCount; ++x) {\n\t\t\tfields[x] = firstFields[x] || lastFields[lastFieldsStart + x] || '';\n\t\t}\n\n\t\tif (isLastFieldIPv4Address) {\n\t\t\tfields[fieldCount - 1] = _normalizeIPv4(fields[fieldCount - 1], protocol);\n\t\t}\n\n\t\tconst allZeroFields = fields.reduce>((acc, field, index) => {\n\t\t\tif (!field || field === \"0\") {\n\t\t\t\tconst lastLongest = acc[acc.length - 1];\n\t\t\t\tif (lastLongest && lastLongest.index + lastLongest.length === index) {\n\t\t\t\t\tlastLongest.length++;\n\t\t\t\t} else {\n\t\t\t\t\tacc.push({ index, length : 1 });\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn acc;\n\t\t}, []);\n\n\t\tconst longestZeroFields = allZeroFields.sort((a, b) => b.length - a.length)[0];\n\n\t\tlet newHost:string;\n\t\tif (longestZeroFields && longestZeroFields.length > 1) {\n\t\t\tconst newFirst = fields.slice(0, longestZeroFields.index) ;\n\t\t\tconst newLast = fields.slice(longestZeroFields.index + longestZeroFields.length);\n\t\t\tnewHost = newFirst.join(\":\") + \"::\" + newLast.join(\":\");\n\t\t} else {\n\t\t\tnewHost = fields.join(\":\");\n\t\t}\n\n\t\tif (zone) {\n\t\t\tnewHost += \"%\" + zone;\n\t\t}\n\n\t\treturn newHost;\n\t} else {\n\t\treturn host;\n\t}\n}\n\nconst URI_PARSE = /^(?:([^:\\/?#]+):)?(?:\\/\\/((?:([^\\/?#@]*)@)?(\\[[^\\/?#\\]]+\\]|[^\\/?#:]*)(?:\\:(\\d*))?))?([^?#]*)(?:\\?([^#]*))?(?:#((?:.|\\n|\\r)*))?/i;\nconst NO_MATCH_IS_UNDEFINED = ((\"\").match(/(){0}/))[1] === undefined;\n\nexport function parse(uriString:string, options:URIOptions = {}):URIComponents {\n\tconst components:URIComponents = {};\n\tconst protocol = (options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL);\n\n\tif (options.reference === \"suffix\") uriString = (options.scheme ? options.scheme + \":\" : \"\") + \"//\" + uriString;\n\n\tconst matches = uriString.match(URI_PARSE);\n\n\tif (matches) {\n\t\tif (NO_MATCH_IS_UNDEFINED) {\n\t\t\t//store each component\n\t\t\tcomponents.scheme = matches[1];\n\t\t\tcomponents.userinfo = matches[3];\n\t\t\tcomponents.host = matches[4];\n\t\t\tcomponents.port = parseInt(matches[5], 10);\n\t\t\tcomponents.path = matches[6] || \"\";\n\t\t\tcomponents.query = matches[7];\n\t\t\tcomponents.fragment = matches[8];\n\n\t\t\t//fix port number\n\t\t\tif (isNaN(components.port)) {\n\t\t\t\tcomponents.port = matches[5];\n\t\t\t}\n\t\t} else { //IE FIX for improper RegExp matching\n\t\t\t//store each component\n\t\t\tcomponents.scheme = matches[1] || undefined;\n\t\t\tcomponents.userinfo = (uriString.indexOf(\"@\") !== -1 ? matches[3] : undefined);\n\t\t\tcomponents.host = (uriString.indexOf(\"//\") !== -1 ? matches[4] : undefined);\n\t\t\tcomponents.port = parseInt(matches[5], 10);\n\t\t\tcomponents.path = matches[6] || \"\";\n\t\t\tcomponents.query = (uriString.indexOf(\"?\") !== -1 ? matches[7] : undefined);\n\t\t\tcomponents.fragment = (uriString.indexOf(\"#\") !== -1 ? matches[8] : undefined);\n\n\t\t\t//fix port number\n\t\t\tif (isNaN(components.port)) {\n\t\t\t\tcomponents.port = (uriString.match(/\\/\\/(?:.|\\n)*\\:(?:\\/|\\?|\\#|$)/) ? matches[4] : undefined);\n\t\t\t}\n\t\t}\n\n\t\tif (components.host) {\n\t\t\t//normalize IP hosts\n\t\t\tcomponents.host = _normalizeIPv6(_normalizeIPv4(components.host, protocol), protocol);\n\t\t}\n\n\t\t//determine reference type\n\t\tif (components.scheme === undefined && components.userinfo === undefined && components.host === undefined && components.port === undefined && !components.path && components.query === undefined) {\n\t\t\tcomponents.reference = \"same-document\";\n\t\t} else if (components.scheme === undefined) {\n\t\t\tcomponents.reference = \"relative\";\n\t\t} else if (components.fragment === undefined) {\n\t\t\tcomponents.reference = \"absolute\";\n\t\t} else {\n\t\t\tcomponents.reference = \"uri\";\n\t\t}\n\n\t\t//check for reference errors\n\t\tif (options.reference && options.reference !== \"suffix\" && options.reference !== components.reference) {\n\t\t\tcomponents.error = components.error || \"URI is not a \" + options.reference + \" reference.\";\n\t\t}\n\n\t\t//find scheme handler\n\t\tconst schemeHandler = SCHEMES[(options.scheme || components.scheme || \"\").toLowerCase()];\n\n\t\t//check if scheme can't handle IRIs\n\t\tif (!options.unicodeSupport && (!schemeHandler || !schemeHandler.unicodeSupport)) {\n\t\t\t//if host component is a domain name\n\t\t\tif (components.host && (options.domainHost || (schemeHandler && schemeHandler.domainHost))) {\n\t\t\t\t//convert Unicode IDN -> ASCII IDN\n\t\t\t\ttry {\n\t\t\t\t\tcomponents.host = punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase());\n\t\t\t\t} catch (e) {\n\t\t\t\t\tcomponents.error = components.error || \"Host's domain name can not be converted to ASCII via punycode: \" + e;\n\t\t\t\t}\n\t\t\t}\n\t\t\t//convert IRI -> URI\n\t\t\t_normalizeComponentEncoding(components, URI_PROTOCOL);\n\t\t} else {\n\t\t\t//normalize encodings\n\t\t\t_normalizeComponentEncoding(components, protocol);\n\t\t}\n\n\t\t//perform scheme specific parsing\n\t\tif (schemeHandler && schemeHandler.parse) {\n\t\t\tschemeHandler.parse(components, options);\n\t\t}\n\t} else {\n\t\tcomponents.error = components.error || \"URI can not be parsed.\";\n\t}\n\n\treturn components;\n};\n\nfunction _recomposeAuthority(components:URIComponents, options:URIOptions):string|undefined {\n\tconst protocol = (options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL);\n\tconst uriTokens:Array = [];\n\n\tif (components.userinfo !== undefined) {\n\t\turiTokens.push(components.userinfo);\n\t\turiTokens.push(\"@\");\n\t}\n\n\tif (components.host !== undefined) {\n\t\t//normalize IP hosts, add brackets and escape zone separator for IPv6\n\t\turiTokens.push(_normalizeIPv6(_normalizeIPv4(String(components.host), protocol), protocol).replace(protocol.IPV6ADDRESS, (_, $1, $2) => \"[\" + $1 + ($2 ? \"%25\" + $2 : \"\") + \"]\"));\n\t}\n\n\tif (typeof components.port === \"number\" || typeof components.port === \"string\") {\n\t\turiTokens.push(\":\");\n\t\turiTokens.push(String(components.port));\n\t}\n\n\treturn uriTokens.length ? uriTokens.join(\"\") : undefined;\n};\n\nconst RDS1 = /^\\.\\.?\\//;\nconst RDS2 = /^\\/\\.(\\/|$)/;\nconst RDS3 = /^\\/\\.\\.(\\/|$)/;\nconst RDS4 = /^\\.\\.?$/;\nconst RDS5 = /^\\/?(?:.|\\n)*?(?=\\/|$)/;\n\nexport function removeDotSegments(input:string):string {\n\tconst output:Array = [];\n\n\twhile (input.length) {\n\t\tif (input.match(RDS1)) {\n\t\t\tinput = input.replace(RDS1, \"\");\n\t\t} else if (input.match(RDS2)) {\n\t\t\tinput = input.replace(RDS2, \"/\");\n\t\t} else if (input.match(RDS3)) {\n\t\t\tinput = input.replace(RDS3, \"/\");\n\t\t\toutput.pop();\n\t\t} else if (input === \".\" || input === \"..\") {\n\t\t\tinput = \"\";\n\t\t} else {\n\t\t\tconst im = input.match(RDS5);\n\t\t\tif (im) {\n\t\t\t\tconst s = im[0];\n\t\t\t\tinput = input.slice(s.length);\n\t\t\t\toutput.push(s);\n\t\t\t} else {\n\t\t\t\tthrow new Error(\"Unexpected dot segment condition\");\n\t\t\t}\n\t\t}\n\t}\n\n\treturn output.join(\"\");\n};\n\nexport function serialize(components:URIComponents, options:URIOptions = {}):string {\n\tconst protocol = (options.iri ? IRI_PROTOCOL : URI_PROTOCOL);\n\tconst uriTokens:Array = [];\n\n\t//find scheme handler\n\tconst schemeHandler = SCHEMES[(options.scheme || components.scheme || \"\").toLowerCase()];\n\n\t//perform scheme specific serialization\n\tif (schemeHandler && schemeHandler.serialize) schemeHandler.serialize(components, options);\n\n\tif (components.host) {\n\t\t//if host component is an IPv6 address\n\t\tif (protocol.IPV6ADDRESS.test(components.host)) {\n\t\t\t//TODO: normalize IPv6 address as per RFC 5952\n\t\t}\n\n\t\t//if host component is a domain name\n\t\telse if (options.domainHost || (schemeHandler && schemeHandler.domainHost)) {\n\t\t\t//convert IDN via punycode\n\t\t\ttry {\n\t\t\t\tcomponents.host = (!options.iri ? punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase()) : punycode.toUnicode(components.host));\n\t\t\t} catch (e) {\n\t\t\t\tcomponents.error = components.error || \"Host's domain name can not be converted to \" + (!options.iri ? \"ASCII\" : \"Unicode\") + \" via punycode: \" + e;\n\t\t\t}\n\t\t}\n\t}\n\n\t//normalize encoding\n\t_normalizeComponentEncoding(components, protocol);\n\n\tif (options.reference !== \"suffix\" && components.scheme) {\n\t\turiTokens.push(components.scheme);\n\t\turiTokens.push(\":\");\n\t}\n\n\tconst authority = _recomposeAuthority(components, options);\n\tif (authority !== undefined) {\n\t\tif (options.reference !== \"suffix\") {\n\t\t\turiTokens.push(\"//\");\n\t\t}\n\n\t\turiTokens.push(authority);\n\n\t\tif (components.path && components.path.charAt(0) !== \"/\") {\n\t\t\turiTokens.push(\"/\");\n\t\t}\n\t}\n\n\tif (components.path !== undefined) {\n\t\tlet s = components.path;\n\n\t\tif (!options.absolutePath && (!schemeHandler || !schemeHandler.absolutePath)) {\n\t\t\ts = removeDotSegments(s);\n\t\t}\n\n\t\tif (authority === undefined) {\n\t\t\ts = s.replace(/^\\/\\//, \"/%2F\"); //don't allow the path to start with \"//\"\n\t\t}\n\n\t\turiTokens.push(s);\n\t}\n\n\tif (components.query !== undefined) {\n\t\turiTokens.push(\"?\");\n\t\turiTokens.push(components.query);\n\t}\n\n\tif (components.fragment !== undefined) {\n\t\turiTokens.push(\"#\");\n\t\turiTokens.push(components.fragment);\n\t}\n\n\treturn uriTokens.join(\"\"); //merge tokens into a string\n};\n\nexport function resolveComponents(base:URIComponents, relative:URIComponents, options:URIOptions = {}, skipNormalization?:boolean):URIComponents {\n\tconst target:URIComponents = {};\n\n\tif (!skipNormalization) {\n\t\tbase = parse(serialize(base, options), options); //normalize base components\n\t\trelative = parse(serialize(relative, options), options); //normalize relative components\n\t}\n\toptions = options || {};\n\n\tif (!options.tolerant && relative.scheme) {\n\t\ttarget.scheme = relative.scheme;\n\t\t//target.authority = relative.authority;\n\t\ttarget.userinfo = relative.userinfo;\n\t\ttarget.host = relative.host;\n\t\ttarget.port = relative.port;\n\t\ttarget.path = removeDotSegments(relative.path || \"\");\n\t\ttarget.query = relative.query;\n\t} else {\n\t\tif (relative.userinfo !== undefined || relative.host !== undefined || relative.port !== undefined) {\n\t\t\t//target.authority = relative.authority;\n\t\t\ttarget.userinfo = relative.userinfo;\n\t\t\ttarget.host = relative.host;\n\t\t\ttarget.port = relative.port;\n\t\t\ttarget.path = removeDotSegments(relative.path || \"\");\n\t\t\ttarget.query = relative.query;\n\t\t} else {\n\t\t\tif (!relative.path) {\n\t\t\t\ttarget.path = base.path;\n\t\t\t\tif (relative.query !== undefined) {\n\t\t\t\t\ttarget.query = relative.query;\n\t\t\t\t} else {\n\t\t\t\t\ttarget.query = base.query;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (relative.path.charAt(0) === \"/\") {\n\t\t\t\t\ttarget.path = removeDotSegments(relative.path);\n\t\t\t\t} else {\n\t\t\t\t\tif ((base.userinfo !== undefined || base.host !== undefined || base.port !== undefined) && !base.path) {\n\t\t\t\t\t\ttarget.path = \"/\" + relative.path;\n\t\t\t\t\t} else if (!base.path) {\n\t\t\t\t\t\ttarget.path = relative.path;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttarget.path = base.path.slice(0, base.path.lastIndexOf(\"/\") + 1) + relative.path;\n\t\t\t\t\t}\n\t\t\t\t\ttarget.path = removeDotSegments(target.path);\n\t\t\t\t}\n\t\t\t\ttarget.query = relative.query;\n\t\t\t}\n\t\t\t//target.authority = base.authority;\n\t\t\ttarget.userinfo = base.userinfo;\n\t\t\ttarget.host = base.host;\n\t\t\ttarget.port = base.port;\n\t\t}\n\t\ttarget.scheme = base.scheme;\n\t}\n\n\ttarget.fragment = relative.fragment;\n\n\treturn target;\n};\n\nexport function resolve(baseURI:string, relativeURI:string, options?:URIOptions):string {\n\tconst schemelessOptions = assign({ scheme : 'null' }, options);\n\treturn serialize(resolveComponents(parse(baseURI, schemelessOptions), parse(relativeURI, schemelessOptions), schemelessOptions, true), schemelessOptions);\n};\n\nexport function normalize(uri:string, options?:URIOptions):string;\nexport function normalize(uri:URIComponents, options?:URIOptions):URIComponents;\nexport function normalize(uri:any, options?:URIOptions):any {\n\tif (typeof uri === \"string\") {\n\t\turi = serialize(parse(uri, options), options);\n\t} else if (typeOf(uri) === \"object\") {\n\t\turi = parse(serialize(uri, options), options);\n\t}\n\n\treturn uri;\n};\n\nexport function equal(uriA:string, uriB:string, options?: URIOptions):boolean;\nexport function equal(uriA:URIComponents, uriB:URIComponents, options?:URIOptions):boolean;\nexport function equal(uriA:any, uriB:any, options?:URIOptions):boolean {\n\tif (typeof uriA === \"string\") {\n\t\turiA = serialize(parse(uriA, options), options);\n\t} else if (typeOf(uriA) === \"object\") {\n\t\turiA = serialize(uriA, options);\n\t}\n\n\tif (typeof uriB === \"string\") {\n\t\turiB = serialize(parse(uriB, options), options);\n\t} else if (typeOf(uriB) === \"object\") {\n\t\turiB = serialize(uriB, options);\n\t}\n\n\treturn uriA === uriB;\n};\n\nexport function escapeComponent(str:string, options?:URIOptions):string {\n\treturn str && str.toString().replace((!options || !options.iri ? URI_PROTOCOL.ESCAPE : IRI_PROTOCOL.ESCAPE), pctEncChar);\n};\n\nexport function unescapeComponent(str:string, options?:URIOptions):string {\n\treturn str && str.toString().replace((!options || !options.iri ? URI_PROTOCOL.PCT_ENCODED : IRI_PROTOCOL.PCT_ENCODED), pctDecChars);\n};\n", "'use strict';\n\n/** Highest positive signed 32-bit float value */\nconst maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\n\n/** Bootstring parameters */\nconst base = 36;\nconst tMin = 1;\nconst tMax = 26;\nconst skew = 38;\nconst damp = 700;\nconst initialBias = 72;\nconst initialN = 128; // 0x80\nconst delimiter = '-'; // '\\x2D'\n\n/** Regular expressions */\nconst regexPunycode = /^xn--/;\nconst regexNonASCII = /[^\\0-\\x7E]/; // non-ASCII chars\nconst regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\n\n/** Error messages */\nconst errors = {\n\t'overflow': 'Overflow: input needs wider integers to process',\n\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t'invalid-input': 'Invalid input'\n};\n\n/** Convenience shortcuts */\nconst baseMinusTMin = base - tMin;\nconst floor = Math.floor;\nconst stringFromCharCode = String.fromCharCode;\n\n/*--------------------------------------------------------------------------*/\n\n/**\n * A generic error utility function.\n * @private\n * @param {String} type The error type.\n * @returns {Error} Throws a `RangeError` with the applicable error message.\n */\nfunction error(type) {\n\tthrow new RangeError(errors[type]);\n}\n\n/**\n * A generic `Array#map` utility function.\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function that gets called for every array\n * item.\n * @returns {Array} A new array of values returned by the callback function.\n */\nfunction map(array, fn) {\n\tconst result = [];\n\tlet length = array.length;\n\twhile (length--) {\n\t\tresult[length] = fn(array[length]);\n\t}\n\treturn result;\n}\n\n/**\n * A simple `Array#map`-like wrapper to work with domain name strings or email\n * addresses.\n * @private\n * @param {String} domain The domain name or email address.\n * @param {Function} callback The function that gets called for every\n * character.\n * @returns {Array} A new string of characters returned by the callback\n * function.\n */\nfunction mapDomain(string, fn) {\n\tconst parts = string.split('@');\n\tlet result = '';\n\tif (parts.length > 1) {\n\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t// the local part (i.e. everything up to `@`) intact.\n\t\tresult = parts[0] + '@';\n\t\tstring = parts[1];\n\t}\n\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\tstring = string.replace(regexSeparators, '\\x2E');\n\tconst labels = string.split('.');\n\tconst encoded = map(labels, fn).join('.');\n\treturn result + encoded;\n}\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n * @see `punycode.ucs2.encode`\n * @see \n * @memberOf punycode.ucs2\n * @name decode\n * @param {String} string The Unicode input string (UCS-2).\n * @returns {Array} The new array of code points.\n */\nfunction ucs2decode(string) {\n\tconst output = [];\n\tlet counter = 0;\n\tconst length = string.length;\n\twhile (counter < length) {\n\t\tconst value = string.charCodeAt(counter++);\n\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t// It's a high surrogate, and there is a next character.\n\t\t\tconst extra = string.charCodeAt(counter++);\n\t\t\tif ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t} else {\n\t\t\t\t// It's an unmatched surrogate; only append this code unit, in case the\n\t\t\t\t// next code unit is the high surrogate of a surrogate pair.\n\t\t\t\toutput.push(value);\n\t\t\t\tcounter--;\n\t\t\t}\n\t\t} else {\n\t\t\toutput.push(value);\n\t\t}\n\t}\n\treturn output;\n}\n\n/**\n * Creates a string based on an array of numeric code points.\n * @see `punycode.ucs2.decode`\n * @memberOf punycode.ucs2\n * @name encode\n * @param {Array} codePoints The array of numeric code points.\n * @returns {String} The new Unicode string (UCS-2).\n */\nconst ucs2encode = array => String.fromCodePoint(...array);\n\n/**\n * Converts a basic code point into a digit/integer.\n * @see `digitToBasic()`\n * @private\n * @param {Number} codePoint The basic numeric code point value.\n * @returns {Number} The numeric value of a basic code point (for use in\n * representing integers) in the range `0` to `base - 1`, or `base` if\n * the code point does not represent a value.\n */\nconst basicToDigit = function(codePoint) {\n\tif (codePoint - 0x30 < 0x0A) {\n\t\treturn codePoint - 0x16;\n\t}\n\tif (codePoint - 0x41 < 0x1A) {\n\t\treturn codePoint - 0x41;\n\t}\n\tif (codePoint - 0x61 < 0x1A) {\n\t\treturn codePoint - 0x61;\n\t}\n\treturn base;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n * @see `basicToDigit()`\n * @private\n * @param {Number} digit The numeric value of a basic code point.\n * @returns {Number} The basic code point whose value (when used for\n * representing integers) is `digit`, which needs to be in the range\n * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n * used; else, the lowercase form is used. The behavior is undefined\n * if `flag` is non-zero and `digit` has no uppercase form.\n */\nconst digitToBasic = function(digit, flag) {\n\t// 0..25 map to ASCII a..z or A..Z\n\t// 26..35 map to ASCII 0..9\n\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n * @private\n */\nconst adapt = function(delta, numPoints, firstTime) {\n\tlet k = 0;\n\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\tdelta += floor(delta / numPoints);\n\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\tdelta = floor(delta / baseMinusTMin);\n\t}\n\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n * symbols.\n * @memberOf punycode\n * @param {String} input The Punycode string of ASCII-only symbols.\n * @returns {String} The resulting string of Unicode symbols.\n */\nconst decode = function(input) {\n\t// Don't use UCS-2.\n\tconst output = [];\n\tconst inputLength = input.length;\n\tlet i = 0;\n\tlet n = initialN;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points: let `basic` be the number of input code\n\t// points before the last delimiter, or `0` if there is none, then copy\n\t// the first basic code points to the output.\n\n\tlet basic = input.lastIndexOf(delimiter);\n\tif (basic < 0) {\n\t\tbasic = 0;\n\t}\n\n\tfor (let j = 0; j < basic; ++j) {\n\t\t// if it's not a basic code point\n\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\terror('not-basic');\n\t\t}\n\t\toutput.push(input.charCodeAt(j));\n\t}\n\n\t// Main decoding loop: start just after the last delimiter if any basic code\n\t// points were copied; start at the beginning otherwise.\n\n\tfor (let index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t// `index` is the index of the next character to be consumed.\n\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t// which gets added to `i`. The overflow checking is easier\n\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t// value at the end to obtain `delta`.\n\t\tlet oldi = i;\n\t\tfor (let w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\tif (index >= inputLength) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\n\t\t\tconst digit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\ti += digit * w;\n\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\tif (digit < t) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst baseMinusT = base - t;\n\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tw *= baseMinusT;\n\n\t\t}\n\n\t\tconst out = output.length + 1;\n\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t// incrementing `n` each time, so we'll fix that now:\n\t\tif (floor(i / out) > maxInt - n) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tn += floor(i / out);\n\t\ti %= out;\n\n\t\t// Insert `n` at position `i` of the output.\n\t\toutput.splice(i++, 0, n);\n\n\t}\n\n\treturn String.fromCodePoint(...output);\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n * @memberOf punycode\n * @param {String} input The string of Unicode symbols.\n * @returns {String} The resulting Punycode string of ASCII-only symbols.\n */\nconst encode = function(input) {\n\tconst output = [];\n\n\t// Convert the input in UCS-2 to an array of Unicode code points.\n\tinput = ucs2decode(input);\n\n\t// Cache the length.\n\tlet inputLength = input.length;\n\n\t// Initialize the state.\n\tlet n = initialN;\n\tlet delta = 0;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points.\n\tfor (const currentValue of input) {\n\t\tif (currentValue < 0x80) {\n\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t}\n\t}\n\n\tlet basicLength = output.length;\n\tlet handledCPCount = basicLength;\n\n\t// `handledCPCount` is the number of code points that have been handled;\n\t// `basicLength` is the number of basic code points.\n\n\t// Finish the basic string with a delimiter unless it's empty.\n\tif (basicLength) {\n\t\toutput.push(delimiter);\n\t}\n\n\t// Main encoding loop:\n\twhile (handledCPCount < inputLength) {\n\n\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t// larger one:\n\t\tlet m = maxInt;\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\tm = currentValue;\n\t\t\t}\n\t\t}\n\n\t\t// Increase `delta` enough to advance the decoder's state to ,\n\t\t// but guard against overflow.\n\t\tconst handledCPCountPlusOne = handledCPCount + 1;\n\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\tn = m;\n\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\t\t\tif (currentValue == n) {\n\t\t\t\t// Represent delta as a generalized variable-length integer.\n\t\t\t\tlet q = delta;\n\t\t\t\tfor (let k = base; /* no condition */; k += base) {\n\t\t\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tconst qMinusT = q - t;\n\t\t\t\t\tconst baseMinusT = base - t;\n\t\t\t\t\toutput.push(\n\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t);\n\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t}\n\n\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\tdelta = 0;\n\t\t\t\t++handledCPCount;\n\t\t\t}\n\t\t}\n\n\t\t++delta;\n\t\t++n;\n\n\t}\n\treturn output.join('');\n};\n\n/**\n * Converts a Punycode string representing a domain name or an email address\n * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n * it doesn't matter if you call it on a string that has already been\n * converted to Unicode.\n * @memberOf punycode\n * @param {String} input The Punycoded domain name or email address to\n * convert to Unicode.\n * @returns {String} The Unicode representation of the given Punycode\n * string.\n */\nconst toUnicode = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexPunycode.test(string)\n\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t: string;\n\t});\n};\n\n/**\n * Converts a Unicode string representing a domain name or an email address to\n * Punycode. Only the non-ASCII parts of the domain name will be converted,\n * i.e. it doesn't matter if you call it with a domain that's already in\n * ASCII.\n * @memberOf punycode\n * @param {String} input The domain name or email address to convert, as a\n * Unicode string.\n * @returns {String} The Punycode representation of the given domain name or\n * email address.\n */\nconst toASCII = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexNonASCII.test(string)\n\t\t\t? 'xn--' + encode(string)\n\t\t\t: string;\n\t});\n};\n\n/*--------------------------------------------------------------------------*/\n\n/** Define the public API */\nconst punycode = {\n\t/**\n\t * A string representing the current Punycode.js version number.\n\t * @memberOf punycode\n\t * @type String\n\t */\n\t'version': '2.1.0',\n\t/**\n\t * An object of methods to convert from JavaScript's internal character\n\t * representation (UCS-2) to Unicode code points, and back.\n\t * @see \n\t * @memberOf punycode\n\t * @type Object\n\t */\n\t'ucs2': {\n\t\t'decode': ucs2decode,\n\t\t'encode': ucs2encode\n\t},\n\t'decode': decode,\n\t'encode': encode,\n\t'toASCII': toASCII,\n\t'toUnicode': toUnicode\n};\n\nexport default punycode;\n", "import { URIRegExps } from \"./uri\";\nimport { buildExps } from \"./regexps-uri\";\n\nexport default buildExps(true);\n", "import { URIRegExps } from \"./uri\";\nimport { merge, subexp } from \"./util\";\n\nexport function buildExps(isIRI:boolean):URIRegExps {\n\tconst\n\t\tALPHA$$ = \"[A-Za-z]\",\n\t\tCR$ = \"[\\\\x0D]\",\n\t\tDIGIT$$ = \"[0-9]\",\n\t\tDQUOTE$$ = \"[\\\\x22]\",\n\t\tHEXDIG$$ = merge(DIGIT$$, \"[A-Fa-f]\"), //case-insensitive\n\t\tLF$$ = \"[\\\\x0A]\",\n\t\tSP$$ = \"[\\\\x20]\",\n\t\tPCT_ENCODED$ = subexp(subexp(\"%[EFef]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%[89A-Fa-f]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%\" + HEXDIG$$ + HEXDIG$$)), //expanded\n\t\tGEN_DELIMS$$ = \"[\\\\:\\\\/\\\\?\\\\#\\\\[\\\\]\\\\@]\",\n\t\tSUB_DELIMS$$ = \"[\\\\!\\\\$\\\\&\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\;\\\\=]\",\n\t\tRESERVED$$ = merge(GEN_DELIMS$$, SUB_DELIMS$$),\n\t\tUCSCHAR$$ = isIRI ? \"[\\\\xA0-\\\\u200D\\\\u2010-\\\\u2029\\\\u202F-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFEF]\" : \"[]\", //subset, excludes bidi control characters\n\t\tIPRIVATE$$ = isIRI ? \"[\\\\uE000-\\\\uF8FF]\" : \"[]\", //subset\n\t\tUNRESERVED$$ = merge(ALPHA$$, DIGIT$$, \"[\\\\-\\\\.\\\\_\\\\~]\", UCSCHAR$$),\n\t\tSCHEME$ = subexp(ALPHA$$ + merge(ALPHA$$, DIGIT$$, \"[\\\\+\\\\-\\\\.]\") + \"*\"),\n\t\tUSERINFO$ = subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:]\")) + \"*\"),\n\t\tDEC_OCTET$ = subexp(subexp(\"25[0-5]\") + \"|\" + subexp(\"2[0-4]\" + DIGIT$$) + \"|\" + subexp(\"1\" + DIGIT$$ + DIGIT$$) + \"|\" + subexp(\"[1-9]\" + DIGIT$$) + \"|\" + DIGIT$$),\n\t\tDEC_OCTET_RELAXED$ = subexp(subexp(\"25[0-5]\") + \"|\" + subexp(\"2[0-4]\" + DIGIT$$) + \"|\" + subexp(\"1\" + DIGIT$$ + DIGIT$$) + \"|\" + subexp(\"0?[1-9]\" + DIGIT$$) + \"|0?0?\" + DIGIT$$), //relaxed parsing rules\n\t\tIPV4ADDRESS$ = subexp(DEC_OCTET_RELAXED$ + \"\\\\.\" + DEC_OCTET_RELAXED$ + \"\\\\.\" + DEC_OCTET_RELAXED$ + \"\\\\.\" + DEC_OCTET_RELAXED$),\n\t\tH16$ = subexp(HEXDIG$$ + \"{1,4}\"),\n\t\tLS32$ = subexp(subexp(H16$ + \"\\\\:\" + H16$) + \"|\" + IPV4ADDRESS$),\n\t\tIPV6ADDRESS1$ = subexp( subexp(H16$ + \"\\\\:\") + \"{6}\" + LS32$), // 6( h16 \":\" ) ls32\n\t\tIPV6ADDRESS2$ = subexp( \"\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{5}\" + LS32$), // \"::\" 5( h16 \":\" ) ls32\n\t\tIPV6ADDRESS3$ = subexp(subexp( H16$) + \"?\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{4}\" + LS32$), //[ h16 ] \"::\" 4( h16 \":\" ) ls32\n\t\tIPV6ADDRESS4$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,1}\" + H16$) + \"?\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{3}\" + LS32$), //[ *1( h16 \":\" ) h16 ] \"::\" 3( h16 \":\" ) ls32\n\t\tIPV6ADDRESS5$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,2}\" + H16$) + \"?\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{2}\" + LS32$), //[ *2( h16 \":\" ) h16 ] \"::\" 2( h16 \":\" ) ls32\n\t\tIPV6ADDRESS6$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,3}\" + H16$) + \"?\\\\:\\\\:\" + H16$ + \"\\\\:\" + LS32$), //[ *3( h16 \":\" ) h16 ] \"::\" h16 \":\" ls32\n\t\tIPV6ADDRESS7$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,4}\" + H16$) + \"?\\\\:\\\\:\" + LS32$), //[ *4( h16 \":\" ) h16 ] \"::\" ls32\n\t\tIPV6ADDRESS8$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,5}\" + H16$) + \"?\\\\:\\\\:\" + H16$ ), //[ *5( h16 \":\" ) h16 ] \"::\" h16\n\t\tIPV6ADDRESS9$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,6}\" + H16$) + \"?\\\\:\\\\:\" ), //[ *6( h16 \":\" ) h16 ] \"::\"\n\t\tIPV6ADDRESS$ = subexp([IPV6ADDRESS1$, IPV6ADDRESS2$, IPV6ADDRESS3$, IPV6ADDRESS4$, IPV6ADDRESS5$, IPV6ADDRESS6$, IPV6ADDRESS7$, IPV6ADDRESS8$, IPV6ADDRESS9$].join(\"|\")),\n\t\tZONEID$ = subexp(subexp(UNRESERVED$$ + \"|\" + PCT_ENCODED$) + \"+\"), //RFC 6874\n\t\tIPV6ADDRZ$ = subexp(IPV6ADDRESS$ + \"\\\\%25\" + ZONEID$), //RFC 6874\n\t\tIPV6ADDRZ_RELAXED$ = subexp(IPV6ADDRESS$ + subexp(\"\\\\%25|\\\\%(?!\" + HEXDIG$$ + \"{2})\") + ZONEID$), //RFC 6874, with relaxed parsing rules\n\t\tIPVFUTURE$ = subexp(\"[vV]\" + HEXDIG$$ + \"+\\\\.\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:]\") + \"+\"),\n\t\tIP_LITERAL$ = subexp(\"\\\\[\" + subexp(IPV6ADDRZ_RELAXED$ + \"|\" + IPV6ADDRESS$ + \"|\" + IPVFUTURE$) + \"\\\\]\"), //RFC 6874\n\t\tREG_NAME$ = subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$)) + \"*\"),\n\t\tHOST$ = subexp(IP_LITERAL$ + \"|\" + IPV4ADDRESS$ + \"(?!\" + REG_NAME$ + \")\" + \"|\" + REG_NAME$),\n\t\tPORT$ = subexp(DIGIT$$ + \"*\"),\n\t\tAUTHORITY$ = subexp(subexp(USERINFO$ + \"@\") + \"?\" + HOST$ + subexp(\"\\\\:\" + PORT$) + \"?\"),\n\t\tPCHAR$ = subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@]\")),\n\t\tSEGMENT$ = subexp(PCHAR$ + \"*\"),\n\t\tSEGMENT_NZ$ = subexp(PCHAR$ + \"+\"),\n\t\tSEGMENT_NZ_NC$ = subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\@]\")) + \"+\"),\n\t\tPATH_ABEMPTY$ = subexp(subexp(\"\\\\/\" + SEGMENT$) + \"*\"),\n\t\tPATH_ABSOLUTE$ = subexp(\"\\\\/\" + subexp(SEGMENT_NZ$ + PATH_ABEMPTY$) + \"?\"), //simplified\n\t\tPATH_NOSCHEME$ = subexp(SEGMENT_NZ_NC$ + PATH_ABEMPTY$), //simplified\n\t\tPATH_ROOTLESS$ = subexp(SEGMENT_NZ$ + PATH_ABEMPTY$), //simplified\n\t\tPATH_EMPTY$ = \"(?!\" + PCHAR$ + \")\",\n\t\tPATH$ = subexp(PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_NOSCHEME$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$),\n\t\tQUERY$ = subexp(subexp(PCHAR$ + \"|\" + merge(\"[\\\\/\\\\?]\", IPRIVATE$$)) + \"*\"),\n\t\tFRAGMENT$ = subexp(subexp(PCHAR$ + \"|[\\\\/\\\\?]\") + \"*\"),\n\t\tHIER_PART$ = subexp(subexp(\"\\\\/\\\\/\" + AUTHORITY$ + PATH_ABEMPTY$) + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$),\n\t\tURI$ = subexp(SCHEME$ + \"\\\\:\" + HIER_PART$ + subexp(\"\\\\?\" + QUERY$) + \"?\" + subexp(\"\\\\#\" + FRAGMENT$) + \"?\"),\n\t\tRELATIVE_PART$ = subexp(subexp(\"\\\\/\\\\/\" + AUTHORITY$ + PATH_ABEMPTY$) + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_NOSCHEME$ + \"|\" + PATH_EMPTY$),\n\t\tRELATIVE$ = subexp(RELATIVE_PART$ + subexp(\"\\\\?\" + QUERY$) + \"?\" + subexp(\"\\\\#\" + FRAGMENT$) + \"?\"),\n\t\tURI_REFERENCE$ = subexp(URI$ + \"|\" + RELATIVE$),\n\t\tABSOLUTE_URI$ = subexp(SCHEME$ + \"\\\\:\" + HIER_PART$ + subexp(\"\\\\?\" + QUERY$) + \"?\"),\n\n\t\tGENERIC_REF$ = \"^(\" + SCHEME$ + \")\\\\:\" + subexp(subexp(\"\\\\/\\\\/(\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?)\") + \"?(\" + PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$ + \")\") + subexp(\"\\\\?(\" + QUERY$ + \")\") + \"?\" + subexp(\"\\\\#(\" + FRAGMENT$ + \")\") + \"?$\",\n\t\tRELATIVE_REF$ = \"^(){0}\" + subexp(subexp(\"\\\\/\\\\/(\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?)\") + \"?(\" + PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_NOSCHEME$ + \"|\" + PATH_EMPTY$ + \")\") + subexp(\"\\\\?(\" + QUERY$ + \")\") + \"?\" + subexp(\"\\\\#(\" + FRAGMENT$ + \")\") + \"?$\",\n\t\tABSOLUTE_REF$ = \"^(\" + SCHEME$ + \")\\\\:\" + subexp(subexp(\"\\\\/\\\\/(\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?)\") + \"?(\" + PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$ + \")\") + subexp(\"\\\\?(\" + QUERY$ + \")\") + \"?$\",\n\t\tSAMEDOC_REF$ = \"^\" + subexp(\"\\\\#(\" + FRAGMENT$ + \")\") + \"?$\",\n\t\tAUTHORITY_REF$ = \"^\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?$\"\n\t;\n\n\treturn {\n\t\tNOT_SCHEME : new RegExp(merge(\"[^]\", ALPHA$$, DIGIT$$, \"[\\\\+\\\\-\\\\.]\"), \"g\"),\n\t\tNOT_USERINFO : new RegExp(merge(\"[^\\\\%\\\\:]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tNOT_HOST : new RegExp(merge(\"[^\\\\%\\\\[\\\\]\\\\:]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tNOT_PATH : new RegExp(merge(\"[^\\\\%\\\\/\\\\:\\\\@]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tNOT_PATH_NOSCHEME : new RegExp(merge(\"[^\\\\%\\\\/\\\\@]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tNOT_QUERY : new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@\\\\/\\\\?]\", IPRIVATE$$), \"g\"),\n\t\tNOT_FRAGMENT : new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@\\\\/\\\\?]\"), \"g\"),\n\t\tESCAPE : new RegExp(merge(\"[^]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tUNRESERVED : new RegExp(UNRESERVED$$, \"g\"),\n\t\tOTHER_CHARS : new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, RESERVED$$), \"g\"),\n\t\tPCT_ENCODED : new RegExp(PCT_ENCODED$, \"g\"),\n\t\tIPV4ADDRESS : new RegExp(\"^(\" + IPV4ADDRESS$ + \")$\"),\n\t\tIPV6ADDRESS : new RegExp(\"^\\\\[?(\" + IPV6ADDRESS$ + \")\" + subexp(subexp(\"\\\\%25|\\\\%(?!\" + HEXDIG$$ + \"{2})\") + \"(\" + ZONEID$ + \")\") + \"?\\\\]?$\") //RFC 6874, with relaxed parsing rules\n\t};\n}\n\nexport default buildExps(false);\n", "export function merge(...sets:Array):string {\n\tif (sets.length > 1) {\n\t\tsets[0] = sets[0].slice(0, -1);\n\t\tconst xl = sets.length - 1;\n\t\tfor (let x = 1; x < xl; ++x) {\n\t\t\tsets[x] = sets[x].slice(1, -1);\n\t\t}\n\t\tsets[xl] = sets[xl].slice(1);\n\t\treturn sets.join('');\n\t} else {\n\t\treturn sets[0];\n\t}\n}\n\nexport function subexp(str:string):string {\n\treturn \"(?:\" + str + \")\";\n}\n\nexport function typeOf(o:any):string {\n\treturn o === undefined ? \"undefined\" : (o === null ? \"null\" : Object.prototype.toString.call(o).split(\" \").pop().split(\"]\").shift().toLowerCase());\n}\n\nexport function toUpperCase(str:string):string {\n\treturn str.toUpperCase();\n}\n\nexport function toArray(obj:any):Array {\n\treturn obj !== undefined && obj !== null ? (obj instanceof Array ? obj : (typeof obj.length !== \"number\" || obj.split || obj.setInterval || obj.call ? [obj] : Array.prototype.slice.call(obj))) : [];\n}\n\n\nexport function assign(target: object, source: any): any {\n\tconst obj = target as any;\n\tif (source) {\n\t\tfor (const key in source) {\n\t\t\tobj[key] = source[key];\n\t\t}\n\t}\n\treturn obj;\n}", "'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n", "'use strict';\n\n// https://mathiasbynens.be/notes/javascript-encoding\n// https://github.com/bestiejs/punycode.js - punycode.ucs2.decode\nmodule.exports = function ucs2length(str) {\n var length = 0\n , len = str.length\n , pos = 0\n , value;\n while (pos < len) {\n length++;\n value = str.charCodeAt(pos++);\n if (value >= 0xD800 && value <= 0xDBFF && pos < len) {\n // high surrogate, and there is a next character\n value = str.charCodeAt(pos);\n if ((value & 0xFC00) == 0xDC00) pos++; // low surrogate\n }\n }\n return length;\n};\n", "'use strict';\n\n\nmodule.exports = {\n copy: copy,\n checkDataType: checkDataType,\n checkDataTypes: checkDataTypes,\n coerceToTypes: coerceToTypes,\n toHash: toHash,\n getProperty: getProperty,\n escapeQuotes: escapeQuotes,\n equal: require('fast-deep-equal'),\n ucs2length: require('./ucs2length'),\n varOccurences: varOccurences,\n varReplace: varReplace,\n schemaHasRules: schemaHasRules,\n schemaHasRulesExcept: schemaHasRulesExcept,\n schemaUnknownRules: schemaUnknownRules,\n toQuotedString: toQuotedString,\n getPathExpr: getPathExpr,\n getPath: getPath,\n getData: getData,\n unescapeFragment: unescapeFragment,\n unescapeJsonPointer: unescapeJsonPointer,\n escapeFragment: escapeFragment,\n escapeJsonPointer: escapeJsonPointer\n};\n\n\nfunction copy(o, to) {\n to = to || {};\n for (var key in o) to[key] = o[key];\n return to;\n}\n\n\nfunction checkDataType(dataType, data, strictNumbers, negate) {\n var EQUAL = negate ? ' !== ' : ' === '\n , AND = negate ? ' || ' : ' && '\n , OK = negate ? '!' : ''\n , NOT = negate ? '' : '!';\n switch (dataType) {\n case 'null': return data + EQUAL + 'null';\n case 'array': return OK + 'Array.isArray(' + data + ')';\n case 'object': return '(' + OK + data + AND +\n 'typeof ' + data + EQUAL + '\"object\"' + AND +\n NOT + 'Array.isArray(' + data + '))';\n case 'integer': return '(typeof ' + data + EQUAL + '\"number\"' + AND +\n NOT + '(' + data + ' % 1)' +\n AND + data + EQUAL + data +\n (strictNumbers ? (AND + OK + 'isFinite(' + data + ')') : '') + ')';\n case 'number': return '(typeof ' + data + EQUAL + '\"' + dataType + '\"' +\n (strictNumbers ? (AND + OK + 'isFinite(' + data + ')') : '') + ')';\n default: return 'typeof ' + data + EQUAL + '\"' + dataType + '\"';\n }\n}\n\n\nfunction checkDataTypes(dataTypes, data, strictNumbers) {\n switch (dataTypes.length) {\n case 1: return checkDataType(dataTypes[0], data, strictNumbers, true);\n default:\n var code = '';\n var types = toHash(dataTypes);\n if (types.array && types.object) {\n code = types.null ? '(': '(!' + data + ' || ';\n code += 'typeof ' + data + ' !== \"object\")';\n delete types.null;\n delete types.array;\n delete types.object;\n }\n if (types.number) delete types.integer;\n for (var t in types)\n code += (code ? ' && ' : '' ) + checkDataType(t, data, strictNumbers, true);\n\n return code;\n }\n}\n\n\nvar COERCE_TO_TYPES = toHash([ 'string', 'number', 'integer', 'boolean', 'null' ]);\nfunction coerceToTypes(optionCoerceTypes, dataTypes) {\n if (Array.isArray(dataTypes)) {\n var types = [];\n for (var i=0; i= lvl) throw new Error('Cannot access property/index ' + up + ' levels up, current level is ' + lvl);\n return paths[lvl - up];\n }\n\n if (up > lvl) throw new Error('Cannot access data ' + up + ' levels up, current level is ' + lvl);\n data = 'data' + ((lvl - up) || '');\n if (!jsonPointer) return data;\n }\n\n var expr = data;\n var segments = jsonPointer.split('/');\n for (var i=0; i= 0) return { index: index, compiling: true };\n index = this._compilations.length;\n this._compilations[index] = {\n schema: schema,\n root: root,\n baseId: baseId\n };\n return { index: index, compiling: false };\n}\n\n\n/**\n * Removes the schema from the currently compiled list\n * @this Ajv\n * @param {Object} schema schema to compile\n * @param {Object} root root object\n * @param {String} baseId base schema ID\n */\nfunction endCompiling(schema, root, baseId) {\n /* jshint validthis: true */\n var i = compIndex.call(this, schema, root, baseId);\n if (i >= 0) this._compilations.splice(i, 1);\n}\n\n\n/**\n * Index of schema compilation in the currently compiled list\n * @this Ajv\n * @param {Object} schema schema to compile\n * @param {Object} root root object\n * @param {String} baseId base schema ID\n * @return {Integer} compilation index\n */\nfunction compIndex(schema, root, baseId) {\n /* jshint validthis: true */\n for (var i=0; i%\\\\^`{|}]|%[0-9a-f]{2})|\\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\\*)?)*\\})*$/i;\n// For the source: https://gist.github.com/dperini/729294\n// For test cases: https://mathiasbynens.be/demo/url-regex\n// @todo Delete current URL in favour of the commented out URL rule when this issue is fixed https://github.com/eslint/eslint/issues/7983.\n// var URL = /^(?:(?:https?|ftp):\\/\\/)(?:\\S+(?::\\S*)?@)?(?:(?!10(?:\\.\\d{1,3}){3})(?!127(?:\\.\\d{1,3}){3})(?!169\\.254(?:\\.\\d{1,3}){2})(?!192\\.168(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u{00a1}-\\u{ffff}0-9]+-)*[a-z\\u{00a1}-\\u{ffff}0-9]+)(?:\\.(?:[a-z\\u{00a1}-\\u{ffff}0-9]+-)*[a-z\\u{00a1}-\\u{ffff}0-9]+)*(?:\\.(?:[a-z\\u{00a1}-\\u{ffff}]{2,})))(?::\\d{2,5})?(?:\\/[^\\s]*)?$/iu;\nvar URL = /^(?:(?:http[s\\u017F]?|ftp):\\/\\/)(?:(?:[\\0-\\x08\\x0E-\\x1F!-\\x9F\\xA1-\\u167F\\u1681-\\u1FFF\\u200B-\\u2027\\u202A-\\u202E\\u2030-\\u205E\\u2060-\\u2FFF\\u3001-\\uD7FF\\uE000-\\uFEFE\\uFF00-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])+(?::(?:[\\0-\\x08\\x0E-\\x1F!-\\x9F\\xA1-\\u167F\\u1681-\\u1FFF\\u200B-\\u2027\\u202A-\\u202E\\u2030-\\u205E\\u2060-\\u2FFF\\u3001-\\uD7FF\\uE000-\\uFEFE\\uFF00-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])*)?@)?(?:(?!10(?:\\.[0-9]{1,3}){3})(?!127(?:\\.[0-9]{1,3}){3})(?!169\\.254(?:\\.[0-9]{1,3}){2})(?!192\\.168(?:\\.[0-9]{1,3}){2})(?!172\\.(?:1[6-9]|2[0-9]|3[01])(?:\\.[0-9]{1,3}){2})(?:[1-9][0-9]?|1[0-9][0-9]|2[01][0-9]|22[0-3])(?:\\.(?:1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])){2}(?:\\.(?:[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-4]))|(?:(?:(?:[0-9a-z\\xA1-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])+-)*(?:[0-9a-z\\xA1-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])+)(?:\\.(?:(?:[0-9a-z\\xA1-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])+-)*(?:[0-9a-z\\xA1-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])+)*(?:\\.(?:(?:[a-z\\xA1-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]){2,})))(?::[0-9]{2,5})?(?:\\/(?:[\\0-\\x08\\x0E-\\x1F!-\\x9F\\xA1-\\u167F\\u1681-\\u1FFF\\u200B-\\u2027\\u202A-\\u202E\\u2030-\\u205E\\u2060-\\u2FFF\\u3001-\\uD7FF\\uE000-\\uFEFE\\uFF00-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])*)?$/i;\nvar UUID = /^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i;\nvar JSON_POINTER = /^(?:\\/(?:[^~/]|~0|~1)*)*$/;\nvar JSON_POINTER_URI_FRAGMENT = /^#(?:\\/(?:[a-z0-9_\\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i;\nvar RELATIVE_JSON_POINTER = /^(?:0|[1-9][0-9]*)(?:#|(?:\\/(?:[^~/]|~0|~1)*)*)$/;\n\n\nmodule.exports = formats;\n\nfunction formats(mode) {\n mode = mode == 'full' ? 'full' : 'fast';\n return util.copy(formats[mode]);\n}\n\n\nformats.fast = {\n // date: http://tools.ietf.org/html/rfc3339#section-5.6\n date: /^\\d\\d\\d\\d-[0-1]\\d-[0-3]\\d$/,\n // date-time: http://tools.ietf.org/html/rfc3339#section-5.6\n time: /^(?:[0-2]\\d:[0-5]\\d:[0-5]\\d|23:59:60)(?:\\.\\d+)?(?:z|[+-]\\d\\d(?::?\\d\\d)?)?$/i,\n 'date-time': /^\\d\\d\\d\\d-[0-1]\\d-[0-3]\\d[t\\s](?:[0-2]\\d:[0-5]\\d:[0-5]\\d|23:59:60)(?:\\.\\d+)?(?:z|[+-]\\d\\d(?::?\\d\\d)?)$/i,\n // uri: https://github.com/mafintosh/is-my-json-valid/blob/master/formats.js\n uri: /^(?:[a-z][a-z0-9+\\-.]*:)(?:\\/?\\/)?[^\\s]*$/i,\n 'uri-reference': /^(?:(?:[a-z][a-z0-9+\\-.]*:)?\\/?\\/)?(?:[^\\\\\\s#][^\\s#]*)?(?:#[^\\\\\\s]*)?$/i,\n 'uri-template': URITEMPLATE,\n url: URL,\n // email (sources from jsen validator):\n // http://stackoverflow.com/questions/201323/using-a-regular-expression-to-validate-an-email-address#answer-8829363\n // http://www.w3.org/TR/html5/forms.html#valid-e-mail-address (search for 'willful violation')\n email: /^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i,\n hostname: HOSTNAME,\n // optimized https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html\n ipv4: /^(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)$/,\n // optimized http://stackoverflow.com/questions/53497/regular-expression-that-matches-valid-ipv6-addresses\n ipv6: /^\\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(?:%.+)?\\s*$/i,\n regex: regex,\n // uuid: http://tools.ietf.org/html/rfc4122\n uuid: UUID,\n // JSON-pointer: https://tools.ietf.org/html/rfc6901\n // uri fragment: https://tools.ietf.org/html/rfc3986#appendix-A\n 'json-pointer': JSON_POINTER,\n 'json-pointer-uri-fragment': JSON_POINTER_URI_FRAGMENT,\n // relative JSON-pointer: http://tools.ietf.org/html/draft-luff-relative-json-pointer-00\n 'relative-json-pointer': RELATIVE_JSON_POINTER\n};\n\n\nformats.full = {\n date: date,\n time: time,\n 'date-time': date_time,\n uri: uri,\n 'uri-reference': URIREF,\n 'uri-template': URITEMPLATE,\n url: URL,\n email: /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,\n hostname: HOSTNAME,\n ipv4: /^(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)$/,\n ipv6: /^\\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(?:%.+)?\\s*$/i,\n regex: regex,\n uuid: UUID,\n 'json-pointer': JSON_POINTER,\n 'json-pointer-uri-fragment': JSON_POINTER_URI_FRAGMENT,\n 'relative-json-pointer': RELATIVE_JSON_POINTER\n};\n\n\nfunction isLeapYear(year) {\n // https://tools.ietf.org/html/rfc3339#appendix-C\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n}\n\n\nfunction date(str) {\n // full-date from http://tools.ietf.org/html/rfc3339#section-5.6\n var matches = str.match(DATE);\n if (!matches) return false;\n\n var year = +matches[1];\n var month = +matches[2];\n var day = +matches[3];\n\n return month >= 1 && month <= 12 && day >= 1 &&\n day <= (month == 2 && isLeapYear(year) ? 29 : DAYS[month]);\n}\n\n\nfunction time(str, full) {\n var matches = str.match(TIME);\n if (!matches) return false;\n\n var hour = matches[1];\n var minute = matches[2];\n var second = matches[3];\n var timeZone = matches[5];\n return ((hour <= 23 && minute <= 59 && second <= 59) ||\n (hour == 23 && minute == 59 && second == 60)) &&\n (!full || timeZone);\n}\n\n\nvar DATE_TIME_SEPARATOR = /t|\\s/i;\nfunction date_time(str) {\n // http://tools.ietf.org/html/rfc3339#section-5.6\n var dateTime = str.split(DATE_TIME_SEPARATOR);\n return dateTime.length == 2 && date(dateTime[0]) && time(dateTime[1], true);\n}\n\n\nvar NOT_URI_FRAGMENT = /\\/|:/;\nfunction uri(str) {\n // http://jmrware.com/articles/2009/uri_regexp/URI_regex.html + optional protocol + required \".\"\n return NOT_URI_FRAGMENT.test(str) && URI.test(str);\n}\n\n\nvar Z_ANCHOR = /[^\\\\]\\\\Z/;\nfunction regex(str) {\n if (Z_ANCHOR.test(str)) return false;\n try {\n new RegExp(str);\n return true;\n } catch(e) {\n return false;\n }\n}\n", "'use strict';\nmodule.exports = function generate_ref(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $valid = 'valid' + $lvl;\n var $async, $refCode;\n if ($schema == '#' || $schema == '#/') {\n if (it.isRoot) {\n $async = it.async;\n $refCode = 'validate';\n } else {\n $async = it.root.schema.$async === true;\n $refCode = 'root.refVal[0]';\n }\n } else {\n var $refVal = it.resolveRef(it.baseId, $schema, it.isRoot);\n if ($refVal === undefined) {\n var $message = it.MissingRefError.message(it.baseId, $schema);\n if (it.opts.missingRefs == 'fail') {\n it.logger.error($message);\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('$ref') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { ref: \\'' + (it.util.escapeQuotes($schema)) + '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'can\\\\\\'t resolve reference ' + (it.util.escapeQuotes($schema)) + '\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: ' + (it.util.toQuotedString($schema)) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n if ($breakOnError) {\n out += ' if (false) { ';\n }\n } else if (it.opts.missingRefs == 'ignore') {\n it.logger.warn($message);\n if ($breakOnError) {\n out += ' if (true) { ';\n }\n } else {\n throw new it.MissingRefError(it.baseId, $schema, $message);\n }\n } else if ($refVal.inline) {\n var $it = it.util.copy(it);\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n $it.schema = $refVal.schema;\n $it.schemaPath = '';\n $it.errSchemaPath = $schema;\n var $code = it.validate($it).replace(/validate\\.schema/g, $refVal.code);\n out += ' ' + ($code) + ' ';\n if ($breakOnError) {\n out += ' if (' + ($nextValid) + ') { ';\n }\n } else {\n $async = $refVal.$async === true || (it.async && $refVal.$async !== false);\n $refCode = $refVal.code;\n }\n }\n if ($refCode) {\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = '';\n if (it.opts.passContext) {\n out += ' ' + ($refCode) + '.call(this, ';\n } else {\n out += ' ' + ($refCode) + '( ';\n }\n out += ' ' + ($data) + ', (dataPath || \\'\\')';\n if (it.errorPath != '\"\"') {\n out += ' + ' + (it.errorPath);\n }\n var $parentData = $dataLvl ? 'data' + (($dataLvl - 1) || '') : 'parentData',\n $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : 'parentDataProperty';\n out += ' , ' + ($parentData) + ' , ' + ($parentDataProperty) + ', rootData) ';\n var __callValidate = out;\n out = $$outStack.pop();\n if ($async) {\n if (!it.async) throw new Error('async schema referenced by sync schema');\n if ($breakOnError) {\n out += ' var ' + ($valid) + '; ';\n }\n out += ' try { await ' + (__callValidate) + '; ';\n if ($breakOnError) {\n out += ' ' + ($valid) + ' = true; ';\n }\n out += ' } catch (e) { if (!(e instanceof ValidationError)) throw e; if (vErrors === null) vErrors = e.errors; else vErrors = vErrors.concat(e.errors); errors = vErrors.length; ';\n if ($breakOnError) {\n out += ' ' + ($valid) + ' = false; ';\n }\n out += ' } ';\n if ($breakOnError) {\n out += ' if (' + ($valid) + ') { ';\n }\n } else {\n out += ' if (!' + (__callValidate) + ') { if (vErrors === null) vErrors = ' + ($refCode) + '.errors; else vErrors = vErrors.concat(' + ($refCode) + '.errors); errors = vErrors.length; } ';\n if ($breakOnError) {\n out += ' else { ';\n }\n }\n }\n return out;\n}\n", "'use strict';\nmodule.exports = function generate_allOf(it, $keyword, $ruleType) {\n var out = ' ';\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $it = it.util.copy(it);\n var $closingBraces = '';\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n var $currentBaseId = $it.baseId,\n $allSchemasEmpty = true;\n var arr1 = $schema;\n if (arr1) {\n var $sch, $i = -1,\n l1 = arr1.length - 1;\n while ($i < l1) {\n $sch = arr1[$i += 1];\n if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) {\n $allSchemasEmpty = false;\n $it.schema = $sch;\n $it.schemaPath = $schemaPath + '[' + $i + ']';\n $it.errSchemaPath = $errSchemaPath + '/' + $i;\n out += ' ' + (it.validate($it)) + ' ';\n $it.baseId = $currentBaseId;\n if ($breakOnError) {\n out += ' if (' + ($nextValid) + ') { ';\n $closingBraces += '}';\n }\n }\n }\n }\n if ($breakOnError) {\n if ($allSchemasEmpty) {\n out += ' if (true) { ';\n } else {\n out += ' ' + ($closingBraces.slice(0, -1)) + ' ';\n }\n }\n return out;\n}\n", "'use strict';\nmodule.exports = function generate_anyOf(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $valid = 'valid' + $lvl;\n var $errs = 'errs__' + $lvl;\n var $it = it.util.copy(it);\n var $closingBraces = '';\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n var $noEmptySchema = $schema.every(function($sch) {\n return (it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all));\n });\n if ($noEmptySchema) {\n var $currentBaseId = $it.baseId;\n out += ' var ' + ($errs) + ' = errors; var ' + ($valid) + ' = false; ';\n var $wasComposite = it.compositeRule;\n it.compositeRule = $it.compositeRule = true;\n var arr1 = $schema;\n if (arr1) {\n var $sch, $i = -1,\n l1 = arr1.length - 1;\n while ($i < l1) {\n $sch = arr1[$i += 1];\n $it.schema = $sch;\n $it.schemaPath = $schemaPath + '[' + $i + ']';\n $it.errSchemaPath = $errSchemaPath + '/' + $i;\n out += ' ' + (it.validate($it)) + ' ';\n $it.baseId = $currentBaseId;\n out += ' ' + ($valid) + ' = ' + ($valid) + ' || ' + ($nextValid) + '; if (!' + ($valid) + ') { ';\n $closingBraces += '}';\n }\n }\n it.compositeRule = $it.compositeRule = $wasComposite;\n out += ' ' + ($closingBraces) + ' if (!' + ($valid) + ') { var err = '; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('anyOf') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should match some schema in anyOf\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError(vErrors); ';\n } else {\n out += ' validate.errors = vErrors; return false; ';\n }\n }\n out += ' } else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } ';\n if (it.opts.allErrors) {\n out += ' } ';\n }\n } else {\n if ($breakOnError) {\n out += ' if (true) { ';\n }\n }\n return out;\n}\n", "'use strict';\nmodule.exports = function generate_comment(it, $keyword, $ruleType) {\n var out = ' ';\n var $schema = it.schema[$keyword];\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $comment = it.util.toQuotedString($schema);\n if (it.opts.$comment === true) {\n out += ' console.log(' + ($comment) + ');';\n } else if (typeof it.opts.$comment == 'function') {\n out += ' self._opts.$comment(' + ($comment) + ', ' + (it.util.toQuotedString($errSchemaPath)) + ', validate.root.schema);';\n }\n return out;\n}\n", "'use strict';\nmodule.exports = function generate_const(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $valid = 'valid' + $lvl;\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n if (!$isData) {\n out += ' var schema' + ($lvl) + ' = validate.schema' + ($schemaPath) + ';';\n }\n out += 'var ' + ($valid) + ' = equal(' + ($data) + ', schema' + ($lvl) + '); if (!' + ($valid) + ') { ';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('const') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { allowedValue: schema' + ($lvl) + ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should be equal to constant\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' }';\n if ($breakOnError) {\n out += ' else { ';\n }\n return out;\n}\n", "'use strict';\nmodule.exports = function generate_contains(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $valid = 'valid' + $lvl;\n var $errs = 'errs__' + $lvl;\n var $it = it.util.copy(it);\n var $closingBraces = '';\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n var $idx = 'i' + $lvl,\n $dataNxt = $it.dataLevel = it.dataLevel + 1,\n $nextData = 'data' + $dataNxt,\n $currentBaseId = it.baseId,\n $nonEmptySchema = (it.opts.strictKeywords ? (typeof $schema == 'object' && Object.keys($schema).length > 0) || $schema === false : it.util.schemaHasRules($schema, it.RULES.all));\n out += 'var ' + ($errs) + ' = errors;var ' + ($valid) + ';';\n if ($nonEmptySchema) {\n var $wasComposite = it.compositeRule;\n it.compositeRule = $it.compositeRule = true;\n $it.schema = $schema;\n $it.schemaPath = $schemaPath;\n $it.errSchemaPath = $errSchemaPath;\n out += ' var ' + ($nextValid) + ' = false; for (var ' + ($idx) + ' = 0; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { ';\n $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true);\n var $passData = $data + '[' + $idx + ']';\n $it.dataPathArr[$dataNxt] = $idx;\n var $code = it.validate($it);\n $it.baseId = $currentBaseId;\n if (it.util.varOccurences($code, $nextData) < 2) {\n out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n } else {\n out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n }\n out += ' if (' + ($nextValid) + ') break; } ';\n it.compositeRule = $it.compositeRule = $wasComposite;\n out += ' ' + ($closingBraces) + ' if (!' + ($nextValid) + ') {';\n } else {\n out += ' if (' + ($data) + '.length == 0) {';\n }\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('contains') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should contain a valid item\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' } else { ';\n if ($nonEmptySchema) {\n out += ' errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } ';\n }\n if (it.opts.allErrors) {\n out += ' } ';\n }\n return out;\n}\n", "'use strict';\nmodule.exports = function generate_dependencies(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $errs = 'errs__' + $lvl;\n var $it = it.util.copy(it);\n var $closingBraces = '';\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n var $schemaDeps = {},\n $propertyDeps = {},\n $ownProperties = it.opts.ownProperties;\n for ($property in $schema) {\n if ($property == '__proto__') continue;\n var $sch = $schema[$property];\n var $deps = Array.isArray($sch) ? $propertyDeps : $schemaDeps;\n $deps[$property] = $sch;\n }\n out += 'var ' + ($errs) + ' = errors;';\n var $currentErrorPath = it.errorPath;\n out += 'var missing' + ($lvl) + ';';\n for (var $property in $propertyDeps) {\n $deps = $propertyDeps[$property];\n if ($deps.length) {\n out += ' if ( ' + ($data) + (it.util.getProperty($property)) + ' !== undefined ';\n if ($ownProperties) {\n out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($property)) + '\\') ';\n }\n if ($breakOnError) {\n out += ' && ( ';\n var arr1 = $deps;\n if (arr1) {\n var $propertyKey, $i = -1,\n l1 = arr1.length - 1;\n while ($i < l1) {\n $propertyKey = arr1[$i += 1];\n if ($i) {\n out += ' || ';\n }\n var $prop = it.util.getProperty($propertyKey),\n $useData = $data + $prop;\n out += ' ( ( ' + ($useData) + ' === undefined ';\n if ($ownProperties) {\n out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n }\n out += ') && (missing' + ($lvl) + ' = ' + (it.util.toQuotedString(it.opts.jsonPointers ? $propertyKey : $prop)) + ') ) ';\n }\n }\n out += ')) { ';\n var $propertyPath = 'missing' + $lvl,\n $missingProperty = '\\' + ' + $propertyPath + ' + \\'';\n if (it.opts._errorDataPathProperty) {\n it.errorPath = it.opts.jsonPointers ? it.util.getPathExpr($currentErrorPath, $propertyPath, true) : $currentErrorPath + ' + ' + $propertyPath;\n }\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('dependencies') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { property: \\'' + (it.util.escapeQuotes($property)) + '\\', missingProperty: \\'' + ($missingProperty) + '\\', depsCount: ' + ($deps.length) + ', deps: \\'' + (it.util.escapeQuotes($deps.length == 1 ? $deps[0] : $deps.join(\", \"))) + '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should have ';\n if ($deps.length == 1) {\n out += 'property ' + (it.util.escapeQuotes($deps[0]));\n } else {\n out += 'properties ' + (it.util.escapeQuotes($deps.join(\", \")));\n }\n out += ' when property ' + (it.util.escapeQuotes($property)) + ' is present\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n } else {\n out += ' ) { ';\n var arr2 = $deps;\n if (arr2) {\n var $propertyKey, i2 = -1,\n l2 = arr2.length - 1;\n while (i2 < l2) {\n $propertyKey = arr2[i2 += 1];\n var $prop = it.util.getProperty($propertyKey),\n $missingProperty = it.util.escapeQuotes($propertyKey),\n $useData = $data + $prop;\n if (it.opts._errorDataPathProperty) {\n it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers);\n }\n out += ' if ( ' + ($useData) + ' === undefined ';\n if ($ownProperties) {\n out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n }\n out += ') { var err = '; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('dependencies') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { property: \\'' + (it.util.escapeQuotes($property)) + '\\', missingProperty: \\'' + ($missingProperty) + '\\', depsCount: ' + ($deps.length) + ', deps: \\'' + (it.util.escapeQuotes($deps.length == 1 ? $deps[0] : $deps.join(\", \"))) + '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should have ';\n if ($deps.length == 1) {\n out += 'property ' + (it.util.escapeQuotes($deps[0]));\n } else {\n out += 'properties ' + (it.util.escapeQuotes($deps.join(\", \")));\n }\n out += ' when property ' + (it.util.escapeQuotes($property)) + ' is present\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } ';\n }\n }\n }\n out += ' } ';\n if ($breakOnError) {\n $closingBraces += '}';\n out += ' else { ';\n }\n }\n }\n it.errorPath = $currentErrorPath;\n var $currentBaseId = $it.baseId;\n for (var $property in $schemaDeps) {\n var $sch = $schemaDeps[$property];\n if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) {\n out += ' ' + ($nextValid) + ' = true; if ( ' + ($data) + (it.util.getProperty($property)) + ' !== undefined ';\n if ($ownProperties) {\n out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($property)) + '\\') ';\n }\n out += ') { ';\n $it.schema = $sch;\n $it.schemaPath = $schemaPath + it.util.getProperty($property);\n $it.errSchemaPath = $errSchemaPath + '/' + it.util.escapeFragment($property);\n out += ' ' + (it.validate($it)) + ' ';\n $it.baseId = $currentBaseId;\n out += ' } ';\n if ($breakOnError) {\n out += ' if (' + ($nextValid) + ') { ';\n $closingBraces += '}';\n }\n }\n }\n if ($breakOnError) {\n out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {';\n }\n return out;\n}\n", "'use strict';\nmodule.exports = function generate_enum(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $valid = 'valid' + $lvl;\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n var $i = 'i' + $lvl,\n $vSchema = 'schema' + $lvl;\n if (!$isData) {\n out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + ';';\n }\n out += 'var ' + ($valid) + ';';\n if ($isData) {\n out += ' if (schema' + ($lvl) + ' === undefined) ' + ($valid) + ' = true; else if (!Array.isArray(schema' + ($lvl) + ')) ' + ($valid) + ' = false; else {';\n }\n out += '' + ($valid) + ' = false;for (var ' + ($i) + '=0; ' + ($i) + '<' + ($vSchema) + '.length; ' + ($i) + '++) if (equal(' + ($data) + ', ' + ($vSchema) + '[' + ($i) + '])) { ' + ($valid) + ' = true; break; }';\n if ($isData) {\n out += ' } ';\n }\n out += ' if (!' + ($valid) + ') { ';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('enum') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { allowedValues: schema' + ($lvl) + ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should be equal to one of the allowed values\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' }';\n if ($breakOnError) {\n out += ' else { ';\n }\n return out;\n}\n", "'use strict';\nmodule.exports = function generate_format(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n if (it.opts.format === false) {\n if ($breakOnError) {\n out += ' if (true) { ';\n }\n return out;\n }\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n var $unknownFormats = it.opts.unknownFormats,\n $allowUnknown = Array.isArray($unknownFormats);\n if ($isData) {\n var $format = 'format' + $lvl,\n $isObject = 'isObject' + $lvl,\n $formatType = 'formatType' + $lvl;\n out += ' var ' + ($format) + ' = formats[' + ($schemaValue) + ']; var ' + ($isObject) + ' = typeof ' + ($format) + ' == \\'object\\' && !(' + ($format) + ' instanceof RegExp) && ' + ($format) + '.validate; var ' + ($formatType) + ' = ' + ($isObject) + ' && ' + ($format) + '.type || \\'string\\'; if (' + ($isObject) + ') { ';\n if (it.async) {\n out += ' var async' + ($lvl) + ' = ' + ($format) + '.async; ';\n }\n out += ' ' + ($format) + ' = ' + ($format) + '.validate; } if ( ';\n if ($isData) {\n out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'string\\') || ';\n }\n out += ' (';\n if ($unknownFormats != 'ignore') {\n out += ' (' + ($schemaValue) + ' && !' + ($format) + ' ';\n if ($allowUnknown) {\n out += ' && self._opts.unknownFormats.indexOf(' + ($schemaValue) + ') == -1 ';\n }\n out += ') || ';\n }\n out += ' (' + ($format) + ' && ' + ($formatType) + ' == \\'' + ($ruleType) + '\\' && !(typeof ' + ($format) + ' == \\'function\\' ? ';\n if (it.async) {\n out += ' (async' + ($lvl) + ' ? await ' + ($format) + '(' + ($data) + ') : ' + ($format) + '(' + ($data) + ')) ';\n } else {\n out += ' ' + ($format) + '(' + ($data) + ') ';\n }\n out += ' : ' + ($format) + '.test(' + ($data) + '))))) {';\n } else {\n var $format = it.formats[$schema];\n if (!$format) {\n if ($unknownFormats == 'ignore') {\n it.logger.warn('unknown format \"' + $schema + '\" ignored in schema at path \"' + it.errSchemaPath + '\"');\n if ($breakOnError) {\n out += ' if (true) { ';\n }\n return out;\n } else if ($allowUnknown && $unknownFormats.indexOf($schema) >= 0) {\n if ($breakOnError) {\n out += ' if (true) { ';\n }\n return out;\n } else {\n throw new Error('unknown format \"' + $schema + '\" is used in schema at path \"' + it.errSchemaPath + '\"');\n }\n }\n var $isObject = typeof $format == 'object' && !($format instanceof RegExp) && $format.validate;\n var $formatType = $isObject && $format.type || 'string';\n if ($isObject) {\n var $async = $format.async === true;\n $format = $format.validate;\n }\n if ($formatType != $ruleType) {\n if ($breakOnError) {\n out += ' if (true) { ';\n }\n return out;\n }\n if ($async) {\n if (!it.async) throw new Error('async format in sync schema');\n var $formatRef = 'formats' + it.util.getProperty($schema) + '.validate';\n out += ' if (!(await ' + ($formatRef) + '(' + ($data) + '))) { ';\n } else {\n out += ' if (! ';\n var $formatRef = 'formats' + it.util.getProperty($schema);\n if ($isObject) $formatRef += '.validate';\n if (typeof $format == 'function') {\n out += ' ' + ($formatRef) + '(' + ($data) + ') ';\n } else {\n out += ' ' + ($formatRef) + '.test(' + ($data) + ') ';\n }\n out += ') { ';\n }\n }\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('format') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { format: ';\n if ($isData) {\n out += '' + ($schemaValue);\n } else {\n out += '' + (it.util.toQuotedString($schema));\n }\n out += ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should match format \"';\n if ($isData) {\n out += '\\' + ' + ($schemaValue) + ' + \\'';\n } else {\n out += '' + (it.util.escapeQuotes($schema));\n }\n out += '\"\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: ';\n if ($isData) {\n out += 'validate.schema' + ($schemaPath);\n } else {\n out += '' + (it.util.toQuotedString($schema));\n }\n out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' } ';\n if ($breakOnError) {\n out += ' else { ';\n }\n return out;\n}\n", "'use strict';\nmodule.exports = function generate_if(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $valid = 'valid' + $lvl;\n var $errs = 'errs__' + $lvl;\n var $it = it.util.copy(it);\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n var $thenSch = it.schema['then'],\n $elseSch = it.schema['else'],\n $thenPresent = $thenSch !== undefined && (it.opts.strictKeywords ? (typeof $thenSch == 'object' && Object.keys($thenSch).length > 0) || $thenSch === false : it.util.schemaHasRules($thenSch, it.RULES.all)),\n $elsePresent = $elseSch !== undefined && (it.opts.strictKeywords ? (typeof $elseSch == 'object' && Object.keys($elseSch).length > 0) || $elseSch === false : it.util.schemaHasRules($elseSch, it.RULES.all)),\n $currentBaseId = $it.baseId;\n if ($thenPresent || $elsePresent) {\n var $ifClause;\n $it.createErrors = false;\n $it.schema = $schema;\n $it.schemaPath = $schemaPath;\n $it.errSchemaPath = $errSchemaPath;\n out += ' var ' + ($errs) + ' = errors; var ' + ($valid) + ' = true; ';\n var $wasComposite = it.compositeRule;\n it.compositeRule = $it.compositeRule = true;\n out += ' ' + (it.validate($it)) + ' ';\n $it.baseId = $currentBaseId;\n $it.createErrors = true;\n out += ' errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } ';\n it.compositeRule = $it.compositeRule = $wasComposite;\n if ($thenPresent) {\n out += ' if (' + ($nextValid) + ') { ';\n $it.schema = it.schema['then'];\n $it.schemaPath = it.schemaPath + '.then';\n $it.errSchemaPath = it.errSchemaPath + '/then';\n out += ' ' + (it.validate($it)) + ' ';\n $it.baseId = $currentBaseId;\n out += ' ' + ($valid) + ' = ' + ($nextValid) + '; ';\n if ($thenPresent && $elsePresent) {\n $ifClause = 'ifClause' + $lvl;\n out += ' var ' + ($ifClause) + ' = \\'then\\'; ';\n } else {\n $ifClause = '\\'then\\'';\n }\n out += ' } ';\n if ($elsePresent) {\n out += ' else { ';\n }\n } else {\n out += ' if (!' + ($nextValid) + ') { ';\n }\n if ($elsePresent) {\n $it.schema = it.schema['else'];\n $it.schemaPath = it.schemaPath + '.else';\n $it.errSchemaPath = it.errSchemaPath + '/else';\n out += ' ' + (it.validate($it)) + ' ';\n $it.baseId = $currentBaseId;\n out += ' ' + ($valid) + ' = ' + ($nextValid) + '; ';\n if ($thenPresent && $elsePresent) {\n $ifClause = 'ifClause' + $lvl;\n out += ' var ' + ($ifClause) + ' = \\'else\\'; ';\n } else {\n $ifClause = '\\'else\\'';\n }\n out += ' } ';\n }\n out += ' if (!' + ($valid) + ') { var err = '; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('if') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { failingKeyword: ' + ($ifClause) + ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should match \"\\' + ' + ($ifClause) + ' + \\'\" schema\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError(vErrors); ';\n } else {\n out += ' validate.errors = vErrors; return false; ';\n }\n }\n out += ' } ';\n if ($breakOnError) {\n out += ' else { ';\n }\n } else {\n if ($breakOnError) {\n out += ' if (true) { ';\n }\n }\n return out;\n}\n", "'use strict';\nmodule.exports = function generate_items(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $valid = 'valid' + $lvl;\n var $errs = 'errs__' + $lvl;\n var $it = it.util.copy(it);\n var $closingBraces = '';\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n var $idx = 'i' + $lvl,\n $dataNxt = $it.dataLevel = it.dataLevel + 1,\n $nextData = 'data' + $dataNxt,\n $currentBaseId = it.baseId;\n out += 'var ' + ($errs) + ' = errors;var ' + ($valid) + ';';\n if (Array.isArray($schema)) {\n var $additionalItems = it.schema.additionalItems;\n if ($additionalItems === false) {\n out += ' ' + ($valid) + ' = ' + ($data) + '.length <= ' + ($schema.length) + '; ';\n var $currErrSchemaPath = $errSchemaPath;\n $errSchemaPath = it.errSchemaPath + '/additionalItems';\n out += ' if (!' + ($valid) + ') { ';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('additionalItems') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schema.length) + ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should NOT have more than ' + ($schema.length) + ' items\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' } ';\n $errSchemaPath = $currErrSchemaPath;\n if ($breakOnError) {\n $closingBraces += '}';\n out += ' else { ';\n }\n }\n var arr1 = $schema;\n if (arr1) {\n var $sch, $i = -1,\n l1 = arr1.length - 1;\n while ($i < l1) {\n $sch = arr1[$i += 1];\n if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) {\n out += ' ' + ($nextValid) + ' = true; if (' + ($data) + '.length > ' + ($i) + ') { ';\n var $passData = $data + '[' + $i + ']';\n $it.schema = $sch;\n $it.schemaPath = $schemaPath + '[' + $i + ']';\n $it.errSchemaPath = $errSchemaPath + '/' + $i;\n $it.errorPath = it.util.getPathExpr(it.errorPath, $i, it.opts.jsonPointers, true);\n $it.dataPathArr[$dataNxt] = $i;\n var $code = it.validate($it);\n $it.baseId = $currentBaseId;\n if (it.util.varOccurences($code, $nextData) < 2) {\n out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n } else {\n out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n }\n out += ' } ';\n if ($breakOnError) {\n out += ' if (' + ($nextValid) + ') { ';\n $closingBraces += '}';\n }\n }\n }\n }\n if (typeof $additionalItems == 'object' && (it.opts.strictKeywords ? (typeof $additionalItems == 'object' && Object.keys($additionalItems).length > 0) || $additionalItems === false : it.util.schemaHasRules($additionalItems, it.RULES.all))) {\n $it.schema = $additionalItems;\n $it.schemaPath = it.schemaPath + '.additionalItems';\n $it.errSchemaPath = it.errSchemaPath + '/additionalItems';\n out += ' ' + ($nextValid) + ' = true; if (' + ($data) + '.length > ' + ($schema.length) + ') { for (var ' + ($idx) + ' = ' + ($schema.length) + '; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { ';\n $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true);\n var $passData = $data + '[' + $idx + ']';\n $it.dataPathArr[$dataNxt] = $idx;\n var $code = it.validate($it);\n $it.baseId = $currentBaseId;\n if (it.util.varOccurences($code, $nextData) < 2) {\n out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n } else {\n out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n }\n if ($breakOnError) {\n out += ' if (!' + ($nextValid) + ') break; ';\n }\n out += ' } } ';\n if ($breakOnError) {\n out += ' if (' + ($nextValid) + ') { ';\n $closingBraces += '}';\n }\n }\n } else if ((it.opts.strictKeywords ? (typeof $schema == 'object' && Object.keys($schema).length > 0) || $schema === false : it.util.schemaHasRules($schema, it.RULES.all))) {\n $it.schema = $schema;\n $it.schemaPath = $schemaPath;\n $it.errSchemaPath = $errSchemaPath;\n out += ' for (var ' + ($idx) + ' = ' + (0) + '; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { ';\n $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true);\n var $passData = $data + '[' + $idx + ']';\n $it.dataPathArr[$dataNxt] = $idx;\n var $code = it.validate($it);\n $it.baseId = $currentBaseId;\n if (it.util.varOccurences($code, $nextData) < 2) {\n out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n } else {\n out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n }\n if ($breakOnError) {\n out += ' if (!' + ($nextValid) + ') break; ';\n }\n out += ' }';\n }\n if ($breakOnError) {\n out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {';\n }\n return out;\n}\n", "'use strict';\nmodule.exports = function generate__limit(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $errorKeyword;\n var $data = 'data' + ($dataLvl || '');\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n var $isMax = $keyword == 'maximum',\n $exclusiveKeyword = $isMax ? 'exclusiveMaximum' : 'exclusiveMinimum',\n $schemaExcl = it.schema[$exclusiveKeyword],\n $isDataExcl = it.opts.$data && $schemaExcl && $schemaExcl.$data,\n $op = $isMax ? '<' : '>',\n $notOp = $isMax ? '>' : '<',\n $errorKeyword = undefined;\n if (!($isData || typeof $schema == 'number' || $schema === undefined)) {\n throw new Error($keyword + ' must be number');\n }\n if (!($isDataExcl || $schemaExcl === undefined || typeof $schemaExcl == 'number' || typeof $schemaExcl == 'boolean')) {\n throw new Error($exclusiveKeyword + ' must be number or boolean');\n }\n if ($isDataExcl) {\n var $schemaValueExcl = it.util.getData($schemaExcl.$data, $dataLvl, it.dataPathArr),\n $exclusive = 'exclusive' + $lvl,\n $exclType = 'exclType' + $lvl,\n $exclIsNumber = 'exclIsNumber' + $lvl,\n $opExpr = 'op' + $lvl,\n $opStr = '\\' + ' + $opExpr + ' + \\'';\n out += ' var schemaExcl' + ($lvl) + ' = ' + ($schemaValueExcl) + '; ';\n $schemaValueExcl = 'schemaExcl' + $lvl;\n out += ' var ' + ($exclusive) + '; var ' + ($exclType) + ' = typeof ' + ($schemaValueExcl) + '; if (' + ($exclType) + ' != \\'boolean\\' && ' + ($exclType) + ' != \\'undefined\\' && ' + ($exclType) + ' != \\'number\\') { ';\n var $errorKeyword = $exclusiveKeyword;\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ($errorKeyword || '_exclusiveLimit') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'' + ($exclusiveKeyword) + ' should be boolean\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' } else if ( ';\n if ($isData) {\n out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\n }\n out += ' ' + ($exclType) + ' == \\'number\\' ? ( (' + ($exclusive) + ' = ' + ($schemaValue) + ' === undefined || ' + ($schemaValueExcl) + ' ' + ($op) + '= ' + ($schemaValue) + ') ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaValueExcl) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' ) : ( (' + ($exclusive) + ' = ' + ($schemaValueExcl) + ' === true) ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaValue) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' ) || ' + ($data) + ' !== ' + ($data) + ') { var op' + ($lvl) + ' = ' + ($exclusive) + ' ? \\'' + ($op) + '\\' : \\'' + ($op) + '=\\'; ';\n if ($schema === undefined) {\n $errorKeyword = $exclusiveKeyword;\n $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword;\n $schemaValue = $schemaValueExcl;\n $isData = $isDataExcl;\n }\n } else {\n var $exclIsNumber = typeof $schemaExcl == 'number',\n $opStr = $op;\n if ($exclIsNumber && $isData) {\n var $opExpr = '\\'' + $opStr + '\\'';\n out += ' if ( ';\n if ($isData) {\n out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\n }\n out += ' ( ' + ($schemaValue) + ' === undefined || ' + ($schemaExcl) + ' ' + ($op) + '= ' + ($schemaValue) + ' ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaExcl) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' ) || ' + ($data) + ' !== ' + ($data) + ') { ';\n } else {\n if ($exclIsNumber && $schema === undefined) {\n $exclusive = true;\n $errorKeyword = $exclusiveKeyword;\n $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword;\n $schemaValue = $schemaExcl;\n $notOp += '=';\n } else {\n if ($exclIsNumber) $schemaValue = Math[$isMax ? 'min' : 'max']($schemaExcl, $schema);\n if ($schemaExcl === ($exclIsNumber ? $schemaValue : true)) {\n $exclusive = true;\n $errorKeyword = $exclusiveKeyword;\n $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword;\n $notOp += '=';\n } else {\n $exclusive = false;\n $opStr += '=';\n }\n }\n var $opExpr = '\\'' + $opStr + '\\'';\n out += ' if ( ';\n if ($isData) {\n out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\n }\n out += ' ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' || ' + ($data) + ' !== ' + ($data) + ') { ';\n }\n }\n $errorKeyword = $errorKeyword || $keyword;\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ($errorKeyword || '_limit') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { comparison: ' + ($opExpr) + ', limit: ' + ($schemaValue) + ', exclusive: ' + ($exclusive) + ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should be ' + ($opStr) + ' ';\n if ($isData) {\n out += '\\' + ' + ($schemaValue);\n } else {\n out += '' + ($schemaValue) + '\\'';\n }\n }\n if (it.opts.verbose) {\n out += ' , schema: ';\n if ($isData) {\n out += 'validate.schema' + ($schemaPath);\n } else {\n out += '' + ($schema);\n }\n out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' } ';\n if ($breakOnError) {\n out += ' else { ';\n }\n return out;\n}\n", "'use strict';\nmodule.exports = function generate__limitItems(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $errorKeyword;\n var $data = 'data' + ($dataLvl || '');\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n if (!($isData || typeof $schema == 'number')) {\n throw new Error($keyword + ' must be number');\n }\n var $op = $keyword == 'maxItems' ? '>' : '<';\n out += 'if ( ';\n if ($isData) {\n out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\n }\n out += ' ' + ($data) + '.length ' + ($op) + ' ' + ($schemaValue) + ') { ';\n var $errorKeyword = $keyword;\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ($errorKeyword || '_limitItems') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should NOT have ';\n if ($keyword == 'maxItems') {\n out += 'more';\n } else {\n out += 'fewer';\n }\n out += ' than ';\n if ($isData) {\n out += '\\' + ' + ($schemaValue) + ' + \\'';\n } else {\n out += '' + ($schema);\n }\n out += ' items\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: ';\n if ($isData) {\n out += 'validate.schema' + ($schemaPath);\n } else {\n out += '' + ($schema);\n }\n out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += '} ';\n if ($breakOnError) {\n out += ' else { ';\n }\n return out;\n}\n", "'use strict';\nmodule.exports = function generate__limitLength(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $errorKeyword;\n var $data = 'data' + ($dataLvl || '');\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n if (!($isData || typeof $schema == 'number')) {\n throw new Error($keyword + ' must be number');\n }\n var $op = $keyword == 'maxLength' ? '>' : '<';\n out += 'if ( ';\n if ($isData) {\n out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\n }\n if (it.opts.unicode === false) {\n out += ' ' + ($data) + '.length ';\n } else {\n out += ' ucs2length(' + ($data) + ') ';\n }\n out += ' ' + ($op) + ' ' + ($schemaValue) + ') { ';\n var $errorKeyword = $keyword;\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ($errorKeyword || '_limitLength') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should NOT be ';\n if ($keyword == 'maxLength') {\n out += 'longer';\n } else {\n out += 'shorter';\n }\n out += ' than ';\n if ($isData) {\n out += '\\' + ' + ($schemaValue) + ' + \\'';\n } else {\n out += '' + ($schema);\n }\n out += ' characters\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: ';\n if ($isData) {\n out += 'validate.schema' + ($schemaPath);\n } else {\n out += '' + ($schema);\n }\n out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += '} ';\n if ($breakOnError) {\n out += ' else { ';\n }\n return out;\n}\n", "'use strict';\nmodule.exports = function generate__limitProperties(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $errorKeyword;\n var $data = 'data' + ($dataLvl || '');\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n if (!($isData || typeof $schema == 'number')) {\n throw new Error($keyword + ' must be number');\n }\n var $op = $keyword == 'maxProperties' ? '>' : '<';\n out += 'if ( ';\n if ($isData) {\n out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\n }\n out += ' Object.keys(' + ($data) + ').length ' + ($op) + ' ' + ($schemaValue) + ') { ';\n var $errorKeyword = $keyword;\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ($errorKeyword || '_limitProperties') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should NOT have ';\n if ($keyword == 'maxProperties') {\n out += 'more';\n } else {\n out += 'fewer';\n }\n out += ' than ';\n if ($isData) {\n out += '\\' + ' + ($schemaValue) + ' + \\'';\n } else {\n out += '' + ($schema);\n }\n out += ' properties\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: ';\n if ($isData) {\n out += 'validate.schema' + ($schemaPath);\n } else {\n out += '' + ($schema);\n }\n out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += '} ';\n if ($breakOnError) {\n out += ' else { ';\n }\n return out;\n}\n", "'use strict';\nmodule.exports = function generate_multipleOf(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n if (!($isData || typeof $schema == 'number')) {\n throw new Error($keyword + ' must be number');\n }\n out += 'var division' + ($lvl) + ';if (';\n if ($isData) {\n out += ' ' + ($schemaValue) + ' !== undefined && ( typeof ' + ($schemaValue) + ' != \\'number\\' || ';\n }\n out += ' (division' + ($lvl) + ' = ' + ($data) + ' / ' + ($schemaValue) + ', ';\n if (it.opts.multipleOfPrecision) {\n out += ' Math.abs(Math.round(division' + ($lvl) + ') - division' + ($lvl) + ') > 1e-' + (it.opts.multipleOfPrecision) + ' ';\n } else {\n out += ' division' + ($lvl) + ' !== parseInt(division' + ($lvl) + ') ';\n }\n out += ' ) ';\n if ($isData) {\n out += ' ) ';\n }\n out += ' ) { ';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('multipleOf') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { multipleOf: ' + ($schemaValue) + ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should be multiple of ';\n if ($isData) {\n out += '\\' + ' + ($schemaValue);\n } else {\n out += '' + ($schemaValue) + '\\'';\n }\n }\n if (it.opts.verbose) {\n out += ' , schema: ';\n if ($isData) {\n out += 'validate.schema' + ($schemaPath);\n } else {\n out += '' + ($schema);\n }\n out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += '} ';\n if ($breakOnError) {\n out += ' else { ';\n }\n return out;\n}\n", "'use strict';\nmodule.exports = function generate_not(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $errs = 'errs__' + $lvl;\n var $it = it.util.copy(it);\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n if ((it.opts.strictKeywords ? (typeof $schema == 'object' && Object.keys($schema).length > 0) || $schema === false : it.util.schemaHasRules($schema, it.RULES.all))) {\n $it.schema = $schema;\n $it.schemaPath = $schemaPath;\n $it.errSchemaPath = $errSchemaPath;\n out += ' var ' + ($errs) + ' = errors; ';\n var $wasComposite = it.compositeRule;\n it.compositeRule = $it.compositeRule = true;\n $it.createErrors = false;\n var $allErrorsOption;\n if ($it.opts.allErrors) {\n $allErrorsOption = $it.opts.allErrors;\n $it.opts.allErrors = false;\n }\n out += ' ' + (it.validate($it)) + ' ';\n $it.createErrors = true;\n if ($allErrorsOption) $it.opts.allErrors = $allErrorsOption;\n it.compositeRule = $it.compositeRule = $wasComposite;\n out += ' if (' + ($nextValid) + ') { ';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('not') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should NOT be valid\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' } else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } ';\n if (it.opts.allErrors) {\n out += ' } ';\n }\n } else {\n out += ' var err = '; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('not') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should NOT be valid\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n if ($breakOnError) {\n out += ' if (false) { ';\n }\n }\n return out;\n}\n", "'use strict';\nmodule.exports = function generate_oneOf(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $valid = 'valid' + $lvl;\n var $errs = 'errs__' + $lvl;\n var $it = it.util.copy(it);\n var $closingBraces = '';\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n var $currentBaseId = $it.baseId,\n $prevValid = 'prevValid' + $lvl,\n $passingSchemas = 'passingSchemas' + $lvl;\n out += 'var ' + ($errs) + ' = errors , ' + ($prevValid) + ' = false , ' + ($valid) + ' = false , ' + ($passingSchemas) + ' = null; ';\n var $wasComposite = it.compositeRule;\n it.compositeRule = $it.compositeRule = true;\n var arr1 = $schema;\n if (arr1) {\n var $sch, $i = -1,\n l1 = arr1.length - 1;\n while ($i < l1) {\n $sch = arr1[$i += 1];\n if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) {\n $it.schema = $sch;\n $it.schemaPath = $schemaPath + '[' + $i + ']';\n $it.errSchemaPath = $errSchemaPath + '/' + $i;\n out += ' ' + (it.validate($it)) + ' ';\n $it.baseId = $currentBaseId;\n } else {\n out += ' var ' + ($nextValid) + ' = true; ';\n }\n if ($i) {\n out += ' if (' + ($nextValid) + ' && ' + ($prevValid) + ') { ' + ($valid) + ' = false; ' + ($passingSchemas) + ' = [' + ($passingSchemas) + ', ' + ($i) + ']; } else { ';\n $closingBraces += '}';\n }\n out += ' if (' + ($nextValid) + ') { ' + ($valid) + ' = ' + ($prevValid) + ' = true; ' + ($passingSchemas) + ' = ' + ($i) + '; }';\n }\n }\n it.compositeRule = $it.compositeRule = $wasComposite;\n out += '' + ($closingBraces) + 'if (!' + ($valid) + ') { var err = '; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('oneOf') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { passingSchemas: ' + ($passingSchemas) + ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should match exactly one schema in oneOf\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError(vErrors); ';\n } else {\n out += ' validate.errors = vErrors; return false; ';\n }\n }\n out += '} else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; }';\n if (it.opts.allErrors) {\n out += ' } ';\n }\n return out;\n}\n", "'use strict';\nmodule.exports = function generate_pattern(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n var $regexp = $isData ? '(new RegExp(' + $schemaValue + '))' : it.usePattern($schema);\n out += 'if ( ';\n if ($isData) {\n out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'string\\') || ';\n }\n out += ' !' + ($regexp) + '.test(' + ($data) + ') ) { ';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('pattern') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { pattern: ';\n if ($isData) {\n out += '' + ($schemaValue);\n } else {\n out += '' + (it.util.toQuotedString($schema));\n }\n out += ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should match pattern \"';\n if ($isData) {\n out += '\\' + ' + ($schemaValue) + ' + \\'';\n } else {\n out += '' + (it.util.escapeQuotes($schema));\n }\n out += '\"\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: ';\n if ($isData) {\n out += 'validate.schema' + ($schemaPath);\n } else {\n out += '' + (it.util.toQuotedString($schema));\n }\n out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += '} ';\n if ($breakOnError) {\n out += ' else { ';\n }\n return out;\n}\n", "'use strict';\nmodule.exports = function generate_properties(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $errs = 'errs__' + $lvl;\n var $it = it.util.copy(it);\n var $closingBraces = '';\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n var $key = 'key' + $lvl,\n $idx = 'idx' + $lvl,\n $dataNxt = $it.dataLevel = it.dataLevel + 1,\n $nextData = 'data' + $dataNxt,\n $dataProperties = 'dataProperties' + $lvl;\n var $schemaKeys = Object.keys($schema || {}).filter(notProto),\n $pProperties = it.schema.patternProperties || {},\n $pPropertyKeys = Object.keys($pProperties).filter(notProto),\n $aProperties = it.schema.additionalProperties,\n $someProperties = $schemaKeys.length || $pPropertyKeys.length,\n $noAdditional = $aProperties === false,\n $additionalIsSchema = typeof $aProperties == 'object' && Object.keys($aProperties).length,\n $removeAdditional = it.opts.removeAdditional,\n $checkAdditional = $noAdditional || $additionalIsSchema || $removeAdditional,\n $ownProperties = it.opts.ownProperties,\n $currentBaseId = it.baseId;\n var $required = it.schema.required;\n if ($required && !(it.opts.$data && $required.$data) && $required.length < it.opts.loopRequired) {\n var $requiredHash = it.util.toHash($required);\n }\n\n function notProto(p) {\n return p !== '__proto__';\n }\n out += 'var ' + ($errs) + ' = errors;var ' + ($nextValid) + ' = true;';\n if ($ownProperties) {\n out += ' var ' + ($dataProperties) + ' = undefined;';\n }\n if ($checkAdditional) {\n if ($ownProperties) {\n out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; ';\n } else {\n out += ' for (var ' + ($key) + ' in ' + ($data) + ') { ';\n }\n if ($someProperties) {\n out += ' var isAdditional' + ($lvl) + ' = !(false ';\n if ($schemaKeys.length) {\n if ($schemaKeys.length > 8) {\n out += ' || validate.schema' + ($schemaPath) + '.hasOwnProperty(' + ($key) + ') ';\n } else {\n var arr1 = $schemaKeys;\n if (arr1) {\n var $propertyKey, i1 = -1,\n l1 = arr1.length - 1;\n while (i1 < l1) {\n $propertyKey = arr1[i1 += 1];\n out += ' || ' + ($key) + ' == ' + (it.util.toQuotedString($propertyKey)) + ' ';\n }\n }\n }\n }\n if ($pPropertyKeys.length) {\n var arr2 = $pPropertyKeys;\n if (arr2) {\n var $pProperty, $i = -1,\n l2 = arr2.length - 1;\n while ($i < l2) {\n $pProperty = arr2[$i += 1];\n out += ' || ' + (it.usePattern($pProperty)) + '.test(' + ($key) + ') ';\n }\n }\n }\n out += ' ); if (isAdditional' + ($lvl) + ') { ';\n }\n if ($removeAdditional == 'all') {\n out += ' delete ' + ($data) + '[' + ($key) + ']; ';\n } else {\n var $currentErrorPath = it.errorPath;\n var $additionalProperty = '\\' + ' + $key + ' + \\'';\n if (it.opts._errorDataPathProperty) {\n it.errorPath = it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers);\n }\n if ($noAdditional) {\n if ($removeAdditional) {\n out += ' delete ' + ($data) + '[' + ($key) + ']; ';\n } else {\n out += ' ' + ($nextValid) + ' = false; ';\n var $currErrSchemaPath = $errSchemaPath;\n $errSchemaPath = it.errSchemaPath + '/additionalProperties';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('additionalProperties') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { additionalProperty: \\'' + ($additionalProperty) + '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'';\n if (it.opts._errorDataPathProperty) {\n out += 'is an invalid additional property';\n } else {\n out += 'should NOT have additional properties';\n }\n out += '\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n $errSchemaPath = $currErrSchemaPath;\n if ($breakOnError) {\n out += ' break; ';\n }\n }\n } else if ($additionalIsSchema) {\n if ($removeAdditional == 'failing') {\n out += ' var ' + ($errs) + ' = errors; ';\n var $wasComposite = it.compositeRule;\n it.compositeRule = $it.compositeRule = true;\n $it.schema = $aProperties;\n $it.schemaPath = it.schemaPath + '.additionalProperties';\n $it.errSchemaPath = it.errSchemaPath + '/additionalProperties';\n $it.errorPath = it.opts._errorDataPathProperty ? it.errorPath : it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers);\n var $passData = $data + '[' + $key + ']';\n $it.dataPathArr[$dataNxt] = $key;\n var $code = it.validate($it);\n $it.baseId = $currentBaseId;\n if (it.util.varOccurences($code, $nextData) < 2) {\n out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n } else {\n out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n }\n out += ' if (!' + ($nextValid) + ') { errors = ' + ($errs) + '; if (validate.errors !== null) { if (errors) validate.errors.length = errors; else validate.errors = null; } delete ' + ($data) + '[' + ($key) + ']; } ';\n it.compositeRule = $it.compositeRule = $wasComposite;\n } else {\n $it.schema = $aProperties;\n $it.schemaPath = it.schemaPath + '.additionalProperties';\n $it.errSchemaPath = it.errSchemaPath + '/additionalProperties';\n $it.errorPath = it.opts._errorDataPathProperty ? it.errorPath : it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers);\n var $passData = $data + '[' + $key + ']';\n $it.dataPathArr[$dataNxt] = $key;\n var $code = it.validate($it);\n $it.baseId = $currentBaseId;\n if (it.util.varOccurences($code, $nextData) < 2) {\n out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n } else {\n out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n }\n if ($breakOnError) {\n out += ' if (!' + ($nextValid) + ') break; ';\n }\n }\n }\n it.errorPath = $currentErrorPath;\n }\n if ($someProperties) {\n out += ' } ';\n }\n out += ' } ';\n if ($breakOnError) {\n out += ' if (' + ($nextValid) + ') { ';\n $closingBraces += '}';\n }\n }\n var $useDefaults = it.opts.useDefaults && !it.compositeRule;\n if ($schemaKeys.length) {\n var arr3 = $schemaKeys;\n if (arr3) {\n var $propertyKey, i3 = -1,\n l3 = arr3.length - 1;\n while (i3 < l3) {\n $propertyKey = arr3[i3 += 1];\n var $sch = $schema[$propertyKey];\n if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) {\n var $prop = it.util.getProperty($propertyKey),\n $passData = $data + $prop,\n $hasDefault = $useDefaults && $sch.default !== undefined;\n $it.schema = $sch;\n $it.schemaPath = $schemaPath + $prop;\n $it.errSchemaPath = $errSchemaPath + '/' + it.util.escapeFragment($propertyKey);\n $it.errorPath = it.util.getPath(it.errorPath, $propertyKey, it.opts.jsonPointers);\n $it.dataPathArr[$dataNxt] = it.util.toQuotedString($propertyKey);\n var $code = it.validate($it);\n $it.baseId = $currentBaseId;\n if (it.util.varOccurences($code, $nextData) < 2) {\n $code = it.util.varReplace($code, $nextData, $passData);\n var $useData = $passData;\n } else {\n var $useData = $nextData;\n out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ';\n }\n if ($hasDefault) {\n out += ' ' + ($code) + ' ';\n } else {\n if ($requiredHash && $requiredHash[$propertyKey]) {\n out += ' if ( ' + ($useData) + ' === undefined ';\n if ($ownProperties) {\n out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n }\n out += ') { ' + ($nextValid) + ' = false; ';\n var $currentErrorPath = it.errorPath,\n $currErrSchemaPath = $errSchemaPath,\n $missingProperty = it.util.escapeQuotes($propertyKey);\n if (it.opts._errorDataPathProperty) {\n it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers);\n }\n $errSchemaPath = it.errSchemaPath + '/required';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'';\n if (it.opts._errorDataPathProperty) {\n out += 'is a required property';\n } else {\n out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\n }\n out += '\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n $errSchemaPath = $currErrSchemaPath;\n it.errorPath = $currentErrorPath;\n out += ' } else { ';\n } else {\n if ($breakOnError) {\n out += ' if ( ' + ($useData) + ' === undefined ';\n if ($ownProperties) {\n out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n }\n out += ') { ' + ($nextValid) + ' = true; } else { ';\n } else {\n out += ' if (' + ($useData) + ' !== undefined ';\n if ($ownProperties) {\n out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n }\n out += ' ) { ';\n }\n }\n out += ' ' + ($code) + ' } ';\n }\n }\n if ($breakOnError) {\n out += ' if (' + ($nextValid) + ') { ';\n $closingBraces += '}';\n }\n }\n }\n }\n if ($pPropertyKeys.length) {\n var arr4 = $pPropertyKeys;\n if (arr4) {\n var $pProperty, i4 = -1,\n l4 = arr4.length - 1;\n while (i4 < l4) {\n $pProperty = arr4[i4 += 1];\n var $sch = $pProperties[$pProperty];\n if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) {\n $it.schema = $sch;\n $it.schemaPath = it.schemaPath + '.patternProperties' + it.util.getProperty($pProperty);\n $it.errSchemaPath = it.errSchemaPath + '/patternProperties/' + it.util.escapeFragment($pProperty);\n if ($ownProperties) {\n out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; ';\n } else {\n out += ' for (var ' + ($key) + ' in ' + ($data) + ') { ';\n }\n out += ' if (' + (it.usePattern($pProperty)) + '.test(' + ($key) + ')) { ';\n $it.errorPath = it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers);\n var $passData = $data + '[' + $key + ']';\n $it.dataPathArr[$dataNxt] = $key;\n var $code = it.validate($it);\n $it.baseId = $currentBaseId;\n if (it.util.varOccurences($code, $nextData) < 2) {\n out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n } else {\n out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n }\n if ($breakOnError) {\n out += ' if (!' + ($nextValid) + ') break; ';\n }\n out += ' } ';\n if ($breakOnError) {\n out += ' else ' + ($nextValid) + ' = true; ';\n }\n out += ' } ';\n if ($breakOnError) {\n out += ' if (' + ($nextValid) + ') { ';\n $closingBraces += '}';\n }\n }\n }\n }\n }\n if ($breakOnError) {\n out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {';\n }\n return out;\n}\n", "'use strict';\nmodule.exports = function generate_propertyNames(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $errs = 'errs__' + $lvl;\n var $it = it.util.copy(it);\n var $closingBraces = '';\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n out += 'var ' + ($errs) + ' = errors;';\n if ((it.opts.strictKeywords ? (typeof $schema == 'object' && Object.keys($schema).length > 0) || $schema === false : it.util.schemaHasRules($schema, it.RULES.all))) {\n $it.schema = $schema;\n $it.schemaPath = $schemaPath;\n $it.errSchemaPath = $errSchemaPath;\n var $key = 'key' + $lvl,\n $idx = 'idx' + $lvl,\n $i = 'i' + $lvl,\n $invalidName = '\\' + ' + $key + ' + \\'',\n $dataNxt = $it.dataLevel = it.dataLevel + 1,\n $nextData = 'data' + $dataNxt,\n $dataProperties = 'dataProperties' + $lvl,\n $ownProperties = it.opts.ownProperties,\n $currentBaseId = it.baseId;\n if ($ownProperties) {\n out += ' var ' + ($dataProperties) + ' = undefined; ';\n }\n if ($ownProperties) {\n out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; ';\n } else {\n out += ' for (var ' + ($key) + ' in ' + ($data) + ') { ';\n }\n out += ' var startErrs' + ($lvl) + ' = errors; ';\n var $passData = $key;\n var $wasComposite = it.compositeRule;\n it.compositeRule = $it.compositeRule = true;\n var $code = it.validate($it);\n $it.baseId = $currentBaseId;\n if (it.util.varOccurences($code, $nextData) < 2) {\n out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n } else {\n out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n }\n it.compositeRule = $it.compositeRule = $wasComposite;\n out += ' if (!' + ($nextValid) + ') { for (var ' + ($i) + '=startErrs' + ($lvl) + '; ' + ($i) + ' 0) || $propertySch === false : it.util.schemaHasRules($propertySch, it.RULES.all)))) {\n $required[$required.length] = $property;\n }\n }\n }\n } else {\n var $required = $schema;\n }\n }\n if ($isData || $required.length) {\n var $currentErrorPath = it.errorPath,\n $loopRequired = $isData || $required.length >= it.opts.loopRequired,\n $ownProperties = it.opts.ownProperties;\n if ($breakOnError) {\n out += ' var missing' + ($lvl) + '; ';\n if ($loopRequired) {\n if (!$isData) {\n out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + '; ';\n }\n var $i = 'i' + $lvl,\n $propertyPath = 'schema' + $lvl + '[' + $i + ']',\n $missingProperty = '\\' + ' + $propertyPath + ' + \\'';\n if (it.opts._errorDataPathProperty) {\n it.errorPath = it.util.getPathExpr($currentErrorPath, $propertyPath, it.opts.jsonPointers);\n }\n out += ' var ' + ($valid) + ' = true; ';\n if ($isData) {\n out += ' if (schema' + ($lvl) + ' === undefined) ' + ($valid) + ' = true; else if (!Array.isArray(schema' + ($lvl) + ')) ' + ($valid) + ' = false; else {';\n }\n out += ' for (var ' + ($i) + ' = 0; ' + ($i) + ' < ' + ($vSchema) + '.length; ' + ($i) + '++) { ' + ($valid) + ' = ' + ($data) + '[' + ($vSchema) + '[' + ($i) + ']] !== undefined ';\n if ($ownProperties) {\n out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', ' + ($vSchema) + '[' + ($i) + ']) ';\n }\n out += '; if (!' + ($valid) + ') break; } ';\n if ($isData) {\n out += ' } ';\n }\n out += ' if (!' + ($valid) + ') { ';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'';\n if (it.opts._errorDataPathProperty) {\n out += 'is a required property';\n } else {\n out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\n }\n out += '\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' } else { ';\n } else {\n out += ' if ( ';\n var arr2 = $required;\n if (arr2) {\n var $propertyKey, $i = -1,\n l2 = arr2.length - 1;\n while ($i < l2) {\n $propertyKey = arr2[$i += 1];\n if ($i) {\n out += ' || ';\n }\n var $prop = it.util.getProperty($propertyKey),\n $useData = $data + $prop;\n out += ' ( ( ' + ($useData) + ' === undefined ';\n if ($ownProperties) {\n out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n }\n out += ') && (missing' + ($lvl) + ' = ' + (it.util.toQuotedString(it.opts.jsonPointers ? $propertyKey : $prop)) + ') ) ';\n }\n }\n out += ') { ';\n var $propertyPath = 'missing' + $lvl,\n $missingProperty = '\\' + ' + $propertyPath + ' + \\'';\n if (it.opts._errorDataPathProperty) {\n it.errorPath = it.opts.jsonPointers ? it.util.getPathExpr($currentErrorPath, $propertyPath, true) : $currentErrorPath + ' + ' + $propertyPath;\n }\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'';\n if (it.opts._errorDataPathProperty) {\n out += 'is a required property';\n } else {\n out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\n }\n out += '\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' } else { ';\n }\n } else {\n if ($loopRequired) {\n if (!$isData) {\n out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + '; ';\n }\n var $i = 'i' + $lvl,\n $propertyPath = 'schema' + $lvl + '[' + $i + ']',\n $missingProperty = '\\' + ' + $propertyPath + ' + \\'';\n if (it.opts._errorDataPathProperty) {\n it.errorPath = it.util.getPathExpr($currentErrorPath, $propertyPath, it.opts.jsonPointers);\n }\n if ($isData) {\n out += ' if (' + ($vSchema) + ' && !Array.isArray(' + ($vSchema) + ')) { var err = '; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'';\n if (it.opts._errorDataPathProperty) {\n out += 'is a required property';\n } else {\n out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\n }\n out += '\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } else if (' + ($vSchema) + ' !== undefined) { ';\n }\n out += ' for (var ' + ($i) + ' = 0; ' + ($i) + ' < ' + ($vSchema) + '.length; ' + ($i) + '++) { if (' + ($data) + '[' + ($vSchema) + '[' + ($i) + ']] === undefined ';\n if ($ownProperties) {\n out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', ' + ($vSchema) + '[' + ($i) + ']) ';\n }\n out += ') { var err = '; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'';\n if (it.opts._errorDataPathProperty) {\n out += 'is a required property';\n } else {\n out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\n }\n out += '\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } } ';\n if ($isData) {\n out += ' } ';\n }\n } else {\n var arr3 = $required;\n if (arr3) {\n var $propertyKey, i3 = -1,\n l3 = arr3.length - 1;\n while (i3 < l3) {\n $propertyKey = arr3[i3 += 1];\n var $prop = it.util.getProperty($propertyKey),\n $missingProperty = it.util.escapeQuotes($propertyKey),\n $useData = $data + $prop;\n if (it.opts._errorDataPathProperty) {\n it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers);\n }\n out += ' if ( ' + ($useData) + ' === undefined ';\n if ($ownProperties) {\n out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n }\n out += ') { var err = '; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'';\n if (it.opts._errorDataPathProperty) {\n out += 'is a required property';\n } else {\n out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\n }\n out += '\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } ';\n }\n }\n }\n }\n it.errorPath = $currentErrorPath;\n } else if ($breakOnError) {\n out += ' if (true) {';\n }\n return out;\n}\n", "'use strict';\nmodule.exports = function generate_uniqueItems(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $valid = 'valid' + $lvl;\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n if (($schema || $isData) && it.opts.uniqueItems !== false) {\n if ($isData) {\n out += ' var ' + ($valid) + '; if (' + ($schemaValue) + ' === false || ' + ($schemaValue) + ' === undefined) ' + ($valid) + ' = true; else if (typeof ' + ($schemaValue) + ' != \\'boolean\\') ' + ($valid) + ' = false; else { ';\n }\n out += ' var i = ' + ($data) + '.length , ' + ($valid) + ' = true , j; if (i > 1) { ';\n var $itemType = it.schema.items && it.schema.items.type,\n $typeIsArray = Array.isArray($itemType);\n if (!$itemType || $itemType == 'object' || $itemType == 'array' || ($typeIsArray && ($itemType.indexOf('object') >= 0 || $itemType.indexOf('array') >= 0))) {\n out += ' outer: for (;i--;) { for (j = i; j--;) { if (equal(' + ($data) + '[i], ' + ($data) + '[j])) { ' + ($valid) + ' = false; break outer; } } } ';\n } else {\n out += ' var itemIndices = {}, item; for (;i--;) { var item = ' + ($data) + '[i]; ';\n var $method = 'checkDataType' + ($typeIsArray ? 's' : '');\n out += ' if (' + (it.util[$method]($itemType, 'item', it.opts.strictNumbers, true)) + ') continue; ';\n if ($typeIsArray) {\n out += ' if (typeof item == \\'string\\') item = \\'\"\\' + item; ';\n }\n out += ' if (typeof itemIndices[item] == \\'number\\') { ' + ($valid) + ' = false; j = itemIndices[item]; break; } itemIndices[item] = i; } ';\n }\n out += ' } ';\n if ($isData) {\n out += ' } ';\n }\n out += ' if (!' + ($valid) + ') { ';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('uniqueItems') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { i: i, j: j } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should NOT have duplicate items (items ## \\' + j + \\' and \\' + i + \\' are identical)\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: ';\n if ($isData) {\n out += 'validate.schema' + ($schemaPath);\n } else {\n out += '' + ($schema);\n }\n out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' } ';\n if ($breakOnError) {\n out += ' else { ';\n }\n } else {\n if ($breakOnError) {\n out += ' if (true) { ';\n }\n }\n return out;\n}\n", "'use strict';\n\n//all requires must be explicit because browserify won't work with dynamic requires\nmodule.exports = {\n '$ref': require('./ref'),\n allOf: require('./allOf'),\n anyOf: require('./anyOf'),\n '$comment': require('./comment'),\n const: require('./const'),\n contains: require('./contains'),\n dependencies: require('./dependencies'),\n 'enum': require('./enum'),\n format: require('./format'),\n 'if': require('./if'),\n items: require('./items'),\n maximum: require('./_limit'),\n minimum: require('./_limit'),\n maxItems: require('./_limitItems'),\n minItems: require('./_limitItems'),\n maxLength: require('./_limitLength'),\n minLength: require('./_limitLength'),\n maxProperties: require('./_limitProperties'),\n minProperties: require('./_limitProperties'),\n multipleOf: require('./multipleOf'),\n not: require('./not'),\n oneOf: require('./oneOf'),\n pattern: require('./pattern'),\n properties: require('./properties'),\n propertyNames: require('./propertyNames'),\n required: require('./required'),\n uniqueItems: require('./uniqueItems'),\n validate: require('./validate')\n};\n", "'use strict';\n\nvar ruleModules = require('../dotjs')\n , toHash = require('./util').toHash;\n\nmodule.exports = function rules() {\n var RULES = [\n { type: 'number',\n rules: [ { 'maximum': ['exclusiveMaximum'] },\n { 'minimum': ['exclusiveMinimum'] }, 'multipleOf', 'format'] },\n { type: 'string',\n rules: [ 'maxLength', 'minLength', 'pattern', 'format' ] },\n { type: 'array',\n rules: [ 'maxItems', 'minItems', 'items', 'contains', 'uniqueItems' ] },\n { type: 'object',\n rules: [ 'maxProperties', 'minProperties', 'required', 'dependencies', 'propertyNames',\n { 'properties': ['additionalProperties', 'patternProperties'] } ] },\n { rules: [ '$ref', 'const', 'enum', 'not', 'anyOf', 'oneOf', 'allOf', 'if' ] }\n ];\n\n var ALL = [ 'type', '$comment' ];\n var KEYWORDS = [\n '$schema', '$id', 'id', '$data', '$async', 'title',\n 'description', 'default', 'definitions',\n 'examples', 'readOnly', 'writeOnly',\n 'contentMediaType', 'contentEncoding',\n 'additionalItems', 'then', 'else'\n ];\n var TYPES = [ 'number', 'integer', 'string', 'array', 'object', 'boolean', 'null' ];\n RULES.all = toHash(ALL);\n RULES.types = toHash(TYPES);\n\n RULES.forEach(function (group) {\n group.rules = group.rules.map(function (keyword) {\n var implKeywords;\n if (typeof keyword == 'object') {\n var key = Object.keys(keyword)[0];\n implKeywords = keyword[key];\n keyword = key;\n implKeywords.forEach(function (k) {\n ALL.push(k);\n RULES.all[k] = true;\n });\n }\n ALL.push(keyword);\n var rule = RULES.all[keyword] = {\n keyword: keyword,\n code: ruleModules[keyword],\n implements: implKeywords\n };\n return rule;\n });\n\n RULES.all.$comment = {\n keyword: '$comment',\n code: ruleModules.$comment\n };\n\n if (group.type) RULES.types[group.type] = group;\n });\n\n RULES.keywords = toHash(ALL.concat(KEYWORDS));\n RULES.custom = {};\n\n return RULES;\n};\n", "'use strict';\n\nvar KEYWORDS = [\n 'multipleOf',\n 'maximum',\n 'exclusiveMaximum',\n 'minimum',\n 'exclusiveMinimum',\n 'maxLength',\n 'minLength',\n 'pattern',\n 'additionalItems',\n 'maxItems',\n 'minItems',\n 'uniqueItems',\n 'maxProperties',\n 'minProperties',\n 'required',\n 'additionalProperties',\n 'enum',\n 'format',\n 'const'\n];\n\nmodule.exports = function (metaSchema, keywordsJsonPointers) {\n for (var i=0; i} errors optional array of validation errors, if not passed errors from the instance are used.\n * @param {Object} options optional options with properties `separator` and `dataVar`.\n * @return {String} human readable string with all errors descriptions\n */\nfunction errorsText(errors, options) {\n errors = errors || this.errors;\n if (!errors) return 'No errors';\n options = options || {};\n var separator = options.separator === undefined ? ', ' : options.separator;\n var dataVar = options.dataVar === undefined ? 'data' : options.dataVar;\n\n var text = '';\n for (var i=0; i b ? 1 : a < b ? -1 : 0\n}\n\nfunction generateBase (httpMethod, base_uri, params) {\n // adapted from https://dev.twitter.com/docs/auth/oauth and \n // https://dev.twitter.com/docs/auth/creating-signature\n\n // Parameter normalization\n // http://tools.ietf.org/html/rfc5849#section-3.4.1.3.2\n var normalized = map(params)\n // 1. First, the name and value of each parameter are encoded\n .map(function (p) {\n return [ rfc3986(p[0]), rfc3986(p[1] || '') ]\n })\n // 2. The parameters are sorted by name, using ascending byte value\n // ordering. If two or more parameters share the same name, they\n // are sorted by their value.\n .sort(function (a, b) {\n return compare(a[0], b[0]) || compare(a[1], b[1])\n })\n // 3. The name of each parameter is concatenated to its corresponding\n // value using an \"=\" character (ASCII code 61) as a separator, even\n // if the value is empty.\n .map(function (p) { return p.join('=') })\n // 4. The sorted name/value pairs are concatenated together into a\n // single string by using an \"&\" character (ASCII code 38) as\n // separator.\n .join('&')\n\n var base = [\n rfc3986(httpMethod ? httpMethod.toUpperCase() : 'GET'),\n rfc3986(base_uri),\n rfc3986(normalized)\n ].join('&')\n\n return base\n}\n\nfunction hmacsign (httpMethod, base_uri, params, consumer_secret, token_secret) {\n var base = generateBase(httpMethod, base_uri, params)\n var key = [\n consumer_secret || '',\n token_secret || ''\n ].map(rfc3986).join('&')\n\n return sha(key, base, 'sha1')\n}\n\nfunction hmacsign256 (httpMethod, base_uri, params, consumer_secret, token_secret) {\n var base = generateBase(httpMethod, base_uri, params)\n var key = [\n consumer_secret || '',\n token_secret || ''\n ].map(rfc3986).join('&')\n\n return sha(key, base, 'sha256')\n}\n\nfunction rsasign (httpMethod, base_uri, params, private_key, token_secret) {\n var base = generateBase(httpMethod, base_uri, params)\n var key = private_key || ''\n\n return rsa(key, base)\n}\n\nfunction plaintext (consumer_secret, token_secret) {\n var key = [\n consumer_secret || '',\n token_secret || ''\n ].map(rfc3986).join('&')\n\n return key\n}\n\nfunction sign (signMethod, httpMethod, base_uri, params, consumer_secret, token_secret) {\n var method\n var skipArgs = 1\n\n switch (signMethod) {\n case 'RSA-SHA1':\n method = rsasign\n break\n case 'HMAC-SHA1':\n method = hmacsign\n break\n case 'HMAC-SHA256':\n method = hmacsign256\n break\n case 'PLAINTEXT':\n method = plaintext\n skipArgs = 4\n break\n default:\n throw new Error('Signature method not supported: ' + signMethod)\n }\n\n return method.apply(null, [].slice.call(arguments, skipArgs))\n}\n\nexports.hmacsign = hmacsign\nexports.hmacsign256 = hmacsign256\nexports.rsasign = rsasign\nexports.plaintext = plaintext\nexports.sign = sign\nexports.rfc3986 = rfc3986\nexports.generateBase = generateBase", "'use strict'\n\nvar url = require('url')\nvar qs = require('qs')\nvar caseless = require('caseless')\nvar uuid = require('uuid/v4')\nvar oauth = require('oauth-sign')\nvar crypto = require('crypto')\nvar Buffer = require('safe-buffer').Buffer\n\nfunction OAuth (request) {\n this.request = request\n this.params = null\n}\n\nOAuth.prototype.buildParams = function (_oauth, uri, method, query, form, qsLib) {\n var oa = {}\n for (var i in _oauth) {\n oa['oauth_' + i] = _oauth[i]\n }\n if (!oa.oauth_version) {\n oa.oauth_version = '1.0'\n }\n if (!oa.oauth_timestamp) {\n oa.oauth_timestamp = Math.floor(Date.now() / 1000).toString()\n }\n if (!oa.oauth_nonce) {\n oa.oauth_nonce = uuid().replace(/-/g, '')\n }\n if (!oa.oauth_signature_method) {\n oa.oauth_signature_method = 'HMAC-SHA1'\n }\n\n var consumer_secret_or_private_key = oa.oauth_consumer_secret || oa.oauth_private_key // eslint-disable-line camelcase\n delete oa.oauth_consumer_secret\n delete oa.oauth_private_key\n\n var token_secret = oa.oauth_token_secret // eslint-disable-line camelcase\n delete oa.oauth_token_secret\n\n var realm = oa.oauth_realm\n delete oa.oauth_realm\n delete oa.oauth_transport_method\n\n var baseurl = uri.protocol + '//' + uri.host + uri.pathname\n var params = qsLib.parse([].concat(query, form, qsLib.stringify(oa)).join('&'))\n\n oa.oauth_signature = oauth.sign(\n oa.oauth_signature_method,\n method,\n baseurl,\n params,\n consumer_secret_or_private_key, // eslint-disable-line camelcase\n token_secret // eslint-disable-line camelcase\n )\n\n if (realm) {\n oa.realm = realm\n }\n\n return oa\n}\n\nOAuth.prototype.buildBodyHash = function (_oauth, body) {\n if (['HMAC-SHA1', 'RSA-SHA1'].indexOf(_oauth.signature_method || 'HMAC-SHA1') < 0) {\n this.request.emit('error', new Error('oauth: ' + _oauth.signature_method +\n ' signature_method not supported with body_hash signing.'))\n }\n\n var shasum = crypto.createHash('sha1')\n shasum.update(body || '')\n var sha1 = shasum.digest('hex')\n\n return Buffer.from(sha1, 'hex').toString('base64')\n}\n\nOAuth.prototype.concatParams = function (oa, sep, wrap) {\n wrap = wrap || ''\n\n var params = Object.keys(oa).filter(function (i) {\n return i !== 'realm' && i !== 'oauth_signature'\n }).sort()\n\n if (oa.realm) {\n params.splice(0, 0, 'realm')\n }\n params.push('oauth_signature')\n\n return params.map(function (i) {\n return i + '=' + wrap + oauth.rfc3986(oa[i]) + wrap\n }).join(sep)\n}\n\nOAuth.prototype.onRequest = function (_oauth) {\n var self = this\n self.params = _oauth\n\n var uri = self.request.uri || {}\n var method = self.request.method || ''\n var headers = caseless(self.request.headers)\n var body = self.request.body || ''\n var qsLib = self.request.qsLib || qs\n\n var form\n var query\n var contentType = headers.get('content-type') || ''\n var formContentType = 'application/x-www-form-urlencoded'\n var transport = _oauth.transport_method || 'header'\n\n if (contentType.slice(0, formContentType.length) === formContentType) {\n contentType = formContentType\n form = body\n }\n if (uri.query) {\n query = uri.query\n }\n if (transport === 'body' && (method !== 'POST' || contentType !== formContentType)) {\n self.request.emit('error', new Error('oauth: transport_method of body requires POST ' +\n 'and content-type ' + formContentType))\n }\n\n if (!form && typeof _oauth.body_hash === 'boolean') {\n _oauth.body_hash = self.buildBodyHash(_oauth, self.request.body.toString())\n }\n\n var oa = self.buildParams(_oauth, uri, method, query, form, qsLib)\n\n switch (transport) {\n case 'header':\n self.request.setHeader('Authorization', 'OAuth ' + self.concatParams(oa, ',', '\"'))\n break\n\n case 'query':\n var href = self.request.uri.href += (query ? '&' : '?') + self.concatParams(oa, '&')\n self.request.uri = url.parse(href)\n self.request.path = self.request.uri.path\n break\n\n case 'body':\n self.request.body = (form ? form + '&' : '') + self.concatParams(oa, '&')\n break\n\n default:\n self.request.emit('error', new Error('oauth: transport_method invalid'))\n }\n}\n\nexports.OAuth = OAuth\n", "'use strict'\n\nvar crypto = require('crypto')\n\nfunction randomString (size) {\n var bits = (size + 1) * 6\n var buffer = crypto.randomBytes(Math.ceil(bits / 8))\n var string = buffer.toString('base64').replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=/g, '')\n return string.slice(0, size)\n}\n\nfunction calculatePayloadHash (payload, algorithm, contentType) {\n var hash = crypto.createHash(algorithm)\n hash.update('hawk.1.payload\\n')\n hash.update((contentType ? contentType.split(';')[0].trim().toLowerCase() : '') + '\\n')\n hash.update(payload || '')\n hash.update('\\n')\n return hash.digest('base64')\n}\n\nexports.calculateMac = function (credentials, opts) {\n var normalized = 'hawk.1.header\\n' +\n opts.ts + '\\n' +\n opts.nonce + '\\n' +\n (opts.method || '').toUpperCase() + '\\n' +\n opts.resource + '\\n' +\n opts.host.toLowerCase() + '\\n' +\n opts.port + '\\n' +\n (opts.hash || '') + '\\n'\n\n if (opts.ext) {\n normalized = normalized + opts.ext.replace('\\\\', '\\\\\\\\').replace('\\n', '\\\\n')\n }\n\n normalized = normalized + '\\n'\n\n if (opts.app) {\n normalized = normalized + opts.app + '\\n' + (opts.dlg || '') + '\\n'\n }\n\n var hmac = crypto.createHmac(credentials.algorithm, credentials.key).update(normalized)\n var digest = hmac.digest('base64')\n return digest\n}\n\nexports.header = function (uri, method, opts) {\n var timestamp = opts.timestamp || Math.floor((Date.now() + (opts.localtimeOffsetMsec || 0)) / 1000)\n var credentials = opts.credentials\n if (!credentials || !credentials.id || !credentials.key || !credentials.algorithm) {\n return ''\n }\n\n if (['sha1', 'sha256'].indexOf(credentials.algorithm) === -1) {\n return ''\n }\n\n var artifacts = {\n ts: timestamp,\n nonce: opts.nonce || randomString(6),\n method: method,\n resource: uri.pathname + (uri.search || ''),\n host: uri.hostname,\n port: uri.port || (uri.protocol === 'http:' ? 80 : 443),\n hash: opts.hash,\n ext: opts.ext,\n app: opts.app,\n dlg: opts.dlg\n }\n\n if (!artifacts.hash && (opts.payload || opts.payload === '')) {\n artifacts.hash = calculatePayloadHash(opts.payload, credentials.algorithm, opts.contentType)\n }\n\n var mac = exports.calculateMac(credentials, artifacts)\n\n var hasExt = artifacts.ext !== null && artifacts.ext !== undefined && artifacts.ext !== ''\n var header = 'Hawk id=\"' + credentials.id +\n '\", ts=\"' + artifacts.ts +\n '\", nonce=\"' + artifacts.nonce +\n (artifacts.hash ? '\", hash=\"' + artifacts.hash : '') +\n (hasExt ? '\", ext=\"' + artifacts.ext.replace(/\\\\/g, '\\\\\\\\').replace(/\"/g, '\\\\\"') : '') +\n '\", mac=\"' + mac + '\"'\n\n if (artifacts.app) {\n header = header + ', app=\"' + artifacts.app + (artifacts.dlg ? '\", dlg=\"' + artifacts.dlg : '') + '\"'\n }\n\n return header\n}\n", "'use strict'\n\nvar uuid = require('uuid/v4')\nvar CombinedStream = require('combined-stream')\nvar isstream = require('isstream')\nvar Buffer = require('safe-buffer').Buffer\n\nfunction Multipart (request) {\n this.request = request\n this.boundary = uuid()\n this.chunked = false\n this.body = null\n}\n\nMultipart.prototype.isChunked = function (options) {\n var self = this\n var chunked = false\n var parts = options.data || options\n\n if (!parts.forEach) {\n self.request.emit('error', new Error('Argument error, options.multipart.'))\n }\n\n if (options.chunked !== undefined) {\n chunked = options.chunked\n }\n\n if (self.request.getHeader('transfer-encoding') === 'chunked') {\n chunked = true\n }\n\n if (!chunked) {\n parts.forEach(function (part) {\n if (typeof part.body === 'undefined') {\n self.request.emit('error', new Error('Body attribute missing in multipart.'))\n }\n if (isstream(part.body)) {\n chunked = true\n }\n })\n }\n\n return chunked\n}\n\nMultipart.prototype.setHeaders = function (chunked) {\n var self = this\n\n if (chunked && !self.request.hasHeader('transfer-encoding')) {\n self.request.setHeader('transfer-encoding', 'chunked')\n }\n\n var header = self.request.getHeader('content-type')\n\n if (!header || header.indexOf('multipart') === -1) {\n self.request.setHeader('content-type', 'multipart/related; boundary=' + self.boundary)\n } else {\n if (header.indexOf('boundary') !== -1) {\n self.boundary = header.replace(/.*boundary=([^\\s;]+).*/, '$1')\n } else {\n self.request.setHeader('content-type', header + '; boundary=' + self.boundary)\n }\n }\n}\n\nMultipart.prototype.build = function (parts, chunked) {\n var self = this\n var body = chunked ? new CombinedStream() : []\n\n function add (part) {\n if (typeof part === 'number') {\n part = part.toString()\n }\n return chunked ? body.append(part) : body.push(Buffer.from(part))\n }\n\n if (self.request.preambleCRLF) {\n add('\\r\\n')\n }\n\n parts.forEach(function (part) {\n var preamble = '--' + self.boundary + '\\r\\n'\n Object.keys(part).forEach(function (key) {\n if (key === 'body') { return }\n preamble += key + ': ' + part[key] + '\\r\\n'\n })\n preamble += '\\r\\n'\n add(preamble)\n add(part.body)\n add('\\r\\n')\n })\n add('--' + self.boundary + '--')\n\n if (self.request.postambleCRLF) {\n add('\\r\\n')\n }\n\n return body\n}\n\nMultipart.prototype.onRequest = function (options) {\n var self = this\n\n var chunked = self.isChunked(options)\n var parts = options.data || options\n\n self.setHeaders(chunked)\n self.chunked = chunked\n self.body = self.build(parts, chunked)\n}\n\nexports.Multipart = Multipart\n", "'use strict'\n\nvar url = require('url')\nvar isUrl = /^https?:/\n\nfunction Redirect (request) {\n this.request = request\n this.followRedirect = true\n this.followRedirects = true\n this.followAllRedirects = false\n this.followOriginalHttpMethod = false\n this.allowRedirect = function () { return true }\n this.maxRedirects = 10\n this.redirects = []\n this.redirectsFollowed = 0\n this.removeRefererHeader = false\n}\n\nRedirect.prototype.onRequest = function (options) {\n var self = this\n\n if (options.maxRedirects !== undefined) {\n self.maxRedirects = options.maxRedirects\n }\n if (typeof options.followRedirect === 'function') {\n self.allowRedirect = options.followRedirect\n }\n if (options.followRedirect !== undefined) {\n self.followRedirects = !!options.followRedirect\n }\n if (options.followAllRedirects !== undefined) {\n self.followAllRedirects = options.followAllRedirects\n }\n if (self.followRedirects || self.followAllRedirects) {\n self.redirects = self.redirects || []\n }\n if (options.removeRefererHeader !== undefined) {\n self.removeRefererHeader = options.removeRefererHeader\n }\n if (options.followOriginalHttpMethod !== undefined) {\n self.followOriginalHttpMethod = options.followOriginalHttpMethod\n }\n}\n\nRedirect.prototype.redirectTo = function (response) {\n var self = this\n var request = self.request\n\n var redirectTo = null\n if (response.statusCode >= 300 && response.statusCode < 400 && response.caseless.has('location')) {\n var location = response.caseless.get('location')\n request.debug('redirect', location)\n\n if (self.followAllRedirects) {\n redirectTo = location\n } else if (self.followRedirects) {\n switch (request.method) {\n case 'PATCH':\n case 'PUT':\n case 'POST':\n case 'DELETE':\n // Do not follow redirects\n break\n default:\n redirectTo = location\n break\n }\n }\n } else if (response.statusCode === 401) {\n var authHeader = request._auth.onResponse(response)\n if (authHeader) {\n request.setHeader('authorization', authHeader)\n redirectTo = request.uri\n }\n }\n return redirectTo\n}\n\nRedirect.prototype.onResponse = function (response) {\n var self = this\n var request = self.request\n\n var redirectTo = self.redirectTo(response)\n if (!redirectTo || !self.allowRedirect.call(request, response)) {\n return false\n }\n\n request.debug('redirect to', redirectTo)\n\n // ignore any potential response body. it cannot possibly be useful\n // to us at this point.\n // response.resume should be defined, but check anyway before calling. Workaround for browserify.\n if (response.resume) {\n response.resume()\n }\n\n if (self.redirectsFollowed >= self.maxRedirects) {\n request.emit('error', new Error('Exceeded maxRedirects. Probably stuck in a redirect loop ' + request.uri.href))\n return false\n }\n self.redirectsFollowed += 1\n\n if (!isUrl.test(redirectTo)) {\n redirectTo = url.resolve(request.uri.href, redirectTo)\n }\n\n var uriPrev = request.uri\n request.uri = url.parse(redirectTo)\n\n // handle the case where we change protocol from https to http or vice versa\n if (request.uri.protocol !== uriPrev.protocol) {\n delete request.agent\n }\n\n self.redirects.push({ statusCode: response.statusCode, redirectUri: redirectTo })\n\n if (self.followAllRedirects && request.method !== 'HEAD' &&\n response.statusCode !== 401 && response.statusCode !== 307) {\n request.method = self.followOriginalHttpMethod ? request.method : 'GET'\n }\n // request.method = 'GET' // Force all redirects to use GET || commented out fixes #215\n delete request.src\n delete request.req\n delete request._started\n if (response.statusCode !== 401 && response.statusCode !== 307) {\n // Remove parameters from the previous response, unless this is the second request\n // for a server that requires digest authentication.\n delete request.body\n delete request._form\n if (request.headers) {\n request.removeHeader('host')\n request.removeHeader('content-type')\n request.removeHeader('content-length')\n if (request.uri.hostname !== request.originalHost.split(':')[0]) {\n // Remove authorization if changing hostnames (but not if just\n // changing ports or protocols). This matches the behavior of curl:\n // https://github.com/bagder/curl/blob/6beb0eee/lib/http.c#L710\n request.removeHeader('authorization')\n }\n }\n }\n\n if (!self.removeRefererHeader) {\n request.setHeader('referer', uriPrev.href)\n }\n\n request.emit('redirect')\n\n request.init()\n\n return true\n}\n\nexports.Redirect = Redirect\n", "'use strict'\n\nvar net = require('net')\n , tls = require('tls')\n , http = require('http')\n , https = require('https')\n , events = require('events')\n , assert = require('assert')\n , util = require('util')\n , Buffer = require('safe-buffer').Buffer\n ;\n\nexports.httpOverHttp = httpOverHttp\nexports.httpsOverHttp = httpsOverHttp\nexports.httpOverHttps = httpOverHttps\nexports.httpsOverHttps = httpsOverHttps\n\n\nfunction httpOverHttp(options) {\n var agent = new TunnelingAgent(options)\n agent.request = http.request\n return agent\n}\n\nfunction httpsOverHttp(options) {\n var agent = new TunnelingAgent(options)\n agent.request = http.request\n agent.createSocket = createSecureSocket\n agent.defaultPort = 443\n return agent\n}\n\nfunction httpOverHttps(options) {\n var agent = new TunnelingAgent(options)\n agent.request = https.request\n return agent\n}\n\nfunction httpsOverHttps(options) {\n var agent = new TunnelingAgent(options)\n agent.request = https.request\n agent.createSocket = createSecureSocket\n agent.defaultPort = 443\n return agent\n}\n\n\nfunction TunnelingAgent(options) {\n var self = this\n self.options = options || {}\n self.proxyOptions = self.options.proxy || {}\n self.maxSockets = self.options.maxSockets || http.Agent.defaultMaxSockets\n self.requests = []\n self.sockets = []\n\n self.on('free', function onFree(socket, host, port) {\n for (var i = 0, len = self.requests.length; i < len; ++i) {\n var pending = self.requests[i]\n if (pending.host === host && pending.port === port) {\n // Detect the request to connect same origin server,\n // reuse the connection.\n self.requests.splice(i, 1)\n pending.request.onSocket(socket)\n return\n }\n }\n socket.destroy()\n self.removeSocket(socket)\n })\n}\nutil.inherits(TunnelingAgent, events.EventEmitter)\n\nTunnelingAgent.prototype.addRequest = function addRequest(req, options) {\n var self = this\n\n // Legacy API: addRequest(req, host, port, path)\n if (typeof options === 'string') {\n options = {\n host: options,\n port: arguments[2],\n path: arguments[3]\n };\n }\n\n if (self.sockets.length >= this.maxSockets) {\n // We are over limit so we'll add it to the queue.\n self.requests.push({host: options.host, port: options.port, request: req})\n return\n }\n\n // If we are under maxSockets create a new one.\n self.createConnection({host: options.host, port: options.port, request: req})\n}\n\nTunnelingAgent.prototype.createConnection = function createConnection(pending) {\n var self = this\n\n self.createSocket(pending, function(socket) {\n socket.on('free', onFree)\n socket.on('close', onCloseOrRemove)\n socket.on('agentRemove', onCloseOrRemove)\n pending.request.onSocket(socket)\n\n function onFree() {\n self.emit('free', socket, pending.host, pending.port)\n }\n\n function onCloseOrRemove(err) {\n self.removeSocket(socket)\n socket.removeListener('free', onFree)\n socket.removeListener('close', onCloseOrRemove)\n socket.removeListener('agentRemove', onCloseOrRemove)\n }\n })\n}\n\nTunnelingAgent.prototype.createSocket = function createSocket(options, cb) {\n var self = this\n var placeholder = {}\n self.sockets.push(placeholder)\n\n var connectOptions = mergeOptions({}, self.proxyOptions,\n { method: 'CONNECT'\n , path: options.host + ':' + options.port\n , agent: false\n }\n )\n if (connectOptions.proxyAuth) {\n connectOptions.headers = connectOptions.headers || {}\n connectOptions.headers['Proxy-Authorization'] = 'Basic ' +\n Buffer.from(connectOptions.proxyAuth).toString('base64')\n }\n\n debug('making CONNECT request')\n var connectReq = self.request(connectOptions)\n connectReq.useChunkedEncodingByDefault = false // for v0.6\n connectReq.once('response', onResponse) // for v0.6\n connectReq.once('upgrade', onUpgrade) // for v0.6\n connectReq.once('connect', onConnect) // for v0.7 or later\n connectReq.once('error', onError)\n connectReq.end()\n\n function onResponse(res) {\n // Very hacky. This is necessary to avoid http-parser leaks.\n res.upgrade = true\n }\n\n function onUpgrade(res, socket, head) {\n // Hacky.\n process.nextTick(function() {\n onConnect(res, socket, head)\n })\n }\n\n function onConnect(res, socket, head) {\n connectReq.removeAllListeners()\n socket.removeAllListeners()\n\n if (res.statusCode === 200) {\n assert.equal(head.length, 0)\n debug('tunneling connection has established')\n self.sockets[self.sockets.indexOf(placeholder)] = socket\n cb(socket)\n } else {\n debug('tunneling socket could not be established, statusCode=%d', res.statusCode)\n var error = new Error('tunneling socket could not be established, ' + 'statusCode=' + res.statusCode)\n error.code = 'ECONNRESET'\n options.request.emit('error', error)\n self.removeSocket(placeholder)\n }\n }\n\n function onError(cause) {\n connectReq.removeAllListeners()\n\n debug('tunneling socket could not be established, cause=%s\\n', cause.message, cause.stack)\n var error = new Error('tunneling socket could not be established, ' + 'cause=' + cause.message)\n error.code = 'ECONNRESET'\n options.request.emit('error', error)\n self.removeSocket(placeholder)\n }\n}\n\nTunnelingAgent.prototype.removeSocket = function removeSocket(socket) {\n var pos = this.sockets.indexOf(socket)\n if (pos === -1) return\n\n this.sockets.splice(pos, 1)\n\n var pending = this.requests.shift()\n if (pending) {\n // If we have pending requests and a socket gets closed a new one\n // needs to be created to take over in the pool for the one that closed.\n this.createConnection(pending)\n }\n}\n\nfunction createSecureSocket(options, cb) {\n var self = this\n TunnelingAgent.prototype.createSocket.call(self, options, function(socket) {\n // 0 is dummy port for v0.6\n var secureSocket = tls.connect(0, mergeOptions({}, self.options,\n { servername: options.host\n , socket: socket\n }\n ))\n self.sockets[self.sockets.indexOf(socket)] = secureSocket\n cb(secureSocket)\n })\n}\n\n\nfunction mergeOptions(target) {\n for (var i = 1, len = arguments.length; i < len; ++i) {\n var overrides = arguments[i]\n if (typeof overrides === 'object') {\n var keys = Object.keys(overrides)\n for (var j = 0, keyLen = keys.length; j < keyLen; ++j) {\n var k = keys[j]\n if (overrides[k] !== undefined) {\n target[k] = overrides[k]\n }\n }\n }\n }\n return target\n}\n\n\nvar debug\nif (process.env.NODE_DEBUG && /\\btunnel\\b/.test(process.env.NODE_DEBUG)) {\n debug = function() {\n var args = Array.prototype.slice.call(arguments)\n if (typeof args[0] === 'string') {\n args[0] = 'TUNNEL: ' + args[0]\n } else {\n args.unshift('TUNNEL:')\n }\n console.error.apply(console, args)\n }\n} else {\n debug = function() {}\n}\nexports.debug = debug // for test\n", "'use strict'\n\nvar url = require('url')\nvar tunnel = require('tunnel-agent')\n\nvar defaultProxyHeaderWhiteList = [\n 'accept',\n 'accept-charset',\n 'accept-encoding',\n 'accept-language',\n 'accept-ranges',\n 'cache-control',\n 'content-encoding',\n 'content-language',\n 'content-location',\n 'content-md5',\n 'content-range',\n 'content-type',\n 'connection',\n 'date',\n 'expect',\n 'max-forwards',\n 'pragma',\n 'referer',\n 'te',\n 'user-agent',\n 'via'\n]\n\nvar defaultProxyHeaderExclusiveList = [\n 'proxy-authorization'\n]\n\nfunction constructProxyHost (uriObject) {\n var port = uriObject.port\n var protocol = uriObject.protocol\n var proxyHost = uriObject.hostname + ':'\n\n if (port) {\n proxyHost += port\n } else if (protocol === 'https:') {\n proxyHost += '443'\n } else {\n proxyHost += '80'\n }\n\n return proxyHost\n}\n\nfunction constructProxyHeaderWhiteList (headers, proxyHeaderWhiteList) {\n var whiteList = proxyHeaderWhiteList\n .reduce(function (set, header) {\n set[header.toLowerCase()] = true\n return set\n }, {})\n\n return Object.keys(headers)\n .filter(function (header) {\n return whiteList[header.toLowerCase()]\n })\n .reduce(function (set, header) {\n set[header] = headers[header]\n return set\n }, {})\n}\n\nfunction constructTunnelOptions (request, proxyHeaders) {\n var proxy = request.proxy\n\n var tunnelOptions = {\n proxy: {\n host: proxy.hostname,\n port: +proxy.port,\n proxyAuth: proxy.auth,\n headers: proxyHeaders\n },\n headers: request.headers,\n ca: request.ca,\n cert: request.cert,\n key: request.key,\n passphrase: request.passphrase,\n pfx: request.pfx,\n ciphers: request.ciphers,\n rejectUnauthorized: request.rejectUnauthorized,\n secureOptions: request.secureOptions,\n secureProtocol: request.secureProtocol\n }\n\n return tunnelOptions\n}\n\nfunction constructTunnelFnName (uri, proxy) {\n var uriProtocol = (uri.protocol === 'https:' ? 'https' : 'http')\n var proxyProtocol = (proxy.protocol === 'https:' ? 'Https' : 'Http')\n return [uriProtocol, proxyProtocol].join('Over')\n}\n\nfunction getTunnelFn (request) {\n var uri = request.uri\n var proxy = request.proxy\n var tunnelFnName = constructTunnelFnName(uri, proxy)\n return tunnel[tunnelFnName]\n}\n\nfunction Tunnel (request) {\n this.request = request\n this.proxyHeaderWhiteList = defaultProxyHeaderWhiteList\n this.proxyHeaderExclusiveList = []\n if (typeof request.tunnel !== 'undefined') {\n this.tunnelOverride = request.tunnel\n }\n}\n\nTunnel.prototype.isEnabled = function () {\n var self = this\n var request = self.request\n // Tunnel HTTPS by default. Allow the user to override this setting.\n\n // If self.tunnelOverride is set (the user specified a value), use it.\n if (typeof self.tunnelOverride !== 'undefined') {\n return self.tunnelOverride\n }\n\n // If the destination is HTTPS, tunnel.\n if (request.uri.protocol === 'https:') {\n return true\n }\n\n // Otherwise, do not use tunnel.\n return false\n}\n\nTunnel.prototype.setup = function (options) {\n var self = this\n var request = self.request\n\n options = options || {}\n\n if (typeof request.proxy === 'string') {\n request.proxy = url.parse(request.proxy)\n }\n\n if (!request.proxy || !request.tunnel) {\n return false\n }\n\n // Setup Proxy Header Exclusive List and White List\n if (options.proxyHeaderWhiteList) {\n self.proxyHeaderWhiteList = options.proxyHeaderWhiteList\n }\n if (options.proxyHeaderExclusiveList) {\n self.proxyHeaderExclusiveList = options.proxyHeaderExclusiveList\n }\n\n var proxyHeaderExclusiveList = self.proxyHeaderExclusiveList.concat(defaultProxyHeaderExclusiveList)\n var proxyHeaderWhiteList = self.proxyHeaderWhiteList.concat(proxyHeaderExclusiveList)\n\n // Setup Proxy Headers and Proxy Headers Host\n // Only send the Proxy White Listed Header names\n var proxyHeaders = constructProxyHeaderWhiteList(request.headers, proxyHeaderWhiteList)\n proxyHeaders.host = constructProxyHost(request.uri)\n\n proxyHeaderExclusiveList.forEach(request.removeHeader, request)\n\n // Set Agent from Tunnel Data\n var tunnelFn = getTunnelFn(request)\n var tunnelOptions = constructTunnelOptions(request, proxyHeaders)\n request.agent = tunnelFn(tunnelOptions)\n\n return true\n}\n\nTunnel.defaultProxyHeaderWhiteList = defaultProxyHeaderWhiteList\nTunnel.defaultProxyHeaderExclusiveList = defaultProxyHeaderExclusiveList\nexports.Tunnel = Tunnel\n", null, "'use strict'\n\nvar http = require('http')\nvar https = require('https')\nvar url = require('url')\nvar util = require('util')\nvar stream = require('stream')\nvar zlib = require('zlib')\nvar aws2 = require('aws-sign2')\nvar aws4 = require('aws4')\nvar httpSignature = require('http-signature')\nvar mime = require('mime-types')\nvar caseless = require('caseless')\nvar ForeverAgent = require('forever-agent')\nvar FormData = require('form-data')\nvar extend = require('extend')\nvar isstream = require('isstream')\nvar isTypedArray = require('is-typedarray').strict\nvar helpers = require('./lib/helpers')\nvar cookies = require('./lib/cookies')\nvar getProxyFromURI = require('./lib/getProxyFromURI')\nvar Querystring = require('./lib/querystring').Querystring\nvar Har = require('./lib/har').Har\nvar Auth = require('./lib/auth').Auth\nvar OAuth = require('./lib/oauth').OAuth\nvar hawk = require('./lib/hawk')\nvar Multipart = require('./lib/multipart').Multipart\nvar Redirect = require('./lib/redirect').Redirect\nvar Tunnel = require('./lib/tunnel').Tunnel\nvar now = require('performance-now')\nvar Buffer = require('safe-buffer').Buffer\n\nvar safeStringify = helpers.safeStringify\nvar isReadStream = helpers.isReadStream\nvar toBase64 = helpers.toBase64\nvar defer = helpers.defer\nvar copy = helpers.copy\nvar version = helpers.version\nvar globalCookieJar = cookies.jar()\n\nvar globalPool = {}\n\nfunction filterForNonReserved (reserved, options) {\n // Filter out properties that are not reserved.\n // Reserved values are passed in at call site.\n\n var object = {}\n for (var i in options) {\n var notReserved = (reserved.indexOf(i) === -1)\n if (notReserved) {\n object[i] = options[i]\n }\n }\n return object\n}\n\nfunction filterOutReservedFunctions (reserved, options) {\n // Filter out properties that are functions and are reserved.\n // Reserved values are passed in at call site.\n\n var object = {}\n for (var i in options) {\n var isReserved = !(reserved.indexOf(i) === -1)\n var isFunction = (typeof options[i] === 'function')\n if (!(isReserved && isFunction)) {\n object[i] = options[i]\n }\n }\n return object\n}\n\n// Return a simpler request object to allow serialization\nfunction requestToJSON () {\n var self = this\n return {\n uri: self.uri,\n method: self.method,\n headers: self.headers\n }\n}\n\n// Return a simpler response object to allow serialization\nfunction responseToJSON () {\n var self = this\n return {\n statusCode: self.statusCode,\n body: self.body,\n headers: self.headers,\n request: requestToJSON.call(self.request)\n }\n}\n\nfunction Request (options) {\n // if given the method property in options, set property explicitMethod to true\n\n // extend the Request instance with any non-reserved properties\n // remove any reserved functions from the options object\n // set Request instance to be readable and writable\n // call init\n\n var self = this\n\n // start with HAR, then override with additional options\n if (options.har) {\n self._har = new Har(self)\n options = self._har.options(options)\n }\n\n stream.Stream.call(self)\n var reserved = Object.keys(Request.prototype)\n var nonReserved = filterForNonReserved(reserved, options)\n\n extend(self, nonReserved)\n options = filterOutReservedFunctions(reserved, options)\n\n self.readable = true\n self.writable = true\n if (options.method) {\n self.explicitMethod = true\n }\n self._qs = new Querystring(self)\n self._auth = new Auth(self)\n self._oauth = new OAuth(self)\n self._multipart = new Multipart(self)\n self._redirect = new Redirect(self)\n self._tunnel = new Tunnel(self)\n self.init(options)\n}\n\nutil.inherits(Request, stream.Stream)\n\n// Debugging\nRequest.debug = process.env.NODE_DEBUG && /\\brequest\\b/.test(process.env.NODE_DEBUG)\nfunction debug () {\n if (Request.debug) {\n console.error('REQUEST %s', util.format.apply(util, arguments))\n }\n}\nRequest.prototype.debug = debug\n\nRequest.prototype.init = function (options) {\n // init() contains all the code to setup the request object.\n // the actual outgoing request is not started until start() is called\n // this function is called from both the constructor and on redirect.\n var self = this\n if (!options) {\n options = {}\n }\n self.headers = self.headers ? copy(self.headers) : {}\n\n // Delete headers with value undefined since they break\n // ClientRequest.OutgoingMessage.setHeader in node 0.12\n for (var headerName in self.headers) {\n if (typeof self.headers[headerName] === 'undefined') {\n delete self.headers[headerName]\n }\n }\n\n caseless.httpify(self, self.headers)\n\n if (!self.method) {\n self.method = options.method || 'GET'\n }\n if (!self.localAddress) {\n self.localAddress = options.localAddress\n }\n\n self._qs.init(options)\n\n debug(options)\n if (!self.pool && self.pool !== false) {\n self.pool = globalPool\n }\n self.dests = self.dests || []\n self.__isRequestRequest = true\n\n // Protect against double callback\n if (!self._callback && self.callback) {\n self._callback = self.callback\n self.callback = function () {\n if (self._callbackCalled) {\n return // Print a warning maybe?\n }\n self._callbackCalled = true\n self._callback.apply(self, arguments)\n }\n self.on('error', self.callback.bind())\n self.on('complete', self.callback.bind(self, null))\n }\n\n // People use this property instead all the time, so support it\n if (!self.uri && self.url) {\n self.uri = self.url\n delete self.url\n }\n\n // If there's a baseUrl, then use it as the base URL (i.e. uri must be\n // specified as a relative path and is appended to baseUrl).\n if (self.baseUrl) {\n if (typeof self.baseUrl !== 'string') {\n return self.emit('error', new Error('options.baseUrl must be a string'))\n }\n\n if (typeof self.uri !== 'string') {\n return self.emit('error', new Error('options.uri must be a string when using options.baseUrl'))\n }\n\n if (self.uri.indexOf('//') === 0 || self.uri.indexOf('://') !== -1) {\n return self.emit('error', new Error('options.uri must be a path when using options.baseUrl'))\n }\n\n // Handle all cases to make sure that there's only one slash between\n // baseUrl and uri.\n var baseUrlEndsWithSlash = self.baseUrl.lastIndexOf('/') === self.baseUrl.length - 1\n var uriStartsWithSlash = self.uri.indexOf('/') === 0\n\n if (baseUrlEndsWithSlash && uriStartsWithSlash) {\n self.uri = self.baseUrl + self.uri.slice(1)\n } else if (baseUrlEndsWithSlash || uriStartsWithSlash) {\n self.uri = self.baseUrl + self.uri\n } else if (self.uri === '') {\n self.uri = self.baseUrl\n } else {\n self.uri = self.baseUrl + '/' + self.uri\n }\n delete self.baseUrl\n }\n\n // A URI is needed by this point, emit error if we haven't been able to get one\n if (!self.uri) {\n return self.emit('error', new Error('options.uri is a required argument'))\n }\n\n // If a string URI/URL was given, parse it into a URL object\n if (typeof self.uri === 'string') {\n self.uri = url.parse(self.uri)\n }\n\n // Some URL objects are not from a URL parsed string and need href added\n if (!self.uri.href) {\n self.uri.href = url.format(self.uri)\n }\n\n // DEPRECATED: Warning for users of the old Unix Sockets URL Scheme\n if (self.uri.protocol === 'unix:') {\n return self.emit('error', new Error('`unix://` URL scheme is no longer supported. Please use the format `http://unix:SOCKET:PATH`'))\n }\n\n // Support Unix Sockets\n if (self.uri.host === 'unix') {\n self.enableUnixSocket()\n }\n\n if (self.strictSSL === false) {\n self.rejectUnauthorized = false\n }\n\n if (!self.uri.pathname) { self.uri.pathname = '/' }\n\n if (!(self.uri.host || (self.uri.hostname && self.uri.port)) && !self.uri.isUnix) {\n // Invalid URI: it may generate lot of bad errors, like 'TypeError: Cannot call method `indexOf` of undefined' in CookieJar\n // Detect and reject it as soon as possible\n var faultyUri = url.format(self.uri)\n var message = 'Invalid URI \"' + faultyUri + '\"'\n if (Object.keys(options).length === 0) {\n // No option ? This can be the sign of a redirect\n // As this is a case where the user cannot do anything (they didn't call request directly with this URL)\n // they should be warned that it can be caused by a redirection (can save some hair)\n message += '. This can be caused by a crappy redirection.'\n }\n // This error was fatal\n self.abort()\n return self.emit('error', new Error(message))\n }\n\n if (!self.hasOwnProperty('proxy')) {\n self.proxy = getProxyFromURI(self.uri)\n }\n\n self.tunnel = self._tunnel.isEnabled()\n if (self.proxy) {\n self._tunnel.setup(options)\n }\n\n self._redirect.onRequest(options)\n\n self.setHost = false\n if (!self.hasHeader('host')) {\n var hostHeaderName = self.originalHostHeaderName || 'host'\n self.setHeader(hostHeaderName, self.uri.host)\n // Drop :port suffix from Host header if known protocol.\n if (self.uri.port) {\n if ((self.uri.port === '80' && self.uri.protocol === 'http:') ||\n (self.uri.port === '443' && self.uri.protocol === 'https:')) {\n self.setHeader(hostHeaderName, self.uri.hostname)\n }\n }\n self.setHost = true\n }\n\n self.jar(self._jar || options.jar)\n\n if (!self.uri.port) {\n if (self.uri.protocol === 'http:') { self.uri.port = 80 } else if (self.uri.protocol === 'https:') { self.uri.port = 443 }\n }\n\n if (self.proxy && !self.tunnel) {\n self.port = self.proxy.port\n self.host = self.proxy.hostname\n } else {\n self.port = self.uri.port\n self.host = self.uri.hostname\n }\n\n if (options.form) {\n self.form(options.form)\n }\n\n if (options.formData) {\n var formData = options.formData\n var requestForm = self.form()\n var appendFormValue = function (key, value) {\n if (value && value.hasOwnProperty('value') && value.hasOwnProperty('options')) {\n requestForm.append(key, value.value, value.options)\n } else {\n requestForm.append(key, value)\n }\n }\n for (var formKey in formData) {\n if (formData.hasOwnProperty(formKey)) {\n var formValue = formData[formKey]\n if (formValue instanceof Array) {\n for (var j = 0; j < formValue.length; j++) {\n appendFormValue(formKey, formValue[j])\n }\n } else {\n appendFormValue(formKey, formValue)\n }\n }\n }\n }\n\n if (options.qs) {\n self.qs(options.qs)\n }\n\n if (self.uri.path) {\n self.path = self.uri.path\n } else {\n self.path = self.uri.pathname + (self.uri.search || '')\n }\n\n if (self.path.length === 0) {\n self.path = '/'\n }\n\n // Auth must happen last in case signing is dependent on other headers\n if (options.aws) {\n self.aws(options.aws)\n }\n\n if (options.hawk) {\n self.hawk(options.hawk)\n }\n\n if (options.httpSignature) {\n self.httpSignature(options.httpSignature)\n }\n\n if (options.auth) {\n if (Object.prototype.hasOwnProperty.call(options.auth, 'username')) {\n options.auth.user = options.auth.username\n }\n if (Object.prototype.hasOwnProperty.call(options.auth, 'password')) {\n options.auth.pass = options.auth.password\n }\n\n self.auth(\n options.auth.user,\n options.auth.pass,\n options.auth.sendImmediately,\n options.auth.bearer\n )\n }\n\n if (self.gzip && !self.hasHeader('accept-encoding')) {\n self.setHeader('accept-encoding', 'gzip, deflate')\n }\n\n if (self.uri.auth && !self.hasHeader('authorization')) {\n var uriAuthPieces = self.uri.auth.split(':').map(function (item) { return self._qs.unescape(item) })\n self.auth(uriAuthPieces[0], uriAuthPieces.slice(1).join(':'), true)\n }\n\n if (!self.tunnel && self.proxy && self.proxy.auth && !self.hasHeader('proxy-authorization')) {\n var proxyAuthPieces = self.proxy.auth.split(':').map(function (item) { return self._qs.unescape(item) })\n var authHeader = 'Basic ' + toBase64(proxyAuthPieces.join(':'))\n self.setHeader('proxy-authorization', authHeader)\n }\n\n if (self.proxy && !self.tunnel) {\n self.path = (self.uri.protocol + '//' + self.uri.host + self.path)\n }\n\n if (options.json) {\n self.json(options.json)\n }\n if (options.multipart) {\n self.multipart(options.multipart)\n }\n\n if (options.time) {\n self.timing = true\n\n // NOTE: elapsedTime is deprecated in favor of .timings\n self.elapsedTime = self.elapsedTime || 0\n }\n\n function setContentLength () {\n if (isTypedArray(self.body)) {\n self.body = Buffer.from(self.body)\n }\n\n if (!self.hasHeader('content-length')) {\n var length\n if (typeof self.body === 'string') {\n length = Buffer.byteLength(self.body)\n } else if (Array.isArray(self.body)) {\n length = self.body.reduce(function (a, b) { return a + b.length }, 0)\n } else {\n length = self.body.length\n }\n\n if (length) {\n self.setHeader('content-length', length)\n } else {\n self.emit('error', new Error('Argument error, options.body.'))\n }\n }\n }\n if (self.body && !isstream(self.body)) {\n setContentLength()\n }\n\n if (options.oauth) {\n self.oauth(options.oauth)\n } else if (self._oauth.params && self.hasHeader('authorization')) {\n self.oauth(self._oauth.params)\n }\n\n var protocol = self.proxy && !self.tunnel ? self.proxy.protocol : self.uri.protocol\n var defaultModules = {'http:': http, 'https:': https}\n var httpModules = self.httpModules || {}\n\n self.httpModule = httpModules[protocol] || defaultModules[protocol]\n\n if (!self.httpModule) {\n return self.emit('error', new Error('Invalid protocol: ' + protocol))\n }\n\n if (options.ca) {\n self.ca = options.ca\n }\n\n if (!self.agent) {\n if (options.agentOptions) {\n self.agentOptions = options.agentOptions\n }\n\n if (options.agentClass) {\n self.agentClass = options.agentClass\n } else if (options.forever) {\n var v = version()\n // use ForeverAgent in node 0.10- only\n if (v.major === 0 && v.minor <= 10) {\n self.agentClass = protocol === 'http:' ? ForeverAgent : ForeverAgent.SSL\n } else {\n self.agentClass = self.httpModule.Agent\n self.agentOptions = self.agentOptions || {}\n self.agentOptions.keepAlive = true\n }\n } else {\n self.agentClass = self.httpModule.Agent\n }\n }\n\n if (self.pool === false) {\n self.agent = false\n } else {\n self.agent = self.agent || self.getNewAgent()\n }\n\n self.on('pipe', function (src) {\n if (self.ntick && self._started) {\n self.emit('error', new Error('You cannot pipe to this stream after the outbound request has started.'))\n }\n self.src = src\n if (isReadStream(src)) {\n if (!self.hasHeader('content-type')) {\n self.setHeader('content-type', mime.lookup(src.path))\n }\n } else {\n if (src.headers) {\n for (var i in src.headers) {\n if (!self.hasHeader(i)) {\n self.setHeader(i, src.headers[i])\n }\n }\n }\n if (self._json && !self.hasHeader('content-type')) {\n self.setHeader('content-type', 'application/json')\n }\n if (src.method && !self.explicitMethod) {\n self.method = src.method\n }\n }\n\n // self.on('pipe', function () {\n // console.error('You have already piped to this stream. Pipeing twice is likely to break the request.')\n // })\n })\n\n defer(function () {\n if (self._aborted) {\n return\n }\n\n var end = function () {\n if (self._form) {\n if (!self._auth.hasAuth) {\n self._form.pipe(self)\n } else if (self._auth.hasAuth && self._auth.sentAuth) {\n self._form.pipe(self)\n }\n }\n if (self._multipart && self._multipart.chunked) {\n self._multipart.body.pipe(self)\n }\n if (self.body) {\n if (isstream(self.body)) {\n self.body.pipe(self)\n } else {\n setContentLength()\n if (Array.isArray(self.body)) {\n self.body.forEach(function (part) {\n self.write(part)\n })\n } else {\n self.write(self.body)\n }\n self.end()\n }\n } else if (self.requestBodyStream) {\n console.warn('options.requestBodyStream is deprecated, please pass the request object to stream.pipe.')\n self.requestBodyStream.pipe(self)\n } else if (!self.src) {\n if (self._auth.hasAuth && !self._auth.sentAuth) {\n self.end()\n return\n }\n if (self.method !== 'GET' && typeof self.method !== 'undefined') {\n self.setHeader('content-length', 0)\n }\n self.end()\n }\n }\n\n if (self._form && !self.hasHeader('content-length')) {\n // Before ending the request, we had to compute the length of the whole form, asyncly\n self.setHeader(self._form.getHeaders(), true)\n self._form.getLength(function (err, length) {\n if (!err && !isNaN(length)) {\n self.setHeader('content-length', length)\n }\n end()\n })\n } else {\n end()\n }\n\n self.ntick = true\n })\n}\n\nRequest.prototype.getNewAgent = function () {\n var self = this\n var Agent = self.agentClass\n var options = {}\n if (self.agentOptions) {\n for (var i in self.agentOptions) {\n options[i] = self.agentOptions[i]\n }\n }\n if (self.ca) {\n options.ca = self.ca\n }\n if (self.ciphers) {\n options.ciphers = self.ciphers\n }\n if (self.secureProtocol) {\n options.secureProtocol = self.secureProtocol\n }\n if (self.secureOptions) {\n options.secureOptions = self.secureOptions\n }\n if (typeof self.rejectUnauthorized !== 'undefined') {\n options.rejectUnauthorized = self.rejectUnauthorized\n }\n\n if (self.cert && self.key) {\n options.key = self.key\n options.cert = self.cert\n }\n\n if (self.pfx) {\n options.pfx = self.pfx\n }\n\n if (self.passphrase) {\n options.passphrase = self.passphrase\n }\n\n var poolKey = ''\n\n // different types of agents are in different pools\n if (Agent !== self.httpModule.Agent) {\n poolKey += Agent.name\n }\n\n // ca option is only relevant if proxy or destination are https\n var proxy = self.proxy\n if (typeof proxy === 'string') {\n proxy = url.parse(proxy)\n }\n var isHttps = (proxy && proxy.protocol === 'https:') || this.uri.protocol === 'https:'\n\n if (isHttps) {\n if (options.ca) {\n if (poolKey) {\n poolKey += ':'\n }\n poolKey += options.ca\n }\n\n if (typeof options.rejectUnauthorized !== 'undefined') {\n if (poolKey) {\n poolKey += ':'\n }\n poolKey += options.rejectUnauthorized\n }\n\n if (options.cert) {\n if (poolKey) {\n poolKey += ':'\n }\n poolKey += options.cert.toString('ascii') + options.key.toString('ascii')\n }\n\n if (options.pfx) {\n if (poolKey) {\n poolKey += ':'\n }\n poolKey += options.pfx.toString('ascii')\n }\n\n if (options.ciphers) {\n if (poolKey) {\n poolKey += ':'\n }\n poolKey += options.ciphers\n }\n\n if (options.secureProtocol) {\n if (poolKey) {\n poolKey += ':'\n }\n poolKey += options.secureProtocol\n }\n\n if (options.secureOptions) {\n if (poolKey) {\n poolKey += ':'\n }\n poolKey += options.secureOptions\n }\n }\n\n if (self.pool === globalPool && !poolKey && Object.keys(options).length === 0 && self.httpModule.globalAgent) {\n // not doing anything special. Use the globalAgent\n return self.httpModule.globalAgent\n }\n\n // we're using a stored agent. Make sure it's protocol-specific\n poolKey = self.uri.protocol + poolKey\n\n // generate a new agent for this setting if none yet exists\n if (!self.pool[poolKey]) {\n self.pool[poolKey] = new Agent(options)\n // properly set maxSockets on new agents\n if (self.pool.maxSockets) {\n self.pool[poolKey].maxSockets = self.pool.maxSockets\n }\n }\n\n return self.pool[poolKey]\n}\n\nRequest.prototype.start = function () {\n // start() is called once we are ready to send the outgoing HTTP request.\n // this is usually called on the first write(), end() or on nextTick()\n var self = this\n\n if (self.timing) {\n // All timings will be relative to this request's startTime. In order to do this,\n // we need to capture the wall-clock start time (via Date), immediately followed\n // by the high-resolution timer (via now()). While these two won't be set\n // at the _exact_ same time, they should be close enough to be able to calculate\n // high-resolution, monotonically non-decreasing timestamps relative to startTime.\n var startTime = new Date().getTime()\n var startTimeNow = now()\n }\n\n if (self._aborted) {\n return\n }\n\n self._started = true\n self.method = self.method || 'GET'\n self.href = self.uri.href\n\n if (self.src && self.src.stat && self.src.stat.size && !self.hasHeader('content-length')) {\n self.setHeader('content-length', self.src.stat.size)\n }\n if (self._aws) {\n self.aws(self._aws, true)\n }\n\n // We have a method named auth, which is completely different from the http.request\n // auth option. If we don't remove it, we're gonna have a bad time.\n var reqOptions = copy(self)\n delete reqOptions.auth\n\n debug('make request', self.uri.href)\n\n // node v6.8.0 now supports a `timeout` value in `http.request()`, but we\n // should delete it for now since we handle timeouts manually for better\n // consistency with node versions before v6.8.0\n delete reqOptions.timeout\n\n try {\n self.req = self.httpModule.request(reqOptions)\n } catch (err) {\n self.emit('error', err)\n return\n }\n\n if (self.timing) {\n self.startTime = startTime\n self.startTimeNow = startTimeNow\n\n // Timing values will all be relative to startTime (by comparing to startTimeNow\n // so we have an accurate clock)\n self.timings = {}\n }\n\n var timeout\n if (self.timeout && !self.timeoutTimer) {\n if (self.timeout < 0) {\n timeout = 0\n } else if (typeof self.timeout === 'number' && isFinite(self.timeout)) {\n timeout = self.timeout\n }\n }\n\n self.req.on('response', self.onRequestResponse.bind(self))\n self.req.on('error', self.onRequestError.bind(self))\n self.req.on('drain', function () {\n self.emit('drain')\n })\n\n self.req.on('socket', function (socket) {\n // `._connecting` was the old property which was made public in node v6.1.0\n var isConnecting = socket._connecting || socket.connecting\n if (self.timing) {\n self.timings.socket = now() - self.startTimeNow\n\n if (isConnecting) {\n var onLookupTiming = function () {\n self.timings.lookup = now() - self.startTimeNow\n }\n\n var onConnectTiming = function () {\n self.timings.connect = now() - self.startTimeNow\n }\n\n socket.once('lookup', onLookupTiming)\n socket.once('connect', onConnectTiming)\n\n // clean up timing event listeners if needed on error\n self.req.once('error', function () {\n socket.removeListener('lookup', onLookupTiming)\n socket.removeListener('connect', onConnectTiming)\n })\n }\n }\n\n var setReqTimeout = function () {\n // This timeout sets the amount of time to wait *between* bytes sent\n // from the server once connected.\n //\n // In particular, it's useful for erroring if the server fails to send\n // data halfway through streaming a response.\n self.req.setTimeout(timeout, function () {\n if (self.req) {\n self.abort()\n var e = new Error('ESOCKETTIMEDOUT')\n e.code = 'ESOCKETTIMEDOUT'\n e.connect = false\n self.emit('error', e)\n }\n })\n }\n if (timeout !== undefined) {\n // Only start the connection timer if we're actually connecting a new\n // socket, otherwise if we're already connected (because this is a\n // keep-alive connection) do not bother. This is important since we won't\n // get a 'connect' event for an already connected socket.\n if (isConnecting) {\n var onReqSockConnect = function () {\n socket.removeListener('connect', onReqSockConnect)\n self.clearTimeout()\n setReqTimeout()\n }\n\n socket.on('connect', onReqSockConnect)\n\n self.req.on('error', function (err) { // eslint-disable-line handle-callback-err\n socket.removeListener('connect', onReqSockConnect)\n })\n\n // Set a timeout in memory - this block will throw if the server takes more\n // than `timeout` to write the HTTP status and headers (corresponding to\n // the on('response') event on the client). NB: this measures wall-clock\n // time, not the time between bytes sent by the server.\n self.timeoutTimer = setTimeout(function () {\n socket.removeListener('connect', onReqSockConnect)\n self.abort()\n var e = new Error('ETIMEDOUT')\n e.code = 'ETIMEDOUT'\n e.connect = true\n self.emit('error', e)\n }, timeout)\n } else {\n // We're already connected\n setReqTimeout()\n }\n }\n self.emit('socket', socket)\n })\n\n self.emit('request', self.req)\n}\n\nRequest.prototype.onRequestError = function (error) {\n var self = this\n if (self._aborted) {\n return\n }\n if (self.req && self.req._reusedSocket && error.code === 'ECONNRESET' &&\n self.agent.addRequestNoreuse) {\n self.agent = { addRequest: self.agent.addRequestNoreuse.bind(self.agent) }\n self.start()\n self.req.end()\n return\n }\n self.clearTimeout()\n self.emit('error', error)\n}\n\nRequest.prototype.onRequestResponse = function (response) {\n var self = this\n\n if (self.timing) {\n self.timings.response = now() - self.startTimeNow\n }\n\n debug('onRequestResponse', self.uri.href, response.statusCode, response.headers)\n response.on('end', function () {\n if (self.timing) {\n self.timings.end = now() - self.startTimeNow\n response.timingStart = self.startTime\n\n // fill in the blanks for any periods that didn't trigger, such as\n // no lookup or connect due to keep alive\n if (!self.timings.socket) {\n self.timings.socket = 0\n }\n if (!self.timings.lookup) {\n self.timings.lookup = self.timings.socket\n }\n if (!self.timings.connect) {\n self.timings.connect = self.timings.lookup\n }\n if (!self.timings.response) {\n self.timings.response = self.timings.connect\n }\n\n debug('elapsed time', self.timings.end)\n\n // elapsedTime includes all redirects\n self.elapsedTime += Math.round(self.timings.end)\n\n // NOTE: elapsedTime is deprecated in favor of .timings\n response.elapsedTime = self.elapsedTime\n\n // timings is just for the final fetch\n response.timings = self.timings\n\n // pre-calculate phase timings as well\n response.timingPhases = {\n wait: self.timings.socket,\n dns: self.timings.lookup - self.timings.socket,\n tcp: self.timings.connect - self.timings.lookup,\n firstByte: self.timings.response - self.timings.connect,\n download: self.timings.end - self.timings.response,\n total: self.timings.end\n }\n }\n debug('response end', self.uri.href, response.statusCode, response.headers)\n })\n\n if (self._aborted) {\n debug('aborted', self.uri.href)\n response.resume()\n return\n }\n\n self.response = response\n response.request = self\n response.toJSON = responseToJSON\n\n // XXX This is different on 0.10, because SSL is strict by default\n if (self.httpModule === https &&\n self.strictSSL && (!response.hasOwnProperty('socket') ||\n !response.socket.authorized)) {\n debug('strict ssl error', self.uri.href)\n var sslErr = response.hasOwnProperty('socket') ? response.socket.authorizationError : self.uri.href + ' does not support SSL'\n self.emit('error', new Error('SSL Error: ' + sslErr))\n return\n }\n\n // Save the original host before any redirect (if it changes, we need to\n // remove any authorization headers). Also remember the case of the header\n // name because lots of broken servers expect Host instead of host and we\n // want the caller to be able to specify this.\n self.originalHost = self.getHeader('host')\n if (!self.originalHostHeaderName) {\n self.originalHostHeaderName = self.hasHeader('host')\n }\n if (self.setHost) {\n self.removeHeader('host')\n }\n self.clearTimeout()\n\n var targetCookieJar = (self._jar && self._jar.setCookie) ? self._jar : globalCookieJar\n var addCookie = function (cookie) {\n // set the cookie if it's domain in the href's domain.\n try {\n targetCookieJar.setCookie(cookie, self.uri.href, {ignoreError: true})\n } catch (e) {\n self.emit('error', e)\n }\n }\n\n response.caseless = caseless(response.headers)\n\n if (response.caseless.has('set-cookie') && (!self._disableCookies)) {\n var headerName = response.caseless.has('set-cookie')\n if (Array.isArray(response.headers[headerName])) {\n response.headers[headerName].forEach(addCookie)\n } else {\n addCookie(response.headers[headerName])\n }\n }\n\n if (self._redirect.onResponse(response)) {\n return // Ignore the rest of the response\n } else {\n // Be a good stream and emit end when the response is finished.\n // Hack to emit end on close because of a core bug that never fires end\n response.on('close', function () {\n if (!self._ended) {\n self.response.emit('end')\n }\n })\n\n response.once('end', function () {\n self._ended = true\n })\n\n var noBody = function (code) {\n return (\n self.method === 'HEAD' ||\n // Informational\n (code >= 100 && code < 200) ||\n // No Content\n code === 204 ||\n // Not Modified\n code === 304\n )\n }\n\n var responseContent\n if (self.gzip && !noBody(response.statusCode)) {\n var contentEncoding = response.headers['content-encoding'] || 'identity'\n contentEncoding = contentEncoding.trim().toLowerCase()\n\n // Be more lenient with decoding compressed responses, since (very rarely)\n // servers send slightly invalid gzip responses that are still accepted\n // by common browsers.\n // Always using Z_SYNC_FLUSH is what cURL does.\n var zlibOptions = {\n flush: zlib.Z_SYNC_FLUSH,\n finishFlush: zlib.Z_SYNC_FLUSH\n }\n\n if (contentEncoding === 'gzip') {\n responseContent = zlib.createGunzip(zlibOptions)\n response.pipe(responseContent)\n } else if (contentEncoding === 'deflate') {\n responseContent = zlib.createInflate(zlibOptions)\n response.pipe(responseContent)\n } else {\n // Since previous versions didn't check for Content-Encoding header,\n // ignore any invalid values to preserve backwards-compatibility\n if (contentEncoding !== 'identity') {\n debug('ignoring unrecognized Content-Encoding ' + contentEncoding)\n }\n responseContent = response\n }\n } else {\n responseContent = response\n }\n\n if (self.encoding) {\n if (self.dests.length !== 0) {\n console.error('Ignoring encoding parameter as this stream is being piped to another stream which makes the encoding option invalid.')\n } else {\n responseContent.setEncoding(self.encoding)\n }\n }\n\n if (self._paused) {\n responseContent.pause()\n }\n\n self.responseContent = responseContent\n\n self.emit('response', response)\n\n self.dests.forEach(function (dest) {\n self.pipeDest(dest)\n })\n\n responseContent.on('data', function (chunk) {\n if (self.timing && !self.responseStarted) {\n self.responseStartTime = (new Date()).getTime()\n\n // NOTE: responseStartTime is deprecated in favor of .timings\n response.responseStartTime = self.responseStartTime\n }\n self._destdata = true\n self.emit('data', chunk)\n })\n responseContent.once('end', function (chunk) {\n self.emit('end', chunk)\n })\n responseContent.on('error', function (error) {\n self.emit('error', error)\n })\n responseContent.on('close', function () { self.emit('close') })\n\n if (self.callback) {\n self.readResponseBody(response)\n } else { // if no callback\n self.on('end', function () {\n if (self._aborted) {\n debug('aborted', self.uri.href)\n return\n }\n self.emit('complete', response)\n })\n }\n }\n debug('finish init function', self.uri.href)\n}\n\nRequest.prototype.readResponseBody = function (response) {\n var self = this\n debug(\"reading response's body\")\n var buffers = []\n var bufferLength = 0\n var strings = []\n\n self.on('data', function (chunk) {\n if (!Buffer.isBuffer(chunk)) {\n strings.push(chunk)\n } else if (chunk.length) {\n bufferLength += chunk.length\n buffers.push(chunk)\n }\n })\n self.on('end', function () {\n debug('end event', self.uri.href)\n if (self._aborted) {\n debug('aborted', self.uri.href)\n // `buffer` is defined in the parent scope and used in a closure it exists for the life of the request.\n // This can lead to leaky behavior if the user retains a reference to the request object.\n buffers = []\n bufferLength = 0\n return\n }\n\n if (bufferLength) {\n debug('has body', self.uri.href, bufferLength)\n response.body = Buffer.concat(buffers, bufferLength)\n if (self.encoding !== null) {\n response.body = response.body.toString(self.encoding)\n }\n // `buffer` is defined in the parent scope and used in a closure it exists for the life of the Request.\n // This can lead to leaky behavior if the user retains a reference to the request object.\n buffers = []\n bufferLength = 0\n } else if (strings.length) {\n // The UTF8 BOM [0xEF,0xBB,0xBF] is converted to [0xFE,0xFF] in the JS UTC16/UCS2 representation.\n // Strip this value out when the encoding is set to 'utf8', as upstream consumers won't expect it and it breaks JSON.parse().\n if (self.encoding === 'utf8' && strings[0].length > 0 && strings[0][0] === '\\uFEFF') {\n strings[0] = strings[0].substring(1)\n }\n response.body = strings.join('')\n }\n\n if (self._json) {\n try {\n response.body = JSON.parse(response.body, self._jsonReviver)\n } catch (e) {\n debug('invalid JSON received', self.uri.href)\n }\n }\n debug('emitting complete', self.uri.href)\n if (typeof response.body === 'undefined' && !self._json) {\n response.body = self.encoding === null ? Buffer.alloc(0) : ''\n }\n self.emit('complete', response, response.body)\n })\n}\n\nRequest.prototype.abort = function () {\n var self = this\n self._aborted = true\n\n if (self.req) {\n self.req.abort()\n } else if (self.response) {\n self.response.destroy()\n }\n\n self.clearTimeout()\n self.emit('abort')\n}\n\nRequest.prototype.pipeDest = function (dest) {\n var self = this\n var response = self.response\n // Called after the response is received\n if (dest.headers && !dest.headersSent) {\n if (response.caseless.has('content-type')) {\n var ctname = response.caseless.has('content-type')\n if (dest.setHeader) {\n dest.setHeader(ctname, response.headers[ctname])\n } else {\n dest.headers[ctname] = response.headers[ctname]\n }\n }\n\n if (response.caseless.has('content-length')) {\n var clname = response.caseless.has('content-length')\n if (dest.setHeader) {\n dest.setHeader(clname, response.headers[clname])\n } else {\n dest.headers[clname] = response.headers[clname]\n }\n }\n }\n if (dest.setHeader && !dest.headersSent) {\n for (var i in response.headers) {\n // If the response content is being decoded, the Content-Encoding header\n // of the response doesn't represent the piped content, so don't pass it.\n if (!self.gzip || i !== 'content-encoding') {\n dest.setHeader(i, response.headers[i])\n }\n }\n dest.statusCode = response.statusCode\n }\n if (self.pipefilter) {\n self.pipefilter(response, dest)\n }\n}\n\nRequest.prototype.qs = function (q, clobber) {\n var self = this\n var base\n if (!clobber && self.uri.query) {\n base = self._qs.parse(self.uri.query)\n } else {\n base = {}\n }\n\n for (var i in q) {\n base[i] = q[i]\n }\n\n var qs = self._qs.stringify(base)\n\n if (qs === '') {\n return self\n }\n\n self.uri = url.parse(self.uri.href.split('?')[0] + '?' + qs)\n self.url = self.uri\n self.path = self.uri.path\n\n if (self.uri.host === 'unix') {\n self.enableUnixSocket()\n }\n\n return self\n}\nRequest.prototype.form = function (form) {\n var self = this\n if (form) {\n if (!/^application\\/x-www-form-urlencoded\\b/.test(self.getHeader('content-type'))) {\n self.setHeader('content-type', 'application/x-www-form-urlencoded')\n }\n self.body = (typeof form === 'string')\n ? self._qs.rfc3986(form.toString('utf8'))\n : self._qs.stringify(form).toString('utf8')\n return self\n }\n // create form-data object\n self._form = new FormData()\n self._form.on('error', function (err) {\n err.message = 'form-data: ' + err.message\n self.emit('error', err)\n self.abort()\n })\n return self._form\n}\nRequest.prototype.multipart = function (multipart) {\n var self = this\n\n self._multipart.onRequest(multipart)\n\n if (!self._multipart.chunked) {\n self.body = self._multipart.body\n }\n\n return self\n}\nRequest.prototype.json = function (val) {\n var self = this\n\n if (!self.hasHeader('accept')) {\n self.setHeader('accept', 'application/json')\n }\n\n if (typeof self.jsonReplacer === 'function') {\n self._jsonReplacer = self.jsonReplacer\n }\n\n self._json = true\n if (typeof val === 'boolean') {\n if (self.body !== undefined) {\n if (!/^application\\/x-www-form-urlencoded\\b/.test(self.getHeader('content-type'))) {\n self.body = safeStringify(self.body, self._jsonReplacer)\n } else {\n self.body = self._qs.rfc3986(self.body)\n }\n if (!self.hasHeader('content-type')) {\n self.setHeader('content-type', 'application/json')\n }\n }\n } else {\n self.body = safeStringify(val, self._jsonReplacer)\n if (!self.hasHeader('content-type')) {\n self.setHeader('content-type', 'application/json')\n }\n }\n\n if (typeof self.jsonReviver === 'function') {\n self._jsonReviver = self.jsonReviver\n }\n\n return self\n}\nRequest.prototype.getHeader = function (name, headers) {\n var self = this\n var result, re, match\n if (!headers) {\n headers = self.headers\n }\n Object.keys(headers).forEach(function (key) {\n if (key.length !== name.length) {\n return\n }\n re = new RegExp(name, 'i')\n match = key.match(re)\n if (match) {\n result = headers[key]\n }\n })\n return result\n}\nRequest.prototype.enableUnixSocket = function () {\n // Get the socket & request paths from the URL\n var unixParts = this.uri.path.split(':')\n var host = unixParts[0]\n var path = unixParts[1]\n // Apply unix properties to request\n this.socketPath = host\n this.uri.pathname = path\n this.uri.path = path\n this.uri.host = host\n this.uri.hostname = host\n this.uri.isUnix = true\n}\n\nRequest.prototype.auth = function (user, pass, sendImmediately, bearer) {\n var self = this\n\n self._auth.onRequest(user, pass, sendImmediately, bearer)\n\n return self\n}\nRequest.prototype.aws = function (opts, now) {\n var self = this\n\n if (!now) {\n self._aws = opts\n return self\n }\n\n if (opts.sign_version === 4 || opts.sign_version === '4') {\n // use aws4\n var options = {\n host: self.uri.host,\n path: self.uri.path,\n method: self.method,\n headers: self.headers,\n body: self.body\n }\n if (opts.service) {\n options.service = opts.service\n }\n var signRes = aws4.sign(options, {\n accessKeyId: opts.key,\n secretAccessKey: opts.secret,\n sessionToken: opts.session\n })\n self.setHeader('authorization', signRes.headers.Authorization)\n self.setHeader('x-amz-date', signRes.headers['X-Amz-Date'])\n if (signRes.headers['X-Amz-Security-Token']) {\n self.setHeader('x-amz-security-token', signRes.headers['X-Amz-Security-Token'])\n }\n } else {\n // default: use aws-sign2\n var date = new Date()\n self.setHeader('date', date.toUTCString())\n var auth = {\n key: opts.key,\n secret: opts.secret,\n verb: self.method.toUpperCase(),\n date: date,\n contentType: self.getHeader('content-type') || '',\n md5: self.getHeader('content-md5') || '',\n amazonHeaders: aws2.canonicalizeHeaders(self.headers)\n }\n var path = self.uri.path\n if (opts.bucket && path) {\n auth.resource = '/' + opts.bucket + path\n } else if (opts.bucket && !path) {\n auth.resource = '/' + opts.bucket\n } else if (!opts.bucket && path) {\n auth.resource = path\n } else if (!opts.bucket && !path) {\n auth.resource = '/'\n }\n auth.resource = aws2.canonicalizeResource(auth.resource)\n self.setHeader('authorization', aws2.authorization(auth))\n }\n\n return self\n}\nRequest.prototype.httpSignature = function (opts) {\n var self = this\n httpSignature.signRequest({\n getHeader: function (header) {\n return self.getHeader(header, self.headers)\n },\n setHeader: function (header, value) {\n self.setHeader(header, value)\n },\n method: self.method,\n path: self.path\n }, opts)\n debug('httpSignature authorization', self.getHeader('authorization'))\n\n return self\n}\nRequest.prototype.hawk = function (opts) {\n var self = this\n self.setHeader('Authorization', hawk.header(self.uri, self.method, opts))\n}\nRequest.prototype.oauth = function (_oauth) {\n var self = this\n\n self._oauth.onRequest(_oauth)\n\n return self\n}\n\nRequest.prototype.jar = function (jar) {\n var self = this\n var cookies\n\n if (self._redirect.redirectsFollowed === 0) {\n self.originalCookieHeader = self.getHeader('cookie')\n }\n\n if (!jar) {\n // disable cookies\n cookies = false\n self._disableCookies = true\n } else {\n var targetCookieJar = jar.getCookieString ? jar : globalCookieJar\n var urihref = self.uri.href\n // fetch cookie in the Specified host\n if (targetCookieJar) {\n cookies = targetCookieJar.getCookieString(urihref)\n }\n }\n\n // if need cookie and cookie is not empty\n if (cookies && cookies.length) {\n if (self.originalCookieHeader) {\n // Don't overwrite existing Cookie header\n self.setHeader('cookie', self.originalCookieHeader + '; ' + cookies)\n } else {\n self.setHeader('cookie', cookies)\n }\n }\n self._jar = jar\n return self\n}\n\n// Stream API\nRequest.prototype.pipe = function (dest, opts) {\n var self = this\n\n if (self.response) {\n if (self._destdata) {\n self.emit('error', new Error('You cannot pipe after data has been emitted from the response.'))\n } else if (self._ended) {\n self.emit('error', new Error('You cannot pipe after the response has been ended.'))\n } else {\n stream.Stream.prototype.pipe.call(self, dest, opts)\n self.pipeDest(dest)\n return dest\n }\n } else {\n self.dests.push(dest)\n stream.Stream.prototype.pipe.call(self, dest, opts)\n return dest\n }\n}\nRequest.prototype.write = function () {\n var self = this\n if (self._aborted) { return }\n\n if (!self._started) {\n self.start()\n }\n if (self.req) {\n return self.req.write.apply(self.req, arguments)\n }\n}\nRequest.prototype.end = function (chunk) {\n var self = this\n if (self._aborted) { return }\n\n if (chunk) {\n self.write(chunk)\n }\n if (!self._started) {\n self.start()\n }\n if (self.req) {\n self.req.end()\n }\n}\nRequest.prototype.pause = function () {\n var self = this\n if (!self.responseContent) {\n self._paused = true\n } else {\n self.responseContent.pause.apply(self.responseContent, arguments)\n }\n}\nRequest.prototype.resume = function () {\n var self = this\n if (!self.responseContent) {\n self._paused = false\n } else {\n self.responseContent.resume.apply(self.responseContent, arguments)\n }\n}\nRequest.prototype.destroy = function () {\n var self = this\n this.clearTimeout()\n if (!self._ended) {\n self.end()\n } else if (self.response) {\n self.response.destroy()\n }\n}\n\nRequest.prototype.clearTimeout = function () {\n if (this.timeoutTimer) {\n clearTimeout(this.timeoutTimer)\n this.timeoutTimer = null\n }\n}\n\nRequest.defaultProxyHeaderWhiteList =\n Tunnel.defaultProxyHeaderWhiteList.slice()\n\nRequest.defaultProxyHeaderExclusiveList =\n Tunnel.defaultProxyHeaderExclusiveList.slice()\n\n// Exports\n\nRequest.prototype.toJSON = requestToJSON\nmodule.exports = Request\n", "// Copyright 2010-2012 Mikeal Rogers\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n'use strict'\n\nvar extend = require('extend')\nvar cookies = require('./lib/cookies')\nvar helpers = require('./lib/helpers')\n\nvar paramsHaveRequestBody = helpers.paramsHaveRequestBody\n\n// organize params for patch, post, put, head, del\nfunction initParams (uri, options, callback) {\n if (typeof options === 'function') {\n callback = options\n }\n\n var params = {}\n if (options !== null && typeof options === 'object') {\n extend(params, options, {uri: uri})\n } else if (typeof uri === 'string') {\n extend(params, {uri: uri})\n } else {\n extend(params, uri)\n }\n\n params.callback = callback || params.callback\n return params\n}\n\nfunction request (uri, options, callback) {\n if (typeof uri === 'undefined') {\n throw new Error('undefined is not a valid uri or options object.')\n }\n\n var params = initParams(uri, options, callback)\n\n if (params.method === 'HEAD' && paramsHaveRequestBody(params)) {\n throw new Error('HTTP HEAD requests MUST NOT include a request body.')\n }\n\n return new request.Request(params)\n}\n\nfunction verbFunc (verb) {\n var method = verb.toUpperCase()\n return function (uri, options, callback) {\n var params = initParams(uri, options, callback)\n params.method = method\n return request(params, params.callback)\n }\n}\n\n// define like this to please codeintel/intellisense IDEs\nrequest.get = verbFunc('get')\nrequest.head = verbFunc('head')\nrequest.options = verbFunc('options')\nrequest.post = verbFunc('post')\nrequest.put = verbFunc('put')\nrequest.patch = verbFunc('patch')\nrequest.del = verbFunc('delete')\nrequest['delete'] = verbFunc('delete')\n\nrequest.jar = function (store) {\n return cookies.jar(store)\n}\n\nrequest.cookie = function (str) {\n return cookies.parse(str)\n}\n\nfunction wrapRequestMethod (method, options, requester, verb) {\n return function (uri, opts, callback) {\n var params = initParams(uri, opts, callback)\n\n var target = {}\n extend(true, target, options, params)\n\n target.pool = params.pool || options.pool\n\n if (verb) {\n target.method = verb.toUpperCase()\n }\n\n if (typeof requester === 'function') {\n method = requester\n }\n\n return method(target, target.callback)\n }\n}\n\nrequest.defaults = function (options, requester) {\n var self = this\n\n options = options || {}\n\n if (typeof options === 'function') {\n requester = options\n options = {}\n }\n\n var defaults = wrapRequestMethod(self, options, requester)\n\n var verbs = ['get', 'head', 'post', 'put', 'patch', 'del', 'delete']\n verbs.forEach(function (verb) {\n defaults[verb] = wrapRequestMethod(self[verb], options, requester, verb)\n })\n\n defaults.cookie = wrapRequestMethod(self.cookie, options, requester)\n defaults.jar = self.jar\n defaults.defaults = self.defaults\n return defaults\n}\n\nrequest.forever = function (agentOptions, optionsArg) {\n var options = {}\n if (optionsArg) {\n extend(options, optionsArg)\n }\n if (agentOptions) {\n options.agentOptions = agentOptions\n }\n\n options.forever = true\n return request.defaults(options)\n}\n\n// Exports\n\nmodule.exports = request\nrequest.Request = require('./request')\nrequest.initParams = initParams\n\n// Backwards compatibility for request.debug\nObject.defineProperty(request, 'debug', {\n enumerable: true,\n get: function () {\n return request.Request.debug\n },\n set: function (debug) {\n request.Request.debug = debug\n }\n})\n", "\n/**\n * Module exports.\n */\n\nmodule.exports = dataUriToBuffer;\n\n/**\n * Returns a `Buffer` instance from the given data URI `uri`.\n *\n * @param {String} uri Data URI to turn into a Buffer instance\n * @return {Buffer} Buffer instance from Data URI\n * @api public\n */\n\nfunction dataUriToBuffer (uri) {\n if (!/^data\\:/i.test(uri)) {\n throw new TypeError('`uri` does not appear to be a Data URI (must begin with \"data:\")');\n }\n\n // strip newlines\n uri = uri.replace(/\\r?\\n/g, '');\n\n // split the URI up into the \"metadata\" and the \"data\" portions\n var firstComma = uri.indexOf(',');\n if (-1 === firstComma || firstComma <= 4) throw new TypeError('malformed data: URI');\n\n // remove the \"data:\" scheme and parse the metadata\n var meta = uri.substring(5, firstComma).split(';');\n\n var base64 = false;\n var charset = 'US-ASCII';\n for (var i = 0; i < meta.length; i++) {\n if ('base64' == meta[i]) {\n base64 = true;\n } else if (0 == meta[i].indexOf('charset=')) {\n charset = meta[i].substring(8);\n }\n }\n\n // get the encoded data portion and decode URI-encoded chars\n var data = unescape(uri.substring(firstComma + 1));\n\n var encoding = base64 ? 'base64' : 'ascii';\n var buffer = new Buffer(data, encoding);\n\n // set `.type` property to MIME type\n buffer.type = meta[0] || 'text/plain';\n\n // set the `.charset` property\n buffer.charset = charset;\n\n return buffer;\n}\n", "var toBuffer = require('data-uri-to-buffer')\n\nfunction parseDataUri (dataUri) {\n\n return {\n mimeType: normalizeMimeType(parseMimeType(dataUri)),\n data: toBuffer(dataUri)\n }\n}\n\nfunction parseMimeType(uri) {\n return uri.substring(5, uri.indexOf(';'))\n}\n\nvar prefix = /^(\\w+\\/)+/\nfunction normalizeMimeType(mime) {\n mime = mime.toLowerCase()\n var once = mime.match(prefix)\n if (!once || !(once = once[1])) {\n return mime\n }\n return mime.replace(prefix, once)\n\n}\n\nmodule.exports = parseDataUri", "'use strict'\n\nvar ndarray = require('ndarray')\nvar path = require('path')\nvar PNG = require('pngjs').PNG\nvar jpeg = require('jpeg-js')\nvar pack = require('ndarray-pack')\nvar GifReader = require('omggif').GifReader\nvar Bitmap = require('node-bitmap')\nvar fs = require('fs')\nvar request = require('request')\nvar mime = require('mime-types')\nvar parseDataURI = require('parse-data-uri')\n\nfunction handlePNG(data, cb) {\n var png = new PNG();\n png.parse(data, function(err, img_data) {\n if(err) {\n cb(err)\n return\n }\n cb(null, ndarray(new Uint8Array(img_data.data),\n [img_data.width|0, img_data.height|0, 4],\n [4, 4*img_data.width|0, 1],\n 0))\n })\n}\n\nfunction handleJPEG(data, cb) {\n var jpegData\n try {\n jpegData = jpeg.decode(data)\n }\n catch(e) {\n cb(e)\n return\n }\n if(!jpegData) {\n cb(new Error(\"Error decoding jpeg\"))\n return\n }\n var nshape = [ jpegData.height, jpegData.width, 4 ]\n var result = ndarray(jpegData.data, nshape)\n cb(null, result.transpose(1,0))\n}\n\nfunction handleGIF(data, cb) {\n var reader\n try {\n reader = new GifReader(data)\n } catch(err) {\n cb(err)\n return\n }\n if(reader.numFrames() > 0) {\n var nshape = [reader.numFrames(), reader.height, reader.width, 4]\n try {\n var ndata = new Uint8Array(nshape[0] * nshape[1] * nshape[2] * nshape[3])\n } catch(err) {\n cb(err)\n return\n }\n var result = ndarray(ndata, nshape)\n try {\n for(var i=0; i= min and a <= max.\n */\nfunction inRange(a, min, max) {\n return min <= a && a <= max;\n}\n\n/**\n * @param {!Array.<*>} array The array to check.\n * @param {*} item The item to look for in the array.\n * @return {boolean} True if the item appears in the array.\n */\nfunction includes(array, item) {\n return array.indexOf(item) !== -1;\n}\n\nvar floor = Math.floor;\n\n/**\n * @param {*} o\n * @return {Object}\n */\nfunction ToDictionary(o) {\n if (o === undefined) return {};\n if (o === Object(o)) return o;\n throw TypeError('Could not convert argument to dictionary');\n}\n\n/**\n * @param {string} string Input string of UTF-16 code units.\n * @return {!Array.} Code points.\n */\nfunction stringToCodePoints(string) {\n // https://heycam.github.io/webidl/#dfn-obtain-unicode\n\n // 1. Let S be the DOMString value.\n var s = String(string);\n\n // 2. Let n be the length of S.\n var n = s.length;\n\n // 3. Initialize i to 0.\n var i = 0;\n\n // 4. Initialize U to be an empty sequence of Unicode characters.\n var u = [];\n\n // 5. While i < n:\n while (i < n) {\n // 1. Let c be the code unit in S at index i.\n var c = s.charCodeAt(i);\n\n // 2. Depending on the value of c:\n\n // c < 0xD800 or c > 0xDFFF\n if (c < 0xd800 || c > 0xdfff) {\n // Append to U the Unicode character with code point c.\n u.push(c);\n }\n\n // 0xDC00 \u2264 c \u2264 0xDFFF\n else if (0xdc00 <= c && c <= 0xdfff) {\n // Append to U a U+FFFD REPLACEMENT CHARACTER.\n u.push(0xfffd);\n }\n\n // 0xD800 \u2264 c \u2264 0xDBFF\n else if (0xd800 <= c && c <= 0xdbff) {\n // 1. If i = n\u22121, then append to U a U+FFFD REPLACEMENT\n // CHARACTER.\n if (i === n - 1) {\n u.push(0xfffd);\n }\n // 2. Otherwise, i < n\u22121:\n else {\n // 1. Let d be the code unit in S at index i+1.\n var d = s.charCodeAt(i + 1);\n\n // 2. If 0xDC00 \u2264 d \u2264 0xDFFF, then:\n if (0xdc00 <= d && d <= 0xdfff) {\n // 1. Let a be c & 0x3FF.\n var a = c & 0x3ff;\n\n // 2. Let b be d & 0x3FF.\n var b = d & 0x3ff;\n\n // 3. Append to U the Unicode character with code point\n // 2^16+2^10*a+b.\n u.push(0x10000 + (a << 10) + b);\n\n // 4. Set i to i+1.\n i += 1;\n }\n\n // 3. Otherwise, d < 0xDC00 or d > 0xDFFF. Append to U a\n // U+FFFD REPLACEMENT CHARACTER.\n else {\n u.push(0xfffd);\n }\n }\n }\n\n // 3. Set i to i+1.\n i += 1;\n }\n\n // 6. Return U.\n return u;\n}\n\n/**\n * @param {!Array.} code_points Array of code points.\n * @return {string} string String of UTF-16 code units.\n */\nfunction codePointsToString(code_points) {\n var s = '';\n for (var i = 0; i < code_points.length; ++i) {\n var cp = code_points[i];\n if (cp <= 0xffff) {\n s += String.fromCharCode(cp);\n } else {\n cp -= 0x10000;\n s += String.fromCharCode((cp >> 10) + 0xd800, (cp & 0x3ff) + 0xdc00);\n }\n }\n return s;\n}\n\n//\n// Implementation of Encoding specification\n// https://encoding.spec.whatwg.org/\n//\n\n//\n// 4. Terminology\n//\n\n/**\n * An ASCII byte is a byte in the range 0x00 to 0x7F, inclusive.\n * @param {number} a The number to test.\n * @return {boolean} True if a is in the range 0x00 to 0x7F, inclusive.\n */\nfunction isASCIIByte(a) {\n return 0x00 <= a && a <= 0x7f;\n}\n\n/**\n * An ASCII code point is a code point in the range U+0000 to\n * U+007F, inclusive.\n */\nvar isASCIICodePoint = isASCIIByte;\n\n/**\n * End-of-stream is a special token that signifies no more tokens\n * are in the stream.\n * @const\n */ var end_of_stream = -1;\n\n/**\n * A stream represents an ordered sequence of tokens.\n *\n * @constructor\n * @param {!(Array.|Uint8Array)} tokens Array of tokens that provide\n * the stream.\n */\nfunction Stream(tokens) {\n /** @type {!Array.} */\n this.tokens = [].slice.call(tokens);\n // Reversed as push/pop is more efficient than shift/unshift.\n this.tokens.reverse();\n}\n\nStream.prototype = {\n /**\n * @return {boolean} True if end-of-stream has been hit.\n */\n endOfStream: function () {\n return !this.tokens.length;\n },\n\n /**\n * When a token is read from a stream, the first token in the\n * stream must be returned and subsequently removed, and\n * end-of-stream must be returned otherwise.\n *\n * @return {number} Get the next token from the stream, or\n * end_of_stream.\n */\n read: function () {\n if (!this.tokens.length) return end_of_stream;\n return this.tokens.pop();\n },\n\n /**\n * When one or more tokens are prepended to a stream, those tokens\n * must be inserted, in given order, before the first token in the\n * stream.\n *\n * @param {(number|!Array.)} token The token(s) to prepend to the\n * stream.\n */\n prepend: function (token) {\n if (Array.isArray(token)) {\n var tokens = /**@type {!Array.}*/ token;\n while (tokens.length) this.tokens.push(tokens.pop());\n } else {\n this.tokens.push(token);\n }\n },\n\n /**\n * When one or more tokens are pushed to a stream, those tokens\n * must be inserted, in given order, after the last token in the\n * stream.\n *\n * @param {(number|!Array.)} token The tokens(s) to push to the\n * stream.\n */\n push: function (token) {\n if (Array.isArray(token)) {\n var tokens = /**@type {!Array.}*/ token;\n while (tokens.length) this.tokens.unshift(tokens.shift());\n } else {\n this.tokens.unshift(token);\n }\n }\n};\n\n//\n// 5. Encodings\n//\n\n// 5.1 Encoders and decoders\n\n/** @const */\nvar finished = -1;\n\n/**\n * @param {boolean} fatal If true, decoding errors raise an exception.\n * @param {number=} opt_code_point Override the standard fallback code point.\n * @return {number} The code point to insert on a decoding error.\n */\nfunction decoderError(fatal, opt_code_point) {\n if (fatal) throw TypeError('Decoder error');\n return opt_code_point || 0xfffd;\n}\n\n/**\n * @param {number} code_point The code point that could not be encoded.\n * @return {number} Always throws, no value is actually returned.\n */\nfunction encoderError(code_point) {\n throw TypeError('The code point ' + code_point + ' could not be encoded.');\n}\n\n/** @interface */\nfunction Decoder() {}\nDecoder.prototype = {\n /**\n * @param {Stream} stream The stream of bytes being decoded.\n * @param {number} bite The next byte read from the stream.\n * @return {?(number|!Array.)} The next code point(s)\n * decoded, or null if not enough data exists in the input\n * stream to decode a complete code point, or |finished|.\n */\n handler: function (stream, bite) {}\n};\n\n/** @interface */\nfunction Encoder() {}\nEncoder.prototype = {\n /**\n * @param {Stream} stream The stream of code points being encoded.\n * @param {number} code_point Next code point read from the stream.\n * @return {(number|!Array.)} Byte(s) to emit, or |finished|.\n */\n handler: function (stream, code_point) {}\n};\n\n// 5.2 Names and labels\n\n// TODO: Define @typedef for Encoding: {name:string,labels:Array.}\n// https://github.com/google/closure-compiler/issues/247\n\n/**\n * @param {string} label The encoding label.\n * @return {?{name:string,labels:Array.}}\n */\nfunction getEncoding(label) {\n // 1. Remove any leading and trailing ASCII whitespace from label.\n label = String(label).trim().toLowerCase();\n\n // 2. If label is an ASCII case-insensitive match for any of the\n // labels listed in the table below, return the corresponding\n // encoding, and failure otherwise.\n if (Object.prototype.hasOwnProperty.call(label_to_encoding, label)) {\n return label_to_encoding[label];\n }\n return null;\n}\n\n/**\n * Encodings table: https://encoding.spec.whatwg.org/encodings.json\n * @const\n * @type {!Array.<{\n * heading: string,\n * encodings: Array.<{name:string,labels:Array.}>\n * }>}\n */\nvar encodings = [\n {\n encodings: [\n {\n labels: ['unicode-1-1-utf-8', 'utf-8', 'utf8'],\n name: 'UTF-8'\n }\n ],\n heading: 'The Encoding'\n },\n {\n encodings: [\n {\n labels: ['866', 'cp866', 'csibm866', 'ibm866'],\n name: 'IBM866'\n },\n {\n labels: [\n 'csisolatin2',\n 'iso-8859-2',\n 'iso-ir-101',\n 'iso8859-2',\n 'iso88592',\n 'iso_8859-2',\n 'iso_8859-2:1987',\n 'l2',\n 'latin2'\n ],\n name: 'ISO-8859-2'\n },\n {\n labels: [\n 'csisolatin3',\n 'iso-8859-3',\n 'iso-ir-109',\n 'iso8859-3',\n 'iso88593',\n 'iso_8859-3',\n 'iso_8859-3:1988',\n 'l3',\n 'latin3'\n ],\n name: 'ISO-8859-3'\n },\n {\n labels: [\n 'csisolatin4',\n 'iso-8859-4',\n 'iso-ir-110',\n 'iso8859-4',\n 'iso88594',\n 'iso_8859-4',\n 'iso_8859-4:1988',\n 'l4',\n 'latin4'\n ],\n name: 'ISO-8859-4'\n },\n {\n labels: [\n 'csisolatincyrillic',\n 'cyrillic',\n 'iso-8859-5',\n 'iso-ir-144',\n 'iso8859-5',\n 'iso88595',\n 'iso_8859-5',\n 'iso_8859-5:1988'\n ],\n name: 'ISO-8859-5'\n },\n {\n labels: [\n 'arabic',\n 'asmo-708',\n 'csiso88596e',\n 'csiso88596i',\n 'csisolatinarabic',\n 'ecma-114',\n 'iso-8859-6',\n 'iso-8859-6-e',\n 'iso-8859-6-i',\n 'iso-ir-127',\n 'iso8859-6',\n 'iso88596',\n 'iso_8859-6',\n 'iso_8859-6:1987'\n ],\n name: 'ISO-8859-6'\n },\n {\n labels: [\n 'csisolatingreek',\n 'ecma-118',\n 'elot_928',\n 'greek',\n 'greek8',\n 'iso-8859-7',\n 'iso-ir-126',\n 'iso8859-7',\n 'iso88597',\n 'iso_8859-7',\n 'iso_8859-7:1987',\n 'sun_eu_greek'\n ],\n name: 'ISO-8859-7'\n },\n {\n labels: [\n 'csiso88598e',\n 'csisolatinhebrew',\n 'hebrew',\n 'iso-8859-8',\n 'iso-8859-8-e',\n 'iso-ir-138',\n 'iso8859-8',\n 'iso88598',\n 'iso_8859-8',\n 'iso_8859-8:1988',\n 'visual'\n ],\n name: 'ISO-8859-8'\n },\n {\n labels: ['csiso88598i', 'iso-8859-8-i', 'logical'],\n name: 'ISO-8859-8-I'\n },\n {\n labels: [\n 'csisolatin6',\n 'iso-8859-10',\n 'iso-ir-157',\n 'iso8859-10',\n 'iso885910',\n 'l6',\n 'latin6'\n ],\n name: 'ISO-8859-10'\n },\n {\n labels: ['iso-8859-13', 'iso8859-13', 'iso885913'],\n name: 'ISO-8859-13'\n },\n {\n labels: ['iso-8859-14', 'iso8859-14', 'iso885914'],\n name: 'ISO-8859-14'\n },\n {\n labels: ['csisolatin9', 'iso-8859-15', 'iso8859-15', 'iso885915', 'iso_8859-15', 'l9'],\n name: 'ISO-8859-15'\n },\n {\n labels: ['iso-8859-16'],\n name: 'ISO-8859-16'\n },\n {\n labels: ['cskoi8r', 'koi', 'koi8', 'koi8-r', 'koi8_r'],\n name: 'KOI8-R'\n },\n {\n labels: ['koi8-ru', 'koi8-u'],\n name: 'KOI8-U'\n },\n {\n labels: ['csmacintosh', 'mac', 'macintosh', 'x-mac-roman'],\n name: 'macintosh'\n },\n {\n labels: ['dos-874', 'iso-8859-11', 'iso8859-11', 'iso885911', 'tis-620', 'windows-874'],\n name: 'windows-874'\n },\n {\n labels: ['cp1250', 'windows-1250', 'x-cp1250'],\n name: 'windows-1250'\n },\n {\n labels: ['cp1251', 'windows-1251', 'x-cp1251'],\n name: 'windows-1251'\n },\n {\n labels: [\n 'ansi_x3.4-1968',\n 'ascii',\n 'cp1252',\n 'cp819',\n 'csisolatin1',\n 'ibm819',\n 'iso-8859-1',\n 'iso-ir-100',\n 'iso8859-1',\n 'iso88591',\n 'iso_8859-1',\n 'iso_8859-1:1987',\n 'l1',\n 'latin1',\n 'us-ascii',\n 'windows-1252',\n 'x-cp1252'\n ],\n name: 'windows-1252'\n },\n {\n labels: ['cp1253', 'windows-1253', 'x-cp1253'],\n name: 'windows-1253'\n },\n {\n labels: [\n 'cp1254',\n 'csisolatin5',\n 'iso-8859-9',\n 'iso-ir-148',\n 'iso8859-9',\n 'iso88599',\n 'iso_8859-9',\n 'iso_8859-9:1989',\n 'l5',\n 'latin5',\n 'windows-1254',\n 'x-cp1254'\n ],\n name: 'windows-1254'\n },\n {\n labels: ['cp1255', 'windows-1255', 'x-cp1255'],\n name: 'windows-1255'\n },\n {\n labels: ['cp1256', 'windows-1256', 'x-cp1256'],\n name: 'windows-1256'\n },\n {\n labels: ['cp1257', 'windows-1257', 'x-cp1257'],\n name: 'windows-1257'\n },\n {\n labels: ['cp1258', 'windows-1258', 'x-cp1258'],\n name: 'windows-1258'\n },\n {\n labels: ['x-mac-cyrillic', 'x-mac-ukrainian'],\n name: 'x-mac-cyrillic'\n }\n ],\n heading: 'Legacy single-byte encodings'\n },\n {\n encodings: [\n {\n labels: [\n 'chinese',\n 'csgb2312',\n 'csiso58gb231280',\n 'gb2312',\n 'gb_2312',\n 'gb_2312-80',\n 'gbk',\n 'iso-ir-58',\n 'x-gbk'\n ],\n name: 'GBK'\n },\n {\n labels: ['gb18030'],\n name: 'gb18030'\n }\n ],\n heading: 'Legacy multi-byte Chinese (simplified) encodings'\n },\n {\n encodings: [\n {\n labels: ['big5', 'big5-hkscs', 'cn-big5', 'csbig5', 'x-x-big5'],\n name: 'Big5'\n }\n ],\n heading: 'Legacy multi-byte Chinese (traditional) encodings'\n },\n {\n encodings: [\n {\n labels: ['cseucpkdfmtjapanese', 'euc-jp', 'x-euc-jp'],\n name: 'EUC-JP'\n },\n {\n labels: ['csiso2022jp', 'iso-2022-jp'],\n name: 'ISO-2022-JP'\n },\n {\n labels: [\n 'csshiftjis',\n 'ms932',\n 'ms_kanji',\n 'shift-jis',\n 'shift_jis',\n 'sjis',\n 'windows-31j',\n 'x-sjis'\n ],\n name: 'Shift_JIS'\n }\n ],\n heading: 'Legacy multi-byte Japanese encodings'\n },\n {\n encodings: [\n {\n labels: [\n 'cseuckr',\n 'csksc56011987',\n 'euc-kr',\n 'iso-ir-149',\n 'korean',\n 'ks_c_5601-1987',\n 'ks_c_5601-1989',\n 'ksc5601',\n 'ksc_5601',\n 'windows-949'\n ],\n name: 'EUC-KR'\n }\n ],\n heading: 'Legacy multi-byte Korean encodings'\n },\n {\n encodings: [\n {\n labels: ['csiso2022kr', 'hz-gb-2312', 'iso-2022-cn', 'iso-2022-cn-ext', 'iso-2022-kr'],\n name: 'replacement'\n },\n {\n labels: ['utf-16be'],\n name: 'UTF-16BE'\n },\n {\n labels: ['utf-16', 'utf-16le'],\n name: 'UTF-16LE'\n },\n {\n labels: ['x-user-defined'],\n name: 'x-user-defined'\n }\n ],\n heading: 'Legacy miscellaneous encodings'\n }\n];\n\n// Label to encoding registry.\n/** @type {Object.}>} */\nvar label_to_encoding = {};\nencodings.forEach(function (category) {\n category.encodings.forEach(function (encoding) {\n encoding.labels.forEach(function (label) {\n label_to_encoding[label] = encoding;\n });\n });\n});\n\n// Registry of of encoder/decoder factories, by encoding name.\n/** @type {Object.} */\nvar encoders = {};\n/** @type {Object.} */\nvar decoders = {};\n\n//\n// 6. Indexes\n//\n\n/**\n * @param {number} pointer The |pointer| to search for.\n * @param {(!Array.|undefined)} index The |index| to search within.\n * @return {?number} The code point corresponding to |pointer| in |index|,\n * or null if |code point| is not in |index|.\n */\nfunction indexCodePointFor(pointer, index) {\n if (!index) return null;\n return index[pointer] || null;\n}\n\n/**\n * @param {number} code_point The |code point| to search for.\n * @param {!Array.} index The |index| to search within.\n * @return {?number} The first pointer corresponding to |code point| in\n * |index|, or null if |code point| is not in |index|.\n */\nfunction indexPointerFor(code_point, index) {\n var pointer = index.indexOf(code_point);\n return pointer === -1 ? null : pointer;\n}\n\n/**\n * @param {string} name Name of the index.\n * @return {(!Array.|!Array.>)}\n * */\nfunction index(name) {\n if (!('encoding-indexes' in globalThis)) {\n throw Error('Indexes missing.' + ' Did you forget to include encoding-indexes.js first?');\n }\n return globalThis['encoding-indexes'][name];\n}\n\n/**\n * @param {number} pointer The |pointer| to search for in the gb18030 index.\n * @return {?number} The code point corresponding to |pointer| in |index|,\n * or null if |code point| is not in the gb18030 index.\n */\nfunction indexGB18030RangesCodePointFor(pointer) {\n // 1. If pointer is greater than 39419 and less than 189000, or\n // pointer is greater than 1237575, return null.\n if ((pointer > 39419 && pointer < 189000) || pointer > 1237575) return null;\n\n // 2. If pointer is 7457, return code point U+E7C7.\n if (pointer === 7457) return 0xe7c7;\n\n // 3. Let offset be the last pointer in index gb18030 ranges that\n // is equal to or less than pointer and let code point offset be\n // its corresponding code point.\n var offset = 0;\n var code_point_offset = 0;\n var idx = index('gb18030-ranges');\n var i;\n for (i = 0; i < idx.length; ++i) {\n /** @type {!Array.} */\n var entry = idx[i];\n if (entry[0] <= pointer) {\n offset = entry[0];\n code_point_offset = entry[1];\n } else {\n break;\n }\n }\n\n // 4. Return a code point whose value is code point offset +\n // pointer \u2212 offset.\n return code_point_offset + pointer - offset;\n}\n\n/**\n * @param {number} code_point The |code point| to locate in the gb18030 index.\n * @return {number} The first pointer corresponding to |code point| in the\n * gb18030 index.\n */\nfunction indexGB18030RangesPointerFor(code_point) {\n // 1. If code point is U+E7C7, return pointer 7457.\n if (code_point === 0xe7c7) return 7457;\n\n // 2. Let offset be the last code point in index gb18030 ranges\n // that is equal to or less than code point and let pointer offset\n // be its corresponding pointer.\n var offset = 0;\n var pointer_offset = 0;\n var idx = index('gb18030-ranges');\n var i;\n for (i = 0; i < idx.length; ++i) {\n /** @type {!Array.} */\n var entry = idx[i];\n if (entry[1] <= code_point) {\n offset = entry[1];\n pointer_offset = entry[0];\n } else {\n break;\n }\n }\n\n // 3. Return a pointer whose value is pointer offset + code point\n // \u2212 offset.\n return pointer_offset + code_point - offset;\n}\n\n/**\n * @param {number} code_point The |code_point| to search for in the Shift_JIS\n * index.\n * @return {?number} The code point corresponding to |pointer| in |index|,\n * or null if |code point| is not in the Shift_JIS index.\n */\nfunction indexShiftJISPointerFor(code_point) {\n // 1. Let index be index jis0208 excluding all entries whose\n // pointer is in the range 8272 to 8835, inclusive.\n shift_jis_index =\n shift_jis_index ||\n index('jis0208').map(function (code_point, pointer) {\n return inRange(pointer, 8272, 8835) ? null : code_point;\n });\n var index_ = shift_jis_index;\n\n // 2. Return the index pointer for code point in index.\n return index_.indexOf(code_point);\n}\nvar shift_jis_index;\n\n/**\n * @param {number} code_point The |code_point| to search for in the big5\n * index.\n * @return {?number} The code point corresponding to |pointer| in |index|,\n * or null if |code point| is not in the big5 index.\n */\nfunction indexBig5PointerFor(code_point) {\n // 1. Let index be index Big5 excluding all entries whose pointer\n big5_index_no_hkscs =\n big5_index_no_hkscs ||\n index('big5').map(function (code_point, pointer) {\n return pointer < (0xa1 - 0x81) * 157 ? null : code_point;\n });\n var index_ = big5_index_no_hkscs;\n\n // 2. If code point is U+2550, U+255E, U+2561, U+256A, U+5341, or\n // U+5345, return the last pointer corresponding to code point in\n // index.\n if (\n code_point === 0x2550 ||\n code_point === 0x255e ||\n code_point === 0x2561 ||\n code_point === 0x256a ||\n code_point === 0x5341 ||\n code_point === 0x5345\n ) {\n return index_.lastIndexOf(code_point);\n }\n\n // 3. Return the index pointer for code point in index.\n return indexPointerFor(code_point, index_);\n}\nvar big5_index_no_hkscs;\n\n//\n// 8. API\n//\n\n/** @const */ var DEFAULT_ENCODING = 'utf-8';\n\n// 8.1 Interface TextDecoder\n\n/**\n * @constructor\n * @param {string=} label The label of the encoding;\n * defaults to 'utf-8'.\n * @param {Object=} options\n */\nfunction TextDecoder(label, options) {\n // Web IDL conventions\n if (!(this instanceof TextDecoder))\n throw TypeError(\"Called as a function. Did you forget 'new'?\");\n label = label !== undefined ? String(label) : DEFAULT_ENCODING;\n options = ToDictionary(options);\n\n // A TextDecoder object has an associated encoding, decoder,\n // stream, ignore BOM flag (initially unset), BOM seen flag\n // (initially unset), error mode (initially replacement), and do\n // not flush flag (initially unset).\n\n /** @private */\n this._encoding = null;\n /** @private @type {?Decoder} */\n this._decoder = null;\n /** @private @type {boolean} */\n this._ignoreBOM = false;\n /** @private @type {boolean} */\n this._BOMseen = false;\n /** @private @type {string} */\n this._error_mode = 'replacement';\n /** @private @type {boolean} */\n this._do_not_flush = false;\n\n // 1. Let encoding be the result of getting an encoding from\n // label.\n var encoding = getEncoding(label);\n\n // 2. If encoding is failure or replacement, throw a RangeError.\n if (encoding === null || encoding.name === 'replacement')\n throw RangeError('Unknown encoding: ' + label);\n if (!decoders[encoding.name]) {\n throw Error('Decoder not present.' + ' Did you forget to include encoding-indexes.js first?');\n }\n\n // 3. Let dec be a new TextDecoder object.\n var dec = this;\n\n // 4. Set dec's encoding to encoding.\n dec._encoding = encoding;\n\n // 5. If options's fatal member is true, set dec's error mode to\n // fatal.\n if (Boolean(options['fatal'])) dec._error_mode = 'fatal';\n\n // 6. If options's ignoreBOM member is true, set dec's ignore BOM\n // flag.\n if (Boolean(options['ignoreBOM'])) dec._ignoreBOM = true;\n\n // For pre-ES5 runtimes:\n if (!Object.defineProperty) {\n this.encoding = dec._encoding.name.toLowerCase();\n this.fatal = dec._error_mode === 'fatal';\n this.ignoreBOM = dec._ignoreBOM;\n }\n\n // 7. Return dec.\n return dec;\n}\n\nif (Object.defineProperty) {\n // The encoding attribute's getter must return encoding's name.\n Object.defineProperty(TextDecoder.prototype, 'encoding', {\n /** @this {TextDecoder} */\n get: function () {\n return this._encoding.name.toLowerCase();\n }\n });\n\n // The fatal attribute's getter must return true if error mode\n // is fatal, and false otherwise.\n Object.defineProperty(TextDecoder.prototype, 'fatal', {\n /** @this {TextDecoder} */\n get: function () {\n return this._error_mode === 'fatal';\n }\n });\n\n // The ignoreBOM attribute's getter must return true if ignore\n // BOM flag is set, and false otherwise.\n Object.defineProperty(TextDecoder.prototype, 'ignoreBOM', {\n /** @this {TextDecoder} */\n get: function () {\n return this._ignoreBOM;\n }\n });\n}\n\n/**\n * @param {BufferSource=} input The buffer of bytes to decode.\n * @param {Object=} options\n * @return {string} The decoded string.\n */\nTextDecoder.prototype.decode = function decode(input, options) {\n var bytes;\n if (typeof input === 'object' && input instanceof ArrayBuffer) {\n bytes = new Uint8Array(input);\n } else if (\n typeof input === 'object' &&\n 'buffer' in input &&\n input.buffer instanceof ArrayBuffer\n ) {\n bytes = new Uint8Array(input.buffer, input.byteOffset, input.byteLength);\n } else {\n bytes = new Uint8Array(0);\n }\n\n options = ToDictionary(options);\n\n // 1. If the do not flush flag is unset, set decoder to a new\n // encoding's decoder, set stream to a new stream, and unset the\n // BOM seen flag.\n if (!this._do_not_flush) {\n this._decoder = decoders[this._encoding.name]({\n fatal: this._error_mode === 'fatal'\n });\n this._BOMseen = false;\n }\n\n // 2. If options's stream is true, set the do not flush flag, and\n // unset the do not flush flag otherwise.\n this._do_not_flush = Boolean(options['stream']);\n\n // 3. If input is given, push a copy of input to stream.\n // TODO: Align with spec algorithm - maintain stream on instance.\n var input_stream = new Stream(bytes);\n\n // 4. Let output be a new stream.\n var output = [];\n\n /** @type {?(number|!Array.)} */\n var result;\n\n // 5. While true:\n while (true) {\n // 1. Let token be the result of reading from stream.\n var token = input_stream.read();\n\n // 2. If token is end-of-stream and the do not flush flag is\n // set, return output, serialized.\n // TODO: Align with spec algorithm.\n if (token === end_of_stream) break;\n\n // 3. Otherwise, run these subsubsteps:\n\n // 1. Let result be the result of processing token for decoder,\n // stream, output, and error mode.\n result = this._decoder.handler(input_stream, token);\n\n // 2. If result is finished, return output, serialized.\n if (result === finished) break;\n\n if (result !== null) {\n if (Array.isArray(result)) output.push.apply(output, /**@type {!Array.}*/ result);\n else output.push(result);\n }\n\n // 3. Otherwise, if result is error, throw a TypeError.\n // (Thrown in handler)\n\n // 4. Otherwise, do nothing.\n }\n // TODO: Align with spec algorithm.\n if (!this._do_not_flush) {\n do {\n result = this._decoder.handler(input_stream, input_stream.read());\n if (result === finished) break;\n if (result === null) continue;\n if (Array.isArray(result)) output.push.apply(output, /**@type {!Array.}*/ result);\n else output.push(result);\n } while (!input_stream.endOfStream());\n this._decoder = null;\n }\n\n // A TextDecoder object also has an associated serialize stream\n // algorithm...\n /**\n * @param {!Array.} stream\n * @return {string}\n * @this {TextDecoder}\n */\n function serializeStream(stream) {\n // 1. Let token be the result of reading from stream.\n // (Done in-place on array, rather than as a stream)\n\n // 2. If encoding is UTF-8, UTF-16BE, or UTF-16LE, and ignore\n // BOM flag and BOM seen flag are unset, run these subsubsteps:\n if (\n includes(['UTF-8', 'UTF-16LE', 'UTF-16BE'], this._encoding.name) &&\n !this._ignoreBOM &&\n !this._BOMseen\n ) {\n if (stream.length > 0 && stream[0] === 0xfeff) {\n // 1. If token is U+FEFF, set BOM seen flag.\n this._BOMseen = true;\n stream.shift();\n } else if (stream.length > 0) {\n // 2. Otherwise, if token is not end-of-stream, set BOM seen\n // flag and append token to stream.\n this._BOMseen = true;\n } else {\n // 3. Otherwise, if token is not end-of-stream, append token\n // to output.\n // (no-op)\n }\n }\n // 4. Otherwise, return output.\n return codePointsToString(stream);\n }\n\n return serializeStream.call(this, output);\n};\n\n// 8.2 Interface TextEncoder\n\n/**\n * @constructor\n * @param {string=} label The label of the encoding. NONSTANDARD.\n * @param {Object=} options NONSTANDARD.\n */\nfunction TextEncoder(label, options) {\n // Web IDL conventions\n if (!(this instanceof TextEncoder))\n throw TypeError(\"Called as a function. Did you forget 'new'?\");\n options = ToDictionary(options);\n\n // A TextEncoder object has an associated encoding and encoder.\n\n /** @private */\n this._encoding = null;\n /** @private @type {?Encoder} */\n this._encoder = null;\n\n // Non-standard\n /** @private @type {boolean} */\n this._do_not_flush = false;\n /** @private @type {string} */\n this._fatal = Boolean(options['fatal']) ? 'fatal' : 'replacement';\n\n // 1. Let enc be a new TextEncoder object.\n var enc = this;\n\n // 2. Set enc's encoding to UTF-8's encoder.\n if (Boolean(options['NONSTANDARD_allowLegacyEncoding'])) {\n // NONSTANDARD behavior.\n label = label !== undefined ? String(label) : DEFAULT_ENCODING;\n var encoding = getEncoding(label);\n if (encoding === null || encoding.name === 'replacement')\n throw RangeError('Unknown encoding: ' + label);\n if (!encoders[encoding.name]) {\n throw Error('Encoder not present.' + ' Did you forget to include encoding-indexes.js first?');\n }\n enc._encoding = encoding;\n } else {\n // Standard behavior.\n enc._encoding = getEncoding('utf-8');\n\n if (label !== undefined && 'console' in globalThis) {\n console.warn('TextEncoder constructor called with encoding label, ' + 'which is ignored.');\n }\n }\n\n // For pre-ES5 runtimes:\n if (!Object.defineProperty) this.encoding = enc._encoding.name.toLowerCase();\n\n // 3. Return enc.\n return enc;\n}\n\nif (Object.defineProperty) {\n // The encoding attribute's getter must return encoding's name.\n Object.defineProperty(TextEncoder.prototype, 'encoding', {\n /** @this {TextEncoder} */\n get: function () {\n return this._encoding.name.toLowerCase();\n }\n });\n}\n\n/**\n * @param {string=} opt_string The string to encode.\n * @param {Object=} options\n * @return {!Uint8Array} Encoded bytes, as a Uint8Array.\n */\nTextEncoder.prototype.encode = function encode(opt_string, options) {\n opt_string = opt_string === undefined ? '' : String(opt_string);\n options = ToDictionary(options);\n\n // NOTE: This option is nonstandard. None of the encodings\n // permitted for encoding (i.e. UTF-8, UTF-16) are stateful when\n // the input is a USVString so streaming is not necessary.\n if (!this._do_not_flush)\n this._encoder = encoders[this._encoding.name]({\n fatal: this._fatal === 'fatal'\n });\n this._do_not_flush = Boolean(options['stream']);\n\n // 1. Convert input to a stream.\n var input = new Stream(stringToCodePoints(opt_string));\n\n // 2. Let output be a new stream\n var output = [];\n\n /** @type {?(number|!Array.)} */\n var result;\n // 3. While true, run these substeps:\n while (true) {\n // 1. Let token be the result of reading from input.\n var token = input.read();\n if (token === end_of_stream) break;\n // 2. Let result be the result of processing token for encoder,\n // input, output.\n result = this._encoder.handler(input, token);\n if (result === finished) break;\n if (Array.isArray(result)) output.push.apply(output, /**@type {!Array.}*/ result);\n else output.push(result);\n }\n // TODO: Align with spec algorithm.\n if (!this._do_not_flush) {\n while (true) {\n result = this._encoder.handler(input, input.read());\n if (result === finished) break;\n if (Array.isArray(result)) output.push.apply(output, /**@type {!Array.}*/ result);\n else output.push(result);\n }\n this._encoder = null;\n }\n // 3. If result is finished, convert output into a byte sequence,\n // and then return a Uint8Array object wrapping an ArrayBuffer\n // containing output.\n return new Uint8Array(output);\n};\n\n//\n// 9. The encoding\n//\n\n// 9.1 utf-8\n\n// 9.1.1 utf-8 decoder\n/**\n * @constructor\n * @implements {Decoder}\n * @param {{fatal: boolean}} options\n */\nfunction UTF8Decoder(options) {\n var fatal = options.fatal;\n\n // utf-8's decoder's has an associated utf-8 code point, utf-8\n // bytes seen, and utf-8 bytes needed (all initially 0), a utf-8\n // lower boundary (initially 0x80), and a utf-8 upper boundary\n // (initially 0xBF).\n var /** @type {number} */ utf8_code_point = 0,\n /** @type {number} */ utf8_bytes_seen = 0,\n /** @type {number} */ utf8_bytes_needed = 0,\n /** @type {number} */ utf8_lower_boundary = 0x80,\n /** @type {number} */ utf8_upper_boundary = 0xbf;\n\n /**\n * @param {Stream} stream The stream of bytes being decoded.\n * @param {number} bite The next byte read from the stream.\n * @return {?(number|!Array.)} The next code point(s)\n * decoded, or null if not enough data exists in the input\n * stream to decode a complete code point.\n */\n this.handler = function (stream, bite) {\n // 1. If byte is end-of-stream and utf-8 bytes needed is not 0,\n // set utf-8 bytes needed to 0 and return error.\n if (bite === end_of_stream && utf8_bytes_needed !== 0) {\n utf8_bytes_needed = 0;\n return decoderError(fatal);\n }\n\n // 2. If byte is end-of-stream, return finished.\n if (bite === end_of_stream) return finished;\n\n // 3. If utf-8 bytes needed is 0, based on byte:\n if (utf8_bytes_needed === 0) {\n // 0x00 to 0x7F\n if (inRange(bite, 0x00, 0x7f)) {\n // Return a code point whose value is byte.\n return bite;\n }\n\n // 0xC2 to 0xDF\n else if (inRange(bite, 0xc2, 0xdf)) {\n // 1. Set utf-8 bytes needed to 1.\n utf8_bytes_needed = 1;\n\n // 2. Set UTF-8 code point to byte & 0x1F.\n utf8_code_point = bite & 0x1f;\n }\n\n // 0xE0 to 0xEF\n else if (inRange(bite, 0xe0, 0xef)) {\n // 1. If byte is 0xE0, set utf-8 lower boundary to 0xA0.\n if (bite === 0xe0) utf8_lower_boundary = 0xa0;\n // 2. If byte is 0xED, set utf-8 upper boundary to 0x9F.\n if (bite === 0xed) utf8_upper_boundary = 0x9f;\n // 3. Set utf-8 bytes needed to 2.\n utf8_bytes_needed = 2;\n // 4. Set UTF-8 code point to byte & 0xF.\n utf8_code_point = bite & 0xf;\n }\n\n // 0xF0 to 0xF4\n else if (inRange(bite, 0xf0, 0xf4)) {\n // 1. If byte is 0xF0, set utf-8 lower boundary to 0x90.\n if (bite === 0xf0) utf8_lower_boundary = 0x90;\n // 2. If byte is 0xF4, set utf-8 upper boundary to 0x8F.\n if (bite === 0xf4) utf8_upper_boundary = 0x8f;\n // 3. Set utf-8 bytes needed to 3.\n utf8_bytes_needed = 3;\n // 4. Set UTF-8 code point to byte & 0x7.\n utf8_code_point = bite & 0x7;\n }\n\n // Otherwise\n else {\n // Return error.\n return decoderError(fatal);\n }\n\n // Return continue.\n return null;\n }\n\n // 4. If byte is not in the range utf-8 lower boundary to utf-8\n // upper boundary, inclusive, run these substeps:\n if (!inRange(bite, utf8_lower_boundary, utf8_upper_boundary)) {\n // 1. Set utf-8 code point, utf-8 bytes needed, and utf-8\n // bytes seen to 0, set utf-8 lower boundary to 0x80, and set\n // utf-8 upper boundary to 0xBF.\n utf8_code_point = utf8_bytes_needed = utf8_bytes_seen = 0;\n utf8_lower_boundary = 0x80;\n utf8_upper_boundary = 0xbf;\n\n // 2. Prepend byte to stream.\n stream.prepend(bite);\n\n // 3. Return error.\n return decoderError(fatal);\n }\n\n // 5. Set utf-8 lower boundary to 0x80 and utf-8 upper boundary\n // to 0xBF.\n utf8_lower_boundary = 0x80;\n utf8_upper_boundary = 0xbf;\n\n // 6. Set UTF-8 code point to (UTF-8 code point << 6) | (byte &\n // 0x3F)\n utf8_code_point = (utf8_code_point << 6) | (bite & 0x3f);\n\n // 7. Increase utf-8 bytes seen by one.\n utf8_bytes_seen += 1;\n\n // 8. If utf-8 bytes seen is not equal to utf-8 bytes needed,\n // continue.\n if (utf8_bytes_seen !== utf8_bytes_needed) return null;\n\n // 9. Let code point be utf-8 code point.\n var code_point = utf8_code_point;\n\n // 10. Set utf-8 code point, utf-8 bytes needed, and utf-8 bytes\n // seen to 0.\n utf8_code_point = utf8_bytes_needed = utf8_bytes_seen = 0;\n\n // 11. Return a code point whose value is code point.\n return code_point;\n };\n}\n\n// 9.1.2 utf-8 encoder\n/**\n * @constructor\n * @implements {Encoder}\n * @param {{fatal: boolean}} options\n */\nfunction UTF8Encoder(options) {\n var fatal = options.fatal;\n /**\n * @param {Stream} stream Input stream.\n * @param {number} code_point Next code point read from the stream.\n * @return {(number|!Array.)} Byte(s) to emit.\n */\n this.handler = function (stream, code_point) {\n // 1. If code point is end-of-stream, return finished.\n if (code_point === end_of_stream) return finished;\n\n // 2. If code point is an ASCII code point, return a byte whose\n // value is code point.\n if (isASCIICodePoint(code_point)) return code_point;\n\n // 3. Set count and offset based on the range code point is in:\n var count, offset;\n // U+0080 to U+07FF, inclusive:\n if (inRange(code_point, 0x0080, 0x07ff)) {\n // 1 and 0xC0\n count = 1;\n offset = 0xc0;\n }\n // U+0800 to U+FFFF, inclusive:\n else if (inRange(code_point, 0x0800, 0xffff)) {\n // 2 and 0xE0\n count = 2;\n offset = 0xe0;\n }\n // U+10000 to U+10FFFF, inclusive:\n else if (inRange(code_point, 0x10000, 0x10ffff)) {\n // 3 and 0xF0\n count = 3;\n offset = 0xf0;\n }\n\n // 4. Let bytes be a byte sequence whose first byte is (code\n // point >> (6 \u00D7 count)) + offset.\n var bytes = [(code_point >> (6 * count)) + offset];\n\n // 5. Run these substeps while count is greater than 0:\n while (count > 0) {\n // 1. Set temp to code point >> (6 \u00D7 (count \u2212 1)).\n var temp = code_point >> (6 * (count - 1));\n\n // 2. Append to bytes 0x80 | (temp & 0x3F).\n bytes.push(0x80 | (temp & 0x3f));\n\n // 3. Decrease count by one.\n count -= 1;\n }\n\n // 6. Return bytes bytes, in order.\n return bytes;\n };\n}\n\n/** @param {{fatal: boolean}} options */\nencoders['UTF-8'] = function (options) {\n return new UTF8Encoder(options);\n};\n/** @param {{fatal: boolean}} options */\ndecoders['UTF-8'] = function (options) {\n return new UTF8Decoder(options);\n};\n\n//\n// 10. Legacy single-byte encodings\n//\n\n// 10.1 single-byte decoder\n/**\n * @constructor\n * @implements {Decoder}\n * @param {!Array.} index The encoding index.\n * @param {{fatal: boolean}} options\n */\nfunction SingleByteDecoder(index, options) {\n var fatal = options.fatal;\n /**\n * @param {Stream} stream The stream of bytes being decoded.\n * @param {number} bite The next byte read from the stream.\n * @return {?(number|!Array.)} The next code point(s)\n * decoded, or null if not enough data exists in the input\n * stream to decode a complete code point.\n */\n this.handler = function (stream, bite) {\n // 1. If byte is end-of-stream, return finished.\n if (bite === end_of_stream) return finished;\n\n // 2. If byte is an ASCII byte, return a code point whose value\n // is byte.\n if (isASCIIByte(bite)) return bite;\n\n // 3. Let code point be the index code point for byte \u2212 0x80 in\n // index single-byte.\n var code_point = index[bite - 0x80];\n\n // 4. If code point is null, return error.\n if (code_point === null) return decoderError(fatal);\n\n // 5. Return a code point whose value is code point.\n return code_point;\n };\n}\n\n// 10.2 single-byte encoder\n/**\n * @constructor\n * @implements {Encoder}\n * @param {!Array.} index The encoding index.\n * @param {{fatal: boolean}} options\n */\nfunction SingleByteEncoder(index, options) {\n var fatal = options.fatal;\n /**\n * @param {Stream} stream Input stream.\n * @param {number} code_point Next code point read from the stream.\n * @return {(number|!Array.)} Byte(s) to emit.\n */\n this.handler = function (stream, code_point) {\n // 1. If code point is end-of-stream, return finished.\n if (code_point === end_of_stream) return finished;\n\n // 2. If code point is an ASCII code point, return a byte whose\n // value is code point.\n if (isASCIICodePoint(code_point)) return code_point;\n\n // 3. Let pointer be the index pointer for code point in index\n // single-byte.\n var pointer = indexPointerFor(code_point, index);\n\n // 4. If pointer is null, return error with code point.\n if (pointer === null) encoderError(code_point);\n\n // 5. Return a byte whose value is pointer + 0x80.\n return pointer + 0x80;\n };\n}\n\n(function () {\n if (!('encoding-indexes' in globalThis)) return;\n encodings.forEach(function (category) {\n if (category.heading !== 'Legacy single-byte encodings') return;\n category.encodings.forEach(function (encoding) {\n var name = encoding.name;\n var idx = index(name.toLowerCase());\n /** @param {{fatal: boolean}} options */\n decoders[name] = function (options) {\n return new SingleByteDecoder(idx, options);\n };\n /** @param {{fatal: boolean}} options */\n encoders[name] = function (options) {\n return new SingleByteEncoder(idx, options);\n };\n });\n });\n})();\n\n//\n// 11. Legacy multi-byte Chinese (simplified) encodings\n//\n\n// 11.1 gbk\n\n// 11.1.1 gbk decoder\n// gbk's decoder is gb18030's decoder.\n/** @param {{fatal: boolean}} options */\ndecoders['GBK'] = function (options) {\n return new GB18030Decoder(options);\n};\n\n// 11.1.2 gbk encoder\n// gbk's encoder is gb18030's encoder with its gbk flag set.\n/** @param {{fatal: boolean}} options */\nencoders['GBK'] = function (options) {\n return new GB18030Encoder(options, true);\n};\n\n// 11.2 gb18030\n\n// 11.2.1 gb18030 decoder\n/**\n * @constructor\n * @implements {Decoder}\n * @param {{fatal: boolean}} options\n */\nfunction GB18030Decoder(options) {\n var fatal = options.fatal;\n // gb18030's decoder has an associated gb18030 first, gb18030\n // second, and gb18030 third (all initially 0x00).\n var /** @type {number} */ gb18030_first = 0x00,\n /** @type {number} */ gb18030_second = 0x00,\n /** @type {number} */ gb18030_third = 0x00;\n /**\n * @param {Stream} stream The stream of bytes being decoded.\n * @param {number} bite The next byte read from the stream.\n * @return {?(number|!Array.)} The next code point(s)\n * decoded, or null if not enough data exists in the input\n * stream to decode a complete code point.\n */\n this.handler = function (stream, bite) {\n // 1. If byte is end-of-stream and gb18030 first, gb18030\n // second, and gb18030 third are 0x00, return finished.\n if (\n bite === end_of_stream &&\n gb18030_first === 0x00 &&\n gb18030_second === 0x00 &&\n gb18030_third === 0x00\n ) {\n return finished;\n }\n // 2. If byte is end-of-stream, and gb18030 first, gb18030\n // second, or gb18030 third is not 0x00, set gb18030 first,\n // gb18030 second, and gb18030 third to 0x00, and return error.\n if (\n bite === end_of_stream &&\n (gb18030_first !== 0x00 || gb18030_second !== 0x00 || gb18030_third !== 0x00)\n ) {\n gb18030_first = 0x00;\n gb18030_second = 0x00;\n gb18030_third = 0x00;\n decoderError(fatal);\n }\n var code_point;\n // 3. If gb18030 third is not 0x00, run these substeps:\n if (gb18030_third !== 0x00) {\n // 1. Let code point be null.\n code_point = null;\n // 2. If byte is in the range 0x30 to 0x39, inclusive, set\n // code point to the index gb18030 ranges code point for\n // (((gb18030 first \u2212 0x81) \u00D7 10 + gb18030 second \u2212 0x30) \u00D7\n // 126 + gb18030 third \u2212 0x81) \u00D7 10 + byte \u2212 0x30.\n if (inRange(bite, 0x30, 0x39)) {\n code_point = indexGB18030RangesCodePointFor(\n (((gb18030_first - 0x81) * 10 + gb18030_second - 0x30) * 126 + gb18030_third - 0x81) *\n 10 +\n bite -\n 0x30\n );\n }\n\n // 3. Let buffer be a byte sequence consisting of gb18030\n // second, gb18030 third, and byte, in order.\n var buffer = [gb18030_second, gb18030_third, bite];\n\n // 4. Set gb18030 first, gb18030 second, and gb18030 third to\n // 0x00.\n gb18030_first = 0x00;\n gb18030_second = 0x00;\n gb18030_third = 0x00;\n\n // 5. If code point is null, prepend buffer to stream and\n // return error.\n if (code_point === null) {\n stream.prepend(buffer);\n return decoderError(fatal);\n }\n\n // 6. Return a code point whose value is code point.\n return code_point;\n }\n\n // 4. If gb18030 second is not 0x00, run these substeps:\n if (gb18030_second !== 0x00) {\n // 1. If byte is in the range 0x81 to 0xFE, inclusive, set\n // gb18030 third to byte and return continue.\n if (inRange(bite, 0x81, 0xfe)) {\n gb18030_third = bite;\n return null;\n }\n\n // 2. Prepend gb18030 second followed by byte to stream, set\n // gb18030 first and gb18030 second to 0x00, and return error.\n stream.prepend([gb18030_second, bite]);\n gb18030_first = 0x00;\n gb18030_second = 0x00;\n return decoderError(fatal);\n }\n\n // 5. If gb18030 first is not 0x00, run these substeps:\n if (gb18030_first !== 0x00) {\n // 1. If byte is in the range 0x30 to 0x39, inclusive, set\n // gb18030 second to byte and return continue.\n if (inRange(bite, 0x30, 0x39)) {\n gb18030_second = bite;\n return null;\n }\n\n // 2. Let lead be gb18030 first, let pointer be null, and set\n // gb18030 first to 0x00.\n var lead = gb18030_first;\n var pointer = null;\n gb18030_first = 0x00;\n\n // 3. Let offset be 0x40 if byte is less than 0x7F and 0x41\n // otherwise.\n var offset = bite < 0x7f ? 0x40 : 0x41;\n\n // 4. If byte is in the range 0x40 to 0x7E, inclusive, or 0x80\n // to 0xFE, inclusive, set pointer to (lead \u2212 0x81) \u00D7 190 +\n // (byte \u2212 offset).\n if (inRange(bite, 0x40, 0x7e) || inRange(bite, 0x80, 0xfe))\n pointer = (lead - 0x81) * 190 + (bite - offset);\n\n // 5. Let code point be null if pointer is null and the index\n // code point for pointer in index gb18030 otherwise.\n code_point = pointer === null ? null : indexCodePointFor(pointer, index('gb18030'));\n\n // 6. If code point is null and byte is an ASCII byte, prepend\n // byte to stream.\n if (code_point === null && isASCIIByte(bite)) stream.prepend(bite);\n\n // 7. If code point is null, return error.\n if (code_point === null) return decoderError(fatal);\n\n // 8. Return a code point whose value is code point.\n return code_point;\n }\n\n // 6. If byte is an ASCII byte, return a code point whose value\n // is byte.\n if (isASCIIByte(bite)) return bite;\n\n // 7. If byte is 0x80, return code point U+20AC.\n if (bite === 0x80) return 0x20ac;\n\n // 8. If byte is in the range 0x81 to 0xFE, inclusive, set\n // gb18030 first to byte and return continue.\n if (inRange(bite, 0x81, 0xfe)) {\n gb18030_first = bite;\n return null;\n }\n\n // 9. Return error.\n return decoderError(fatal);\n };\n}\n\n// 11.2.2 gb18030 encoder\n/**\n * @constructor\n * @implements {Encoder}\n * @param {{fatal: boolean}} options\n * @param {boolean=} gbk_flag\n */\nfunction GB18030Encoder(options, gbk_flag) {\n var fatal = options.fatal;\n // gb18030's decoder has an associated gbk flag (initially unset).\n /**\n * @param {Stream} stream Input stream.\n * @param {number} code_point Next code point read from the stream.\n * @return {(number|!Array.)} Byte(s) to emit.\n */\n this.handler = function (stream, code_point) {\n // 1. If code point is end-of-stream, return finished.\n if (code_point === end_of_stream) return finished;\n\n // 2. If code point is an ASCII code point, return a byte whose\n // value is code point.\n if (isASCIICodePoint(code_point)) return code_point;\n\n // 3. If code point is U+E5E5, return error with code point.\n if (code_point === 0xe5e5) return encoderError(code_point);\n\n // 4. If the gbk flag is set and code point is U+20AC, return\n // byte 0x80.\n if (gbk_flag && code_point === 0x20ac) return 0x80;\n\n // 5. Let pointer be the index pointer for code point in index\n // gb18030.\n var pointer = indexPointerFor(code_point, index('gb18030'));\n\n // 6. If pointer is not null, run these substeps:\n if (pointer !== null) {\n // 1. Let lead be floor(pointer / 190) + 0x81.\n var lead = floor(pointer / 190) + 0x81;\n\n // 2. Let trail be pointer % 190.\n var trail = pointer % 190;\n\n // 3. Let offset be 0x40 if trail is less than 0x3F and 0x41 otherwise.\n var offset = trail < 0x3f ? 0x40 : 0x41;\n\n // 4. Return two bytes whose values are lead and trail + offset.\n return [lead, trail + offset];\n }\n\n // 7. If gbk flag is set, return error with code point.\n if (gbk_flag) return encoderError(code_point);\n\n // 8. Set pointer to the index gb18030 ranges pointer for code\n // point.\n pointer = indexGB18030RangesPointerFor(code_point);\n\n // 9. Let byte1 be floor(pointer / 10 / 126 / 10).\n var byte1 = floor(pointer / 10 / 126 / 10);\n\n // 10. Set pointer to pointer \u2212 byte1 \u00D7 10 \u00D7 126 \u00D7 10.\n pointer = pointer - byte1 * 10 * 126 * 10;\n\n // 11. Let byte2 be floor(pointer / 10 / 126).\n var byte2 = floor(pointer / 10 / 126);\n\n // 12. Set pointer to pointer \u2212 byte2 \u00D7 10 \u00D7 126.\n pointer = pointer - byte2 * 10 * 126;\n\n // 13. Let byte3 be floor(pointer / 10).\n var byte3 = floor(pointer / 10);\n\n // 14. Let byte4 be pointer \u2212 byte3 \u00D7 10.\n var byte4 = pointer - byte3 * 10;\n\n // 15. Return four bytes whose values are byte1 + 0x81, byte2 +\n // 0x30, byte3 + 0x81, byte4 + 0x30.\n return [byte1 + 0x81, byte2 + 0x30, byte3 + 0x81, byte4 + 0x30];\n };\n}\n\n/** @param {{fatal: boolean}} options */\nencoders['gb18030'] = function (options) {\n return new GB18030Encoder(options);\n};\n/** @param {{fatal: boolean}} options */\ndecoders['gb18030'] = function (options) {\n return new GB18030Decoder(options);\n};\n\n//\n// 12. Legacy multi-byte Chinese (traditional) encodings\n//\n\n// 12.1 Big5\n\n// 12.1.1 Big5 decoder\n/**\n * @constructor\n * @implements {Decoder}\n * @param {{fatal: boolean}} options\n */\nfunction Big5Decoder(options) {\n var fatal = options.fatal;\n // Big5's decoder has an associated Big5 lead (initially 0x00).\n var /** @type {number} */ Big5_lead = 0x00;\n\n /**\n * @param {Stream} stream The stream of bytes being decoded.\n * @param {number} bite The next byte read from the stream.\n * @return {?(number|!Array.)} The next code point(s)\n * decoded, or null if not enough data exists in the input\n * stream to decode a complete code point.\n */\n this.handler = function (stream, bite) {\n // 1. If byte is end-of-stream and Big5 lead is not 0x00, set\n // Big5 lead to 0x00 and return error.\n if (bite === end_of_stream && Big5_lead !== 0x00) {\n Big5_lead = 0x00;\n return decoderError(fatal);\n }\n\n // 2. If byte is end-of-stream and Big5 lead is 0x00, return\n // finished.\n if (bite === end_of_stream && Big5_lead === 0x00) return finished;\n\n // 3. If Big5 lead is not 0x00, let lead be Big5 lead, let\n // pointer be null, set Big5 lead to 0x00, and then run these\n // substeps:\n if (Big5_lead !== 0x00) {\n var lead = Big5_lead;\n var pointer = null;\n Big5_lead = 0x00;\n\n // 1. Let offset be 0x40 if byte is less than 0x7F and 0x62\n // otherwise.\n var offset = bite < 0x7f ? 0x40 : 0x62;\n\n // 2. If byte is in the range 0x40 to 0x7E, inclusive, or 0xA1\n // to 0xFE, inclusive, set pointer to (lead \u2212 0x81) \u00D7 157 +\n // (byte \u2212 offset).\n if (inRange(bite, 0x40, 0x7e) || inRange(bite, 0xa1, 0xfe))\n pointer = (lead - 0x81) * 157 + (bite - offset);\n\n // 3. If there is a row in the table below whose first column\n // is pointer, return the two code points listed in its second\n // column\n // Pointer | Code points\n // --------+--------------\n // 1133 | U+00CA U+0304\n // 1135 | U+00CA U+030C\n // 1164 | U+00EA U+0304\n // 1166 | U+00EA U+030C\n switch (pointer) {\n case 1133:\n return [0x00ca, 0x0304];\n case 1135:\n return [0x00ca, 0x030c];\n case 1164:\n return [0x00ea, 0x0304];\n case 1166:\n return [0x00ea, 0x030c];\n }\n\n // 4. Let code point be null if pointer is null and the index\n // code point for pointer in index Big5 otherwise.\n var code_point = pointer === null ? null : indexCodePointFor(pointer, index('big5'));\n\n // 5. If code point is null and byte is an ASCII byte, prepend\n // byte to stream.\n if (code_point === null && isASCIIByte(bite)) stream.prepend(bite);\n\n // 6. If code point is null, return error.\n if (code_point === null) return decoderError(fatal);\n\n // 7. Return a code point whose value is code point.\n return code_point;\n }\n\n // 4. If byte is an ASCII byte, return a code point whose value\n // is byte.\n if (isASCIIByte(bite)) return bite;\n\n // 5. If byte is in the range 0x81 to 0xFE, inclusive, set Big5\n // lead to byte and return continue.\n if (inRange(bite, 0x81, 0xfe)) {\n Big5_lead = bite;\n return null;\n }\n\n // 6. Return error.\n return decoderError(fatal);\n };\n}\n\n// 12.1.2 Big5 encoder\n/**\n * @constructor\n * @implements {Encoder}\n * @param {{fatal: boolean}} options\n */\nfunction Big5Encoder(options) {\n var fatal = options.fatal;\n /**\n * @param {Stream} stream Input stream.\n * @param {number} code_point Next code point read from the stream.\n * @return {(number|!Array.)} Byte(s) to emit.\n */\n this.handler = function (stream, code_point) {\n // 1. If code point is end-of-stream, return finished.\n if (code_point === end_of_stream) return finished;\n\n // 2. If code point is an ASCII code point, return a byte whose\n // value is code point.\n if (isASCIICodePoint(code_point)) return code_point;\n\n // 3. Let pointer be the index Big5 pointer for code point.\n var pointer = indexBig5PointerFor(code_point);\n\n // 4. If pointer is null, return error with code point.\n if (pointer === null) return encoderError(code_point);\n\n // 5. Let lead be floor(pointer / 157) + 0x81.\n var lead = floor(pointer / 157) + 0x81;\n\n // 6. If lead is less than 0xA1, return error with code point.\n if (lead < 0xa1) return encoderError(code_point);\n\n // 7. Let trail be pointer % 157.\n var trail = pointer % 157;\n\n // 8. Let offset be 0x40 if trail is less than 0x3F and 0x62\n // otherwise.\n var offset = trail < 0x3f ? 0x40 : 0x62;\n\n // Return two bytes whose values are lead and trail + offset.\n return [lead, trail + offset];\n };\n}\n\n/** @param {{fatal: boolean}} options */\nencoders['Big5'] = function (options) {\n return new Big5Encoder(options);\n};\n/** @param {{fatal: boolean}} options */\ndecoders['Big5'] = function (options) {\n return new Big5Decoder(options);\n};\n\n//\n// 13. Legacy multi-byte Japanese encodings\n//\n\n// 13.1 euc-jp\n\n// 13.1.1 euc-jp decoder\n/**\n * @constructor\n * @implements {Decoder}\n * @param {{fatal: boolean}} options\n */\nfunction EUCJPDecoder(options) {\n var fatal = options.fatal;\n\n // euc-jp's decoder has an associated euc-jp jis0212 flag\n // (initially unset) and euc-jp lead (initially 0x00).\n var /** @type {boolean} */ eucjp_jis0212_flag = false,\n /** @type {number} */ eucjp_lead = 0x00;\n\n /**\n * @param {Stream} stream The stream of bytes being decoded.\n * @param {number} bite The next byte read from the stream.\n * @return {?(number|!Array.)} The next code point(s)\n * decoded, or null if not enough data exists in the input\n * stream to decode a complete code point.\n */\n this.handler = function (stream, bite) {\n // 1. If byte is end-of-stream and euc-jp lead is not 0x00, set\n // euc-jp lead to 0x00, and return error.\n if (bite === end_of_stream && eucjp_lead !== 0x00) {\n eucjp_lead = 0x00;\n return decoderError(fatal);\n }\n\n // 2. If byte is end-of-stream and euc-jp lead is 0x00, return\n // finished.\n if (bite === end_of_stream && eucjp_lead === 0x00) return finished;\n\n // 3. If euc-jp lead is 0x8E and byte is in the range 0xA1 to\n // 0xDF, inclusive, set euc-jp lead to 0x00 and return a code\n // point whose value is 0xFF61 \u2212 0xA1 + byte.\n if (eucjp_lead === 0x8e && inRange(bite, 0xa1, 0xdf)) {\n eucjp_lead = 0x00;\n return 0xff61 - 0xa1 + bite;\n }\n\n // 4. If euc-jp lead is 0x8F and byte is in the range 0xA1 to\n // 0xFE, inclusive, set the euc-jp jis0212 flag, set euc-jp lead\n // to byte, and return continue.\n if (eucjp_lead === 0x8f && inRange(bite, 0xa1, 0xfe)) {\n eucjp_jis0212_flag = true;\n eucjp_lead = bite;\n return null;\n }\n\n // 5. If euc-jp lead is not 0x00, let lead be euc-jp lead, set\n // euc-jp lead to 0x00, and run these substeps:\n if (eucjp_lead !== 0x00) {\n var lead = eucjp_lead;\n eucjp_lead = 0x00;\n\n // 1. Let code point be null.\n var code_point = null;\n\n // 2. If lead and byte are both in the range 0xA1 to 0xFE,\n // inclusive, set code point to the index code point for (lead\n // \u2212 0xA1) \u00D7 94 + byte \u2212 0xA1 in index jis0208 if the euc-jp\n // jis0212 flag is unset and in index jis0212 otherwise.\n if (inRange(lead, 0xa1, 0xfe) && inRange(bite, 0xa1, 0xfe)) {\n code_point = indexCodePointFor(\n (lead - 0xa1) * 94 + (bite - 0xa1),\n index(!eucjp_jis0212_flag ? 'jis0208' : 'jis0212')\n );\n }\n\n // 3. Unset the euc-jp jis0212 flag.\n eucjp_jis0212_flag = false;\n\n // 4. If byte is not in the range 0xA1 to 0xFE, inclusive,\n // prepend byte to stream.\n if (!inRange(bite, 0xa1, 0xfe)) stream.prepend(bite);\n\n // 5. If code point is null, return error.\n if (code_point === null) return decoderError(fatal);\n\n // 6. Return a code point whose value is code point.\n return code_point;\n }\n\n // 6. If byte is an ASCII byte, return a code point whose value\n // is byte.\n if (isASCIIByte(bite)) return bite;\n\n // 7. If byte is 0x8E, 0x8F, or in the range 0xA1 to 0xFE,\n // inclusive, set euc-jp lead to byte and return continue.\n if (bite === 0x8e || bite === 0x8f || inRange(bite, 0xa1, 0xfe)) {\n eucjp_lead = bite;\n return null;\n }\n\n // 8. Return error.\n return decoderError(fatal);\n };\n}\n\n// 13.1.2 euc-jp encoder\n/**\n * @constructor\n * @implements {Encoder}\n * @param {{fatal: boolean}} options\n */\nfunction EUCJPEncoder(options) {\n var fatal = options.fatal;\n /**\n * @param {Stream} stream Input stream.\n * @param {number} code_point Next code point read from the stream.\n * @return {(number|!Array.)} Byte(s) to emit.\n */\n this.handler = function (stream, code_point) {\n // 1. If code point is end-of-stream, return finished.\n if (code_point === end_of_stream) return finished;\n\n // 2. If code point is an ASCII code point, return a byte whose\n // value is code point.\n if (isASCIICodePoint(code_point)) return code_point;\n\n // 3. If code point is U+00A5, return byte 0x5C.\n if (code_point === 0x00a5) return 0x5c;\n\n // 4. If code point is U+203E, return byte 0x7E.\n if (code_point === 0x203e) return 0x7e;\n\n // 5. If code point is in the range U+FF61 to U+FF9F, inclusive,\n // return two bytes whose values are 0x8E and code point \u2212\n // 0xFF61 + 0xA1.\n if (inRange(code_point, 0xff61, 0xff9f)) return [0x8e, code_point - 0xff61 + 0xa1];\n\n // 6. If code point is U+2212, set it to U+FF0D.\n if (code_point === 0x2212) code_point = 0xff0d;\n\n // 7. Let pointer be the index pointer for code point in index\n // jis0208.\n var pointer = indexPointerFor(code_point, index('jis0208'));\n\n // 8. If pointer is null, return error with code point.\n if (pointer === null) return encoderError(code_point);\n\n // 9. Let lead be floor(pointer / 94) + 0xA1.\n var lead = floor(pointer / 94) + 0xa1;\n\n // 10. Let trail be pointer % 94 + 0xA1.\n var trail = (pointer % 94) + 0xa1;\n\n // 11. Return two bytes whose values are lead and trail.\n return [lead, trail];\n };\n}\n\n/** @param {{fatal: boolean}} options */\nencoders['EUC-JP'] = function (options) {\n return new EUCJPEncoder(options);\n};\n/** @param {{fatal: boolean}} options */\ndecoders['EUC-JP'] = function (options) {\n return new EUCJPDecoder(options);\n};\n\n// 13.2 iso-2022-jp\n\n// 13.2.1 iso-2022-jp decoder\n/**\n * @constructor\n * @implements {Decoder}\n * @param {{fatal: boolean}} options\n */\nfunction ISO2022JPDecoder(options) {\n var fatal = options.fatal;\n /** @enum */\n var states = {\n ASCII: 0,\n Roman: 1,\n Katakana: 2,\n LeadByte: 3,\n TrailByte: 4,\n EscapeStart: 5,\n Escape: 6\n };\n // iso-2022-jp's decoder has an associated iso-2022-jp decoder\n // state (initially ASCII), iso-2022-jp decoder output state\n // (initially ASCII), iso-2022-jp lead (initially 0x00), and\n // iso-2022-jp output flag (initially unset).\n var /** @type {number} */ iso2022jp_decoder_state = states.ASCII,\n /** @type {number} */ iso2022jp_decoder_output_state = states.ASCII,\n /** @type {number} */ iso2022jp_lead = 0x00,\n /** @type {boolean} */ iso2022jp_output_flag = false;\n /**\n * @param {Stream} stream The stream of bytes being decoded.\n * @param {number} bite The next byte read from the stream.\n * @return {?(number|!Array.)} The next code point(s)\n * decoded, or null if not enough data exists in the input\n * stream to decode a complete code point.\n */\n this.handler = function (stream, bite) {\n // switching on iso-2022-jp decoder state:\n switch (iso2022jp_decoder_state) {\n default:\n case states.ASCII:\n // ASCII\n // Based on byte:\n\n // 0x1B\n if (bite === 0x1b) {\n // Set iso-2022-jp decoder state to escape start and return\n // continue.\n iso2022jp_decoder_state = states.EscapeStart;\n return null;\n }\n\n // 0x00 to 0x7F, excluding 0x0E, 0x0F, and 0x1B\n if (inRange(bite, 0x00, 0x7f) && bite !== 0x0e && bite !== 0x0f && bite !== 0x1b) {\n // Unset the iso-2022-jp output flag and return a code point\n // whose value is byte.\n iso2022jp_output_flag = false;\n return bite;\n }\n\n // end-of-stream\n if (bite === end_of_stream) {\n // Return finished.\n return finished;\n }\n\n // Otherwise\n // Unset the iso-2022-jp output flag and return error.\n iso2022jp_output_flag = false;\n return decoderError(fatal);\n\n case states.Roman:\n // Roman\n // Based on byte:\n\n // 0x1B\n if (bite === 0x1b) {\n // Set iso-2022-jp decoder state to escape start and return\n // continue.\n iso2022jp_decoder_state = states.EscapeStart;\n return null;\n }\n\n // 0x5C\n if (bite === 0x5c) {\n // Unset the iso-2022-jp output flag and return code point\n // U+00A5.\n iso2022jp_output_flag = false;\n return 0x00a5;\n }\n\n // 0x7E\n if (bite === 0x7e) {\n // Unset the iso-2022-jp output flag and return code point\n // U+203E.\n iso2022jp_output_flag = false;\n return 0x203e;\n }\n\n // 0x00 to 0x7F, excluding 0x0E, 0x0F, 0x1B, 0x5C, and 0x7E\n if (\n inRange(bite, 0x00, 0x7f) &&\n bite !== 0x0e &&\n bite !== 0x0f &&\n bite !== 0x1b &&\n bite !== 0x5c &&\n bite !== 0x7e\n ) {\n // Unset the iso-2022-jp output flag and return a code point\n // whose value is byte.\n iso2022jp_output_flag = false;\n return bite;\n }\n\n // end-of-stream\n if (bite === end_of_stream) {\n // Return finished.\n return finished;\n }\n\n // Otherwise\n // Unset the iso-2022-jp output flag and return error.\n iso2022jp_output_flag = false;\n return decoderError(fatal);\n\n case states.Katakana:\n // Katakana\n // Based on byte:\n\n // 0x1B\n if (bite === 0x1b) {\n // Set iso-2022-jp decoder state to escape start and return\n // continue.\n iso2022jp_decoder_state = states.EscapeStart;\n return null;\n }\n\n // 0x21 to 0x5F\n if (inRange(bite, 0x21, 0x5f)) {\n // Unset the iso-2022-jp output flag and return a code point\n // whose value is 0xFF61 \u2212 0x21 + byte.\n iso2022jp_output_flag = false;\n return 0xff61 - 0x21 + bite;\n }\n\n // end-of-stream\n if (bite === end_of_stream) {\n // Return finished.\n return finished;\n }\n\n // Otherwise\n // Unset the iso-2022-jp output flag and return error.\n iso2022jp_output_flag = false;\n return decoderError(fatal);\n\n case states.LeadByte:\n // Lead byte\n // Based on byte:\n\n // 0x1B\n if (bite === 0x1b) {\n // Set iso-2022-jp decoder state to escape start and return\n // continue.\n iso2022jp_decoder_state = states.EscapeStart;\n return null;\n }\n\n // 0x21 to 0x7E\n if (inRange(bite, 0x21, 0x7e)) {\n // Unset the iso-2022-jp output flag, set iso-2022-jp lead\n // to byte, iso-2022-jp decoder state to trail byte, and\n // return continue.\n iso2022jp_output_flag = false;\n iso2022jp_lead = bite;\n iso2022jp_decoder_state = states.TrailByte;\n return null;\n }\n\n // end-of-stream\n if (bite === end_of_stream) {\n // Return finished.\n return finished;\n }\n\n // Otherwise\n // Unset the iso-2022-jp output flag and return error.\n iso2022jp_output_flag = false;\n return decoderError(fatal);\n\n case states.TrailByte:\n // Trail byte\n // Based on byte:\n\n // 0x1B\n if (bite === 0x1b) {\n // Set iso-2022-jp decoder state to escape start and return\n // continue.\n iso2022jp_decoder_state = states.EscapeStart;\n return decoderError(fatal);\n }\n\n // 0x21 to 0x7E\n if (inRange(bite, 0x21, 0x7e)) {\n // 1. Set the iso-2022-jp decoder state to lead byte.\n iso2022jp_decoder_state = states.LeadByte;\n\n // 2. Let pointer be (iso-2022-jp lead \u2212 0x21) \u00D7 94 + byte \u2212 0x21.\n var pointer = (iso2022jp_lead - 0x21) * 94 + bite - 0x21;\n\n // 3. Let code point be the index code point for pointer in\n // index jis0208.\n var code_point = indexCodePointFor(pointer, index('jis0208'));\n\n // 4. If code point is null, return error.\n if (code_point === null) return decoderError(fatal);\n\n // 5. Return a code point whose value is code point.\n return code_point;\n }\n\n // end-of-stream\n if (bite === end_of_stream) {\n // Set the iso-2022-jp decoder state to lead byte, prepend\n // byte to stream, and return error.\n iso2022jp_decoder_state = states.LeadByte;\n stream.prepend(bite);\n return decoderError(fatal);\n }\n\n // Otherwise\n // Set iso-2022-jp decoder state to lead byte and return\n // error.\n iso2022jp_decoder_state = states.LeadByte;\n return decoderError(fatal);\n\n case states.EscapeStart:\n // Escape start\n\n // 1. If byte is either 0x24 or 0x28, set iso-2022-jp lead to\n // byte, iso-2022-jp decoder state to escape, and return\n // continue.\n if (bite === 0x24 || bite === 0x28) {\n iso2022jp_lead = bite;\n iso2022jp_decoder_state = states.Escape;\n return null;\n }\n\n // 2. Prepend byte to stream.\n stream.prepend(bite);\n\n // 3. Unset the iso-2022-jp output flag, set iso-2022-jp\n // decoder state to iso-2022-jp decoder output state, and\n // return error.\n iso2022jp_output_flag = false;\n iso2022jp_decoder_state = iso2022jp_decoder_output_state;\n return decoderError(fatal);\n\n case states.Escape:\n // Escape\n\n // 1. Let lead be iso-2022-jp lead and set iso-2022-jp lead to\n // 0x00.\n var lead = iso2022jp_lead;\n iso2022jp_lead = 0x00;\n\n // 2. Let state be null.\n var state = null;\n\n // 3. If lead is 0x28 and byte is 0x42, set state to ASCII.\n if (lead === 0x28 && bite === 0x42) state = states.ASCII;\n\n // 4. If lead is 0x28 and byte is 0x4A, set state to Roman.\n if (lead === 0x28 && bite === 0x4a) state = states.Roman;\n\n // 5. If lead is 0x28 and byte is 0x49, set state to Katakana.\n if (lead === 0x28 && bite === 0x49) state = states.Katakana;\n\n // 6. If lead is 0x24 and byte is either 0x40 or 0x42, set\n // state to lead byte.\n if (lead === 0x24 && (bite === 0x40 || bite === 0x42)) state = states.LeadByte;\n\n // 7. If state is non-null, run these substeps:\n if (state !== null) {\n // 1. Set iso-2022-jp decoder state and iso-2022-jp decoder\n // output state to states.\n iso2022jp_decoder_state = iso2022jp_decoder_state = state;\n\n // 2. Let output flag be the iso-2022-jp output flag.\n var output_flag = iso2022jp_output_flag;\n\n // 3. Set the iso-2022-jp output flag.\n iso2022jp_output_flag = true;\n\n // 4. Return continue, if output flag is unset, and error\n // otherwise.\n return !output_flag ? null : decoderError(fatal);\n }\n\n // 8. Prepend lead and byte to stream.\n stream.prepend([lead, bite]);\n\n // 9. Unset the iso-2022-jp output flag, set iso-2022-jp\n // decoder state to iso-2022-jp decoder output state and\n // return error.\n iso2022jp_output_flag = false;\n iso2022jp_decoder_state = iso2022jp_decoder_output_state;\n return decoderError(fatal);\n }\n };\n}\n\n// 13.2.2 iso-2022-jp encoder\n/**\n * @constructor\n * @implements {Encoder}\n * @param {{fatal: boolean}} options\n */\nfunction ISO2022JPEncoder(options) {\n var fatal = options.fatal;\n // iso-2022-jp's encoder has an associated iso-2022-jp encoder\n // state which is one of ASCII, Roman, and jis0208 (initially\n // ASCII).\n /** @enum */\n var states = {\n ASCII: 0,\n Roman: 1,\n jis0208: 2\n };\n var /** @type {number} */ iso2022jp_state = states.ASCII;\n /**\n * @param {Stream} stream Input stream.\n * @param {number} code_point Next code point read from the stream.\n * @return {(number|!Array.)} Byte(s) to emit.\n */\n this.handler = function (stream, code_point) {\n // 1. If code point is end-of-stream and iso-2022-jp encoder\n // state is not ASCII, prepend code point to stream, set\n // iso-2022-jp encoder state to ASCII, and return three bytes\n // 0x1B 0x28 0x42.\n if (code_point === end_of_stream && iso2022jp_state !== states.ASCII) {\n stream.prepend(code_point);\n iso2022jp_state = states.ASCII;\n return [0x1b, 0x28, 0x42];\n }\n\n // 2. If code point is end-of-stream and iso-2022-jp encoder\n // state is ASCII, return finished.\n if (code_point === end_of_stream && iso2022jp_state === states.ASCII) return finished;\n\n // 3. If ISO-2022-JP encoder state is ASCII or Roman, and code\n // point is U+000E, U+000F, or U+001B, return error with U+FFFD.\n if (\n (iso2022jp_state === states.ASCII || iso2022jp_state === states.Roman) &&\n (code_point === 0x000e || code_point === 0x000f || code_point === 0x001b)\n ) {\n return encoderError(0xfffd);\n }\n\n // 4. If iso-2022-jp encoder state is ASCII and code point is an\n // ASCII code point, return a byte whose value is code point.\n if (iso2022jp_state === states.ASCII && isASCIICodePoint(code_point)) return code_point;\n\n // 5. If iso-2022-jp encoder state is Roman and code point is an\n // ASCII code point, excluding U+005C and U+007E, or is U+00A5\n // or U+203E, run these substeps:\n if (\n iso2022jp_state === states.Roman &&\n ((isASCIICodePoint(code_point) && code_point !== 0x005c && code_point !== 0x007e) ||\n code_point == 0x00a5 ||\n code_point == 0x203e)\n ) {\n // 1. If code point is an ASCII code point, return a byte\n // whose value is code point.\n if (isASCIICodePoint(code_point)) return code_point;\n\n // 2. If code point is U+00A5, return byte 0x5C.\n if (code_point === 0x00a5) return 0x5c;\n\n // 3. If code point is U+203E, return byte 0x7E.\n if (code_point === 0x203e) return 0x7e;\n }\n\n // 6. If code point is an ASCII code point, and iso-2022-jp\n // encoder state is not ASCII, prepend code point to stream, set\n // iso-2022-jp encoder state to ASCII, and return three bytes\n // 0x1B 0x28 0x42.\n if (isASCIICodePoint(code_point) && iso2022jp_state !== states.ASCII) {\n stream.prepend(code_point);\n iso2022jp_state = states.ASCII;\n return [0x1b, 0x28, 0x42];\n }\n\n // 7. If code point is either U+00A5 or U+203E, and iso-2022-jp\n // encoder state is not Roman, prepend code point to stream, set\n // iso-2022-jp encoder state to Roman, and return three bytes\n // 0x1B 0x28 0x4A.\n if ((code_point === 0x00a5 || code_point === 0x203e) && iso2022jp_state !== states.Roman) {\n stream.prepend(code_point);\n iso2022jp_state = states.Roman;\n return [0x1b, 0x28, 0x4a];\n }\n\n // 8. If code point is U+2212, set it to U+FF0D.\n if (code_point === 0x2212) code_point = 0xff0d;\n\n // 9. Let pointer be the index pointer for code point in index\n // jis0208.\n var pointer = indexPointerFor(code_point, index('jis0208'));\n\n // 10. If pointer is null, return error with code point.\n if (pointer === null) return encoderError(code_point);\n\n // 11. If iso-2022-jp encoder state is not jis0208, prepend code\n // point to stream, set iso-2022-jp encoder state to jis0208,\n // and return three bytes 0x1B 0x24 0x42.\n if (iso2022jp_state !== states.jis0208) {\n stream.prepend(code_point);\n iso2022jp_state = states.jis0208;\n return [0x1b, 0x24, 0x42];\n }\n\n // 12. Let lead be floor(pointer / 94) + 0x21.\n var lead = floor(pointer / 94) + 0x21;\n\n // 13. Let trail be pointer % 94 + 0x21.\n var trail = (pointer % 94) + 0x21;\n\n // 14. Return two bytes whose values are lead and trail.\n return [lead, trail];\n };\n}\n\n/** @param {{fatal: boolean}} options */\nencoders['ISO-2022-JP'] = function (options) {\n return new ISO2022JPEncoder(options);\n};\n/** @param {{fatal: boolean}} options */\ndecoders['ISO-2022-JP'] = function (options) {\n return new ISO2022JPDecoder(options);\n};\n\n// 13.3 Shift_JIS\n\n// 13.3.1 Shift_JIS decoder\n/**\n * @constructor\n * @implements {Decoder}\n * @param {{fatal: boolean}} options\n */\nfunction ShiftJISDecoder(options) {\n var fatal = options.fatal;\n // Shift_JIS's decoder has an associated Shift_JIS lead (initially\n // 0x00).\n var /** @type {number} */ Shift_JIS_lead = 0x00;\n /**\n * @param {Stream} stream The stream of bytes being decoded.\n * @param {number} bite The next byte read from the stream.\n * @return {?(number|!Array.)} The next code point(s)\n * decoded, or null if not enough data exists in the input\n * stream to decode a complete code point.\n */\n this.handler = function (stream, bite) {\n // 1. If byte is end-of-stream and Shift_JIS lead is not 0x00,\n // set Shift_JIS lead to 0x00 and return error.\n if (bite === end_of_stream && Shift_JIS_lead !== 0x00) {\n Shift_JIS_lead = 0x00;\n return decoderError(fatal);\n }\n\n // 2. If byte is end-of-stream and Shift_JIS lead is 0x00,\n // return finished.\n if (bite === end_of_stream && Shift_JIS_lead === 0x00) return finished;\n\n // 3. If Shift_JIS lead is not 0x00, let lead be Shift_JIS lead,\n // let pointer be null, set Shift_JIS lead to 0x00, and then run\n // these substeps:\n if (Shift_JIS_lead !== 0x00) {\n var lead = Shift_JIS_lead;\n var pointer = null;\n Shift_JIS_lead = 0x00;\n\n // 1. Let offset be 0x40, if byte is less than 0x7F, and 0x41\n // otherwise.\n var offset = bite < 0x7f ? 0x40 : 0x41;\n\n // 2. Let lead offset be 0x81, if lead is less than 0xA0, and\n // 0xC1 otherwise.\n var lead_offset = lead < 0xa0 ? 0x81 : 0xc1;\n\n // 3. If byte is in the range 0x40 to 0x7E, inclusive, or 0x80\n // to 0xFC, inclusive, set pointer to (lead \u2212 lead offset) \u00D7\n // 188 + byte \u2212 offset.\n if (inRange(bite, 0x40, 0x7e) || inRange(bite, 0x80, 0xfc))\n pointer = (lead - lead_offset) * 188 + bite - offset;\n\n // 4. If pointer is in the range 8836 to 10715, inclusive,\n // return a code point whose value is 0xE000 \u2212 8836 + pointer.\n if (inRange(pointer, 8836, 10715)) return 0xe000 - 8836 + pointer;\n\n // 5. Let code point be null, if pointer is null, and the\n // index code point for pointer in index jis0208 otherwise.\n var code_point = pointer === null ? null : indexCodePointFor(pointer, index('jis0208'));\n\n // 6. If code point is null and byte is an ASCII byte, prepend\n // byte to stream.\n if (code_point === null && isASCIIByte(bite)) stream.prepend(bite);\n\n // 7. If code point is null, return error.\n if (code_point === null) return decoderError(fatal);\n\n // 8. Return a code point whose value is code point.\n return code_point;\n }\n\n // 4. If byte is an ASCII byte or 0x80, return a code point\n // whose value is byte.\n if (isASCIIByte(bite) || bite === 0x80) return bite;\n\n // 5. If byte is in the range 0xA1 to 0xDF, inclusive, return a\n // code point whose value is 0xFF61 \u2212 0xA1 + byte.\n if (inRange(bite, 0xa1, 0xdf)) return 0xff61 - 0xa1 + bite;\n\n // 6. If byte is in the range 0x81 to 0x9F, inclusive, or 0xE0\n // to 0xFC, inclusive, set Shift_JIS lead to byte and return\n // continue.\n if (inRange(bite, 0x81, 0x9f) || inRange(bite, 0xe0, 0xfc)) {\n Shift_JIS_lead = bite;\n return null;\n }\n\n // 7. Return error.\n return decoderError(fatal);\n };\n}\n\n// 13.3.2 Shift_JIS encoder\n/**\n * @constructor\n * @implements {Encoder}\n * @param {{fatal: boolean}} options\n */\nfunction ShiftJISEncoder(options) {\n var fatal = options.fatal;\n /**\n * @param {Stream} stream Input stream.\n * @param {number} code_point Next code point read from the stream.\n * @return {(number|!Array.)} Byte(s) to emit.\n */\n this.handler = function (stream, code_point) {\n // 1. If code point is end-of-stream, return finished.\n if (code_point === end_of_stream) return finished;\n\n // 2. If code point is an ASCII code point or U+0080, return a\n // byte whose value is code point.\n if (isASCIICodePoint(code_point) || code_point === 0x0080) return code_point;\n\n // 3. If code point is U+00A5, return byte 0x5C.\n if (code_point === 0x00a5) return 0x5c;\n\n // 4. If code point is U+203E, return byte 0x7E.\n if (code_point === 0x203e) return 0x7e;\n\n // 5. If code point is in the range U+FF61 to U+FF9F, inclusive,\n // return a byte whose value is code point \u2212 0xFF61 + 0xA1.\n if (inRange(code_point, 0xff61, 0xff9f)) return code_point - 0xff61 + 0xa1;\n\n // 6. If code point is U+2212, set it to U+FF0D.\n if (code_point === 0x2212) code_point = 0xff0d;\n\n // 7. Let pointer be the index Shift_JIS pointer for code point.\n var pointer = indexShiftJISPointerFor(code_point);\n\n // 8. If pointer is null, return error with code point.\n if (pointer === null) return encoderError(code_point);\n\n // 9. Let lead be floor(pointer / 188).\n var lead = floor(pointer / 188);\n\n // 10. Let lead offset be 0x81, if lead is less than 0x1F, and\n // 0xC1 otherwise.\n var lead_offset = lead < 0x1f ? 0x81 : 0xc1;\n\n // 11. Let trail be pointer % 188.\n var trail = pointer % 188;\n\n // 12. Let offset be 0x40, if trail is less than 0x3F, and 0x41\n // otherwise.\n var offset = trail < 0x3f ? 0x40 : 0x41;\n\n // 13. Return two bytes whose values are lead + lead offset and\n // trail + offset.\n return [lead + lead_offset, trail + offset];\n };\n}\n\n/** @param {{fatal: boolean}} options */\nencoders['Shift_JIS'] = function (options) {\n return new ShiftJISEncoder(options);\n};\n/** @param {{fatal: boolean}} options */\ndecoders['Shift_JIS'] = function (options) {\n return new ShiftJISDecoder(options);\n};\n\n//\n// 14. Legacy multi-byte Korean encodings\n//\n\n// 14.1 euc-kr\n\n// 14.1.1 euc-kr decoder\n/**\n * @constructor\n * @implements {Decoder}\n * @param {{fatal: boolean}} options\n */\nfunction EUCKRDecoder(options) {\n var fatal = options.fatal;\n\n // euc-kr's decoder has an associated euc-kr lead (initially 0x00).\n var /** @type {number} */ euckr_lead = 0x00;\n /**\n * @param {Stream} stream The stream of bytes being decoded.\n * @param {number} bite The next byte read from the stream.\n * @return {?(number|!Array.)} The next code point(s)\n * decoded, or null if not enough data exists in the input\n * stream to decode a complete code point.\n */\n this.handler = function (stream, bite) {\n // 1. If byte is end-of-stream and euc-kr lead is not 0x00, set\n // euc-kr lead to 0x00 and return error.\n if (bite === end_of_stream && euckr_lead !== 0) {\n euckr_lead = 0x00;\n return decoderError(fatal);\n }\n\n // 2. If byte is end-of-stream and euc-kr lead is 0x00, return\n // finished.\n if (bite === end_of_stream && euckr_lead === 0) return finished;\n\n // 3. If euc-kr lead is not 0x00, let lead be euc-kr lead, let\n // pointer be null, set euc-kr lead to 0x00, and then run these\n // substeps:\n if (euckr_lead !== 0x00) {\n var lead = euckr_lead;\n var pointer = null;\n euckr_lead = 0x00;\n\n // 1. If byte is in the range 0x41 to 0xFE, inclusive, set\n // pointer to (lead \u2212 0x81) \u00D7 190 + (byte \u2212 0x41).\n if (inRange(bite, 0x41, 0xfe)) pointer = (lead - 0x81) * 190 + (bite - 0x41);\n\n // 2. Let code point be null, if pointer is null, and the\n // index code point for pointer in index euc-kr otherwise.\n var code_point = pointer === null ? null : indexCodePointFor(pointer, index('euc-kr'));\n\n // 3. If code point is null and byte is an ASCII byte, prepend\n // byte to stream.\n if (pointer === null && isASCIIByte(bite)) stream.prepend(bite);\n\n // 4. If code point is null, return error.\n if (code_point === null) return decoderError(fatal);\n\n // 5. Return a code point whose value is code point.\n return code_point;\n }\n\n // 4. If byte is an ASCII byte, return a code point whose value\n // is byte.\n if (isASCIIByte(bite)) return bite;\n\n // 5. If byte is in the range 0x81 to 0xFE, inclusive, set\n // euc-kr lead to byte and return continue.\n if (inRange(bite, 0x81, 0xfe)) {\n euckr_lead = bite;\n return null;\n }\n\n // 6. Return error.\n return decoderError(fatal);\n };\n}\n\n// 14.1.2 euc-kr encoder\n/**\n * @constructor\n * @implements {Encoder}\n * @param {{fatal: boolean}} options\n */\nfunction EUCKREncoder(options) {\n var fatal = options.fatal;\n /**\n * @param {Stream} stream Input stream.\n * @param {number} code_point Next code point read from the stream.\n * @return {(number|!Array.)} Byte(s) to emit.\n */\n this.handler = function (stream, code_point) {\n // 1. If code point is end-of-stream, return finished.\n if (code_point === end_of_stream) return finished;\n\n // 2. If code point is an ASCII code point, return a byte whose\n // value is code point.\n if (isASCIICodePoint(code_point)) return code_point;\n\n // 3. Let pointer be the index pointer for code point in index\n // euc-kr.\n var pointer = indexPointerFor(code_point, index('euc-kr'));\n\n // 4. If pointer is null, return error with code point.\n if (pointer === null) return encoderError(code_point);\n\n // 5. Let lead be floor(pointer / 190) + 0x81.\n var lead = floor(pointer / 190) + 0x81;\n\n // 6. Let trail be pointer % 190 + 0x41.\n var trail = (pointer % 190) + 0x41;\n\n // 7. Return two bytes whose values are lead and trail.\n return [lead, trail];\n };\n}\n\n/** @param {{fatal: boolean}} options */\nencoders['EUC-KR'] = function (options) {\n return new EUCKREncoder(options);\n};\n/** @param {{fatal: boolean}} options */\ndecoders['EUC-KR'] = function (options) {\n return new EUCKRDecoder(options);\n};\n\n//\n// 15. Legacy miscellaneous encodings\n//\n\n// 15.1 replacement\n\n// Not needed - API throws RangeError\n\n// 15.2 Common infrastructure for utf-16be and utf-16le\n\n/**\n * @param {number} code_unit\n * @param {boolean} utf16be\n * @return {!Array.} bytes\n */\nfunction convertCodeUnitToBytes(code_unit, utf16be) {\n // 1. Let byte1 be code unit >> 8.\n var byte1 = code_unit >> 8;\n\n // 2. Let byte2 be code unit & 0x00FF.\n var byte2 = code_unit & 0x00ff;\n\n // 3. Then return the bytes in order:\n // utf-16be flag is set: byte1, then byte2.\n if (utf16be) return [byte1, byte2];\n // utf-16be flag is unset: byte2, then byte1.\n return [byte2, byte1];\n}\n\n// 15.2.1 shared utf-16 decoder\n/**\n * @constructor\n * @implements {Decoder}\n * @param {boolean} utf16_be True if big-endian, false if little-endian.\n * @param {{fatal: boolean}} options\n */\nfunction UTF16Decoder(utf16_be, options) {\n var fatal = options.fatal;\n var /** @type {?number} */ utf16_lead_byte = null,\n /** @type {?number} */ utf16_lead_surrogate = null;\n /**\n * @param {Stream} stream The stream of bytes being decoded.\n * @param {number} bite The next byte read from the stream.\n * @return {?(number|!Array.)} The next code point(s)\n * decoded, or null if not enough data exists in the input\n * stream to decode a complete code point.\n */\n this.handler = function (stream, bite) {\n // 1. If byte is end-of-stream and either utf-16 lead byte or\n // utf-16 lead surrogate is not null, set utf-16 lead byte and\n // utf-16 lead surrogate to null, and return error.\n if (bite === end_of_stream && (utf16_lead_byte !== null || utf16_lead_surrogate !== null)) {\n return decoderError(fatal);\n }\n\n // 2. If byte is end-of-stream and utf-16 lead byte and utf-16\n // lead surrogate are null, return finished.\n if (bite === end_of_stream && utf16_lead_byte === null && utf16_lead_surrogate === null) {\n return finished;\n }\n\n // 3. If utf-16 lead byte is null, set utf-16 lead byte to byte\n // and return continue.\n if (utf16_lead_byte === null) {\n utf16_lead_byte = bite;\n return null;\n }\n\n // 4. Let code unit be the result of:\n var code_unit;\n if (utf16_be) {\n // utf-16be decoder flag is set\n // (utf-16 lead byte << 8) + byte.\n code_unit = (utf16_lead_byte << 8) + bite;\n } else {\n // utf-16be decoder flag is unset\n // (byte << 8) + utf-16 lead byte.\n code_unit = (bite << 8) + utf16_lead_byte;\n }\n // Then set utf-16 lead byte to null.\n utf16_lead_byte = null;\n\n // 5. If utf-16 lead surrogate is not null, let lead surrogate\n // be utf-16 lead surrogate, set utf-16 lead surrogate to null,\n // and then run these substeps:\n if (utf16_lead_surrogate !== null) {\n var lead_surrogate = utf16_lead_surrogate;\n utf16_lead_surrogate = null;\n\n // 1. If code unit is in the range U+DC00 to U+DFFF,\n // inclusive, return a code point whose value is 0x10000 +\n // ((lead surrogate \u2212 0xD800) << 10) + (code unit \u2212 0xDC00).\n if (inRange(code_unit, 0xdc00, 0xdfff)) {\n return 0x10000 + (lead_surrogate - 0xd800) * 0x400 + (code_unit - 0xdc00);\n }\n\n // 2. Prepend the sequence resulting of converting code unit\n // to bytes using utf-16be decoder flag to stream and return\n // error.\n stream.prepend(convertCodeUnitToBytes(code_unit, utf16_be));\n return decoderError(fatal);\n }\n\n // 6. If code unit is in the range U+D800 to U+DBFF, inclusive,\n // set utf-16 lead surrogate to code unit and return continue.\n if (inRange(code_unit, 0xd800, 0xdbff)) {\n utf16_lead_surrogate = code_unit;\n return null;\n }\n\n // 7. If code unit is in the range U+DC00 to U+DFFF, inclusive,\n // return error.\n if (inRange(code_unit, 0xdc00, 0xdfff)) return decoderError(fatal);\n\n // 8. Return code point code unit.\n return code_unit;\n };\n}\n\n// 15.2.2 shared utf-16 encoder\n/**\n * @constructor\n * @implements {Encoder}\n * @param {boolean} utf16_be True if big-endian, false if little-endian.\n * @param {{fatal: boolean}} options\n */\nfunction UTF16Encoder(utf16_be, options) {\n var fatal = options.fatal;\n /**\n * @param {Stream} stream Input stream.\n * @param {number} code_point Next code point read from the stream.\n * @return {(number|!Array.)} Byte(s) to emit.\n */\n this.handler = function (stream, code_point) {\n // 1. If code point is end-of-stream, return finished.\n if (code_point === end_of_stream) return finished;\n\n // 2. If code point is in the range U+0000 to U+FFFF, inclusive,\n // return the sequence resulting of converting code point to\n // bytes using utf-16be encoder flag.\n if (inRange(code_point, 0x0000, 0xffff)) return convertCodeUnitToBytes(code_point, utf16_be);\n\n // 3. Let lead be ((code point \u2212 0x10000) >> 10) + 0xD800,\n // converted to bytes using utf-16be encoder flag.\n var lead = convertCodeUnitToBytes(((code_point - 0x10000) >> 10) + 0xd800, utf16_be);\n\n // 4. Let trail be ((code point \u2212 0x10000) & 0x3FF) + 0xDC00,\n // converted to bytes using utf-16be encoder flag.\n var trail = convertCodeUnitToBytes(((code_point - 0x10000) & 0x3ff) + 0xdc00, utf16_be);\n\n // 5. Return a byte sequence of lead followed by trail.\n return lead.concat(trail);\n };\n}\n\n// 15.3 utf-16be\n// 15.3.1 utf-16be decoder\n/** @param {{fatal: boolean}} options */\nencoders['UTF-16BE'] = function (options) {\n return new UTF16Encoder(true, options);\n};\n// 15.3.2 utf-16be encoder\n/** @param {{fatal: boolean}} options */\ndecoders['UTF-16BE'] = function (options) {\n return new UTF16Decoder(true, options);\n};\n\n// 15.4 utf-16le\n// 15.4.1 utf-16le decoder\n/** @param {{fatal: boolean}} options */\nencoders['UTF-16LE'] = function (options) {\n return new UTF16Encoder(false, options);\n};\n// 15.4.2 utf-16le encoder\n/** @param {{fatal: boolean}} options */\ndecoders['UTF-16LE'] = function (options) {\n return new UTF16Decoder(false, options);\n};\n\n// 15.5 x-user-defined\n\n// 15.5.1 x-user-defined decoder\n/**\n * @constructor\n * @implements {Decoder}\n * @param {{fatal: boolean}} options\n */\nfunction XUserDefinedDecoder(options) {\n var fatal = options.fatal;\n /**\n * @param {Stream} stream The stream of bytes being decoded.\n * @param {number} bite The next byte read from the stream.\n * @return {?(number|!Array.)} The next code point(s)\n * decoded, or null if not enough data exists in the input\n * stream to decode a complete code point.\n */\n this.handler = function (stream, bite) {\n // 1. If byte is end-of-stream, return finished.\n if (bite === end_of_stream) return finished;\n\n // 2. If byte is an ASCII byte, return a code point whose value\n // is byte.\n if (isASCIIByte(bite)) return bite;\n\n // 3. Return a code point whose value is 0xF780 + byte \u2212 0x80.\n return 0xf780 + bite - 0x80;\n };\n}\n\n// 15.5.2 x-user-defined encoder\n/**\n * @constructor\n * @implements {Encoder}\n * @param {{fatal: boolean}} options\n */\nfunction XUserDefinedEncoder(options) {\n var fatal = options.fatal;\n /**\n * @param {Stream} stream Input stream.\n * @param {number} code_point Next code point read from the stream.\n * @return {(number|!Array.)} Byte(s) to emit.\n */\n this.handler = function (stream, code_point) {\n // 1.If code point is end-of-stream, return finished.\n if (code_point === end_of_stream) return finished;\n\n // 2. If code point is an ASCII code point, return a byte whose\n // value is code point.\n if (isASCIICodePoint(code_point)) return code_point;\n\n // 3. If code point is in the range U+F780 to U+F7FF, inclusive,\n // return a byte whose value is code point \u2212 0xF780 + 0x80.\n if (inRange(code_point, 0xf780, 0xf7ff)) return code_point - 0xf780 + 0x80;\n\n // 4. Return error with code point.\n return encoderError(code_point);\n };\n}\n\n/** @param {{fatal: boolean}} options */\nencoders['x-user-defined'] = function (options) {\n return new XUserDefinedEncoder(options);\n};\n/** @param {{fatal: boolean}} options */\ndecoders['x-user-defined'] = function (options) {\n return new XUserDefinedDecoder(options);\n};\n\n// FORK\n// if (!globalThis['TextEncoder']) globalThis['TextEncoder'] = TextEncoder;\n// if (!globalThis['TextDecoder']) globalThis['TextDecoder'] = TextDecoder;\n// babel.config.js skip transpiling files in `libs/`\n// module.exports = {TextEncoder, TextDecoder};\nexport {TextEncoder, TextDecoder};\n", "// btoa, atob polyfills for Node.js\n// Note: The atob and btoa functions (not just the polyfills!) are not unicode safe\n// But still useful for unit testing\n\nexport function atob(string) {\n return Buffer.from(string).toString('base64');\n}\n\nexport function btoa(base64) {\n return Buffer.from(base64, 'base64').toString('ascii');\n}\n", "// Use stackgl modules for DOM-less reading and writing of images\n\nimport savePixels from 'save-pixels';\nimport ndarray from 'ndarray';\nimport {bufferToArrayBuffer} from '../buffer/to-array-buffer.node';\n\n/**\n * Returns data bytes representing a compressed image in PNG or JPG format,\n * This data can be saved using file system (f) methods or\n * used in a request.\n * @param image to save\n * @param options\n * @param options.type='png' - png, jpg or image/png, image/jpg are valid\n * @param options.dataURI - Whether to include a data URI header\n * @return {*} bytes\n */\nexport function encodeImageToStreamNode(\n image: {data: any; width: number; height: number},\n options: {type?: string; dataURI?: string}\n) {\n // Support MIME type strings\n const type = options.type ? options.type.replace('image/', '') : 'jpeg';\n const pixels = ndarray(image.data, [image.width, image.height, 4], [4, image.width * 4, 1], 0);\n\n // Note: savePixels returns a stream\n return savePixels(pixels, type, options);\n}\n\nexport function encodeImageNode(image, options) {\n const imageStream = encodeImageToStreamNode(image, options);\n\n return new Promise((resolve) => {\n const buffers: any[] = [];\n imageStream.on('data', (buffer) => buffers.push(buffer));\n // TODO - convert to arraybuffer?\n imageStream.on('end', () => {\n const buffer = Buffer.concat(buffers);\n resolve(bufferToArrayBuffer(buffer));\n });\n });\n}\n", "export function bufferToArrayBuffer(buffer) {\n // TODO - per docs we should just be able to call buffer.buffer, but there are issues\n if (Buffer.isBuffer(buffer)) {\n const typedArray = new Uint8Array(buffer);\n return typedArray.buffer;\n }\n return buffer;\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport getPixels from 'get-pixels';\n\n/** Declares which image format mime types this loader polyfill supports */\nexport const NODE_FORMAT_SUPPORT = ['image/png', 'image/jpeg', 'image/gif'];\n\n// Note: These types are also defined in @loaders.gl/images and need to be kept in sync\ntype NDArray = {\n shape: number[];\n data: Uint8Array;\n width: number;\n height: number;\n components: number;\n layers: number[];\n};\n\nexport async function parseImageNode(arrayBuffer: ArrayBuffer, mimeType: string): Promise {\n if (!mimeType) {\n throw new Error('MIMEType is required to parse image under Node.js');\n }\n\n const buffer = arrayBuffer instanceof Buffer ? arrayBuffer : Buffer.from(arrayBuffer);\n const ndarray = await getPixelsAsync(buffer, mimeType);\n return ndarray;\n}\n\n// TODO - check if getPixels callback is asynchronous if provided with buffer input\n// if not, parseImage can be a sync function\nfunction getPixelsAsync(buffer: Buffer, mimeType: string): Promise {\n return new Promise((resolve) =>\n getPixels(buffer, mimeType, (err, ndarray) => {\n if (err) {\n throw err;\n }\n\n const shape = [...ndarray.shape];\n const layers = ndarray.shape.length === 4 ? ndarray.shape.shift() : 1;\n const data = ndarray.data instanceof Buffer ? new Uint8Array(ndarray.data) : ndarray.data;\n\n // extract width/height etc\n resolve({\n shape,\n data,\n width: ndarray.shape[0],\n height: ndarray.shape[1],\n components: ndarray.shape[2],\n // TODO - error\n layers: layers ? [layers] : []\n });\n })\n );\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n// Version constant cannot be imported, it needs to correspond to the build version of **this** module.\n\n/**\n * TODO - unpkg.com doesn't seem to have a `latest` specifier for alpha releases...\n * 'beta' on beta branch, 'latest' on prod branch\n */\nexport const NPM_TAG = 'latest';\n\ndeclare let __VERSION__: string;\n\nfunction getVersion() {\n if (!globalThis._loadersgl_?.version) {\n globalThis._loadersgl_ = globalThis._loadersgl_ || {};\n // __VERSION__ is injected by babel-plugin-version-inline\n if (typeof __VERSION__ === 'undefined') {\n // eslint-disable-next-line\n console.warn(\n 'loaders.gl: The __VERSION__ variable is not injected using babel plugin. Latest unstable workers would be fetched from the CDN.'\n );\n globalThis._loadersgl_.version = NPM_TAG;\n } else {\n globalThis._loadersgl_.version = __VERSION__;\n }\n }\n\n return globalThis._loadersgl_.version;\n}\n\nexport const VERSION = getVersion();\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n// Replacement for the external assert method to reduce bundle size\n// Note: We don't use the second \"message\" argument in calling code,\n// so no need to support it here\n\n/** Throws an `Error` with the optional `message` if `condition` is falsy */\nexport function assert(condition: any, message?: string): void {\n if (!condition) {\n throw new Error(message || 'loaders.gl assertion failed.');\n }\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n// Purpose: include this in your module to avoids adding dependencies on\n// micro modules like 'global' and 'is-browser';\n\n/* eslint-disable no-restricted-globals */\nconst globals = {\n self: typeof self !== 'undefined' && self,\n window: typeof window !== 'undefined' && window,\n global: typeof global !== 'undefined' && global,\n document: typeof document !== 'undefined' && document\n};\n\nconst self_: {[key: string]: any} = globals.self || globals.window || globals.global || {};\nconst window_: {[key: string]: any} = globals.window || globals.self || globals.global || {};\nconst global_: {[key: string]: any} = globals.global || globals.self || globals.window || {};\nconst document_: {[key: string]: any} = globals.document || {};\n\nexport {self_ as self, window_ as window, global_ as global, document_ as document};\n\n/** true if running in the browser, false if running in Node.js */\nexport const isBrowser: boolean =\n // @ts-ignore process.browser\n typeof process !== 'object' || String(process) !== '[object process]' || process.browser;\n\n/** true if running on a worker thread */\nexport const isWorker: boolean = typeof importScripts === 'function';\n\n/** true if running on a mobile device */\nexport const isMobile: boolean =\n typeof window !== 'undefined' && typeof window.orientation !== 'undefined';\n\n// Extract node major version\nconst matches =\n typeof process !== 'undefined' && process.version && /v([0-9]*)/.exec(process.version);\n\n/** Version of Node.js if running under Node, otherwise 0 */\nexport const nodeVersion: number = (matches && parseFloat(matches[1])) || 0;\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport * as WorkerThreads from 'worker_threads';\nexport * from 'worker_threads';\nexport const parentPort = WorkerThreads?.parentPort;\nexport const NodeWorker = WorkerThreads.Worker;\nexport type NodeWorkerType = WorkerThreads.Worker;\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n// NOTE - there is a copy of this function is both in core and loader-utils\n// core does not need all the utils in loader-utils, just this one.\n\n/**\n * Returns an array of Transferrable objects that can be used with postMessage\n * https://developer.mozilla.org/en-US/docs/Web/API/Worker/postMessage\n * @param object data to be sent via postMessage\n * @param recursive - not for application use\n * @param transfers - not for application use\n * @returns a transfer list that can be passed to postMessage\n */\nexport function getTransferList(\n object: any,\n recursive: boolean = true,\n transfers?: Set\n): Transferable[] {\n // Make sure that items in the transfer list is unique\n const transfersSet = transfers || new Set();\n\n if (!object) {\n // ignore\n } else if (isTransferable(object)) {\n transfersSet.add(object);\n } else if (isTransferable(object.buffer)) {\n // Typed array\n transfersSet.add(object.buffer);\n } else if (ArrayBuffer.isView(object)) {\n // object is a TypeArray viewing into a SharedArrayBuffer (not transferable)\n // Do not iterate through the content in this case\n } else if (recursive && typeof object === 'object') {\n for (const key in object) {\n // Avoid perf hit - only go one level deep\n getTransferList(object[key], recursive, transfersSet);\n }\n }\n\n // If transfers is defined, is internal recursive call\n // Otherwise it's called by the user\n return transfers === undefined ? Array.from(transfersSet) : [];\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/API/Transferable\nfunction isTransferable(object: unknown) {\n if (!object) {\n return false;\n }\n if (object instanceof ArrayBuffer) {\n return true;\n }\n if (typeof MessagePort !== 'undefined' && object instanceof MessagePort) {\n return true;\n }\n if (typeof ImageBitmap !== 'undefined' && object instanceof ImageBitmap) {\n return true;\n }\n // @ts-ignore\n if (typeof OffscreenCanvas !== 'undefined' && object instanceof OffscreenCanvas) {\n return true;\n }\n return false;\n}\n\n/**\n * Recursively drop non serializable values like functions and regexps.\n * @param object\n */\nexport function getTransferListForWriter(object: object | null): object {\n if (object === null) {\n return {};\n }\n const clone = Object.assign({}, object);\n\n Object.keys(clone).forEach((key) => {\n // Typed Arrays and Arrays are passed with no change\n if (\n typeof object[key] === 'object' &&\n !ArrayBuffer.isView(object[key]) &&\n !(object[key] instanceof Array)\n ) {\n clone[key] = getTransferListForWriter(object[key]);\n } else if (typeof clone[key] === 'function' || clone[key] instanceof RegExp) {\n clone[key] = {};\n } else {\n clone[key] = object[key];\n }\n });\n\n return clone;\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport type {WorkerMessageData, WorkerMessageType, WorkerMessagePayload} from '../../types';\nimport {getTransferList} from '../worker-utils/get-transfer-list';\n// import type {TransferListItem} from '../node/worker_threads';\nimport {parentPort} from '../node/worker_threads';\n\ntype TransferListItem = any;\n\n/** Vile hack to defeat over-zealous bundlers from stripping out the require */\nasync function getParentPort() {\n // const isNode = globalThis.process;\n // let parentPort;\n // try {\n // // prettier-ignore\n // eval('globalThis.parentPort = require(\\'worker_threads\\').parentPort'); // eslint-disable-line no-eval\n // parentPort = globalThis.parentPort;\n // } catch {\n // try {\n // // prettier-ignore\n // eval('globalThis.workerThreadsPromise = import(\\'worker_threads\\')'); // eslint-disable-line no-eval\n // const workerThreads = await globalThis.workerThreadsPromise;\n // parentPort = workerThreads.parentPort;\n // } catch (error) {\n // console.error((error as Error).message); // eslint-disable-line no-console\n // }\n // }\n return parentPort;\n}\n\nconst onMessageWrapperMap = new Map();\n\n/**\n * Type safe wrapper for worker code\n */\nexport default class WorkerBody {\n /** Check that we are actually in a worker thread */\n static async inWorkerThread(): Promise {\n return typeof self !== 'undefined' || Boolean(await getParentPort());\n }\n\n /*\n * (type: WorkerMessageType, payload: WorkerMessagePayload) => any\n */\n static set onmessage(onMessage: (type: WorkerMessageType, payload: WorkerMessagePayload) => any) {\n async function handleMessage(message) {\n const parentPort = await getParentPort();\n // Confusingly the message itself also has a 'type' field which is always set to 'message'\n const {type, payload} = parentPort ? message : message.data;\n // if (!isKnownMessage(message)) {\n // return;\n // }\n onMessage(type, payload);\n }\n\n getParentPort().then((parentPort) => {\n if (parentPort) {\n parentPort.on('message', (message) => {\n handleMessage(message);\n });\n // if (message == 'exit') { parentPort.unref(); }\n // eslint-disable-next-line\n parentPort.on('exit', () => console.debug('Node worker closing'));\n } else {\n // eslint-disable-next-line no-restricted-globals\n globalThis.onmessage = handleMessage;\n }\n });\n }\n\n static async addEventListener(\n onMessage: (type: WorkerMessageType, payload: WorkerMessagePayload) => any\n ) {\n let onMessageWrapper = onMessageWrapperMap.get(onMessage);\n\n if (!onMessageWrapper) {\n onMessageWrapper = async (message: MessageEvent) => {\n if (!isKnownMessage(message)) {\n return;\n }\n\n const parentPort = await getParentPort();\n // Confusingly in the browser, the message itself also has a 'type' field which is always set to 'message'\n const {type, payload} = parentPort ? message : message.data;\n onMessage(type, payload);\n };\n }\n\n const parentPort = await getParentPort();\n if (parentPort) {\n console.error('not implemented'); // eslint-disable-line\n } else {\n globalThis.addEventListener('message', onMessageWrapper);\n }\n }\n\n static async removeEventListener(\n onMessage: (type: WorkerMessageType, payload: WorkerMessagePayload) => any\n ) {\n const onMessageWrapper = onMessageWrapperMap.get(onMessage);\n onMessageWrapperMap.delete(onMessage);\n const parentPort = await getParentPort();\n if (parentPort) {\n console.error('not implemented'); // eslint-disable-line\n } else {\n globalThis.removeEventListener('message', onMessageWrapper);\n }\n }\n\n /**\n * Send a message from a worker to creating thread (main thread)\n * @param type\n * @param payload\n */\n static async postMessage(type: WorkerMessageType, payload: WorkerMessagePayload): Promise {\n const data: WorkerMessageData = {source: 'loaders.gl', type, payload};\n // console.log('posting message', data);\n\n // Cast to Node compatible transfer list\n const transferList = getTransferList(payload) as TransferListItem[];\n\n const parentPort = await getParentPort();\n if (parentPort) {\n parentPort.postMessage(data, transferList);\n // console.log('posted message', data);\n } else {\n // @ts-expect-error Outside of worker scopes this call has a third parameter\n globalThis.postMessage(data, transferList);\n }\n }\n}\n\n// Filter out noise messages sent to workers\nfunction isKnownMessage(message: MessageEvent) {\n const {type, data} = message;\n return (\n type === 'message' &&\n data &&\n typeof data.source === 'string' &&\n data.source.startsWith('loaders.gl')\n );\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n/* global importScripts */\nimport {isBrowser, isWorker} from '../env-utils/globals';\nimport {assert} from '../env-utils/assert';\nimport {VERSION} from '../env-utils/version';\n\nconst loadLibraryPromises: Record> = {}; // promises\n\n/**\n * Dynamically loads a library (\"module\")\n *\n * - wasm library: Array buffer is returned\n * - js library: Parse JS is returned\n *\n * Method depends on environment\n * - browser - script element is created and installed on document\n * - worker - eval is called on global context\n * - node - file is required\n *\n * @param libraryUrl\n * @param moduleName\n * @param options\n */\nexport async function loadLibrary(\n libraryUrl: string,\n moduleName: string | null = null,\n options: object = {},\n libraryName: string | null = null\n): Promise {\n if (moduleName) {\n libraryUrl = getLibraryUrl(libraryUrl, moduleName, options, libraryName);\n }\n // Ensure libraries are only loaded once\n\n loadLibraryPromises[libraryUrl] =\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n loadLibraryPromises[libraryUrl] || loadLibraryFromFile(libraryUrl);\n return await loadLibraryPromises[libraryUrl];\n}\n\n// TODO - sort out how to resolve paths for main/worker and dev/prod\nexport function getLibraryUrl(\n library: string,\n moduleName?: string,\n options: any = {},\n libraryName: string | null = null\n): string {\n // Check if already a URL\n if (!options.useLocalLibraries && library.startsWith('http')) {\n return library;\n }\n\n libraryName = libraryName || library;\n\n // Allow application to import and supply libraries through `options.modules`\n // TODO - See js-module-utils in loader-utils\n const modules = options.modules || {};\n if (modules[libraryName]) {\n return modules[libraryName];\n }\n\n // Load from local files, not from CDN scripts in Node.js\n // TODO - needs to locate the modules directory when installed!\n if (!isBrowser) {\n return `modules/${moduleName}/dist/libs/${libraryName}`;\n }\n\n // In browser, load from external scripts\n if (options.CDN) {\n assert(options.CDN.startsWith('http'));\n return `${options.CDN}/${moduleName}@${VERSION}/dist/libs/${libraryName}`;\n }\n\n // TODO - loading inside workers requires paths relative to worker script location...\n if (isWorker) {\n return `../src/libs/${libraryName}`;\n }\n\n return `modules/${moduleName}/src/libs/${libraryName}`;\n}\n\nasync function loadLibraryFromFile(libraryUrl: string): Promise {\n if (libraryUrl.endsWith('wasm')) {\n return await loadAsArrayBuffer(libraryUrl);\n }\n\n if (!isBrowser) {\n // TODO - Node doesn't yet support dynamic import from https URLs\n // try {\n // return await import(libraryUrl);\n // } catch (error) {\n // console.error(error);\n // }\n try {\n const {requireFromFile} = globalThis.loaders || {};\n return await requireFromFile?.(libraryUrl);\n } catch (error) {\n console.error(error); // eslint-disable-line no-console\n return null;\n }\n }\n if (isWorker) {\n return importScripts(libraryUrl);\n }\n // TODO - fix - should be more secure than string parsing since observes CORS\n // if (isBrowser) {\n // return await loadScriptFromFile(libraryUrl);\n // }\n\n const scriptSource = await loadAsText(libraryUrl);\n return loadLibraryFromString(scriptSource, libraryUrl);\n}\n\n/*\nasync function loadScriptFromFile(libraryUrl) {\n const script = document.createElement('script');\n script.src = libraryUrl;\n return await new Promise((resolve, reject) => {\n script.onload = data => {\n resolve(data);\n };\n script.onerror = reject;\n });\n}\n*/\n\n// TODO - Needs security audit...\n// - Raw eval call\n// - Potentially bypasses CORS\n// Upside is that this separates fetching and parsing\n// we could create a`LibraryLoader` or`ModuleLoader`\nfunction loadLibraryFromString(scriptSource: string, id: string): null | any {\n if (!isBrowser) {\n const {requireFromString} = globalThis.loaders || {};\n return requireFromString?.(scriptSource, id);\n }\n\n if (isWorker) {\n // Use lvalue trick to make eval run in global scope\n eval.call(globalThis, scriptSource); // eslint-disable-line no-eval\n // https://stackoverflow.com/questions/9107240/1-evalthis-vs-evalthis-in-javascript\n // http://perfectionkills.com/global-eval-what-are-the-options/\n return null;\n }\n\n const script = document.createElement('script');\n script.id = id;\n // most browsers like a separate text node but some throw an error. The second method covers those.\n try {\n script.appendChild(document.createTextNode(scriptSource));\n } catch (e) {\n script.text = scriptSource;\n }\n document.body.appendChild(script);\n return null;\n}\n\n// TODO - technique for module injection into worker, from THREE.DracoLoader...\n/*\nfunction combineWorkerWithLibrary(worker, jsContent) {\n var fn = wWorker.toString();\n var body = [\n '// injected',\n jsContent,\n '',\n '// worker',\n fn.substring(fn.indexOf('{') + 1, fn.lastIndexOf('}'))\n ].join('\\n');\n this.workerSourceURL = URL.createObjectURL(new Blob([body]));\n}\n*/\n\nasync function loadAsArrayBuffer(url: string): Promise {\n const {readFileAsArrayBuffer} = globalThis.loaders || {};\n if (isBrowser || !readFileAsArrayBuffer || url.startsWith('http')) {\n const response = await fetch(url);\n return await response.arrayBuffer();\n }\n return await readFileAsArrayBuffer(url);\n}\n\n/**\n * Load a file from local file system\n * @param filename\n * @returns\n */\nasync function loadAsText(url: string): Promise {\n const {readFileAsText} = globalThis.loaders || {};\n if (isBrowser || !readFileAsText || url.startsWith('http')) {\n const response = await fetch(url);\n return await response.text();\n }\n return await readFileAsText(url);\n}\n", "import {TypedArray} from '../../types';\n\n/**\n * compare two binary arrays for equality\n * @param a\n * @param b\n * @param byteLength\n */\nexport function compareArrayBuffers(\n arrayBuffer1: ArrayBuffer,\n arrayBuffer2: ArrayBuffer,\n byteLength?: number\n): boolean {\n byteLength = byteLength || arrayBuffer1.byteLength;\n if (arrayBuffer1.byteLength < byteLength || arrayBuffer2.byteLength < byteLength) {\n return false;\n }\n const array1 = new Uint8Array(arrayBuffer1);\n const array2 = new Uint8Array(arrayBuffer2);\n for (let i = 0; i < array1.length; ++i) {\n if (array1[i] !== array2[i]) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * Concatenate a sequence of ArrayBuffers from arguments\n * @return A concatenated ArrayBuffer\n */\nexport function concatenateArrayBuffers(...sources: (ArrayBuffer | Uint8Array)[]): ArrayBuffer {\n return concatenateArrayBuffersFromArray(sources);\n}\n\n/**\n * Concatenate a sequence of ArrayBuffers from array\n * @return A concatenated ArrayBuffer\n */\nexport function concatenateArrayBuffersFromArray(\n sources: (ArrayBuffer | Uint8Array)[]\n): ArrayBuffer {\n // Make sure all inputs are wrapped in typed arrays\n const sourceArrays = sources.map((source2) =>\n source2 instanceof ArrayBuffer ? new Uint8Array(source2) : source2\n );\n\n // Get length of all inputs\n const byteLength = sourceArrays.reduce((length, typedArray) => length + typedArray.byteLength, 0);\n\n // Allocate array with space for all inputs\n const result = new Uint8Array(byteLength);\n\n // Copy the subarrays\n let offset = 0;\n for (const sourceArray of sourceArrays) {\n result.set(sourceArray, offset);\n offset += sourceArray.byteLength;\n }\n\n // We work with ArrayBuffers, discard the typed array wrapper\n return result.buffer;\n}\n\n/**\n * Concatenate arbitrary count of typed arrays\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Typed_arrays\n * @param - list of arrays. All arrays should be the same type\n * @return A concatenated TypedArray\n */\nexport function concatenateTypedArrays(...typedArrays: T[]): T {\n // @ts-ignore\n const arrays = typedArrays as TypedArray[];\n // @ts-ignore\n const TypedArrayConstructor = (arrays && arrays.length > 1 && arrays[0].constructor) || null;\n if (!TypedArrayConstructor) {\n throw new Error(\n '\"concatenateTypedArrays\" - incorrect quantity of arguments or arguments have incompatible data types'\n );\n }\n\n const sumLength = arrays.reduce((acc, value) => acc + value.length, 0);\n // @ts-ignore typescript does not like dynamic constructors\n const result = new TypedArrayConstructor(sumLength);\n let offset = 0;\n for (const array of arrays) {\n result.set(array, offset);\n offset += array.length;\n }\n return result;\n}\n\n/**\n * Copy a view of an ArrayBuffer into new ArrayBuffer with byteOffset = 0\n * @param arrayBuffer\n * @param byteOffset\n * @param byteLength\n */\nexport function sliceArrayBuffer(\n arrayBuffer: ArrayBuffer,\n byteOffset: number,\n byteLength?: number\n): ArrayBuffer {\n const subArray =\n byteLength !== undefined\n ? new Uint8Array(arrayBuffer).subarray(byteOffset, byteOffset + byteLength)\n : new Uint8Array(arrayBuffer).subarray(byteOffset);\n const arrayCopy = new Uint8Array(subArray);\n return arrayCopy.buffer;\n}\n", "import {concatenateArrayBuffers} from '../binary-utils/array-buffer-utils';\n\n// GENERAL UTILITIES\n\n/**\n * Iterate over async iterator, without resetting iterator if end is not reached\n * - forEach intentionally does not reset iterator if exiting loop prematurely\n * so that iteration can continue in a second loop\n * - It is recommended to use a standard for-await as last loop to ensure\n * iterator gets properly reset\n *\n * TODO - optimize using sync iteration if argument is an Iterable?\n *\n * @param iterator\n * @param visitor\n */\nexport async function forEach(iterator, visitor) {\n // eslint-disable-next-line\n while (true) {\n const {done, value} = await iterator.next();\n if (done) {\n iterator.return();\n return;\n }\n const cancel = visitor(value);\n if (cancel) {\n return;\n }\n }\n}\n\n// Breaking big data into iterable chunks, concatenating iterable chunks into big data objects\n\n/**\n * Concatenates all data chunks yielded by an (async) iterator\n * This function can e.g. be used to enable atomic parsers to work on (async) iterator inputs\n */\n\nexport async function concatenateArrayBuffersAsync(\n asyncIterator: AsyncIterable | Iterable\n): Promise {\n const arrayBuffers: ArrayBuffer[] = [];\n for await (const chunk of asyncIterator) {\n arrayBuffers.push(chunk);\n }\n return concatenateArrayBuffers(...arrayBuffers);\n}\n\nexport async function concatenateStringsAsync(\n asyncIterator: AsyncIterable | Iterable\n): Promise {\n const strings: string[] = [];\n for await (const chunk of asyncIterator) {\n strings.push(chunk);\n }\n return strings.join('');\n}\n", "// Simple file alias mechanisms for tests.\n\nlet pathPrefix = '';\nconst fileAliases: {[aliasPath: string]: string} = {};\n\n/*\n * Set a relative path prefix\n */\nexport function setPathPrefix(prefix: string): void {\n pathPrefix = prefix;\n}\n\n/*\n * Get the relative path prefix\n */\nexport function getPathPrefix(): string {\n return pathPrefix;\n}\n\n/**\n *\n * @param aliases\n *\n * Note: addAliases are an experimental export, they are only for testing of loaders.gl loaders\n * not intended as a generic aliasing mechanism\n */\nexport function addAliases(aliases: {[aliasPath: string]: string}): void {\n Object.assign(fileAliases, aliases);\n}\n\n/**\n * Resolves aliases and adds path-prefix to paths\n */\nexport function resolvePath(filename: string): string {\n for (const alias in fileAliases) {\n if (filename.startsWith(alias)) {\n const replacement = fileAliases[alias];\n filename = filename.replace(alias, replacement);\n }\n }\n if (!filename.startsWith('http://') && !filename.startsWith('https://')) {\n filename = `${pathPrefix}${filename}`;\n }\n return filename;\n}\n", "import type {ReadableFile, WritableFile, Stat} from '@loaders.gl/loader-utils';\nimport {resolvePath} from '@loaders.gl/loader-utils';\nimport fs from 'fs';\n\nexport class NodeFile implements ReadableFile, WritableFile {\n handle: number;\n size: number;\n bigsize: bigint;\n url: string;\n\n constructor(path: string, flags: 'r' | 'w' | 'wx' | 'a+', mode?: number) {\n path = resolvePath(path);\n this.handle = fs.openSync(path, flags, mode);\n // @ts-expect-error Nodew 20?\n const stats = fs.fstatSync(this.handle, {bigint: true});\n this.size = Number(stats.size);\n // @ts-expect-error\n this.bigsize = stats.size;\n this.url = path;\n }\n\n async close(): Promise {\n return new Promise((resolve, reject) => {\n fs.close(this.handle, (err) => (err ? reject(err) : resolve()));\n });\n }\n\n async truncate(length: number): Promise {\n return new Promise((resolve, reject) => {\n fs.ftruncate(this.handle, length, (err) => {\n if (err) {\n reject(err);\n } else {\n this.bigsize = BigInt(length);\n this.size = Number(this.bigsize);\n resolve();\n }\n });\n });\n }\n\n async append(data: Uint8Array): Promise {\n return new Promise((resolve, reject) => {\n fs.appendFile(this.handle, data, (err) => {\n if (err) {\n reject(err);\n } else {\n this.bigsize = this.bigsize + BigInt(data.length);\n this.size = Number(this.bigsize);\n resolve();\n }\n });\n });\n }\n\n async stat(): Promise {\n return await new Promise((resolve, reject) =>\n // @ts-expect-error bigint typings\n fs.fstat(this.handle, {bigint: true}, (err, info) => {\n const stats: Stat = {\n size: Number(info.size),\n bigsize: info.size,\n isDirectory: info.isDirectory()\n };\n if (err) {\n reject(err);\n } else {\n resolve(stats);\n }\n })\n );\n }\n\n async read(offset: number | bigint, length: number): Promise {\n const arrayBuffer = new ArrayBuffer(length);\n let bigOffset = BigInt(offset);\n\n let totalBytesRead = 0;\n const uint8Array = new Uint8Array(arrayBuffer);\n\n let position;\n // Read in loop until we get required number of bytes\n while (length > 0) {\n const bytesRead = await readBytes(this.handle, uint8Array, 0, length, bigOffset);\n\n // Check if end of file reached\n if (bytesRead === 0) {\n break;\n }\n\n totalBytesRead += bytesRead;\n bigOffset += BigInt(bytesRead);\n length -= bytesRead;\n\n // Advance position unless we are using built-in position advancement\n if (position !== undefined) {\n position += bytesRead;\n }\n }\n return totalBytesRead < length ? arrayBuffer.slice(0, totalBytesRead) : arrayBuffer;\n }\n\n async write(\n arrayBuffer: ArrayBuffer,\n offset: number | bigint = 0,\n length: number = arrayBuffer.byteLength\n ): Promise {\n return new Promise((resolve, reject) => {\n // TODO - Node.js doesn't offer write with bigint offsets???\n const nOffset = Number(offset);\n const uint8Array = new Uint8Array(arrayBuffer, Number(offset), length);\n fs.write(this.handle, uint8Array, 0, length, nOffset, (err, bytesWritten) =>\n err ? reject(err) : resolve(bytesWritten)\n );\n });\n }\n}\n\nasync function readBytes(\n fd: number,\n uint8Array: Uint8Array,\n offset: number,\n length: number,\n position: number | bigint | null\n): Promise {\n return await new Promise((resolve, reject) =>\n // @ts-expect-error bigint?\n fs.read(fd, uint8Array, offset, length, position, (err, bytesRead) =>\n err ? reject(err) : resolve(bytesRead)\n )\n );\n}\n\n// TODO - implement streaming write\n/*\nexport interface WriteStreamOptions {\n flags?: string;\n encoding?: 'utf8';\n fd?: number;\n mode?: number;\n autoClose?: boolean;\n start?: number;\n}\n\nexport class NodeStreamWritableFile implements WritableFile {\n outputStream: fs.WriteStream | Writable;\n\n constructor(pathOrStream: string | Writable, options?: WriteStreamOptions) {\n this.outputStream =\n typeof pathOrStream === 'string' ? fs.createWriteStream(pathOrStream, options) : pathOrStream;\n }\n\n async write(buffer: ArrayBuffer): Promise {\n return new Promise((resolve, reject) => {\n const uint8Array = new Uint8Array(buffer);\n this.outputStream.write(uint8Array, (err) => (err ? reject(err) : resolve()));\n });\n }\n\n async close(): Promise {\n if (this.outputStream instanceof fs.WriteStream) {\n return new Promise((resolve, reject) => {\n const stream = this.outputStream as fs.WriteStream;\n stream.close((err) => (err ? reject(err) : resolve()));\n });\n }\n }\n}\n*/\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {Stat, RandomAccessFileSystem} from '@loaders.gl/loader-utils';\n// @ts-expect-error\nimport fsPromise from 'fs/promises';\nimport {NodeFile} from './node-file';\nimport {fetchNode} from './fetch-node';\n\n// import {fetchFile} from \"../fetch/fetch-file\"\n// import {selectLoader} from \"../api/select-loader\";\n\n/**\n * FileSystem pass-through for Node.js\n * Compatible with BrowserFileSystem.\n * @param options\n */\nexport class NodeFileSystem implements RandomAccessFileSystem {\n readable: boolean = true;\n writable: boolean = true;\n\n // implements FileSystem\n constructor() {}\n\n async readdir(dirname = '.', options?: {}): Promise {\n return await fsPromise.readdir(dirname, options);\n }\n\n async stat(path: string): Promise {\n const info = await fsPromise.stat(path, {bigint: true});\n return {\n size: Number(info.size),\n bigsize: info.size,\n isDirectory: info.isDirectory()\n };\n }\n\n async unlink(path: string): Promise {\n return await fsPromise.unlink(path);\n }\n\n async fetch(path: string, options: RequestInit): Promise {\n return await fetchNode(path, options);\n }\n\n // implements IRandomAccessFileSystem\n async openReadableFile(path: string, flags: 'r' = 'r'): Promise {\n return new NodeFile(path, flags);\n }\n\n async openWritableFile(path: string, flags: 'w' | 'wx' = 'w', mode?: any): Promise {\n return new NodeFile(path, flags, mode);\n }\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport fs from 'fs';\nimport {Readable} from 'stream';\nimport {resolvePath} from '@loaders.gl/loader-utils';\nimport {decompressReadStream} from './stream-utils.node';\n\nconst isBoolean = (x) => typeof x === 'boolean';\nconst isFunction = (x) => typeof x === 'function';\nconst isObject = (x) => x !== null && typeof x === 'object';\nconst isReadableNodeStream = (x) =>\n isObject(x) && isFunction(x.read) && isFunction(x.pipe) && isBoolean(x.readable);\n\n/**\n * Enables\n * @param url\n * @param options\n * @returns\n */\n// eslint-disable-next-line max-statements\nexport async function fetchNode(url: string, options?: RequestInit): Promise {\n // Support `file://` protocol\n const FILE_PROTOCOL_REGEX = /^file:\\/\\//;\n url.replace(FILE_PROTOCOL_REGEX, '/');\n\n // Remove any query parameters, as they have no meaning\n let noqueryUrl = url.split('?')[0];\n noqueryUrl = resolvePath(noqueryUrl);\n\n const responseHeaders = new Headers();\n // Automatically decompress gzipped files with .gz extension\n if (url.endsWith('.gz')) {\n // url = url.slice(0, -3);\n responseHeaders['content-encoding'] = 'gzip';\n }\n if (url.endsWith('.br')) {\n // url = url.slice(0, -3);\n responseHeaders['content-encoding'] = 'br';\n }\n\n try {\n // Now open the stream\n const body = await new Promise((resolve, reject) => {\n // @ts-ignore\n const stream = fs.createReadStream(noqueryUrl, {encoding: null});\n stream.once('readable', () => resolve(stream));\n stream.on('error', (error) => reject(error));\n });\n\n let bodyStream: Readable = body;\n\n // Check for content-encoding and create a decompression stream\n if (isReadableNodeStream(body)) {\n bodyStream = decompressReadStream(body, responseHeaders);\n } else if (typeof body === 'string') {\n // @ts-expect-error\n bodyStream = Readable.from([new TextEncoder().encode(body)]);\n } else {\n // @ts-expect-error\n bodyStream = Readable.from([body || new ArrayBuffer(0)]);\n }\n\n const status = 200;\n const statusText = 'OK';\n const headers = getHeadersForFile(noqueryUrl);\n // @ts-expect-error\n const response = new Response(bodyStream, {headers, status, statusText});\n Object.defineProperty(response, 'url', {value: url});\n return response;\n } catch (error) {\n // console.error(error);\n const errorMessage = (error as Error).message;\n const status = 400;\n const statusText = errorMessage;\n const headers = {};\n const response = new Response(errorMessage, {headers, status, statusText});\n Object.defineProperty(response, 'url', {value: url});\n return response;\n }\n}\n\nfunction getHeadersForFile(noqueryUrl: string): Headers {\n const headers = {};\n\n // Fix up content length if we can for best progress experience\n if (!headers['content-length']) {\n const stats = fs.statSync(noqueryUrl);\n headers['content-length'] = stats.size;\n }\n\n // Automatically decompress gzipped files with .gz extension\n if (noqueryUrl.endsWith('.gz')) {\n noqueryUrl = noqueryUrl.slice(0, -3);\n headers['content-encoding'] = 'gzip';\n }\n\n return new Headers(headers);\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport zlib from 'zlib';\nimport {Readable} from 'stream';\n\nconst isArrayBuffer = (x) => x && x instanceof ArrayBuffer;\nconst isBuffer = (x) => x && x instanceof Buffer;\n\n/**\n *\n */\nexport function decompressReadStream(readStream: Readable, headers?: Headers) {\n switch (headers?.get('content-encoding')) {\n case 'br':\n return readStream.pipe(zlib.createBrotliDecompress());\n case 'gzip':\n return readStream.pipe(zlib.createGunzip());\n case 'deflate':\n return readStream.pipe(zlib.createDeflate());\n default:\n // No compression or an unknown one, just return it as is\n return readStream;\n }\n}\n\n/**\n *\n * @param readStream\n * @returns\n */\nexport async function concatenateReadStream(readStream): Promise {\n const arrayBufferChunks: ArrayBuffer[] = [];\n\n return await new Promise((resolve, reject) => {\n readStream.on('error', (error) => reject(error));\n\n // Once the readable callback has been added, stream switches to \"flowing mode\"\n // In Node 10 (but not 12 and 14) this causes `data` and `end` to never be called unless we read data here\n readStream.on('readable', () => readStream.read());\n\n readStream.on('data', (chunk) => {\n if (typeof chunk === 'string') {\n reject(new Error('Read stream not binary'));\n }\n arrayBufferChunks.push(toArrayBuffer(chunk));\n });\n\n readStream.on('end', () => {\n const arrayBuffer = concatenateArrayBuffers(arrayBufferChunks);\n resolve(arrayBuffer);\n });\n });\n}\n\n/**\n * Concatenate a sequence of ArrayBuffers\n * @return A concatenated ArrayBuffer\n * @note duplicates loader-utils since polyfills should be independent\n */\nexport function concatenateArrayBuffers(sources: (ArrayBuffer | Uint8Array)[]): ArrayBuffer {\n // Make sure all inputs are wrapped in typed arrays\n const sourceArrays = sources.map((source2) =>\n source2 instanceof ArrayBuffer ? new Uint8Array(source2) : source2\n );\n\n // Get length of all inputs\n const byteLength = sourceArrays.reduce((length, typedArray) => length + typedArray.byteLength, 0);\n\n // Allocate array with space for all inputs\n const result = new Uint8Array(byteLength);\n\n // Copy the subarrays\n let offset = 0;\n for (const sourceArray of sourceArrays) {\n result.set(sourceArray, offset);\n offset += sourceArray.byteLength;\n }\n\n // We work with ArrayBuffers, discard the typed array wrapper\n return result.buffer;\n}\n\n/**\n * @param data\n * @todo Duplicate of core\n */\nexport function toArrayBuffer(data: unknown): ArrayBuffer {\n if (isArrayBuffer(data)) {\n return data as ArrayBuffer;\n }\n\n // TODO - per docs we should just be able to call buffer.buffer, but there are issues\n if (isBuffer(data)) {\n // @ts-expect-error\n const typedArray = new Uint8Array(data);\n return typedArray.buffer;\n }\n\n // Careful - Node Buffers will look like ArrayBuffers (keep after isBuffer)\n if (ArrayBuffer.isView(data)) {\n return data.buffer;\n }\n\n if (typeof data === 'string') {\n const text = data;\n const uint8Array = new TextEncoder().encode(text);\n return uint8Array.buffer;\n }\n\n // HACK to support Blob polyfill\n // @ts-expect-error\n if (data && typeof data === 'object' && data._toArrayBuffer) {\n // @ts-expect-error\n return data._toArrayBuffer();\n }\n\n throw new Error(`toArrayBuffer(${JSON.stringify(data, null, 2).slice(10)})`);\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {concatenateArrayBuffersAsync} from '@loaders.gl/loader-utils';\n\ntype HashOptions = {\n modules?: {[moduleName: string]: any};\n crypto?: {\n onEnd?: (result: {hash: string}) => any;\n };\n};\n\n/** Abstract hash base class */\nexport abstract class Hash {\n abstract readonly name: string;\n abstract readonly options: HashOptions;\n\n constructor(options: HashOptions = {}) {\n this.hashBatches = this.hashBatches.bind(this);\n }\n\n async preload(): Promise {\n return;\n }\n\n abstract hash(arrayBuffer: ArrayBuffer, encoding: 'hex' | 'base64'): Promise;\n\n async *hashBatches(\n asyncIterator: AsyncIterable | Iterable,\n encoding: 'hex' | 'base64' = 'base64'\n ): AsyncIterable {\n const arrayBuffers: ArrayBuffer[] = [];\n for await (const arrayBuffer of asyncIterator) {\n arrayBuffers.push(arrayBuffer);\n yield arrayBuffer;\n }\n const output = await this.concatenate(arrayBuffers);\n const hash = await this.hash(output, encoding);\n this.options.crypto?.onEnd?.({hash});\n }\n\n // HELPERS\n\n protected async concatenate(asyncIterator): Promise {\n return await concatenateArrayBuffersAsync(asyncIterator);\n }\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright vis.gl contributors\n\n// This dependency is too big, application must provide it\nimport {Hash} from '@loaders.gl/crypto';\nimport * as crypto from 'crypto'; // Node.js builtin\n\ntype CryptoHashOptions = {\n crypto: {\n algorithm: string;\n onEnd?: (result: {hash: string}) => any;\n };\n};\n\n/**\n * Calculates Cryptographic Hash using Node.js crypto library\n * @deprecated Warning, experimental class\n */\nexport class NodeHash extends Hash {\n readonly name = 'crypto-node';\n\n options: CryptoHashOptions;\n // @ts-ignore\n private _algorithm;\n // @ts-ignore\n private _hash;\n\n constructor(options: CryptoHashOptions) {\n super();\n this.options = options;\n if (!this.options?.crypto?.algorithm) {\n throw new Error(this.name);\n }\n }\n\n /**\n * Atomic hash calculation\n * @returns base64 encoded hash\n */\n async hash(input: ArrayBuffer, encoding: 'hex' | 'base64'): Promise {\n // await this.preload();\n const algorithm = this.options?.crypto?.algorithm?.toLowerCase();\n try {\n if (!crypto.createHash) {\n throw new Error('crypto.createHash not available');\n }\n const hash = crypto.createHash?.(algorithm);\n const inputArray = new Uint8Array(input);\n return hash.update(inputArray).digest('base64');\n } catch (error) {\n throw Error(`${algorithm} hash not available. ${error}`);\n }\n }\n\n async *hashBatches(\n asyncIterator: AsyncIterable | Iterable,\n encoding: 'hex' | 'base64' = 'base64'\n ): AsyncIterable {\n // await this.preload();\n if (!crypto.createHash) {\n throw new Error('crypto.createHash not available');\n }\n const hash = crypto.createHash?.(this.options?.crypto?.algorithm?.toLowerCase());\n for await (const chunk of asyncIterator) {\n // https://stackoverflow.com/questions/25567468/how-to-decrypt-an-arraybuffer\n const inputArray = new Uint8Array(chunk);\n hash.update(inputArray);\n yield chunk;\n }\n // We can pass our encoding constant directly to Node.js digest as it already supports `hex` and `base64`\n const digest = hash.digest(encoding);\n this.options?.crypto?.onEnd?.({hash: digest});\n }\n}\n", "/* eslint-disable dot-notation */\nimport {isBrowser} from './utils/is-browser';\n\nimport {TextDecoder, TextEncoder} from './text-encoder/text-encoder';\n\n// Node specific\nimport {atob, btoa} from './buffer/btoa.node';\n\nimport {encodeImageNode} from './images/encode-image-node';\nimport {parseImageNode, NODE_FORMAT_SUPPORT} from './images/parse-image-node';\n\n// FILESYSTEM POLYFILLS\nimport {NodeFile} from './filesystems/node-file';\nimport {NodeFileSystem} from './filesystems/node-filesystem';\nimport {fetchNode} from './filesystems/fetch-node';\n\nimport {NodeHash} from './crypto/node-hash';\n\n// NODE VERSION\n// @ts-expect-error\nimport {versions} from 'node:process';\nexport const nodeVersion = parseInt(versions.node.split('.')[0]);\n\n// STREAM POLYFILLS\nimport {makeNodeStream} from './streams/make-node-stream';\n\n// BLOB AND FILE POLYFILLS\nexport {Blob_ as Blob} from './file/install-blob-polyfills';\nexport {File_ as File} from './file/install-file-polyfills';\n\nif (isBrowser) {\n // eslint-disable-next-line no-console\n console.error(\n 'loaders.gl: The @loaders.gl/polyfills should only be used in Node.js environments'\n );\n}\n\nglobalThis.loaders = globalThis.loaders || {};\n\n// STREAM POLYFILLS\nexport {makeNodeStream} from './streams/make-node-stream';\nglobalThis.loaders.makeNodeStream = makeNodeStream;\n\n// FILESYSTEM POLYFILLS\nglobalThis.loaders.NodeFile = NodeFile;\nglobalThis.loaders.NodeFileSystem = NodeFileSystem;\nglobalThis.loaders.fetchNode = fetchNode;\n\n// CRYPTO POLYFILLS\nglobalThis.loaders.NodeHash = NodeHash;\n\n// POLYFILLS: TextEncoder, TextDecoder\n// - Recent Node versions have these classes but virtually no encodings unless special build.\n// - Browser: Edge, IE11 do not have these\n\nif (!globalThis.TextEncoder) {\n // @ts-expect-error\n globalThis.TextEncoder = TextEncoder;\n}\n\nif (!globalThis.TextDecoder) {\n // @ts-expect-error\n globalThis.TextDecoder = TextDecoder;\n}\n\nif (!globalThis.ReadableStream) {\n globalThis.ReadableStream = ReadableStream;\n}\n\n// POLYFILLS: btoa, atob\n// - Node: Yes\n// - Browser: No\n\nif (!('atob' in globalThis) && atob) {\n globalThis['atob'] = atob;\n}\nif (!('btoa' in globalThis) && btoa) {\n globalThis['btoa'] = btoa;\n}\n\n// NODE IMAGE FUNCTIONS:\n// These are not official polyfills but used by the @loaders.gl/images module if installed\n// TODO - is there an appropriate Image API we could polyfill using an adapter?\n\nglobalThis.loaders.encodeImageNode = encodeImageNode;\nglobalThis.loaders.parseImageNode = parseImageNode;\nglobalThis.loaders.imageFormatsNode = NODE_FORMAT_SUPPORT;\n\n// Deprecated, remove after republish\nglobalThis._parseImageNode = parseImageNode;\nglobalThis._imageFormatsNode = NODE_FORMAT_SUPPORT;\n\n// LOAD LIBRARY\n\nimport {\n readFileAsArrayBuffer,\n readFileAsText,\n requireFromFile,\n requireFromString\n} from './load-library/require-utils.node';\n\nglobalThis.loaders.readFileAsArrayBuffer = readFileAsArrayBuffer;\nglobalThis.loaders.readFileAsText = readFileAsText;\nglobalThis.loaders.requireFromFile = requireFromFile;\nglobalThis.loaders.requireFromString = requireFromString;\n\nexport {installFilePolyfills} from './file/install-file-polyfills';\n\n// DEPRECATED POLYFILL:\n// - Node v18+: No, not needed\n// - Node v16 and lower: Yes\n// - Browsers (evergreen): Not needed.\n// - IE11: No. This polyfill is node only, install external polyfill\nimport {Headers as HeadersNode} from './fetch/headers-polyfill';\nimport {Response as ResponseNode} from './fetch/response-polyfill';\nimport {fetchNode as fetchNodePolyfill} from './fetch/fetch-polyfill';\n\nif (nodeVersion < 18) {\n if (!('Headers' in globalThis) && HeadersNode) {\n // @ts-ignore\n globalThis.Headers = HeadersNode;\n }\n\n if (!('Response' in globalThis) && ResponseNode) {\n // @ts-ignore\n globalThis.Response = ResponseNode;\n }\n\n if (!('fetch' in globalThis) && fetchNodePolyfill) {\n // @ts-ignore\n globalThis.fetch = fetchNodePolyfill;\n }\n}\n", "import type {ReadableOptions} from 'stream';\nimport * as Stream from 'stream';\n\nclass _Readable {}\n\ntype ReadableType = Stream.Readable | _Readable;\nconst Readable = Stream.Readable || _Readable;\n\nexport type MakeStreamOptions = ReadableOptions;\n\n/** Builds a node stream from an iterator */\nexport function makeNodeStream(\n source: Iterable | AsyncIterable,\n options?: ReadableOptions\n): ReadableType {\n // @ts-ignore AsyncGenerator\n // prettier-ignore\n const iterator = source[Symbol.asyncIterator]\n ? // @ts-ignore AsyncGenerator\n source[Symbol.asyncIterator]()\n : // @ts-ignore AsyncGenerator\n source[Symbol.iterator]();\n return new AsyncIterableReadable(iterator, options);\n}\n\nclass AsyncIterableReadable extends Readable {\n private _pulling: boolean;\n private _bytesMode: boolean;\n private _iterator: AsyncIterator;\n\n constructor(it: AsyncIterator, options?: ReadableOptions) {\n super(options);\n this._iterator = it;\n this._pulling = false;\n this._bytesMode = !options || !options.objectMode;\n }\n\n async _read(size: number): Promise {\n if (!this._pulling) {\n this._pulling = true;\n this._pulling = await this._pull(size, this._iterator);\n }\n }\n\n async _destroy(error: Error | null, cb: (e: Error | null) => void): Promise {\n if (!this._iterator) {\n return;\n }\n if (error) {\n await this._iterator?.throw?.(error);\n } else {\n await this._iterator?.return?.(error);\n }\n cb?.(null);\n }\n\n // eslint-disable-next-line complexity\n private async _pull(size: number, it: AsyncIterator): Promise {\n const bm = this._bytesMode;\n let r: IteratorResult | null = null;\n // while (this.readable && !(r = await it.next(bm ? size : null)).done) {\n while (this.readable && !(r = await it.next()).done) {\n if (size !== null) {\n size -= bm && ArrayBuffer.isView(r.value) ? r.value.byteLength : 1;\n }\n if (!this.push(new Uint8Array(r.value)) || size <= 0) {\n break;\n }\n }\n if ((r?.done || !this.readable) && (this.push(null) || true)) {\n it?.return?.();\n }\n return !this.readable;\n }\n}\n", "/**\n * @license\n * web-streams-polyfill v4.0.0\n * Copyright 2024 Mattias Buelens, Diwank Singh Tomer and other contributors.\n * This code is released under the MIT license.\n * SPDX-License-Identifier: MIT\n */\nfunction e(){}function t(e){return\"object\"==typeof e&&null!==e||\"function\"==typeof e}const r=e;function o(e,t){try{Object.defineProperty(e,\"name\",{value:t,configurable:!0})}catch(e){}}const n=Promise,a=Promise.resolve.bind(n),i=Promise.prototype.then,l=Promise.reject.bind(n),s=a;function u(e){return new n(e)}function c(e){return u((t=>t(e)))}function d(e){return l(e)}function f(e,t,r){return i.call(e,t,r)}function b(e,t,o){f(f(e,t,o),void 0,r)}function h(e,t){b(e,t)}function m(e,t){b(e,void 0,t)}function _(e,t,r){return f(e,t,r)}function p(e){f(e,void 0,r)}let y=e=>{if(\"function\"==typeof queueMicrotask)y=queueMicrotask;else{const e=c(void 0);y=t=>f(e,t)}return y(e)};function S(e,t,r){if(\"function\"!=typeof e)throw new TypeError(\"Argument is not a function\");return Function.prototype.apply.call(e,t,r)}function g(e,t,r){try{return c(S(e,t,r))}catch(e){return d(e)}}class v{constructor(){this._cursor=0,this._size=0,this._front={_elements:[],_next:void 0},this._back=this._front,this._cursor=0,this._size=0}get length(){return this._size}push(e){const t=this._back;let r=t;16383===t._elements.length&&(r={_elements:[],_next:void 0}),t._elements.push(e),r!==t&&(this._back=r,t._next=r),++this._size}shift(){const e=this._front;let t=e;const r=this._cursor;let o=r+1;const n=e._elements,a=n[r];return 16384===o&&(t=e._next,o=0),--this._size,this._cursor=o,e!==t&&(this._front=t),n[r]=void 0,a}forEach(e){let t=this._cursor,r=this._front,o=r._elements;for(;!(t===o.length&&void 0===r._next||t===o.length&&(r=r._next,o=r._elements,t=0,0===o.length));)e(o[t]),++t}peek(){const e=this._front,t=this._cursor;return e._elements[t]}}const w=Symbol(\"[[AbortSteps]]\"),R=Symbol(\"[[ErrorSteps]]\"),T=Symbol(\"[[CancelSteps]]\"),C=Symbol(\"[[PullSteps]]\"),P=Symbol(\"[[ReleaseSteps]]\");function q(e,t){e._ownerReadableStream=t,t._reader=e,\"readable\"===t._state?B(e):\"closed\"===t._state?function(e){B(e),A(e)}(e):k(e,t._storedError)}function E(e,t){return Or(e._ownerReadableStream,t)}function W(e){const t=e._ownerReadableStream;\"readable\"===t._state?j(e,new TypeError(\"Reader was released and can no longer be used to monitor the stream's closedness\")):function(e,t){k(e,t)}(e,new TypeError(\"Reader was released and can no longer be used to monitor the stream's closedness\")),t._readableStreamController[P](),t._reader=void 0,e._ownerReadableStream=void 0}function O(e){return new TypeError(\"Cannot \"+e+\" a stream using a released reader\")}function B(e){e._closedPromise=u(((t,r)=>{e._closedPromise_resolve=t,e._closedPromise_reject=r}))}function k(e,t){B(e),j(e,t)}function j(e,t){void 0!==e._closedPromise_reject&&(p(e._closedPromise),e._closedPromise_reject(t),e._closedPromise_resolve=void 0,e._closedPromise_reject=void 0)}function A(e){void 0!==e._closedPromise_resolve&&(e._closedPromise_resolve(void 0),e._closedPromise_resolve=void 0,e._closedPromise_reject=void 0)}const z=Number.isFinite||function(e){return\"number\"==typeof e&&isFinite(e)},D=Math.trunc||function(e){return e<0?Math.ceil(e):Math.floor(e)};function L(e,t){if(void 0!==e&&(\"object\"!=typeof(r=e)&&\"function\"!=typeof r))throw new TypeError(`${t} is not an object.`);var r}function F(e,t){if(\"function\"!=typeof e)throw new TypeError(`${t} is not a function.`)}function I(e,t){if(!function(e){return\"object\"==typeof e&&null!==e||\"function\"==typeof e}(e))throw new TypeError(`${t} is not an object.`)}function $(e,t,r){if(void 0===e)throw new TypeError(`Parameter ${t} is required in '${r}'.`)}function M(e,t,r){if(void 0===e)throw new TypeError(`${t} is required in '${r}'.`)}function Y(e){return Number(e)}function x(e){return 0===e?0:e}function Q(e,t){const r=Number.MAX_SAFE_INTEGER;let o=Number(e);if(o=x(o),!z(o))throw new TypeError(`${t} is not a finite number`);if(o=function(e){return x(D(e))}(o),o<0||o>r)throw new TypeError(`${t} is outside the accepted range of 0 to ${r}, inclusive`);return z(o)&&0!==o?o:0}function N(e,t){if(!Er(e))throw new TypeError(`${t} is not a ReadableStream.`)}function H(e){return new ReadableStreamDefaultReader(e)}function V(e,t){e._reader._readRequests.push(t)}function U(e,t,r){const o=e._reader._readRequests.shift();r?o._closeSteps():o._chunkSteps(t)}function G(e){return e._reader._readRequests.length}function X(e){const t=e._reader;return void 0!==t&&!!J(t)}class ReadableStreamDefaultReader{constructor(e){if($(e,1,\"ReadableStreamDefaultReader\"),N(e,\"First parameter\"),Wr(e))throw new TypeError(\"This stream has already been locked for exclusive reading by another reader\");q(this,e),this._readRequests=new v}get closed(){return J(this)?this._closedPromise:d(ee(\"closed\"))}cancel(e=void 0){return J(this)?void 0===this._ownerReadableStream?d(O(\"cancel\")):E(this,e):d(ee(\"cancel\"))}read(){if(!J(this))return d(ee(\"read\"));if(void 0===this._ownerReadableStream)return d(O(\"read from\"));let e,t;const r=u(((r,o)=>{e=r,t=o}));return K(this,{_chunkSteps:t=>e({value:t,done:!1}),_closeSteps:()=>e({value:void 0,done:!0}),_errorSteps:e=>t(e)}),r}releaseLock(){if(!J(this))throw ee(\"releaseLock\");void 0!==this._ownerReadableStream&&function(e){W(e);const t=new TypeError(\"Reader was released\");Z(e,t)}(this)}}function J(e){return!!t(e)&&(!!Object.prototype.hasOwnProperty.call(e,\"_readRequests\")&&e instanceof ReadableStreamDefaultReader)}function K(e,t){const r=e._ownerReadableStream;r._disturbed=!0,\"closed\"===r._state?t._closeSteps():\"errored\"===r._state?t._errorSteps(r._storedError):r._readableStreamController[C](t)}function Z(e,t){const r=e._readRequests;e._readRequests=new v,r.forEach((e=>{e._errorSteps(t)}))}function ee(e){return new TypeError(`ReadableStreamDefaultReader.prototype.${e} can only be used on a ReadableStreamDefaultReader`)}var te,re,oe;function ne(e){return e.slice()}function ae(e,t,r,o,n){new Uint8Array(e).set(new Uint8Array(r,o,n),t)}Object.defineProperties(ReadableStreamDefaultReader.prototype,{cancel:{enumerable:!0},read:{enumerable:!0},releaseLock:{enumerable:!0},closed:{enumerable:!0}}),o(ReadableStreamDefaultReader.prototype.cancel,\"cancel\"),o(ReadableStreamDefaultReader.prototype.read,\"read\"),o(ReadableStreamDefaultReader.prototype.releaseLock,\"releaseLock\"),\"symbol\"==typeof Symbol.toStringTag&&Object.defineProperty(ReadableStreamDefaultReader.prototype,Symbol.toStringTag,{value:\"ReadableStreamDefaultReader\",configurable:!0});let ie=e=>(ie=\"function\"==typeof e.transfer?e=>e.transfer():\"function\"==typeof structuredClone?e=>structuredClone(e,{transfer:[e]}):e=>e,ie(e)),le=e=>(le=\"boolean\"==typeof e.detached?e=>e.detached:e=>0===e.byteLength,le(e));function se(e,t,r){if(e.slice)return e.slice(t,r);const o=r-t,n=new ArrayBuffer(o);return ae(n,0,e,t,o),n}function ue(e,t){const r=e[t];if(null!=r){if(\"function\"!=typeof r)throw new TypeError(`${String(t)} is not a function`);return r}}function ce(e){try{const t=e.done,r=e.value;return f(s(r),(e=>({done:t,value:e})))}catch(e){return d(e)}}const de=null!==(oe=null!==(te=Symbol.asyncIterator)&&void 0!==te?te:null===(re=Symbol.for)||void 0===re?void 0:re.call(Symbol,\"Symbol.asyncIterator\"))&&void 0!==oe?oe:\"@@asyncIterator\";function fe(e,r=\"sync\",o){if(void 0===o)if(\"async\"===r){if(void 0===(o=ue(e,de))){return function(e){const r={next(){let t;try{t=be(e)}catch(e){return d(e)}return ce(t)},return(r){let o;try{const t=ue(e.iterator,\"return\");if(void 0===t)return c({done:!0,value:r});o=S(t,e.iterator,[r])}catch(e){return d(e)}return t(o)?ce(o):d(new TypeError(\"The iterator.return() method must return an object\"))}};return{iterator:r,nextMethod:r.next,done:!1}}(fe(e,\"sync\",ue(e,Symbol.iterator)))}}else o=ue(e,Symbol.iterator);if(void 0===o)throw new TypeError(\"The object is not iterable\");const n=S(o,e,[]);if(!t(n))throw new TypeError(\"The iterator method must return an object\");return{iterator:n,nextMethod:n.next,done:!1}}function be(e){const r=S(e.nextMethod,e.iterator,[]);if(!t(r))throw new TypeError(\"The iterator.next() method must return an object\");return r}class he{constructor(e,t){this._ongoingPromise=void 0,this._isFinished=!1,this._reader=e,this._preventCancel=t}next(){const e=()=>this._nextSteps();return this._ongoingPromise=this._ongoingPromise?_(this._ongoingPromise,e,e):e(),this._ongoingPromise}return(e){const t=()=>this._returnSteps(e);return this._ongoingPromise?_(this._ongoingPromise,t,t):t()}_nextSteps(){if(this._isFinished)return Promise.resolve({value:void 0,done:!0});const e=this._reader;let t,r;const o=u(((e,o)=>{t=e,r=o}));return K(e,{_chunkSteps:e=>{this._ongoingPromise=void 0,y((()=>t({value:e,done:!1})))},_closeSteps:()=>{this._ongoingPromise=void 0,this._isFinished=!0,W(e),t({value:void 0,done:!0})},_errorSteps:t=>{this._ongoingPromise=void 0,this._isFinished=!0,W(e),r(t)}}),o}_returnSteps(e){if(this._isFinished)return Promise.resolve({value:e,done:!0});this._isFinished=!0;const t=this._reader;if(!this._preventCancel){const r=E(t,e);return W(t),_(r,(()=>({value:e,done:!0})))}return W(t),c({value:e,done:!0})}}const me={next(){return _e(this)?this._asyncIteratorImpl.next():d(pe(\"next\"))},return(e){return _e(this)?this._asyncIteratorImpl.return(e):d(pe(\"return\"))},[de](){return this}};function _e(e){if(!t(e))return!1;if(!Object.prototype.hasOwnProperty.call(e,\"_asyncIteratorImpl\"))return!1;try{return e._asyncIteratorImpl instanceof he}catch(e){return!1}}function pe(e){return new TypeError(`ReadableStreamAsyncIterator.${e} can only be used on a ReadableSteamAsyncIterator`)}Object.defineProperty(me,de,{enumerable:!1});const ye=Number.isNaN||function(e){return e!=e};function Se(e){const t=se(e.buffer,e.byteOffset,e.byteOffset+e.byteLength);return new Uint8Array(t)}function ge(e){const t=e._queue.shift();return e._queueTotalSize-=t.size,e._queueTotalSize<0&&(e._queueTotalSize=0),t.value}function ve(e,t,r){if(\"number\"!=typeof(o=r)||ye(o)||o<0||r===1/0)throw new RangeError(\"Size must be a finite, non-NaN, non-negative number.\");var o;e._queue.push({value:t,size:r}),e._queueTotalSize+=r}function we(e){e._queue=new v,e._queueTotalSize=0}function Re(e){return e===DataView}class ReadableStreamBYOBRequest{constructor(){throw new TypeError(\"Illegal constructor\")}get view(){if(!Ce(this))throw Je(\"view\");return this._view}respond(e){if(!Ce(this))throw Je(\"respond\");if($(e,1,\"respond\"),e=Q(e,\"First parameter\"),void 0===this._associatedReadableByteStreamController)throw new TypeError(\"This BYOB request has been invalidated\");if(le(this._view.buffer))throw new TypeError(\"The BYOB request's buffer has been detached and so cannot be used as a response\");Ue(this._associatedReadableByteStreamController,e)}respondWithNewView(e){if(!Ce(this))throw Je(\"respondWithNewView\");if($(e,1,\"respondWithNewView\"),!ArrayBuffer.isView(e))throw new TypeError(\"You can only respond with array buffer views\");if(void 0===this._associatedReadableByteStreamController)throw new TypeError(\"This BYOB request has been invalidated\");if(le(e.buffer))throw new TypeError(\"The given view's buffer has been detached and so cannot be used as a response\");Ge(this._associatedReadableByteStreamController,e)}}Object.defineProperties(ReadableStreamBYOBRequest.prototype,{respond:{enumerable:!0},respondWithNewView:{enumerable:!0},view:{enumerable:!0}}),o(ReadableStreamBYOBRequest.prototype.respond,\"respond\"),o(ReadableStreamBYOBRequest.prototype.respondWithNewView,\"respondWithNewView\"),\"symbol\"==typeof Symbol.toStringTag&&Object.defineProperty(ReadableStreamBYOBRequest.prototype,Symbol.toStringTag,{value:\"ReadableStreamBYOBRequest\",configurable:!0});class ReadableByteStreamController{constructor(){throw new TypeError(\"Illegal constructor\")}get byobRequest(){if(!Te(this))throw Ke(\"byobRequest\");return He(this)}get desiredSize(){if(!Te(this))throw Ke(\"desiredSize\");return Ve(this)}close(){if(!Te(this))throw Ke(\"close\");if(this._closeRequested)throw new TypeError(\"The stream has already been closed; do not close it again!\");const e=this._controlledReadableByteStream._state;if(\"readable\"!==e)throw new TypeError(`The stream (in ${e} state) is not in the readable state and cannot be closed`);Ye(this)}enqueue(e){if(!Te(this))throw Ke(\"enqueue\");if($(e,1,\"enqueue\"),!ArrayBuffer.isView(e))throw new TypeError(\"chunk must be an array buffer view\");if(0===e.byteLength)throw new TypeError(\"chunk must have non-zero byteLength\");if(0===e.buffer.byteLength)throw new TypeError(\"chunk's buffer must have non-zero byteLength\");if(this._closeRequested)throw new TypeError(\"stream is closed or draining\");const t=this._controlledReadableByteStream._state;if(\"readable\"!==t)throw new TypeError(`The stream (in ${t} state) is not in the readable state and cannot be enqueued to`);xe(this,e)}error(e=void 0){if(!Te(this))throw Ke(\"error\");Qe(this,e)}[T](e){qe(this),we(this);const t=this._cancelAlgorithm(e);return Me(this),t}[C](e){const t=this._controlledReadableByteStream;if(this._queueTotalSize>0)return void Ne(this,e);const r=this._autoAllocateChunkSize;if(void 0!==r){let t;try{t=new ArrayBuffer(r)}catch(t){return void e._errorSteps(t)}const o={buffer:t,bufferByteLength:r,byteOffset:0,byteLength:r,bytesFilled:0,minimumFill:1,elementSize:1,viewConstructor:Uint8Array,readerType:\"default\"};this._pendingPullIntos.push(o)}V(t,e),Pe(this)}[P](){if(this._pendingPullIntos.length>0){const e=this._pendingPullIntos.peek();e.readerType=\"none\",this._pendingPullIntos=new v,this._pendingPullIntos.push(e)}}}function Te(e){return!!t(e)&&(!!Object.prototype.hasOwnProperty.call(e,\"_controlledReadableByteStream\")&&e instanceof ReadableByteStreamController)}function Ce(e){return!!t(e)&&(!!Object.prototype.hasOwnProperty.call(e,\"_associatedReadableByteStreamController\")&&e instanceof ReadableStreamBYOBRequest)}function Pe(e){const t=function(e){const t=e._controlledReadableByteStream;if(\"readable\"!==t._state)return!1;if(e._closeRequested)return!1;if(!e._started)return!1;if(X(t)&&G(t)>0)return!0;if(ot(t)&&rt(t)>0)return!0;const r=Ve(e);if(r>0)return!0;return!1}(e);if(!t)return;if(e._pulling)return void(e._pullAgain=!0);e._pulling=!0;b(e._pullAlgorithm(),(()=>(e._pulling=!1,e._pullAgain&&(e._pullAgain=!1,Pe(e)),null)),(t=>(Qe(e,t),null)))}function qe(e){De(e),e._pendingPullIntos=new v}function Ee(e,t){let r=!1;\"closed\"===e._state&&(r=!0);const o=We(t);\"default\"===t.readerType?U(e,o,r):function(e,t,r){const o=e._reader,n=o._readIntoRequests.shift();r?n._closeSteps(t):n._chunkSteps(t)}(e,o,r)}function We(e){const t=e.bytesFilled,r=e.elementSize;return new e.viewConstructor(e.buffer,e.byteOffset,t/r)}function Oe(e,t,r,o){e._queue.push({buffer:t,byteOffset:r,byteLength:o}),e._queueTotalSize+=o}function Be(e,t,r,o){let n;try{n=se(t,r,r+o)}catch(t){throw Qe(e,t),t}Oe(e,n,0,o)}function ke(e,t){t.bytesFilled>0&&Be(e,t.buffer,t.byteOffset,t.bytesFilled),$e(e)}function je(e,t){const r=Math.min(e._queueTotalSize,t.byteLength-t.bytesFilled),o=t.bytesFilled+r;let n=r,a=!1;const i=o-o%t.elementSize;i>=t.minimumFill&&(n=i-t.bytesFilled,a=!0);const l=e._queue;for(;n>0;){const r=l.peek(),o=Math.min(n,r.byteLength),a=t.byteOffset+t.bytesFilled;ae(t.buffer,a,r.buffer,r.byteOffset,o),r.byteLength===o?l.shift():(r.byteOffset+=o,r.byteLength-=o),e._queueTotalSize-=o,Ae(e,o,t),n-=o}return a}function Ae(e,t,r){r.bytesFilled+=t}function ze(e){0===e._queueTotalSize&&e._closeRequested?(Me(e),Br(e._controlledReadableByteStream)):Pe(e)}function De(e){null!==e._byobRequest&&(e._byobRequest._associatedReadableByteStreamController=void 0,e._byobRequest._view=null,e._byobRequest=null)}function Le(e){for(;e._pendingPullIntos.length>0;){if(0===e._queueTotalSize)return;const t=e._pendingPullIntos.peek();je(e,t)&&($e(e),Ee(e._controlledReadableByteStream,t))}}function Fe(e,t,r,o){const n=e._controlledReadableByteStream,a=t.constructor,i=function(e){return Re(e)?1:e.BYTES_PER_ELEMENT}(a),{byteOffset:l,byteLength:s}=t,u=r*i;let c;try{c=ie(t.buffer)}catch(e){return void o._errorSteps(e)}const d={buffer:c,bufferByteLength:c.byteLength,byteOffset:l,byteLength:s,bytesFilled:0,minimumFill:u,elementSize:i,viewConstructor:a,readerType:\"byob\"};if(e._pendingPullIntos.length>0)return e._pendingPullIntos.push(d),void tt(n,o);if(\"closed\"!==n._state){if(e._queueTotalSize>0){if(je(e,d)){const t=We(d);return ze(e),void o._chunkSteps(t)}if(e._closeRequested){const t=new TypeError(\"Insufficient bytes to fill elements in the given buffer\");return Qe(e,t),void o._errorSteps(t)}}e._pendingPullIntos.push(d),tt(n,o),Pe(e)}else{const e=new a(d.buffer,d.byteOffset,0);o._closeSteps(e)}}function Ie(e,t){const r=e._pendingPullIntos.peek();De(e);\"closed\"===e._controlledReadableByteStream._state?function(e,t){\"none\"===t.readerType&&$e(e);const r=e._controlledReadableByteStream;if(ot(r))for(;rt(r)>0;)Ee(r,$e(e))}(e,r):function(e,t,r){if(Ae(0,t,r),\"none\"===r.readerType)return ke(e,r),void Le(e);if(r.bytesFilled0){const t=r.byteOffset+r.bytesFilled;Be(e,r.buffer,t-o,o)}r.bytesFilled-=o,Ee(e._controlledReadableByteStream,r),Le(e)}(e,t,r),Pe(e)}function $e(e){return e._pendingPullIntos.shift()}function Me(e){e._pullAlgorithm=void 0,e._cancelAlgorithm=void 0}function Ye(e){const t=e._controlledReadableByteStream;if(!e._closeRequested&&\"readable\"===t._state)if(e._queueTotalSize>0)e._closeRequested=!0;else{if(e._pendingPullIntos.length>0){const t=e._pendingPullIntos.peek();if(t.bytesFilled%t.elementSize!=0){const t=new TypeError(\"Insufficient bytes to fill elements in the given buffer\");throw Qe(e,t),t}}Me(e),Br(t)}}function xe(e,t){const r=e._controlledReadableByteStream;if(e._closeRequested||\"readable\"!==r._state)return;const{buffer:o,byteOffset:n,byteLength:a}=t;if(le(o))throw new TypeError(\"chunk's buffer is detached and so cannot be enqueued\");const i=ie(o);if(e._pendingPullIntos.length>0){const t=e._pendingPullIntos.peek();if(le(t.buffer))throw new TypeError(\"The BYOB request's buffer has been detached and so cannot be filled with an enqueued chunk\");De(e),t.buffer=ie(t.buffer),\"none\"===t.readerType&&ke(e,t)}if(X(r))if(function(e){const t=e._controlledReadableByteStream._reader;for(;t._readRequests.length>0;){if(0===e._queueTotalSize)return;Ne(e,t._readRequests.shift())}}(e),0===G(r))Oe(e,i,n,a);else{e._pendingPullIntos.length>0&&$e(e);U(r,new Uint8Array(i,n,a),!1)}else ot(r)?(Oe(e,i,n,a),Le(e)):Oe(e,i,n,a);Pe(e)}function Qe(e,t){const r=e._controlledReadableByteStream;\"readable\"===r._state&&(qe(e),we(e),Me(e),kr(r,t))}function Ne(e,t){const r=e._queue.shift();e._queueTotalSize-=r.byteLength,ze(e);const o=new Uint8Array(r.buffer,r.byteOffset,r.byteLength);t._chunkSteps(o)}function He(e){if(null===e._byobRequest&&e._pendingPullIntos.length>0){const t=e._pendingPullIntos.peek(),r=new Uint8Array(t.buffer,t.byteOffset+t.bytesFilled,t.byteLength-t.bytesFilled),o=Object.create(ReadableStreamBYOBRequest.prototype);!function(e,t,r){e._associatedReadableByteStreamController=t,e._view=r}(o,e,r),e._byobRequest=o}return e._byobRequest}function Ve(e){const t=e._controlledReadableByteStream._state;return\"errored\"===t?null:\"closed\"===t?0:e._strategyHWM-e._queueTotalSize}function Ue(e,t){const r=e._pendingPullIntos.peek();if(\"closed\"===e._controlledReadableByteStream._state){if(0!==t)throw new TypeError(\"bytesWritten must be 0 when calling respond() on a closed stream\")}else{if(0===t)throw new TypeError(\"bytesWritten must be greater than 0 when calling respond() on a readable stream\");if(r.bytesFilled+t>r.byteLength)throw new RangeError(\"bytesWritten out of range\")}r.buffer=ie(r.buffer),Ie(e,t)}function Ge(e,t){const r=e._pendingPullIntos.peek();if(\"closed\"===e._controlledReadableByteStream._state){if(0!==t.byteLength)throw new TypeError(\"The view's length must be 0 when calling respondWithNewView() on a closed stream\")}else if(0===t.byteLength)throw new TypeError(\"The view's length must be greater than 0 when calling respondWithNewView() on a readable stream\");if(r.byteOffset+r.bytesFilled!==t.byteOffset)throw new RangeError(\"The region specified by view does not match byobRequest\");if(r.bufferByteLength!==t.buffer.byteLength)throw new RangeError(\"The buffer of view has different capacity than byobRequest\");if(r.bytesFilled+t.byteLength>r.byteLength)throw new RangeError(\"The region specified by view is larger than byobRequest\");const o=t.byteLength;r.buffer=ie(t.buffer),Ie(e,o)}function Xe(e,t,r,o,n,a,i){t._controlledReadableByteStream=e,t._pullAgain=!1,t._pulling=!1,t._byobRequest=null,t._queue=t._queueTotalSize=void 0,we(t),t._closeRequested=!1,t._started=!1,t._strategyHWM=a,t._pullAlgorithm=o,t._cancelAlgorithm=n,t._autoAllocateChunkSize=i,t._pendingPullIntos=new v,e._readableStreamController=t;b(c(r()),(()=>(t._started=!0,Pe(t),null)),(e=>(Qe(t,e),null)))}function Je(e){return new TypeError(`ReadableStreamBYOBRequest.prototype.${e} can only be used on a ReadableStreamBYOBRequest`)}function Ke(e){return new TypeError(`ReadableByteStreamController.prototype.${e} can only be used on a ReadableByteStreamController`)}function Ze(e,t){if(\"byob\"!==(e=`${e}`))throw new TypeError(`${t} '${e}' is not a valid enumeration value for ReadableStreamReaderMode`);return e}function et(e){return new ReadableStreamBYOBReader(e)}function tt(e,t){e._reader._readIntoRequests.push(t)}function rt(e){return e._reader._readIntoRequests.length}function ot(e){const t=e._reader;return void 0!==t&&!!nt(t)}Object.defineProperties(ReadableByteStreamController.prototype,{close:{enumerable:!0},enqueue:{enumerable:!0},error:{enumerable:!0},byobRequest:{enumerable:!0},desiredSize:{enumerable:!0}}),o(ReadableByteStreamController.prototype.close,\"close\"),o(ReadableByteStreamController.prototype.enqueue,\"enqueue\"),o(ReadableByteStreamController.prototype.error,\"error\"),\"symbol\"==typeof Symbol.toStringTag&&Object.defineProperty(ReadableByteStreamController.prototype,Symbol.toStringTag,{value:\"ReadableByteStreamController\",configurable:!0});class ReadableStreamBYOBReader{constructor(e){if($(e,1,\"ReadableStreamBYOBReader\"),N(e,\"First parameter\"),Wr(e))throw new TypeError(\"This stream has already been locked for exclusive reading by another reader\");if(!Te(e._readableStreamController))throw new TypeError(\"Cannot construct a ReadableStreamBYOBReader for a stream not constructed with a byte source\");q(this,e),this._readIntoRequests=new v}get closed(){return nt(this)?this._closedPromise:d(lt(\"closed\"))}cancel(e=void 0){return nt(this)?void 0===this._ownerReadableStream?d(O(\"cancel\")):E(this,e):d(lt(\"cancel\"))}read(e,t={}){if(!nt(this))return d(lt(\"read\"));if(!ArrayBuffer.isView(e))return d(new TypeError(\"view must be an array buffer view\"));if(0===e.byteLength)return d(new TypeError(\"view must have non-zero byteLength\"));if(0===e.buffer.byteLength)return d(new TypeError(\"view's buffer must have non-zero byteLength\"));if(le(e.buffer))return d(new TypeError(\"view's buffer has been detached\"));let r;try{r=function(e,t){var r;return L(e,t),{min:Q(null!==(r=null==e?void 0:e.min)&&void 0!==r?r:1,`${t} has member 'min' that`)}}(t,\"options\")}catch(e){return d(e)}const o=r.min;if(0===o)return d(new TypeError(\"options.min must be greater than 0\"));if(function(e){return Re(e.constructor)}(e)){if(o>e.byteLength)return d(new RangeError(\"options.min must be less than or equal to view's byteLength\"))}else if(o>e.length)return d(new RangeError(\"options.min must be less than or equal to view's length\"));if(void 0===this._ownerReadableStream)return d(O(\"read from\"));let n,a;const i=u(((e,t)=>{n=e,a=t}));return at(this,e,o,{_chunkSteps:e=>n({value:e,done:!1}),_closeSteps:e=>n({value:e,done:!0}),_errorSteps:e=>a(e)}),i}releaseLock(){if(!nt(this))throw lt(\"releaseLock\");void 0!==this._ownerReadableStream&&function(e){W(e);const t=new TypeError(\"Reader was released\");it(e,t)}(this)}}function nt(e){return!!t(e)&&(!!Object.prototype.hasOwnProperty.call(e,\"_readIntoRequests\")&&e instanceof ReadableStreamBYOBReader)}function at(e,t,r,o){const n=e._ownerReadableStream;n._disturbed=!0,\"errored\"===n._state?o._errorSteps(n._storedError):Fe(n._readableStreamController,t,r,o)}function it(e,t){const r=e._readIntoRequests;e._readIntoRequests=new v,r.forEach((e=>{e._errorSteps(t)}))}function lt(e){return new TypeError(`ReadableStreamBYOBReader.prototype.${e} can only be used on a ReadableStreamBYOBReader`)}function st(e,t){const{highWaterMark:r}=e;if(void 0===r)return t;if(ye(r)||r<0)throw new RangeError(\"Invalid highWaterMark\");return r}function ut(e){const{size:t}=e;return t||(()=>1)}function ct(e,t){L(e,t);const r=null==e?void 0:e.highWaterMark,o=null==e?void 0:e.size;return{highWaterMark:void 0===r?void 0:Y(r),size:void 0===o?void 0:dt(o,`${t} has member 'size' that`)}}function dt(e,t){return F(e,t),t=>Y(e(t))}function ft(e,t,r){return F(e,r),r=>g(e,t,[r])}function bt(e,t,r){return F(e,r),()=>g(e,t,[])}function ht(e,t,r){return F(e,r),r=>S(e,t,[r])}function mt(e,t,r){return F(e,r),(r,o)=>g(e,t,[r,o])}function _t(e,t){if(!gt(e))throw new TypeError(`${t} is not a WritableStream.`)}Object.defineProperties(ReadableStreamBYOBReader.prototype,{cancel:{enumerable:!0},read:{enumerable:!0},releaseLock:{enumerable:!0},closed:{enumerable:!0}}),o(ReadableStreamBYOBReader.prototype.cancel,\"cancel\"),o(ReadableStreamBYOBReader.prototype.read,\"read\"),o(ReadableStreamBYOBReader.prototype.releaseLock,\"releaseLock\"),\"symbol\"==typeof Symbol.toStringTag&&Object.defineProperty(ReadableStreamBYOBReader.prototype,Symbol.toStringTag,{value:\"ReadableStreamBYOBReader\",configurable:!0});const pt=\"function\"==typeof AbortController;class WritableStream{constructor(e={},t={}){void 0===e?e=null:I(e,\"First parameter\");const r=ct(t,\"Second parameter\"),o=function(e,t){L(e,t);const r=null==e?void 0:e.abort,o=null==e?void 0:e.close,n=null==e?void 0:e.start,a=null==e?void 0:e.type,i=null==e?void 0:e.write;return{abort:void 0===r?void 0:ft(r,e,`${t} has member 'abort' that`),close:void 0===o?void 0:bt(o,e,`${t} has member 'close' that`),start:void 0===n?void 0:ht(n,e,`${t} has member 'start' that`),write:void 0===i?void 0:mt(i,e,`${t} has member 'write' that`),type:a}}(e,\"First parameter\");St(this);if(void 0!==o.type)throw new RangeError(\"Invalid type is specified\");const n=ut(r);!function(e,t,r,o){const n=Object.create(WritableStreamDefaultController.prototype);let a,i,l,s;a=void 0!==t.start?()=>t.start(n):()=>{};i=void 0!==t.write?e=>t.write(e,n):()=>c(void 0);l=void 0!==t.close?()=>t.close():()=>c(void 0);s=void 0!==t.abort?e=>t.abort(e):()=>c(void 0);Ft(e,n,a,i,l,s,r,o)}(this,o,st(r,1),n)}get locked(){if(!gt(this))throw Nt(\"locked\");return vt(this)}abort(e=void 0){return gt(this)?vt(this)?d(new TypeError(\"Cannot abort a stream that already has a writer\")):wt(this,e):d(Nt(\"abort\"))}close(){return gt(this)?vt(this)?d(new TypeError(\"Cannot close a stream that already has a writer\")):qt(this)?d(new TypeError(\"Cannot close an already-closing stream\")):Rt(this):d(Nt(\"close\"))}getWriter(){if(!gt(this))throw Nt(\"getWriter\");return yt(this)}}function yt(e){return new WritableStreamDefaultWriter(e)}function St(e){e._state=\"writable\",e._storedError=void 0,e._writer=void 0,e._writableStreamController=void 0,e._writeRequests=new v,e._inFlightWriteRequest=void 0,e._closeRequest=void 0,e._inFlightCloseRequest=void 0,e._pendingAbortRequest=void 0,e._backpressure=!1}function gt(e){return!!t(e)&&(!!Object.prototype.hasOwnProperty.call(e,\"_writableStreamController\")&&e instanceof WritableStream)}function vt(e){return void 0!==e._writer}function wt(e,t){var r;if(\"closed\"===e._state||\"errored\"===e._state)return c(void 0);e._writableStreamController._abortReason=t,null===(r=e._writableStreamController._abortController)||void 0===r||r.abort(t);const o=e._state;if(\"closed\"===o||\"errored\"===o)return c(void 0);if(void 0!==e._pendingAbortRequest)return e._pendingAbortRequest._promise;let n=!1;\"erroring\"===o&&(n=!0,t=void 0);const a=u(((r,o)=>{e._pendingAbortRequest={_promise:void 0,_resolve:r,_reject:o,_reason:t,_wasAlreadyErroring:n}}));return e._pendingAbortRequest._promise=a,n||Ct(e,t),a}function Rt(e){const t=e._state;if(\"closed\"===t||\"errored\"===t)return d(new TypeError(`The stream (in ${t} state) is not in the writable state and cannot be closed`));const r=u(((t,r)=>{const o={_resolve:t,_reject:r};e._closeRequest=o})),o=e._writer;var n;return void 0!==o&&e._backpressure&&\"writable\"===t&&or(o),ve(n=e._writableStreamController,Dt,0),Mt(n),r}function Tt(e,t){\"writable\"!==e._state?Pt(e):Ct(e,t)}function Ct(e,t){const r=e._writableStreamController;e._state=\"erroring\",e._storedError=t;const o=e._writer;void 0!==o&&jt(o,t),!function(e){if(void 0===e._inFlightWriteRequest&&void 0===e._inFlightCloseRequest)return!1;return!0}(e)&&r._started&&Pt(e)}function Pt(e){e._state=\"errored\",e._writableStreamController[R]();const t=e._storedError;if(e._writeRequests.forEach((e=>{e._reject(t)})),e._writeRequests=new v,void 0===e._pendingAbortRequest)return void Et(e);const r=e._pendingAbortRequest;if(e._pendingAbortRequest=void 0,r._wasAlreadyErroring)return r._reject(t),void Et(e);b(e._writableStreamController[w](r._reason),(()=>(r._resolve(),Et(e),null)),(t=>(r._reject(t),Et(e),null)))}function qt(e){return void 0!==e._closeRequest||void 0!==e._inFlightCloseRequest}function Et(e){void 0!==e._closeRequest&&(e._closeRequest._reject(e._storedError),e._closeRequest=void 0);const t=e._writer;void 0!==t&&Jt(t,e._storedError)}function Wt(e,t){const r=e._writer;void 0!==r&&t!==e._backpressure&&(t?function(e){Zt(e)}(r):or(r)),e._backpressure=t}Object.defineProperties(WritableStream.prototype,{abort:{enumerable:!0},close:{enumerable:!0},getWriter:{enumerable:!0},locked:{enumerable:!0}}),o(WritableStream.prototype.abort,\"abort\"),o(WritableStream.prototype.close,\"close\"),o(WritableStream.prototype.getWriter,\"getWriter\"),\"symbol\"==typeof Symbol.toStringTag&&Object.defineProperty(WritableStream.prototype,Symbol.toStringTag,{value:\"WritableStream\",configurable:!0});class WritableStreamDefaultWriter{constructor(e){if($(e,1,\"WritableStreamDefaultWriter\"),_t(e,\"First parameter\"),vt(e))throw new TypeError(\"This stream has already been locked for exclusive writing by another writer\");this._ownerWritableStream=e,e._writer=this;const t=e._state;if(\"writable\"===t)!qt(e)&&e._backpressure?Zt(this):tr(this),Gt(this);else if(\"erroring\"===t)er(this,e._storedError),Gt(this);else if(\"closed\"===t)tr(this),Gt(r=this),Kt(r);else{const t=e._storedError;er(this,t),Xt(this,t)}var r}get closed(){return Ot(this)?this._closedPromise:d(Vt(\"closed\"))}get desiredSize(){if(!Ot(this))throw Vt(\"desiredSize\");if(void 0===this._ownerWritableStream)throw Ut(\"desiredSize\");return function(e){const t=e._ownerWritableStream,r=t._state;if(\"errored\"===r||\"erroring\"===r)return null;if(\"closed\"===r)return 0;return $t(t._writableStreamController)}(this)}get ready(){return Ot(this)?this._readyPromise:d(Vt(\"ready\"))}abort(e=void 0){return Ot(this)?void 0===this._ownerWritableStream?d(Ut(\"abort\")):function(e,t){return wt(e._ownerWritableStream,t)}(this,e):d(Vt(\"abort\"))}close(){if(!Ot(this))return d(Vt(\"close\"));const e=this._ownerWritableStream;return void 0===e?d(Ut(\"close\")):qt(e)?d(new TypeError(\"Cannot close an already-closing stream\")):Bt(this)}releaseLock(){if(!Ot(this))throw Vt(\"releaseLock\");void 0!==this._ownerWritableStream&&At(this)}write(e=void 0){return Ot(this)?void 0===this._ownerWritableStream?d(Ut(\"write to\")):zt(this,e):d(Vt(\"write\"))}}function Ot(e){return!!t(e)&&(!!Object.prototype.hasOwnProperty.call(e,\"_ownerWritableStream\")&&e instanceof WritableStreamDefaultWriter)}function Bt(e){return Rt(e._ownerWritableStream)}function kt(e,t){\"pending\"===e._closedPromiseState?Jt(e,t):function(e,t){Xt(e,t)}(e,t)}function jt(e,t){\"pending\"===e._readyPromiseState?rr(e,t):function(e,t){er(e,t)}(e,t)}function At(e){const t=e._ownerWritableStream,r=new TypeError(\"Writer was released and can no longer be used to monitor the stream's closedness\");jt(e,r),kt(e,r),t._writer=void 0,e._ownerWritableStream=void 0}function zt(e,t){const r=e._ownerWritableStream,o=r._writableStreamController,n=function(e,t){try{return e._strategySizeAlgorithm(t)}catch(t){return Yt(e,t),1}}(o,t);if(r!==e._ownerWritableStream)return d(Ut(\"write to\"));const a=r._state;if(\"errored\"===a)return d(r._storedError);if(qt(r)||\"closed\"===a)return d(new TypeError(\"The stream is closing or closed and cannot be written to\"));if(\"erroring\"===a)return d(r._storedError);const i=function(e){return u(((t,r)=>{const o={_resolve:t,_reject:r};e._writeRequests.push(o)}))}(r);return function(e,t,r){try{ve(e,t,r)}catch(t){return void Yt(e,t)}const o=e._controlledWritableStream;if(!qt(o)&&\"writable\"===o._state){Wt(o,xt(e))}Mt(e)}(o,t,n),i}Object.defineProperties(WritableStreamDefaultWriter.prototype,{abort:{enumerable:!0},close:{enumerable:!0},releaseLock:{enumerable:!0},write:{enumerable:!0},closed:{enumerable:!0},desiredSize:{enumerable:!0},ready:{enumerable:!0}}),o(WritableStreamDefaultWriter.prototype.abort,\"abort\"),o(WritableStreamDefaultWriter.prototype.close,\"close\"),o(WritableStreamDefaultWriter.prototype.releaseLock,\"releaseLock\"),o(WritableStreamDefaultWriter.prototype.write,\"write\"),\"symbol\"==typeof Symbol.toStringTag&&Object.defineProperty(WritableStreamDefaultWriter.prototype,Symbol.toStringTag,{value:\"WritableStreamDefaultWriter\",configurable:!0});const Dt={};class WritableStreamDefaultController{constructor(){throw new TypeError(\"Illegal constructor\")}get abortReason(){if(!Lt(this))throw Ht(\"abortReason\");return this._abortReason}get signal(){if(!Lt(this))throw Ht(\"signal\");if(void 0===this._abortController)throw new TypeError(\"WritableStreamDefaultController.prototype.signal is not supported\");return this._abortController.signal}error(e=void 0){if(!Lt(this))throw Ht(\"error\");\"writable\"===this._controlledWritableStream._state&&Qt(this,e)}[w](e){const t=this._abortAlgorithm(e);return It(this),t}[R](){we(this)}}function Lt(e){return!!t(e)&&(!!Object.prototype.hasOwnProperty.call(e,\"_controlledWritableStream\")&&e instanceof WritableStreamDefaultController)}function Ft(e,t,r,o,n,a,i,l){t._controlledWritableStream=e,e._writableStreamController=t,t._queue=void 0,t._queueTotalSize=void 0,we(t),t._abortReason=void 0,t._abortController=function(){if(pt)return new AbortController}(),t._started=!1,t._strategySizeAlgorithm=l,t._strategyHWM=i,t._writeAlgorithm=o,t._closeAlgorithm=n,t._abortAlgorithm=a;const s=xt(t);Wt(e,s);b(c(r()),(()=>(t._started=!0,Mt(t),null)),(r=>(t._started=!0,Tt(e,r),null)))}function It(e){e._writeAlgorithm=void 0,e._closeAlgorithm=void 0,e._abortAlgorithm=void 0,e._strategySizeAlgorithm=void 0}function $t(e){return e._strategyHWM-e._queueTotalSize}function Mt(e){const t=e._controlledWritableStream;if(!e._started)return;if(void 0!==t._inFlightWriteRequest)return;if(\"erroring\"===t._state)return void Pt(t);if(0===e._queue.length)return;const r=e._queue.peek().value;r===Dt?function(e){const t=e._controlledWritableStream;(function(e){e._inFlightCloseRequest=e._closeRequest,e._closeRequest=void 0})(t),ge(e);const r=e._closeAlgorithm();It(e),b(r,(()=>(function(e){e._inFlightCloseRequest._resolve(void 0),e._inFlightCloseRequest=void 0,\"erroring\"===e._state&&(e._storedError=void 0,void 0!==e._pendingAbortRequest&&(e._pendingAbortRequest._resolve(),e._pendingAbortRequest=void 0)),e._state=\"closed\";const t=e._writer;void 0!==t&&Kt(t)}(t),null)),(e=>(function(e,t){e._inFlightCloseRequest._reject(t),e._inFlightCloseRequest=void 0,void 0!==e._pendingAbortRequest&&(e._pendingAbortRequest._reject(t),e._pendingAbortRequest=void 0),Tt(e,t)}(t,e),null)))}(e):function(e,t){const r=e._controlledWritableStream;!function(e){e._inFlightWriteRequest=e._writeRequests.shift()}(r);const o=e._writeAlgorithm(t);b(o,(()=>{!function(e){e._inFlightWriteRequest._resolve(void 0),e._inFlightWriteRequest=void 0}(r);const t=r._state;if(ge(e),!qt(r)&&\"writable\"===t){const t=xt(e);Wt(r,t)}return Mt(e),null}),(t=>(\"writable\"===r._state&&It(e),function(e,t){e._inFlightWriteRequest._reject(t),e._inFlightWriteRequest=void 0,Tt(e,t)}(r,t),null)))}(e,r)}function Yt(e,t){\"writable\"===e._controlledWritableStream._state&&Qt(e,t)}function xt(e){return $t(e)<=0}function Qt(e,t){const r=e._controlledWritableStream;It(e),Ct(r,t)}function Nt(e){return new TypeError(`WritableStream.prototype.${e} can only be used on a WritableStream`)}function Ht(e){return new TypeError(`WritableStreamDefaultController.prototype.${e} can only be used on a WritableStreamDefaultController`)}function Vt(e){return new TypeError(`WritableStreamDefaultWriter.prototype.${e} can only be used on a WritableStreamDefaultWriter`)}function Ut(e){return new TypeError(\"Cannot \"+e+\" a stream using a released writer\")}function Gt(e){e._closedPromise=u(((t,r)=>{e._closedPromise_resolve=t,e._closedPromise_reject=r,e._closedPromiseState=\"pending\"}))}function Xt(e,t){Gt(e),Jt(e,t)}function Jt(e,t){void 0!==e._closedPromise_reject&&(p(e._closedPromise),e._closedPromise_reject(t),e._closedPromise_resolve=void 0,e._closedPromise_reject=void 0,e._closedPromiseState=\"rejected\")}function Kt(e){void 0!==e._closedPromise_resolve&&(e._closedPromise_resolve(void 0),e._closedPromise_resolve=void 0,e._closedPromise_reject=void 0,e._closedPromiseState=\"resolved\")}function Zt(e){e._readyPromise=u(((t,r)=>{e._readyPromise_resolve=t,e._readyPromise_reject=r})),e._readyPromiseState=\"pending\"}function er(e,t){Zt(e),rr(e,t)}function tr(e){Zt(e),or(e)}function rr(e,t){void 0!==e._readyPromise_reject&&(p(e._readyPromise),e._readyPromise_reject(t),e._readyPromise_resolve=void 0,e._readyPromise_reject=void 0,e._readyPromiseState=\"rejected\")}function or(e){void 0!==e._readyPromise_resolve&&(e._readyPromise_resolve(void 0),e._readyPromise_resolve=void 0,e._readyPromise_reject=void 0,e._readyPromiseState=\"fulfilled\")}Object.defineProperties(WritableStreamDefaultController.prototype,{abortReason:{enumerable:!0},signal:{enumerable:!0},error:{enumerable:!0}}),\"symbol\"==typeof Symbol.toStringTag&&Object.defineProperty(WritableStreamDefaultController.prototype,Symbol.toStringTag,{value:\"WritableStreamDefaultController\",configurable:!0});const nr=\"undefined\"!=typeof globalThis?globalThis:\"undefined\"!=typeof self?self:\"undefined\"!=typeof global?global:void 0;const ar=function(){const e=null==nr?void 0:nr.DOMException;return function(e){if(\"function\"!=typeof e&&\"object\"!=typeof e)return!1;if(\"DOMException\"!==e.name)return!1;try{return new e,!0}catch(e){return!1}}(e)?e:void 0}()||function(){const e=function(e,t){this.message=e||\"\",this.name=t||\"Error\",Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)};return o(e,\"DOMException\"),e.prototype=Object.create(Error.prototype),Object.defineProperty(e.prototype,\"constructor\",{value:e,writable:!0,configurable:!0}),e}();function ir(t,r,o,n,a,i){const l=H(t),s=yt(r);t._disturbed=!0;let _=!1,y=c(void 0);return u(((S,g)=>{let v;if(void 0!==i){if(v=()=>{const e=void 0!==i.reason?i.reason:new ar(\"Aborted\",\"AbortError\"),o=[];n||o.push((()=>\"writable\"===r._state?wt(r,e):c(void 0))),a||o.push((()=>\"readable\"===t._state?Or(t,e):c(void 0))),q((()=>Promise.all(o.map((e=>e())))),!0,e)},i.aborted)return void v();i.addEventListener(\"abort\",v)}var w,R,T;if(P(t,l._closedPromise,(e=>(n?E(!0,e):q((()=>wt(r,e)),!0,e),null))),P(r,s._closedPromise,(e=>(a?E(!0,e):q((()=>Or(t,e)),!0,e),null))),w=t,R=l._closedPromise,T=()=>(o?E():q((()=>function(e){const t=e._ownerWritableStream,r=t._state;return qt(t)||\"closed\"===r?c(void 0):\"errored\"===r?d(t._storedError):Bt(e)}(s))),null),\"closed\"===w._state?T():h(R,T),qt(r)||\"closed\"===r._state){const e=new TypeError(\"the destination writable stream closed before all data could be piped to it\");a?E(!0,e):q((()=>Or(t,e)),!0,e)}function C(){const e=y;return f(y,(()=>e!==y?C():void 0))}function P(e,t,r){\"errored\"===e._state?r(e._storedError):m(t,r)}function q(e,t,o){function n(){return b(e(),(()=>O(t,o)),(e=>O(!0,e))),null}_||(_=!0,\"writable\"!==r._state||qt(r)?n():h(C(),n))}function E(e,t){_||(_=!0,\"writable\"!==r._state||qt(r)?O(e,t):h(C(),(()=>O(e,t))))}function O(e,t){return At(s),W(l),void 0!==i&&i.removeEventListener(\"abort\",v),e?g(t):S(void 0),null}p(u(((t,r)=>{!function o(n){n?t():f(_?c(!0):f(s._readyPromise,(()=>u(((t,r)=>{K(l,{_chunkSteps:r=>{y=f(zt(s,r),void 0,e),t(!1)},_closeSteps:()=>t(!0),_errorSteps:r})})))),o,r)}(!1)})))}))}class ReadableStreamDefaultController{constructor(){throw new TypeError(\"Illegal constructor\")}get desiredSize(){if(!lr(this))throw pr(\"desiredSize\");return hr(this)}close(){if(!lr(this))throw pr(\"close\");if(!mr(this))throw new TypeError(\"The stream is not in a state that permits close\");dr(this)}enqueue(e=void 0){if(!lr(this))throw pr(\"enqueue\");if(!mr(this))throw new TypeError(\"The stream is not in a state that permits enqueue\");return fr(this,e)}error(e=void 0){if(!lr(this))throw pr(\"error\");br(this,e)}[T](e){we(this);const t=this._cancelAlgorithm(e);return cr(this),t}[C](e){const t=this._controlledReadableStream;if(this._queue.length>0){const r=ge(this);this._closeRequested&&0===this._queue.length?(cr(this),Br(t)):sr(this),e._chunkSteps(r)}else V(t,e),sr(this)}[P](){}}function lr(e){return!!t(e)&&(!!Object.prototype.hasOwnProperty.call(e,\"_controlledReadableStream\")&&e instanceof ReadableStreamDefaultController)}function sr(e){if(!ur(e))return;if(e._pulling)return void(e._pullAgain=!0);e._pulling=!0;b(e._pullAlgorithm(),(()=>(e._pulling=!1,e._pullAgain&&(e._pullAgain=!1,sr(e)),null)),(t=>(br(e,t),null)))}function ur(e){const t=e._controlledReadableStream;if(!mr(e))return!1;if(!e._started)return!1;if(Wr(t)&&G(t)>0)return!0;return hr(e)>0}function cr(e){e._pullAlgorithm=void 0,e._cancelAlgorithm=void 0,e._strategySizeAlgorithm=void 0}function dr(e){if(!mr(e))return;const t=e._controlledReadableStream;e._closeRequested=!0,0===e._queue.length&&(cr(e),Br(t))}function fr(e,t){if(!mr(e))return;const r=e._controlledReadableStream;if(Wr(r)&&G(r)>0)U(r,t,!1);else{let r;try{r=e._strategySizeAlgorithm(t)}catch(t){throw br(e,t),t}try{ve(e,t,r)}catch(t){throw br(e,t),t}}sr(e)}function br(e,t){const r=e._controlledReadableStream;\"readable\"===r._state&&(we(e),cr(e),kr(r,t))}function hr(e){const t=e._controlledReadableStream._state;return\"errored\"===t?null:\"closed\"===t?0:e._strategyHWM-e._queueTotalSize}function mr(e){const t=e._controlledReadableStream._state;return!e._closeRequested&&\"readable\"===t}function _r(e,t,r,o,n,a,i){t._controlledReadableStream=e,t._queue=void 0,t._queueTotalSize=void 0,we(t),t._started=!1,t._closeRequested=!1,t._pullAgain=!1,t._pulling=!1,t._strategySizeAlgorithm=i,t._strategyHWM=a,t._pullAlgorithm=o,t._cancelAlgorithm=n,e._readableStreamController=t;b(c(r()),(()=>(t._started=!0,sr(t),null)),(e=>(br(t,e),null)))}function pr(e){return new TypeError(`ReadableStreamDefaultController.prototype.${e} can only be used on a ReadableStreamDefaultController`)}function yr(e,t){return Te(e._readableStreamController)?function(e){let t,r,o,n,a,i=H(e),l=!1,s=!1,d=!1,f=!1,b=!1;const h=u((e=>{a=e}));function _(e){m(e._closedPromise,(t=>(e!==i||(Qe(o._readableStreamController,t),Qe(n._readableStreamController,t),f&&b||a(void 0)),null)))}function p(){nt(i)&&(W(i),i=H(e),_(i));K(i,{_chunkSteps:t=>{y((()=>{s=!1,d=!1;const r=t;let i=t;if(!f&&!b)try{i=Se(t)}catch(t){return Qe(o._readableStreamController,t),Qe(n._readableStreamController,t),void a(Or(e,t))}f||xe(o._readableStreamController,r),b||xe(n._readableStreamController,i),l=!1,s?g():d&&v()}))},_closeSteps:()=>{l=!1,f||Ye(o._readableStreamController),b||Ye(n._readableStreamController),o._readableStreamController._pendingPullIntos.length>0&&Ue(o._readableStreamController,0),n._readableStreamController._pendingPullIntos.length>0&&Ue(n._readableStreamController,0),f&&b||a(void 0)},_errorSteps:()=>{l=!1}})}function S(t,r){J(i)&&(W(i),i=et(e),_(i));const u=r?n:o,c=r?o:n;at(i,t,1,{_chunkSteps:t=>{y((()=>{s=!1,d=!1;const o=r?b:f;if(r?f:b)o||Ge(u._readableStreamController,t);else{let r;try{r=Se(t)}catch(t){return Qe(u._readableStreamController,t),Qe(c._readableStreamController,t),void a(Or(e,t))}o||Ge(u._readableStreamController,t),xe(c._readableStreamController,r)}l=!1,s?g():d&&v()}))},_closeSteps:e=>{l=!1;const t=r?b:f,o=r?f:b;t||Ye(u._readableStreamController),o||Ye(c._readableStreamController),void 0!==e&&(t||Ge(u._readableStreamController,e),!o&&c._readableStreamController._pendingPullIntos.length>0&&Ue(c._readableStreamController,0)),t&&o||a(void 0)},_errorSteps:()=>{l=!1}})}function g(){if(l)return s=!0,c(void 0);l=!0;const e=He(o._readableStreamController);return null===e?p():S(e._view,!1),c(void 0)}function v(){if(l)return d=!0,c(void 0);l=!0;const e=He(n._readableStreamController);return null===e?p():S(e._view,!0),c(void 0)}function w(o){if(f=!0,t=o,b){const o=ne([t,r]),n=Or(e,o);a(n)}return h}function R(o){if(b=!0,r=o,f){const o=ne([t,r]),n=Or(e,o);a(n)}return h}function T(){}return o=Pr(T,g,w),n=Pr(T,v,R),_(i),[o,n]}(e):function(e,t){const r=H(e);let o,n,a,i,l,s=!1,d=!1,f=!1,b=!1;const h=u((e=>{l=e}));function _(){if(s)return d=!0,c(void 0);s=!0;return K(r,{_chunkSteps:e=>{y((()=>{d=!1;const t=e,r=e;f||fr(a._readableStreamController,t),b||fr(i._readableStreamController,r),s=!1,d&&_()}))},_closeSteps:()=>{s=!1,f||dr(a._readableStreamController),b||dr(i._readableStreamController),f&&b||l(void 0)},_errorSteps:()=>{s=!1}}),c(void 0)}function p(t){if(f=!0,o=t,b){const t=ne([o,n]),r=Or(e,t);l(r)}return h}function S(t){if(b=!0,n=t,f){const t=ne([o,n]),r=Or(e,t);l(r)}return h}function g(){}return a=Cr(g,_,p),i=Cr(g,_,S),m(r._closedPromise,(e=>(br(a._readableStreamController,e),br(i._readableStreamController,e),f&&b||l(void 0),null))),[a,i]}(e)}function Sr(r){return t(o=r)&&void 0!==o.getReader?function(r){let o;function n(){let e;try{e=r.read()}catch(e){return d(e)}return _(e,(e=>{if(!t(e))throw new TypeError(\"The promise returned by the reader.read() method must fulfill with an object\");if(e.done)dr(o._readableStreamController);else{const t=e.value;fr(o._readableStreamController,t)}}))}function a(e){try{return c(r.cancel(e))}catch(e){return d(e)}}return o=Cr(e,n,a,0),o}(r.getReader()):function(r){let o;const n=fe(r,\"async\");function a(){let e;try{e=be(n)}catch(e){return d(e)}return _(c(e),(e=>{if(!t(e))throw new TypeError(\"The promise returned by the iterator.next() method must fulfill with an object\");if(e.done)dr(o._readableStreamController);else{const t=e.value;fr(o._readableStreamController,t)}}))}function i(e){const r=n.iterator;let o;try{o=ue(r,\"return\")}catch(e){return d(e)}if(void 0===o)return c(void 0);return _(g(o,r,[e]),(e=>{if(!t(e))throw new TypeError(\"The promise returned by the iterator.return() method must fulfill with an object\")}))}return o=Cr(e,a,i,0),o}(r);var o}function gr(e,t,r){return F(e,r),r=>g(e,t,[r])}function vr(e,t,r){return F(e,r),r=>g(e,t,[r])}function wr(e,t,r){return F(e,r),r=>S(e,t,[r])}function Rr(e,t){if(\"bytes\"!==(e=`${e}`))throw new TypeError(`${t} '${e}' is not a valid enumeration value for ReadableStreamType`);return e}function Tr(e,t){L(e,t);const r=null==e?void 0:e.preventAbort,o=null==e?void 0:e.preventCancel,n=null==e?void 0:e.preventClose,a=null==e?void 0:e.signal;return void 0!==a&&function(e,t){if(!function(e){if(\"object\"!=typeof e||null===e)return!1;try{return\"boolean\"==typeof e.aborted}catch(e){return!1}}(e))throw new TypeError(`${t} is not an AbortSignal.`)}(a,`${t} has member 'signal' that`),{preventAbort:Boolean(r),preventCancel:Boolean(o),preventClose:Boolean(n),signal:a}}Object.defineProperties(ReadableStreamDefaultController.prototype,{close:{enumerable:!0},enqueue:{enumerable:!0},error:{enumerable:!0},desiredSize:{enumerable:!0}}),o(ReadableStreamDefaultController.prototype.close,\"close\"),o(ReadableStreamDefaultController.prototype.enqueue,\"enqueue\"),o(ReadableStreamDefaultController.prototype.error,\"error\"),\"symbol\"==typeof Symbol.toStringTag&&Object.defineProperty(ReadableStreamDefaultController.prototype,Symbol.toStringTag,{value:\"ReadableStreamDefaultController\",configurable:!0});class ReadableStream{constructor(e={},t={}){void 0===e?e=null:I(e,\"First parameter\");const r=ct(t,\"Second parameter\"),o=function(e,t){L(e,t);const r=e,o=null==r?void 0:r.autoAllocateChunkSize,n=null==r?void 0:r.cancel,a=null==r?void 0:r.pull,i=null==r?void 0:r.start,l=null==r?void 0:r.type;return{autoAllocateChunkSize:void 0===o?void 0:Q(o,`${t} has member 'autoAllocateChunkSize' that`),cancel:void 0===n?void 0:gr(n,r,`${t} has member 'cancel' that`),pull:void 0===a?void 0:vr(a,r,`${t} has member 'pull' that`),start:void 0===i?void 0:wr(i,r,`${t} has member 'start' that`),type:void 0===l?void 0:Rr(l,`${t} has member 'type' that`)}}(e,\"First parameter\");if(qr(this),\"bytes\"===o.type){if(void 0!==r.size)throw new RangeError(\"The strategy for a byte stream cannot have a size function\");!function(e,t,r){const o=Object.create(ReadableByteStreamController.prototype);let n,a,i;n=void 0!==t.start?()=>t.start(o):()=>{},a=void 0!==t.pull?()=>t.pull(o):()=>c(void 0),i=void 0!==t.cancel?e=>t.cancel(e):()=>c(void 0);const l=t.autoAllocateChunkSize;if(0===l)throw new TypeError(\"autoAllocateChunkSize must be greater than 0\");Xe(e,o,n,a,i,r,l)}(this,o,st(r,0))}else{const e=ut(r);!function(e,t,r,o){const n=Object.create(ReadableStreamDefaultController.prototype);let a,i,l;a=void 0!==t.start?()=>t.start(n):()=>{},i=void 0!==t.pull?()=>t.pull(n):()=>c(void 0),l=void 0!==t.cancel?e=>t.cancel(e):()=>c(void 0),_r(e,n,a,i,l,r,o)}(this,o,st(r,1),e)}}get locked(){if(!Er(this))throw jr(\"locked\");return Wr(this)}cancel(e=void 0){return Er(this)?Wr(this)?d(new TypeError(\"Cannot cancel a stream that already has a reader\")):Or(this,e):d(jr(\"cancel\"))}getReader(e=void 0){if(!Er(this))throw jr(\"getReader\");return void 0===function(e,t){L(e,t);const r=null==e?void 0:e.mode;return{mode:void 0===r?void 0:Ze(r,`${t} has member 'mode' that`)}}(e,\"First parameter\").mode?H(this):et(this)}pipeThrough(e,t={}){if(!Er(this))throw jr(\"pipeThrough\");$(e,1,\"pipeThrough\");const r=function(e,t){L(e,t);const r=null==e?void 0:e.readable;M(r,\"readable\",\"ReadableWritablePair\"),N(r,`${t} has member 'readable' that`);const o=null==e?void 0:e.writable;return M(o,\"writable\",\"ReadableWritablePair\"),_t(o,`${t} has member 'writable' that`),{readable:r,writable:o}}(e,\"First parameter\"),o=Tr(t,\"Second parameter\");if(Wr(this))throw new TypeError(\"ReadableStream.prototype.pipeThrough cannot be used on a locked ReadableStream\");if(vt(r.writable))throw new TypeError(\"ReadableStream.prototype.pipeThrough cannot be used on a locked WritableStream\");return p(ir(this,r.writable,o.preventClose,o.preventAbort,o.preventCancel,o.signal)),r.readable}pipeTo(e,t={}){if(!Er(this))return d(jr(\"pipeTo\"));if(void 0===e)return d(\"Parameter 1 is required in 'pipeTo'.\");if(!gt(e))return d(new TypeError(\"ReadableStream.prototype.pipeTo's first argument must be a WritableStream\"));let r;try{r=Tr(t,\"Second parameter\")}catch(e){return d(e)}return Wr(this)?d(new TypeError(\"ReadableStream.prototype.pipeTo cannot be used on a locked ReadableStream\")):vt(e)?d(new TypeError(\"ReadableStream.prototype.pipeTo cannot be used on a locked WritableStream\")):ir(this,e,r.preventClose,r.preventAbort,r.preventCancel,r.signal)}tee(){if(!Er(this))throw jr(\"tee\");return ne(yr(this))}values(e=void 0){if(!Er(this))throw jr(\"values\");return function(e,t){const r=H(e),o=new he(r,t),n=Object.create(me);return n._asyncIteratorImpl=o,n}(this,function(e,t){L(e,t);const r=null==e?void 0:e.preventCancel;return{preventCancel:Boolean(r)}}(e,\"First parameter\").preventCancel)}[de](e){return this.values(e)}static from(e){return Sr(e)}}function Cr(e,t,r,o=1,n=(()=>1)){const a=Object.create(ReadableStream.prototype);qr(a);return _r(a,Object.create(ReadableStreamDefaultController.prototype),e,t,r,o,n),a}function Pr(e,t,r){const o=Object.create(ReadableStream.prototype);qr(o);return Xe(o,Object.create(ReadableByteStreamController.prototype),e,t,r,0,void 0),o}function qr(e){e._state=\"readable\",e._reader=void 0,e._storedError=void 0,e._disturbed=!1}function Er(e){return!!t(e)&&(!!Object.prototype.hasOwnProperty.call(e,\"_readableStreamController\")&&e instanceof ReadableStream)}function Wr(e){return void 0!==e._reader}function Or(t,r){if(t._disturbed=!0,\"closed\"===t._state)return c(void 0);if(\"errored\"===t._state)return d(t._storedError);Br(t);const o=t._reader;if(void 0!==o&&nt(o)){const e=o._readIntoRequests;o._readIntoRequests=new v,e.forEach((e=>{e._closeSteps(void 0)}))}return _(t._readableStreamController[T](r),e)}function Br(e){e._state=\"closed\";const t=e._reader;if(void 0!==t&&(A(t),J(t))){const e=t._readRequests;t._readRequests=new v,e.forEach((e=>{e._closeSteps()}))}}function kr(e,t){e._state=\"errored\",e._storedError=t;const r=e._reader;void 0!==r&&(j(r,t),J(r)?Z(r,t):it(r,t))}function jr(e){return new TypeError(`ReadableStream.prototype.${e} can only be used on a ReadableStream`)}function Ar(e,t){L(e,t);const r=null==e?void 0:e.highWaterMark;return M(r,\"highWaterMark\",\"QueuingStrategyInit\"),{highWaterMark:Y(r)}}Object.defineProperties(ReadableStream,{from:{enumerable:!0}}),Object.defineProperties(ReadableStream.prototype,{cancel:{enumerable:!0},getReader:{enumerable:!0},pipeThrough:{enumerable:!0},pipeTo:{enumerable:!0},tee:{enumerable:!0},values:{enumerable:!0},locked:{enumerable:!0}}),o(ReadableStream.from,\"from\"),o(ReadableStream.prototype.cancel,\"cancel\"),o(ReadableStream.prototype.getReader,\"getReader\"),o(ReadableStream.prototype.pipeThrough,\"pipeThrough\"),o(ReadableStream.prototype.pipeTo,\"pipeTo\"),o(ReadableStream.prototype.tee,\"tee\"),o(ReadableStream.prototype.values,\"values\"),\"symbol\"==typeof Symbol.toStringTag&&Object.defineProperty(ReadableStream.prototype,Symbol.toStringTag,{value:\"ReadableStream\",configurable:!0}),Object.defineProperty(ReadableStream.prototype,de,{value:ReadableStream.prototype.values,writable:!0,configurable:!0});const zr=e=>e.byteLength;o(zr,\"size\");class ByteLengthQueuingStrategy{constructor(e){$(e,1,\"ByteLengthQueuingStrategy\"),e=Ar(e,\"First parameter\"),this._byteLengthQueuingStrategyHighWaterMark=e.highWaterMark}get highWaterMark(){if(!Lr(this))throw Dr(\"highWaterMark\");return this._byteLengthQueuingStrategyHighWaterMark}get size(){if(!Lr(this))throw Dr(\"size\");return zr}}function Dr(e){return new TypeError(`ByteLengthQueuingStrategy.prototype.${e} can only be used on a ByteLengthQueuingStrategy`)}function Lr(e){return!!t(e)&&(!!Object.prototype.hasOwnProperty.call(e,\"_byteLengthQueuingStrategyHighWaterMark\")&&e instanceof ByteLengthQueuingStrategy)}Object.defineProperties(ByteLengthQueuingStrategy.prototype,{highWaterMark:{enumerable:!0},size:{enumerable:!0}}),\"symbol\"==typeof Symbol.toStringTag&&Object.defineProperty(ByteLengthQueuingStrategy.prototype,Symbol.toStringTag,{value:\"ByteLengthQueuingStrategy\",configurable:!0});const Fr=()=>1;o(Fr,\"size\");class CountQueuingStrategy{constructor(e){$(e,1,\"CountQueuingStrategy\"),e=Ar(e,\"First parameter\"),this._countQueuingStrategyHighWaterMark=e.highWaterMark}get highWaterMark(){if(!$r(this))throw Ir(\"highWaterMark\");return this._countQueuingStrategyHighWaterMark}get size(){if(!$r(this))throw Ir(\"size\");return Fr}}function Ir(e){return new TypeError(`CountQueuingStrategy.prototype.${e} can only be used on a CountQueuingStrategy`)}function $r(e){return!!t(e)&&(!!Object.prototype.hasOwnProperty.call(e,\"_countQueuingStrategyHighWaterMark\")&&e instanceof CountQueuingStrategy)}function Mr(e,t,r){return F(e,r),r=>g(e,t,[r])}function Yr(e,t,r){return F(e,r),r=>S(e,t,[r])}function xr(e,t,r){return F(e,r),(r,o)=>g(e,t,[r,o])}function Qr(e,t,r){return F(e,r),r=>g(e,t,[r])}Object.defineProperties(CountQueuingStrategy.prototype,{highWaterMark:{enumerable:!0},size:{enumerable:!0}}),\"symbol\"==typeof Symbol.toStringTag&&Object.defineProperty(CountQueuingStrategy.prototype,Symbol.toStringTag,{value:\"CountQueuingStrategy\",configurable:!0});class TransformStream{constructor(e={},t={},r={}){void 0===e&&(e=null);const o=ct(t,\"Second parameter\"),n=ct(r,\"Third parameter\"),a=function(e,t){L(e,t);const r=null==e?void 0:e.cancel,o=null==e?void 0:e.flush,n=null==e?void 0:e.readableType,a=null==e?void 0:e.start,i=null==e?void 0:e.transform,l=null==e?void 0:e.writableType;return{cancel:void 0===r?void 0:Qr(r,e,`${t} has member 'cancel' that`),flush:void 0===o?void 0:Mr(o,e,`${t} has member 'flush' that`),readableType:n,start:void 0===a?void 0:Yr(a,e,`${t} has member 'start' that`),transform:void 0===i?void 0:xr(i,e,`${t} has member 'transform' that`),writableType:l}}(e,\"First parameter\");if(void 0!==a.readableType)throw new RangeError(\"Invalid readableType specified\");if(void 0!==a.writableType)throw new RangeError(\"Invalid writableType specified\");const i=st(n,0),l=ut(n),s=st(o,1),f=ut(o);let h;!function(e,t,r,o,n,a){function i(){return t}function l(t){return function(e,t){const r=e._transformStreamController;if(e._backpressure){return _(e._backpressureChangePromise,(()=>{const o=e._writable;if(\"erroring\"===o._state)throw o._storedError;return Zr(r,t)}))}return Zr(r,t)}(e,t)}function s(t){return function(e,t){const r=e._transformStreamController;if(void 0!==r._finishPromise)return r._finishPromise;const o=e._readable;r._finishPromise=u(((e,t)=>{r._finishPromise_resolve=e,r._finishPromise_reject=t}));const n=r._cancelAlgorithm(t);return Jr(r),b(n,(()=>(\"errored\"===o._state?ro(r,o._storedError):(br(o._readableStreamController,t),to(r)),null)),(e=>(br(o._readableStreamController,e),ro(r,e),null))),r._finishPromise}(e,t)}function c(){return function(e){const t=e._transformStreamController;if(void 0!==t._finishPromise)return t._finishPromise;const r=e._readable;t._finishPromise=u(((e,r)=>{t._finishPromise_resolve=e,t._finishPromise_reject=r}));const o=t._flushAlgorithm();return Jr(t),b(o,(()=>(\"errored\"===r._state?ro(t,r._storedError):(dr(r._readableStreamController),to(t)),null)),(e=>(br(r._readableStreamController,e),ro(t,e),null))),t._finishPromise}(e)}function d(){return function(e){return Gr(e,!1),e._backpressureChangePromise}(e)}function f(t){return function(e,t){const r=e._transformStreamController;if(void 0!==r._finishPromise)return r._finishPromise;const o=e._writable;r._finishPromise=u(((e,t)=>{r._finishPromise_resolve=e,r._finishPromise_reject=t}));const n=r._cancelAlgorithm(t);return Jr(r),b(n,(()=>(\"errored\"===o._state?ro(r,o._storedError):(Yt(o._writableStreamController,t),Ur(e),to(r)),null)),(t=>(Yt(o._writableStreamController,t),Ur(e),ro(r,t),null))),r._finishPromise}(e,t)}e._writable=function(e,t,r,o,n=1,a=(()=>1)){const i=Object.create(WritableStream.prototype);return St(i),Ft(i,Object.create(WritableStreamDefaultController.prototype),e,t,r,o,n,a),i}(i,l,c,s,r,o),e._readable=Cr(i,d,f,n,a),e._backpressure=void 0,e._backpressureChangePromise=void 0,e._backpressureChangePromise_resolve=void 0,Gr(e,!0),e._transformStreamController=void 0}(this,u((e=>{h=e})),s,f,i,l),function(e,t){const r=Object.create(TransformStreamDefaultController.prototype);let o,n,a;o=void 0!==t.transform?e=>t.transform(e,r):e=>{try{return Kr(r,e),c(void 0)}catch(e){return d(e)}};n=void 0!==t.flush?()=>t.flush(r):()=>c(void 0);a=void 0!==t.cancel?e=>t.cancel(e):()=>c(void 0);!function(e,t,r,o,n){t._controlledTransformStream=e,e._transformStreamController=t,t._transformAlgorithm=r,t._flushAlgorithm=o,t._cancelAlgorithm=n,t._finishPromise=void 0,t._finishPromise_resolve=void 0,t._finishPromise_reject=void 0}(e,r,o,n,a)}(this,a),void 0!==a.start?h(a.start(this._transformStreamController)):h(void 0)}get readable(){if(!Nr(this))throw oo(\"readable\");return this._readable}get writable(){if(!Nr(this))throw oo(\"writable\");return this._writable}}function Nr(e){return!!t(e)&&(!!Object.prototype.hasOwnProperty.call(e,\"_transformStreamController\")&&e instanceof TransformStream)}function Hr(e,t){br(e._readable._readableStreamController,t),Vr(e,t)}function Vr(e,t){Jr(e._transformStreamController),Yt(e._writable._writableStreamController,t),Ur(e)}function Ur(e){e._backpressure&&Gr(e,!1)}function Gr(e,t){void 0!==e._backpressureChangePromise&&e._backpressureChangePromise_resolve(),e._backpressureChangePromise=u((t=>{e._backpressureChangePromise_resolve=t})),e._backpressure=t}Object.defineProperties(TransformStream.prototype,{readable:{enumerable:!0},writable:{enumerable:!0}}),\"symbol\"==typeof Symbol.toStringTag&&Object.defineProperty(TransformStream.prototype,Symbol.toStringTag,{value:\"TransformStream\",configurable:!0});class TransformStreamDefaultController{constructor(){throw new TypeError(\"Illegal constructor\")}get desiredSize(){if(!Xr(this))throw eo(\"desiredSize\");return hr(this._controlledTransformStream._readable._readableStreamController)}enqueue(e=void 0){if(!Xr(this))throw eo(\"enqueue\");Kr(this,e)}error(e=void 0){if(!Xr(this))throw eo(\"error\");var t;t=e,Hr(this._controlledTransformStream,t)}terminate(){if(!Xr(this))throw eo(\"terminate\");!function(e){const t=e._controlledTransformStream;dr(t._readable._readableStreamController);const r=new TypeError(\"TransformStream terminated\");Vr(t,r)}(this)}}function Xr(e){return!!t(e)&&(!!Object.prototype.hasOwnProperty.call(e,\"_controlledTransformStream\")&&e instanceof TransformStreamDefaultController)}function Jr(e){e._transformAlgorithm=void 0,e._flushAlgorithm=void 0,e._cancelAlgorithm=void 0}function Kr(e,t){const r=e._controlledTransformStream,o=r._readable._readableStreamController;if(!mr(o))throw new TypeError(\"Readable side is not in a state that permits enqueue\");try{fr(o,t)}catch(e){throw Vr(r,e),r._readable._storedError}const n=function(e){return!ur(e)}(o);n!==r._backpressure&&Gr(r,!0)}function Zr(e,t){return _(e._transformAlgorithm(t),void 0,(t=>{throw Hr(e._controlledTransformStream,t),t}))}function eo(e){return new TypeError(`TransformStreamDefaultController.prototype.${e} can only be used on a TransformStreamDefaultController`)}function to(e){void 0!==e._finishPromise_resolve&&(e._finishPromise_resolve(),e._finishPromise_resolve=void 0,e._finishPromise_reject=void 0)}function ro(e,t){void 0!==e._finishPromise_reject&&(p(e._finishPromise),e._finishPromise_reject(t),e._finishPromise_resolve=void 0,e._finishPromise_reject=void 0)}function oo(e){return new TypeError(`TransformStream.prototype.${e} can only be used on a TransformStream`)}Object.defineProperties(TransformStreamDefaultController.prototype,{enqueue:{enumerable:!0},error:{enumerable:!0},terminate:{enumerable:!0},desiredSize:{enumerable:!0}}),o(TransformStreamDefaultController.prototype.enqueue,\"enqueue\"),o(TransformStreamDefaultController.prototype.error,\"error\"),o(TransformStreamDefaultController.prototype.terminate,\"terminate\"),\"symbol\"==typeof Symbol.toStringTag&&Object.defineProperty(TransformStreamDefaultController.prototype,Symbol.toStringTag,{value:\"TransformStreamDefaultController\",configurable:!0});export{ByteLengthQueuingStrategy,CountQueuingStrategy,ReadableByteStreamController,ReadableStream,ReadableStreamBYOBReader,ReadableStreamBYOBRequest,ReadableStreamDefaultController,ReadableStreamDefaultReader,TransformStream,TransformStreamDefaultController,WritableStream,WritableStreamDefaultController,WritableStreamDefaultWriter};\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright vis.gl contributors\n\nimport {ReadableStream as WSPReadableStream} from 'web-streams-polyfill';\n\n// @ts-ignore\nexport class ReadableStreamPolyfill extends WSPReadableStream implements ReadableStream {}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright vis.gl contributors\n\n/**\n * Forked from @gozala's web-blob under MIT license\n * @see https://github.com/Gozala/web-blob\n */\nexport class BlobStreamController {\n private chunks: Iterator;\n private isWorking: boolean = false;\n private isCancelled: boolean = false;\n\n /**\n * @param chunks\n */\n constructor(chunks: Iterator) {\n this.chunks = chunks;\n }\n\n /**\n * @param controller\n */\n start(controller: ReadableStreamDefaultController) {\n this.work(controller); // eslint-disable-line @typescript-eslint/no-floating-promises\n }\n\n /**\n *\n * @param controller\n */\n async work(controller: ReadableStreamDefaultController) {\n const {chunks} = this;\n\n this.isWorking = true;\n while (!this.isCancelled && (controller.desiredSize || 0) > 0) {\n let next: {done?: boolean; value?: Uint8Array} | undefined;\n try {\n next = chunks.next();\n } catch (error) {\n controller.error(error);\n break;\n }\n\n if (next) {\n if (!next.done && !this.isCancelled) {\n controller.enqueue(next.value);\n } else {\n controller.close();\n }\n }\n }\n\n this.isWorking = false;\n }\n\n /**\n *\n * @param {ReadableStreamDefaultController} controller\n */\n pull(controller) {\n if (!this.isWorking) {\n this.work(controller); // eslint-disable-line @typescript-eslint/no-floating-promises\n }\n }\n cancel() {\n this.isCancelled = true;\n }\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright vis.gl contributors\n\n/**\n * Forked from @gozala's web-blob under MIT license\n * @see https://github.com/Gozala/web-blob\n */\nimport {ReadableStreamPolyfill} from './readable-stream';\nimport {BlobStreamController} from './blob-stream-controller';\n\n/**\n * Blob stream is a `ReadableStream` extension optimized to have minimal\n * overhead when consumed as `AsyncIterable`.\n * extends {ReadableStream}\n * implements {AsyncIterable}\n */\n// @ts-ignore\nexport class BlobStream extends ReadableStreamPolyfill {\n private readonly _chunks: Uint8Array[];\n /**\n * @param chunks\n */\n constructor(chunks) {\n // @ts-ignore\n super(new BlobStreamController(chunks.values()), {type: 'bytes'});\n /** @private */\n this._chunks = chunks;\n }\n\n /**\n * @property [_options.preventCancel]\n */\n // @ts-ignore\n async *[Symbol.asyncIterator](_options?: {preventCancel?: boolean}): AsyncIterable {\n const reader = this.getReader();\n yield* this._chunks;\n reader.releaseLock();\n }\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright vis.gl contributors\n\n// Forked from @gozala's web-blob under MIT license https://github.com/Gozala/web-blob\nimport {BlobStream} from './blob-stream';\n\n/**\n * Forked from @gozala's web-blob under MIT license\n * @see https://github.com/Gozala/web-blob\n */\nexport class BlobPolyfill {\n // implements Blob {\n /** The MIME type of the data contained in the Blob. If type is unknown, string is empty. */\n readonly type: string;\n /** The size, in bytes, of the data contained in the Blob object. */\n size: number;\n private parts: Uint8Array[];\n /**\n * @param [init]\n * @param [options]\n */\n constructor(init: BlobPart[] = [], options: BlobPropertyBag = {}) {\n this.parts = [];\n\n this.size = 0;\n for (const part of init) {\n if (typeof part === 'string') {\n const bytes = new TextEncoder().encode(part);\n this.parts.push(bytes);\n this.size += bytes.byteLength;\n } else if (part instanceof BlobPolyfill) {\n this.size += part.size;\n // @ts-ignore - `parts` is marked private so TS will complain about\n // accessing it.\n this.parts.push(...part.parts);\n } else if (part instanceof ArrayBuffer) {\n this.parts.push(new Uint8Array(part));\n this.size += part.byteLength;\n } else if (part instanceof Uint8Array) {\n this.parts.push(part);\n this.size += part.byteLength;\n } else if (ArrayBuffer.isView(part)) {\n const {buffer, byteOffset, byteLength} = part;\n this.parts.push(new Uint8Array(buffer, byteOffset, byteLength));\n this.size += byteLength;\n } else {\n const bytes = new TextEncoder().encode(String(part));\n this.parts.push(bytes);\n this.size += bytes.byteLength;\n }\n }\n\n /** @private */\n this.type = readType(options.type);\n }\n\n /**\n * Returns a new Blob object containing the data in the specified range of\n * bytes of the blob on which it's called.\n * @param start=0 - An index into the Blob indicating the first\n * byte to include in the new Blob. If you specify a negative value, it's\n * treated as an offset from the end of the Blob toward the beginning. For\n * example, `-10` would be the 10th from last byte in the Blob. The default\n * value is `0`. If you specify a value for start that is larger than the\n * size of the source Blob, the returned Blob has size 0 and contains no\n * data.\n * @param end - An index into the `Blob` indicating the first byte\n * that will *not* be included in the new `Blob` (i.e. the byte exactly at\n * this index is not included). If you specify a negative value, it's treated\n * as an offset from the end of the Blob toward the beginning. For example,\n * `-10` would be the 10th from last byte in the `Blob`. The default value is\n * size.\n * @param type - The content type to assign to the new Blob;\n * this will be the value of its type property. The default value is an empty\n * string.\n */\n slice(start: number = 0, end: number = this.size, type: string = ''): Blob {\n const {size, parts: parts} = this;\n let offset = start < 0 ? Math.max(size + start, 0) : Math.min(start, size);\n\n let limit = end < 0 ? Math.max(size + end, 0) : Math.min(end, size);\n const span = Math.max(limit - offset, 0);\n const blob = new BlobPolyfill([], {type});\n\n if (span === 0) {\n // @ts-ignore\n return blob;\n }\n\n let blobSize = 0;\n const blobParts: Uint8Array[] = [];\n for (const part of parts) {\n const {byteLength} = part;\n if (offset > 0 && byteLength <= offset) {\n offset -= byteLength;\n limit -= byteLength;\n } else {\n const chunk = part.subarray(offset, Math.min(byteLength, limit));\n blobParts.push(chunk);\n blobSize += chunk.byteLength;\n // no longer need to take that into account\n offset = 0;\n\n // don't add the overflow to new blobParts\n if (blobSize >= span) {\n break;\n }\n }\n }\n\n blob.parts = blobParts;\n blob.size = blobSize;\n\n // @ts-ignore\n return blob;\n }\n\n /**\n * Returns a promise that resolves with an ArrayBuffer containing the entire\n * contents of the Blob as binary data.\n */\n // eslint-disable-next-line require-await\n async arrayBuffer(): Promise {\n return this._toArrayBuffer();\n }\n\n /**\n * Returns a promise that resolves with a USVString containing the entire\n * contents of the Blob interpreted as UTF-8 text.\n */\n // eslint-disable-next-line require-await\n async text(): Promise {\n const decoder = new TextDecoder();\n let text = '';\n for (const part of this.parts) {\n text += decoder.decode(part);\n }\n return text;\n }\n\n /**\n */\n // @ts-ignore\n stream(): BlobStream {\n return new BlobStream(this.parts);\n }\n\n /**\n * @returns {string}\n */\n toString() {\n return '[object Blob]';\n }\n\n get [Symbol.toStringTag]() {\n return 'Blob';\n }\n\n _toArrayBuffer(): ArrayBuffer {\n const buffer = new ArrayBuffer(this.size);\n const bytes = new Uint8Array(buffer);\n let offset = 0;\n for (const part of this.parts) {\n bytes.set(part, offset);\n offset += part.byteLength;\n }\n return buffer;\n }\n}\n\n/**\n */\nfunction readType(input: string = ''): string {\n const type = String(input).toLowerCase();\n return /[^\\u0020-\\u007E]/.test(type) ? '' : type;\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright vis.gl contributors\n\n// import {ReadableStreamPolyfill} from './readable-stream';\nimport {BlobPolyfill} from './blob';\n\nexport function instalBlobPolyfills() {\n if (typeof Blob === 'undefined' && !globalThis.Blob) {\n // @ts-ignore;\n globalThis.Blob = BlobPolyfill;\n }\n\n return globalThis.Blob;\n}\n\nexport const Blob_ = instalBlobPolyfills();\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright vis.gl contributors\n\nimport {atob} from '../buffer/btoa.node';\n\nexport class FileReaderPolyfill implements FileReader {\n // onload: ({result: any}) => void;\n onload;\n onabort;\n onerror;\n error;\n onloadstart;\n onloadend;\n onprogress;\n\n readyState;\n result;\n DONE;\n EMPTY;\n LOADING;\n addEventListener;\n removeEventListener;\n dispatchEvent;\n\n constructor() {\n this.onload = null;\n }\n\n abort(): void {\n return;\n }\n\n async readAsArrayBuffer(blob: Blob): Promise {\n const arrayBuffer = await blob.arrayBuffer();\n if (this.onload) {\n this.onload({target: {result: arrayBuffer}});\n }\n }\n\n async readAsBinaryString(blob) {\n throw Error('Not implemented');\n }\n\n async readAsDataURL(blob) {\n const text = await blob.text();\n const dataUrl = `data://;base64,${atob(text)}`;\n if (this.onload) {\n this.onload({target: {result: dataUrl}});\n }\n }\n\n async readAsText(blob) {\n const text = await blob.text();\n if (this.onload) {\n this.onload({target: {result: text}});\n }\n }\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright vis.gl contributors\n\n// Forked from @gozala's web-file under MIT license https://github.com/Gozala/web-file\n\n/**\n * Forked from @gozala's web-file under MIT license\n * @see https://github.com/Gozala/web-file\n */\n// @ts-ignore\nexport class FilePolyfill extends globalThis.Blob {\n // implements File {\n // public API\n /** The name of the file referenced by the File object. */\n name: string = '';\n /** The path the URL of the File is relative to. */\n webkitRelativePath: string = '';\n\n /**\n * Returns the last modified time of the file, in millisecond since the UNIX\n * epoch (January 1st, 1970 at Midnight).\n */\n lastModified: number;\n\n /**\n * @param init\n * @param name - A USVString representing the file name or the path\n * to the file.\n * @param [options]\n */\n constructor(init: BlobPart[], name: string, options: FilePropertyBag = {}) {\n super(init, options);\n // Per File API spec https://w3c.github.io/FileAPI/#file-constructor\n // Every \"/\" character of file name must be replaced with a \":\".\n /** @private */\n this.name = String(name).replace(/\\//g, ':');\n /** @private */\n this.lastModified = options?.lastModified || Date.now();\n }\n\n get [Symbol.toStringTag]() {\n return 'File';\n }\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright vis.gl contributors\n\n// import {ReadableStreamPolyfill} from './readable-stream';\nimport {FileReaderPolyfill} from './file-reader';\nimport {FilePolyfill} from './file';\n\nexport function installFilePolyfills() {\n if (typeof FileReader === 'undefined' && !globalThis.FileReader) {\n // @ts-ignore;\n globalThis.FileReader = FileReaderPolyfill;\n }\n\n // Install minimal Node.js File polyfill\n if (typeof File === 'undefined' && !globalThis.File) {\n // @ts-ignore;\n globalThis.File = FilePolyfill;\n }\n\n return global;\n}\n\nexport const File_ = installFilePolyfills();\n", "// Fork of https://github.com/floatdrop/require-from-string/blob/master/index.js\n// Copyright (c) Vsevolod Strukchinsky (github.com/floatdrop)\n// MIT license\n\n// this file is not visible to webpack (it is excluded in the package.json \"browser\" field).\n\nimport Module from 'module';\nimport path from 'path';\nimport fs from 'fs';\n\n/**\n * Load a file from local file system\n * @param filename\n * @returns\n */\nexport async function readFileAsArrayBuffer(filename: string): Promise {\n if (filename.startsWith('http')) {\n const response = await fetch(filename);\n return await response.arrayBuffer();\n }\n const buffer = fs.readFileSync(filename);\n return buffer.buffer;\n}\n\n/**\n * Load a file from local file system\n * @param filename\n * @returns\n */\nexport async function readFileAsText(filename: string): Promise {\n if (filename.startsWith('http')) {\n const response = await fetch(filename);\n return await response.text();\n }\n const text = fs.readFileSync(filename, 'utf8');\n return text;\n}\n\n// Node.js Dynamically require from file\n// Relative names are resolved relative to cwd\n// This indirect function is provided because webpack will try to bundle `module.require`.\n// this file is not visible to webpack (it is excluded in the package.json \"browser\" field).\nexport async function requireFromFile(filename: string): Promise {\n if (filename.startsWith('http')) {\n const response = await fetch(filename);\n const code = await response.text();\n return requireFromString(code);\n }\n\n if (!filename.startsWith('/')) {\n filename = `${process.cwd()}/${filename}`;\n }\n const code = fs.readFileSync(filename, 'utf8');\n return requireFromString(code);\n}\n\n// Dynamically require from string\n// - `code` - Required - Type: string - Module code.\n// - `filename` - Type: string - Default: '' - Optional filename.\n// - `options.appendPaths` Type: Array List of paths, that will be appended to module paths.\n// Useful, when you want to be able require modules from these paths.\n// - `options.prependPaths` Type: Array Same as appendPaths, but paths will be prepended.\nexport function requireFromString(\n code: string,\n filename = '',\n options?: {\n prependPaths?: string[];\n appendPaths?: string[];\n }\n): any {\n if (typeof filename === 'object') {\n options = filename;\n filename = '';\n }\n filename = filename.replace('file://', '');\n\n if (typeof code !== 'string') {\n throw new Error(`code must be a string, not ${typeof code}`);\n }\n\n // @ts-ignore\n const paths = Module._nodeModulePaths(path.dirname(filename));\n\n const parent = typeof module !== 'undefined' && module?.parent;\n\n // @ts-ignore\n const newModule = new Module(filename, parent);\n newModule.filename = filename;\n newModule.paths = ([] as string[])\n .concat(options?.prependPaths || [])\n .concat(paths)\n .concat(options?.appendPaths || []);\n // @ts-ignore\n newModule._compile(code, filename);\n\n if (parent && parent.children) {\n parent.children.splice(parent.children.indexOf(newModule), 1);\n }\n\n return newModule.exports;\n}\n", "/**\n * Polyfill for Browser Headers\n * Based on https://github.com/github/fetch under MIT license\n */\nexport class Headers {\n map: {};\n\n constructor(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach((value, name) => this.append(name, value));\n } else if (Array.isArray(headers)) {\n headers.forEach((header) => this.append(header[0], header[1]));\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach((name) => this.append(name, headers[name]));\n }\n }\n\n append(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n const oldValue = this.map[name];\n this.map[name] = oldValue ? `${oldValue}, ${value}` : value;\n }\n\n delete(name) {\n delete this.map[normalizeName(name)];\n }\n\n get(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null;\n }\n\n has(name) {\n return this.map.hasOwnProperty(normalizeName(name));\n }\n\n set(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n }\n\n forEach(visitor, thisArg = null) {\n for (const name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n if (thisArg) {\n visitor.call(thisArg, this.map[name], name, this);\n } else {\n visitor(this.map[name], name, this);\n }\n }\n }\n }\n\n keys() {\n const items: any[] = [];\n this.forEach(function (value, name) {\n items.push(name);\n });\n return iteratorFor(items);\n }\n\n values() {\n const items: any[] = [];\n this.forEach(function (value) {\n items.push(value);\n });\n return iteratorFor(items);\n }\n\n entries() {\n const items: any[] = [];\n this.forEach(function (value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items);\n }\n\n *[Symbol.iterator]() {\n // @ts-ignore must have a '[Symbol.iterator]()' method that returns an iterator.\n yield* this.entries();\n }\n}\n\nfunction normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(name) || name === '') {\n throw new TypeError('Invalid character in header field name');\n }\n return name.toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value;\n}\n\n// Build a destructive iterator for the value list\nfunction iteratorFor(items) {\n const iterator = {\n next() {\n const value = items.shift();\n return {done: value === undefined, value};\n }\n };\n\n iterator[Symbol.iterator] = function () {\n return iterator;\n };\n\n return iterator;\n}\n", "export function assert(condition: any, message?: string): void {\n if (!condition) {\n throw new Error(`@loaders.gl/polyfills assertion ${message}`);\n }\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {assert} from '../utils/assert';\nimport {decompressReadStream, concatenateReadStream} from '../filesystems/stream-utils.node';\nimport {Headers} from './headers-polyfill';\n\nconst isBoolean = (x) => typeof x === 'boolean';\nconst isFunction = (x) => typeof x === 'function';\nconst isObject = (x) => x !== null && typeof x === 'object';\nconst isReadableNodeStream = (x) =>\n isObject(x) && isFunction(x.read) && isFunction(x.pipe) && isBoolean(x.readable);\n\n/**\n * Polyfill for Browser Response\n *\n * Under Node.js we return a mock \"fetch response object\"\n * so that apps can use the same API as in the browser.\n *\n * Note: This is intended to be a \"lightweight\" implementation and will have limitations.\n *\n * See https://developer.mozilla.org/en-US/docs/Web/API/Response\n */\nimport * as stream from 'stream';\n\nexport class Response {\n readonly ok: boolean;\n readonly status: number;\n readonly statusText: string;\n readonly headers: Headers;\n readonly url: string;\n bodyUsed: boolean = false;\n private readonly _body;\n\n // TODO - handle ArrayBuffer, ArrayBufferView, Buffer\n constructor(\n body,\n options: {\n headers?;\n status?: number;\n statusText?: string;\n url: string;\n }\n ) {\n const {headers, status = 200, statusText = 'OK', url} = options || {};\n\n this.url = url;\n this.ok = status === 200;\n this.status = status; // TODO - handle errors and set status\n this.statusText = statusText;\n this.headers = new Headers(options?.headers || {});\n\n // Check for content-encoding and create a decompression stream\n if (isReadableNodeStream(body)) {\n this._body = decompressReadStream(body, headers);\n } else if (typeof body === 'string') {\n // @ts-expect-error\n this._body = stream.Readable.from([new TextEncoder().encode(body)]);\n } else {\n // @ts-expect-error\n this._body = stream.Readable.from([body || new ArrayBuffer(0)]);\n }\n }\n\n // Subset of Properties\n\n // Returns a readable stream to the \"body\" of the response (or file)\n get body() {\n assert(!this.bodyUsed);\n assert(isReadableNodeStream(this._body)); // Not implemented: conversion of ArrayBuffer etc to stream\n this.bodyUsed = true;\n return this._body;\n }\n\n // Subset of Methods\n\n async arrayBuffer() {\n if (!isReadableNodeStream(this._body)) {\n return this._body || new ArrayBuffer(0);\n }\n const data = await concatenateReadStream(this._body);\n return data;\n }\n\n async text() {\n const arrayBuffer = await this.arrayBuffer();\n const textDecoder = new TextDecoder();\n return textDecoder.decode(arrayBuffer);\n }\n\n async json() {\n const text = await this.text();\n return JSON.parse(text);\n }\n\n async blob() {\n if (typeof Blob === 'undefined') {\n throw new Error('Blob polyfill not installed');\n }\n return new Blob([await this.arrayBuffer()]);\n }\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport http from 'http';\nimport https from 'https';\nimport {Response} from './response-polyfill';\nimport {Headers} from './headers-polyfill';\nimport {decodeDataUri} from './decode-data-uri';\n\nconst isDataURL = (url: string): boolean => url.startsWith('data:');\nconst isRequestURL = (url: string): boolean => url.startsWith('http:') || url.startsWith('https:');\n\n/**\n * Emulation of Browser fetch for Node.js\n * @param url\n * @param options\n */\n// eslint-disable-next-line complexity\nexport async function fetchNode(url: string, options: RequestInit): Promise {\n try {\n // Handle file streams in node\n // @ts-expect-error\n if (globalThis.fetch !== fetchNode && (isRequestURL(url) || isDataURL(url))) {\n // @ts-expect-error\n return await fetch(url, options);\n }\n\n // Handle data urls in node, to match `fetch``\n // Note - this loses the MIME type, data URIs are handled directly in fetch\n if (isDataURL(url)) {\n const {arrayBuffer, mimeType} = decodeDataUri(url);\n const response = new Response(arrayBuffer, {\n headers: {'content-type': mimeType},\n url\n });\n return response;\n }\n\n // Automatically decompress gzipped files with .gz extension\n const syntheticResponseHeaders = {};\n const originalUrl = url;\n if (url.endsWith('.gz')) {\n url = url.slice(0, -3);\n syntheticResponseHeaders['content-encoding'] = 'gzip';\n }\n\n // Need to create the stream in advance since Response constructor needs to be sync\n const body = await createHTTPRequestReadStream(originalUrl, options);\n const headers = getHeaders(url, body, syntheticResponseHeaders);\n const {status, statusText} = getStatus(body);\n\n const followRedirect =\n // @ts-expect-error\n !options || options.followRedirect || options.followRedirect === undefined;\n\n if (status >= 300 && status < 400 && headers.has('location') && followRedirect) {\n const redirectUrl = generateRedirectUrl(url, headers.get('location'));\n\n // Redirect\n return await fetchNode(redirectUrl, options);\n }\n return new Response(body, {headers, status, statusText, url});\n } catch (error) {\n // TODO - what error code to use here?\n return new Response(null, {status: 400, statusText: String(error), url});\n }\n}\n\n/** Returns a promise that resolves to a readable stream */\nexport async function createHTTPRequestReadStream(\n url: string,\n options\n): Promise {\n // HANDLE HTTP/HTTPS REQUESTS IN NODE\n // TODO: THIS IS BAD SINCE WE RETURN A PROMISE INSTEAD OF A STREAM\n return await new Promise((resolve, reject) => {\n const requestOptions = getRequestOptions(url, options);\n const req = url.startsWith('https:')\n ? https.request(requestOptions, (res) => resolve(res))\n : http.request(requestOptions, (res) => resolve(res));\n req.on('error', (error) => reject(error));\n req.end();\n });\n}\n\n/**\n * Generate redirect url from location without origin and protocol.\n * @param originalUrl\n * @param redirectUrl\n */\nfunction generateRedirectUrl(originalUrl: string, location: string): string {\n if (location.startsWith('http')) {\n return location;\n }\n // If url doesn't have origin and protocol just extend current url origin with location.\n const url = new URL(originalUrl);\n url.pathname = location;\n\n return url.href;\n}\n\n// HELPER FUNCTIONS\n\nfunction getRequestOptions(url: string, options?: {fetch?: typeof fetch; headers?}) {\n // Ensure header keys are lower case so that we can merge without duplicates\n const originalHeaders = options?.headers || {};\n const headers = {};\n for (const key of Object.keys(originalHeaders)) {\n headers[key.toLowerCase()] = originalHeaders[key];\n }\n\n // Add default accept-encoding to headers\n headers['accept-encoding'] = headers['accept-encoding'] || 'gzip,br,deflate';\n\n const urlObject = new URL(url);\n return {\n hostname: urlObject.hostname,\n path: urlObject.pathname,\n method: 'GET',\n // Add options and user provided 'options.fetch' overrides if available\n ...options,\n ...options?.fetch,\n // Override with updated headers with accepted encodings:\n headers,\n port: urlObject.port\n };\n}\n\nfunction getStatus(httpResponse: http.IncomingMessage): {status: number; statusText: string} {\n if (httpResponse.statusCode) {\n return {status: httpResponse.statusCode, statusText: httpResponse.statusMessage || 'NA'};\n }\n return {status: 200, statusText: 'OK'};\n}\n\nfunction getHeaders(url, httpResponse, additionalHeaders = {}) {\n const headers = {};\n\n if (httpResponse && httpResponse.headers) {\n const httpHeaders = httpResponse.headers;\n for (const key in httpHeaders) {\n const header = httpHeaders[key];\n headers[key.toLowerCase()] = String(header);\n }\n }\n\n // Fix up content length if we can for best progress experience\n if (!headers['content-length']) {\n const contentLength = getContentLength(url);\n if (Number.isFinite(contentLength)) {\n headers['content-length'] = contentLength;\n }\n }\n\n Object.assign(headers, additionalHeaders);\n\n return new Headers(headers);\n}\n\n/** Needs to be read from actual headers */\nfunction getContentLength(url: string): number | null {\n // TODO - remove media type etc\n return isDataURL(url) ? url.length - 'data:'.length : null;\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright vis.gl contributors\n\n// Based on binary-gltf-utils under MIT license: Copyright (c) 2016-17 Karl Cheng\n\nconst isArrayBuffer = (x) => x && x instanceof ArrayBuffer;\nconst isBuffer = (x) => x && x instanceof Buffer;\n\n/**\n * Parses a data URI into a buffer, as well as retrieving its declared MIME type.\n *\n * @param {string} uri - a data URI (assumed to be valid)\n * @returns {Object} { buffer, mimeType }\n */\nexport function decodeDataUri(uri: string): {arrayBuffer: ArrayBuffer; mimeType: string} {\n const dataIndex = uri.indexOf(',');\n\n let buffer;\n let mimeType;\n if (uri.slice(dataIndex - 7, dataIndex) === ';base64') {\n buffer = Buffer.from(uri.slice(dataIndex + 1), 'base64');\n mimeType = uri.slice(5, dataIndex - 7).trim();\n } else {\n buffer = Buffer.from(decodeURIComponent(uri.slice(dataIndex + 1)));\n mimeType = uri.slice(5, dataIndex).trim();\n }\n\n if (!mimeType) {\n mimeType = 'text/plain;charset=US-ASCII';\n } else if (mimeType.startsWith(';')) {\n mimeType = `text/plain${mimeType}`;\n }\n\n return {arrayBuffer: toArrayBuffer(buffer), mimeType};\n}\n\n/**\n * @param data\n * @todo Duplicate of core\n */\nexport function toArrayBuffer(data: unknown): ArrayBuffer {\n if (isArrayBuffer(data)) {\n return data as ArrayBuffer;\n }\n\n // TODO - per docs we should just be able to call buffer.buffer, but there are issues\n if (isBuffer(data)) {\n // @ts-expect-error\n const typedArray = new Uint8Array(data);\n return typedArray.buffer;\n }\n\n // Careful - Node Buffers will look like ArrayBuffers (keep after isBuffer)\n if (ArrayBuffer.isView(data)) {\n return data.buffer;\n }\n\n if (typeof data === 'string') {\n const text = data;\n const uint8Array = new TextEncoder().encode(text);\n return uint8Array.buffer;\n }\n\n // HACK to support Blob polyfill\n // @ts-expect-error\n if (data && typeof data === 'object' && data._toArrayBuffer) {\n // @ts-expect-error\n return data._toArrayBuffer();\n }\n\n throw new Error(`toArrayBuffer(${JSON.stringify(data, null, 2).slice(10)})`);\n}\n", "/* eslint-disable camelcase */\n// This code is inspired by example code in the DRACO repository\nimport type {\n Draco3D,\n DracoInt8Array,\n Encoder,\n Mesh,\n MeshBuilder,\n PointCloud,\n Metadata,\n MetadataBuilder,\n draco_GeometryAttribute_Type\n} from '../draco3d/draco3d-types';\n\nimport type {TypedArray} from '@loaders.gl/schema';\nimport type {DracoMesh} from './draco-types';\n\nexport type DracoBuildOptions = {\n pointcloud?: boolean;\n metadata?: {[key: string]: string};\n attributesMetadata?: {};\n log?: any;\n\n // draco encoding options\n speed?: [number, number];\n method?: string;\n quantization?: {[attributeName: string]: number};\n};\n\n// Native Draco attribute names to GLTF attribute names.\nconst GLTF_TO_DRACO_ATTRIBUTE_NAME_MAP = {\n POSITION: 'POSITION',\n NORMAL: 'NORMAL',\n COLOR_0: 'COLOR',\n TEXCOORD_0: 'TEX_COORD'\n};\n\nconst noop = () => {};\n\nexport default class DracoBuilder {\n draco: Draco3D;\n dracoEncoder: Encoder;\n dracoMeshBuilder: MeshBuilder;\n dracoMetadataBuilder: MetadataBuilder;\n log: any;\n\n // draco - the draco decoder, either import `draco3d` or load dynamically\n constructor(draco: Draco3D) {\n this.draco = draco;\n this.dracoEncoder = new this.draco.Encoder();\n this.dracoMeshBuilder = new this.draco.MeshBuilder();\n this.dracoMetadataBuilder = new this.draco.MetadataBuilder();\n }\n\n destroy(): void {\n this.destroyEncodedObject(this.dracoMeshBuilder);\n this.destroyEncodedObject(this.dracoEncoder);\n this.destroyEncodedObject(this.dracoMetadataBuilder);\n // @ts-ignore\n this.dracoMeshBuilder = null;\n // @ts-ignore\n this.dracoEncoder = null;\n // @ts-ignore\n this.draco = null;\n }\n\n // TBD - when does this need to be called?\n destroyEncodedObject(object): void {\n if (object) {\n this.draco.destroy(object);\n }\n }\n\n /**\n * Encode mesh or point cloud\n * @param mesh =({})\n * @param options\n */\n encodeSync(mesh: DracoMesh, options: DracoBuildOptions = {}): ArrayBuffer {\n this.log = noop; // TODO\n this._setOptions(options);\n\n return options.pointcloud\n ? this._encodePointCloud(mesh, options)\n : this._encodeMesh(mesh, options);\n }\n\n // PRIVATE\n\n _getAttributesFromMesh(mesh: DracoMesh) {\n // TODO - Change the encodePointCloud interface instead?\n const attributes = {...mesh, ...mesh.attributes};\n // Fold indices into the attributes\n if (mesh.indices) {\n attributes.indices = mesh.indices;\n }\n return attributes;\n }\n\n _encodePointCloud(pointcloud: DracoMesh, options: DracoBuildOptions): ArrayBuffer {\n const dracoPointCloud = new this.draco.PointCloud();\n\n if (options.metadata) {\n this._addGeometryMetadata(dracoPointCloud, options.metadata);\n }\n\n const attributes = this._getAttributesFromMesh(pointcloud);\n\n // Build a `DracoPointCloud` from the input data\n this._createDracoPointCloud(dracoPointCloud, attributes, options);\n\n const dracoData = new this.draco.DracoInt8Array();\n\n try {\n const encodedLen = this.dracoEncoder.EncodePointCloudToDracoBuffer(\n dracoPointCloud,\n false,\n dracoData\n );\n\n if (!(encodedLen > 0)) {\n throw new Error('Draco encoding failed.');\n }\n\n this.log(`DRACO encoded ${dracoPointCloud.num_points()} points\n with ${dracoPointCloud.num_attributes()} attributes into ${encodedLen} bytes`);\n\n return dracoInt8ArrayToArrayBuffer(dracoData);\n } finally {\n this.destroyEncodedObject(dracoData);\n this.destroyEncodedObject(dracoPointCloud);\n }\n }\n\n _encodeMesh(mesh: DracoMesh, options: DracoBuildOptions): ArrayBuffer {\n const dracoMesh = new this.draco.Mesh();\n\n if (options.metadata) {\n this._addGeometryMetadata(dracoMesh, options.metadata);\n }\n\n const attributes = this._getAttributesFromMesh(mesh);\n\n // Build a `DracoMesh` from the input data\n this._createDracoMesh(dracoMesh, attributes, options);\n\n const dracoData = new this.draco.DracoInt8Array();\n\n try {\n const encodedLen = this.dracoEncoder.EncodeMeshToDracoBuffer(dracoMesh, dracoData);\n if (encodedLen <= 0) {\n throw new Error('Draco encoding failed.');\n }\n\n this.log(`DRACO encoded ${dracoMesh.num_points()} points\n with ${dracoMesh.num_attributes()} attributes into ${encodedLen} bytes`);\n\n return dracoInt8ArrayToArrayBuffer(dracoData);\n } finally {\n this.destroyEncodedObject(dracoData);\n this.destroyEncodedObject(dracoMesh);\n }\n }\n\n /**\n * Set encoding options.\n * @param {{speed?: any; method?: any; quantization?: any;}} options\n */\n _setOptions(options: DracoBuildOptions): void {\n if ('speed' in options) {\n // @ts-ignore\n this.dracoEncoder.SetSpeedOptions(...options.speed);\n }\n if ('method' in options) {\n const dracoMethod = this.draco[options.method || 'MESH_SEQUENTIAL_ENCODING'];\n // assert(dracoMethod)\n this.dracoEncoder.SetEncodingMethod(dracoMethod);\n }\n if ('quantization' in options) {\n for (const attribute in options.quantization) {\n const bits = options.quantization[attribute];\n const dracoPosition = this.draco[attribute];\n this.dracoEncoder.SetAttributeQuantization(dracoPosition, bits);\n }\n }\n }\n\n /**\n * @param {Mesh} dracoMesh\n * @param {object} attributes\n * @returns {Mesh}\n */\n _createDracoMesh(dracoMesh: Mesh, attributes, options: DracoBuildOptions): Mesh {\n const optionalMetadata = options.attributesMetadata || {};\n\n try {\n const positions = this._getPositionAttribute(attributes);\n if (!positions) {\n throw new Error('positions');\n }\n const vertexCount = positions.length / 3;\n\n for (let attributeName in attributes) {\n const attribute = attributes[attributeName];\n attributeName = GLTF_TO_DRACO_ATTRIBUTE_NAME_MAP[attributeName] || attributeName;\n const uniqueId = this._addAttributeToMesh(dracoMesh, attributeName, attribute, vertexCount);\n\n if (uniqueId !== -1) {\n this._addAttributeMetadata(dracoMesh, uniqueId, {\n name: attributeName,\n ...(optionalMetadata[attributeName] || {})\n });\n }\n }\n } catch (error) {\n this.destroyEncodedObject(dracoMesh);\n throw error;\n }\n\n return dracoMesh;\n }\n\n /**\n * @param {} dracoPointCloud\n * @param {object} attributes\n */\n _createDracoPointCloud(\n dracoPointCloud: PointCloud,\n attributes: object,\n options: DracoBuildOptions\n ): PointCloud {\n const optionalMetadata = options.attributesMetadata || {};\n\n try {\n const positions = this._getPositionAttribute(attributes);\n if (!positions) {\n throw new Error('positions');\n }\n const vertexCount = positions.length / 3;\n\n for (let attributeName in attributes) {\n const attribute = attributes[attributeName];\n attributeName = GLTF_TO_DRACO_ATTRIBUTE_NAME_MAP[attributeName] || attributeName;\n const uniqueId = this._addAttributeToMesh(\n dracoPointCloud,\n attributeName,\n attribute,\n vertexCount\n );\n if (uniqueId !== -1) {\n this._addAttributeMetadata(dracoPointCloud, uniqueId, {\n name: attributeName,\n ...(optionalMetadata[attributeName] || {})\n });\n }\n }\n } catch (error) {\n this.destroyEncodedObject(dracoPointCloud);\n throw error;\n }\n\n return dracoPointCloud;\n }\n\n /**\n * @param mesh\n * @param attributeName\n * @param attribute\n * @param vertexCount\n */\n _addAttributeToMesh(\n mesh: PointCloud,\n attributeName: string,\n attribute: TypedArray,\n vertexCount: number\n ): number {\n if (!ArrayBuffer.isView(attribute)) {\n return -1;\n }\n\n const type = this._getDracoAttributeType(attributeName);\n // @ts-ignore TODO/fix types\n const size = attribute.length / vertexCount;\n\n if (type === 'indices') {\n // @ts-ignore TODO/fix types\n const numFaces = attribute.length / 3;\n this.log(`Adding attribute ${attributeName}, size ${numFaces}`);\n\n // @ts-ignore assumes mesh is a Mesh, not a point cloud\n this.dracoMeshBuilder.AddFacesToMesh(mesh, numFaces, attribute);\n return -1;\n }\n\n this.log(`Adding attribute ${attributeName}, size ${size}`);\n\n const builder = this.dracoMeshBuilder;\n const {buffer} = attribute;\n\n switch (attribute.constructor) {\n case Int8Array:\n return builder.AddInt8Attribute(mesh, type, vertexCount, size, new Int8Array(buffer));\n\n case Int16Array:\n return builder.AddInt16Attribute(mesh, type, vertexCount, size, new Int16Array(buffer));\n\n case Int32Array:\n return builder.AddInt32Attribute(mesh, type, vertexCount, size, new Int32Array(buffer));\n case Uint8Array:\n case Uint8ClampedArray:\n return builder.AddUInt8Attribute(mesh, type, vertexCount, size, new Uint8Array(buffer));\n\n case Uint16Array:\n return builder.AddUInt16Attribute(mesh, type, vertexCount, size, new Uint16Array(buffer));\n\n case Uint32Array:\n return builder.AddUInt32Attribute(mesh, type, vertexCount, size, new Uint32Array(buffer));\n\n case Float32Array:\n return builder.AddFloatAttribute(mesh, type, vertexCount, size, new Float32Array(buffer));\n\n default:\n // eslint-disable-next-line no-console\n console.warn('Unsupported attribute type', attribute);\n return -1;\n }\n\n // case Float64Array:\n // Add attribute does not seem to be exposed\n // return builder.AddAttribute(mesh, type, vertexCount, size, new Float32Array(buffer));\n }\n\n /**\n * DRACO can compress attributes of know type better\n * TODO - expose an attribute type map?\n * @param attributeName\n */\n _getDracoAttributeType(attributeName: string): draco_GeometryAttribute_Type | 'indices' {\n switch (attributeName.toLowerCase()) {\n case 'indices':\n return 'indices';\n case 'position':\n case 'positions':\n case 'vertices':\n return this.draco.POSITION;\n case 'normal':\n case 'normals':\n return this.draco.NORMAL;\n case 'color':\n case 'colors':\n return this.draco.COLOR;\n case 'texcoord':\n case 'texcoords':\n return this.draco.TEX_COORD;\n default:\n return this.draco.GENERIC;\n }\n }\n\n _getPositionAttribute(attributes) {\n for (const attributeName in attributes) {\n const attribute = attributes[attributeName];\n const dracoType = this._getDracoAttributeType(attributeName);\n if (dracoType === this.draco.POSITION) {\n return attribute;\n }\n }\n return null;\n }\n\n /**\n * Add metadata for the geometry.\n * @param dracoGeometry - WASM Draco Object\n * @param metadata\n */\n _addGeometryMetadata(dracoGeometry: PointCloud, metadata: {[key: string]: string}) {\n const dracoMetadata = new this.draco.Metadata();\n this._populateDracoMetadata(dracoMetadata, metadata);\n this.dracoMeshBuilder.AddMetadata(dracoGeometry, dracoMetadata);\n }\n\n /**\n * Add metadata for an attribute to geometry.\n * @param dracoGeometry - WASM Draco Object\n * @param uniqueAttributeId\n * @param metadata\n */\n _addAttributeMetadata(\n dracoGeometry: PointCloud,\n uniqueAttributeId: number,\n metadata: Map | {[key: string]: string}\n ) {\n // Note: Draco JS IDL doesn't seem to expose draco.AttributeMetadata, however it seems to\n // create such objects automatically from draco.Metadata object.\n const dracoAttributeMetadata = new this.draco.Metadata();\n this._populateDracoMetadata(dracoAttributeMetadata, metadata);\n // Draco3d doc note: Directly add attribute metadata to geometry.\n // You can do this without explicitly adding |GeometryMetadata| to mesh.\n this.dracoMeshBuilder.SetMetadataForAttribute(\n dracoGeometry,\n uniqueAttributeId,\n dracoAttributeMetadata\n );\n }\n\n /**\n * Add contents of object or map to a WASM Draco Metadata Object\n * @param dracoMetadata - WASM Draco Object\n * @param metadata\n */\n _populateDracoMetadata(\n dracoMetadata: Metadata,\n metadata: Map | {[key: string]: string}\n ) {\n for (const [key, value] of getEntries(metadata)) {\n switch (typeof value) {\n case 'number':\n if (Math.trunc(value) === value) {\n this.dracoMetadataBuilder.AddIntEntry(dracoMetadata, key, value);\n } else {\n this.dracoMetadataBuilder.AddDoubleEntry(dracoMetadata, key, value);\n }\n break;\n case 'object':\n if (value instanceof Int32Array) {\n this.dracoMetadataBuilder.AddIntEntryArray(dracoMetadata, key, value, value.length);\n }\n break;\n case 'string':\n default:\n this.dracoMetadataBuilder.AddStringEntry(dracoMetadata, key, value);\n }\n }\n }\n}\n\n// HELPER FUNCTIONS\n\n/**\n * Copy encoded data to buffer\n * @param dracoData\n */\nfunction dracoInt8ArrayToArrayBuffer(dracoData: DracoInt8Array) {\n const byteLength = dracoData.size();\n const outputBuffer = new ArrayBuffer(byteLength);\n const outputData = new Int8Array(outputBuffer);\n for (let i = 0; i < byteLength; ++i) {\n outputData[i] = dracoData.GetValue(i);\n }\n return outputBuffer;\n}\n\n/** Enable iteration over either an object or a map */\nfunction getEntries(container) {\n const hasEntriesFunc = container.entries && !container.hasOwnProperty('entries');\n return hasEntriesFunc ? container.entries() : Object.entries(container);\n}\n", "// Dynamic DRACO module loading inspired by THREE.DRACOLoader\n// https://github.com/mrdoob/three.js/blob/398c4f39ebdb8b23eefd4a7a5ec49ec0c96c7462/examples/jsm/loaders/DRACOLoader.js\n// by Don McCurdy / https://www.donmccurdy.com / MIT license\n\nimport {loadLibrary} from '@loaders.gl/worker-utils';\n\nconst DRACO_DECODER_VERSION = '1.5.6';\nconst DRACO_ENCODER_VERSION = '1.4.1';\n\nconst STATIC_DECODER_URL = `https://www.gstatic.com/draco/versioned/decoders/${DRACO_DECODER_VERSION}`;\n\nexport const DRACO_EXTERNAL_LIBRARIES = {\n /** The primary Draco3D encoder, javascript wrapper part */\n DECODER: 'draco_wasm_wrapper.js',\n /** The primary draco decoder, compiled web assembly part */\n DECODER_WASM: 'draco_decoder.wasm',\n /** Fallback decoder for non-webassebly environments. Very big bundle, lower performance */\n FALLBACK_DECODER: 'draco_decoder.js',\n /** Draco encoder */\n ENCODER: 'draco_encoder.js'\n};\n\nexport const DRACO_EXTERNAL_LIBRARY_URLS = {\n [DRACO_EXTERNAL_LIBRARIES.DECODER]: `${STATIC_DECODER_URL}/${DRACO_EXTERNAL_LIBRARIES.DECODER}`,\n [DRACO_EXTERNAL_LIBRARIES.DECODER_WASM]: `${STATIC_DECODER_URL}/${DRACO_EXTERNAL_LIBRARIES.DECODER_WASM}`,\n [DRACO_EXTERNAL_LIBRARIES.FALLBACK_DECODER]: `${STATIC_DECODER_URL}/${DRACO_EXTERNAL_LIBRARIES.FALLBACK_DECODER}`,\n [DRACO_EXTERNAL_LIBRARIES.ENCODER]: `https://raw.githubusercontent.com/google/draco/${DRACO_ENCODER_VERSION}/javascript/${DRACO_EXTERNAL_LIBRARIES.ENCODER}`\n};\n\nlet loadDecoderPromise;\nlet loadEncoderPromise;\n\nexport async function loadDracoDecoderModule(options) {\n const modules = options.modules || {};\n\n // Check if a bundled draco3d library has been supplied by application\n if (modules.draco3d) {\n loadDecoderPromise ||= modules.draco3d.createDecoderModule({}).then((draco) => {\n return {draco};\n });\n } else {\n // If not, dynamically load the WASM script from our CDN\n loadDecoderPromise ||= loadDracoDecoder(options);\n }\n return await loadDecoderPromise;\n}\n\nexport async function loadDracoEncoderModule(options) {\n const modules = options.modules || {};\n\n // Check if a bundled draco3d library has been supplied by application\n if (modules.draco3d) {\n loadEncoderPromise ||= modules.draco3d.createEncoderModule({}).then((draco) => {\n return {draco};\n });\n } else {\n // If not, dynamically load the WASM script from our CDN\n loadEncoderPromise ||= loadDracoEncoder(options);\n }\n return await loadEncoderPromise;\n}\n\n// DRACO DECODER LOADING\n\nasync function loadDracoDecoder(options) {\n let DracoDecoderModule;\n let wasmBinary;\n switch (options.draco && options.draco.decoderType) {\n case 'js':\n DracoDecoderModule = await loadLibrary(\n DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.FALLBACK_DECODER],\n 'draco',\n options,\n DRACO_EXTERNAL_LIBRARIES.FALLBACK_DECODER\n );\n break;\n\n case 'wasm':\n default:\n [DracoDecoderModule, wasmBinary] = await Promise.all([\n await loadLibrary(\n DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.DECODER],\n 'draco',\n options,\n DRACO_EXTERNAL_LIBRARIES.DECODER\n ),\n await loadLibrary(\n DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.DECODER_WASM],\n 'draco',\n options,\n DRACO_EXTERNAL_LIBRARIES.DECODER_WASM\n )\n ]);\n }\n // Depends on how import happened...\n // @ts-ignore\n DracoDecoderModule = DracoDecoderModule || globalThis.DracoDecoderModule;\n return await initializeDracoDecoder(DracoDecoderModule, wasmBinary);\n}\n\nfunction initializeDracoDecoder(DracoDecoderModule, wasmBinary) {\n const options: {wasmBinary?: any} = {};\n if (wasmBinary) {\n options.wasmBinary = wasmBinary;\n }\n\n return new Promise((resolve) => {\n DracoDecoderModule({\n ...options,\n onModuleLoaded: (draco) => resolve({draco}) // Module is Promise-like. Wrap in object to avoid loop.\n });\n });\n}\n\n// ENCODER\n\nasync function loadDracoEncoder(options) {\n let DracoEncoderModule = await loadLibrary(\n DRACO_EXTERNAL_LIBRARY_URLS[DRACO_EXTERNAL_LIBRARIES.ENCODER],\n 'draco',\n options,\n DRACO_EXTERNAL_LIBRARIES.ENCODER\n );\n // @ts-ignore\n DracoEncoderModule = DracoEncoderModule || globalThis.DracoEncoderModule;\n\n return new Promise((resolve) => {\n DracoEncoderModule({\n onModuleLoaded: (draco) => resolve({draco}) // Module is Promise-like. Wrap in object to avoid loop.\n });\n });\n}\n", "// Version constant cannot be imported, it needs to correspond to the build version of **this** module.\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nexport const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n", "import type {WriterWithEncoder, WriterOptions} from '@loaders.gl/loader-utils';\nimport type {DracoMesh} from './lib/draco-types';\nimport type {DracoBuildOptions} from './lib/draco-builder';\nimport DRACOBuilder from './lib/draco-builder';\nimport {loadDracoEncoderModule} from './lib/draco-module-loader';\nimport {VERSION} from './lib/utils/version';\n\n/** Writer Options for draco */\nexport type DracoWriterOptions = WriterOptions & {\n draco?: DracoBuildOptions & {\n method?: 'MESH_EDGEBREAKER_ENCODING' | 'MESH_SEQUENTIAL_ENCODING';\n speed?: [number, number];\n quantization?: Record;\n attributeNameEntry?: string;\n };\n};\n\nconst DEFAULT_DRACO_WRITER_OPTIONS = {\n pointcloud: false, // Set to true if pointcloud (mode: 0, no indices)\n attributeNameEntry: 'name'\n // Draco Compression Parameters\n // method: 'MESH_EDGEBREAKER_ENCODING', // Use draco defaults\n // speed: [5, 5], // Use draco defaults\n // quantization: { // Use draco defaults\n // POSITION: 10\n // }\n};\n\n/**\n * Exporter for Draco3D compressed geometries\n */\nexport const DracoWriter = {\n name: 'DRACO',\n id: 'draco',\n module: 'draco',\n version: VERSION,\n extensions: ['drc'],\n options: {\n draco: DEFAULT_DRACO_WRITER_OPTIONS\n },\n encode\n} as const satisfies WriterWithEncoder;\n\nasync function encode(data: DracoMesh, options: DracoWriterOptions = {}): Promise {\n // Dynamically load draco\n const {draco} = await loadDracoEncoderModule(options);\n const dracoBuilder = new DRACOBuilder(draco);\n\n try {\n return dracoBuilder.encodeSync(data, options.draco);\n } finally {\n dracoBuilder.destroy();\n }\n}\n", "// Polyfills increases the bundle size significantly. Use it for NodeJS worker only\nimport '@loaders.gl/polyfills';\nimport {WorkerBody, WorkerMessagePayload} from '@loaders.gl/worker-utils';\nimport {DracoWriter} from '../draco-writer';\n\n(async () => {\n // Check that we are actually in a worker thread\n if (!(await WorkerBody.inWorkerThread())) {\n return;\n }\n\n WorkerBody.onmessage = async (type, payload: WorkerMessagePayload) => {\n switch (type) {\n case 'process':\n try {\n const {input, options} = payload;\n const result = await DracoWriter.encode(input, options);\n WorkerBody.postMessage('done', {result});\n } catch (error) {\n const message = error instanceof Error ? error.message : '';\n WorkerBody.postMessage('error', {error: message});\n }\n break;\n default:\n }\n };\n})();\n"],
"mappings": "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AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QACnC;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QACnC;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QACnC;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QACnC;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QACnC;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QACnC;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QACnC;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QACnC;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QACnC;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QACnC;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QACnC;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QACnC;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QACnC;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QACnC;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QACnC;AAAA,QAAK;AAAA,QAAK;AAAA,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AA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AA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AEA,UAAIoB,KAAI;AAAA,QACN;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,Q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AAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,QAAU,CAAC;AAAA,QACjD,IAAI,YAAY;AAAA,UACd;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,QAAU,CAAC;AAAA,QACjD,IAAI,YAAY;AAAA,UACd;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,QAAU,CAAC;AAAA,QACjD,IAAI,YAAY;AAAA,UACd;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA,UAAY;AAAA,UAAY;AAAA,UACpC;AAAA,UAAY;AAAA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AK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,KAAI,MAAK,MAAK,KAAI,MAAK,GAAG;AAAA,EACroB,cAAa,CAAC,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,GAAG;AAAA,EAC7gB,cAAa,CAAC,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,GAAG;AAAA,EACphB,cAAa,CAAC,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,GAAG;AAAA,EAC7gB,cAAa,CAAC,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,IAAI;AAAA,EAC1mB,cAAa,CAAC,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,MAAK,MAAK,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,IAAI;AAAA,EAC1mB,cAAa,CAAC,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,MAAK,KAAI,MAAK,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,IAAI;AAAA,EACrhB,cAAa,CAAC,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,IAAI;AAAA,EAC/kB,eAAc,CAAC,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,GAAG;AAAA,EAC/gB,eAAc,CAAC,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,IAAI;AAAA,EAClhB,eAAc,CAAC,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,MAAK,KAAI,KAAI,KAAI,MAAK,KAAI,MAAK,KAAI,MAAK,MAAK,MAAK,KAAI,KAAI,KAAI,MAAK,MAAK,KAAI,KAAI,MAAK,MAAK,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,GAAG;AAAA,EACpiB,eAAc,CAAC,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,GAAG;AAAA,EAC/gB,eAAc,CAAC,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,GAAG;AAAA,EACjhB,UAAS,CAAC,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,IAAI;AAAA,EACnoB,UAAS,CAAC,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,IAAI;AAAA,EACnoB,aAAY,CAAC,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,MAAK,KAAI,KAAI,MAAK,KAAI,MAAK,MAAK,KAAI,KAAI,MAAK,MAAK,MAAK,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,MAAK,MAAK,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,KAAI,KAAI,MAAK,MAAK,MAAK,MAAK,OAAM,OAAM,MAAK,KAAI,MAAK,MAAK,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,OAAM,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,GAAG;AAAA,EAChjB,eAAc,CAAC,MAAK,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,IAAI;AAAA,EACtnB,gBAAe,CAAC,MAAK,KAAI,MAAK,KAAI,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,GAAG;AAAA,EAChiB,gBAAe,CAAC,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,MAAK,MAAK,KAAI,MAAK,KAAI,KAAI,MAAK,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,MAAK,MAAK,MAAK,KAAI,KAAI,KAAI,MAAK,MAAK,MAAK,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,IAAI;AAAA,EAC/nB,gBAAe,CAAC,MAAK,KAAI,MAAK,KAAI,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,GAAG;AAAA,EAChiB,gBAAe,CAAC,MAAK,KAAI,MAAK,KAAI,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,IAAI;AAAA,EACpiB,gBAAe,CAAC,MAAK,KAAI,MAAK,KAAI,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,GAAG;AAAA,EAChiB,gBAAe,CAAC,MAAK,KAAI,MAAK,KAAI,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,IAAI;AAAA,EACjmB,gBAAe,CAAC,MAAK,MAAK,MAAK,KAAI,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,MAAK,MAAK,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,MAAK,MAAK,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,KAAI,MAAK,MAAK,MAAK,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,MAAK,KAAI,KAAI,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,MAAK,KAAI,MAAK,KAAI,MAAK,KAAI,KAAI,MAAK,MAAK,IAAI;AAAA,EAChmB,gBAAe,CAAC,MAAK,KAAI,MAAK,KAAI,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,GAAG;AAAA,EACliB,gBAAe,CAAC,MAAK,KAAI,MAAK,KAAI,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAA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",
"names": ["module", "isBoolean", "re", "isObject", "d", "e", "isFunction", "o", "module", "module", "e", "Buffer", "i", "c", "cr", "module", "Readable", "Buffer", "Stream", "stream", "er", "e", "n", "p", "i", "forEach", "c", "self", "l", "f", "x", "module", "Readable", "forEach", "f", "i", "l", "module", "Buffer", "Stream", "stream", "er", "finished", "c", "module", "stream", "er", "n", "module", "module", "Stream", "module", "Readable", "n", "require_isarray", "module", "require_stream_writable", "module", "Buffer", "Stream", "stream", "er", "finished", "c", "i", "require_stream_duplex", "module", "Readable", "forEach", "f", "i", "l", "require_stream_readable", "module", "Readable", "Buffer", "Stream", "stream", "er", "e", "n", "p", "i", "self", "forEach", "c", "l", "f", "x", "require_stream_transform", "module", "stream", "er", "n", "require_stream_passthrough", "module", "require_readable", "module", "module", "i", "v", "b", "g", "r", "j", "k", "m", "p", "a", "n", "q", "alphadec", "index", "l", "module", "c", "i", "encode", "n_bits", "module", "assert", "ReadableStream", "l", "i", "k", "j", "index", "c", "r", "g", "b", "dr", "d", "w", "h", "n", "module", "btoa", "self", "i", "t", "j", "u", "k", "nr", "fDCTQuant", "l", "m", "n", "o", "p", "e", "quality", "x", "y", "r", "g", "b", "encode", "module", "k", "i", "j", "p", "q", "n", "component", "t", "s", "r", "z", "e", "decode", "mcu", "h", "v", "R", "qt", "sample", "a", "path", "length", "frame", "maxH", "maxV", "componentId", "l", "x", "y", "Y", "Cr", "K", "C", "M", "Ye", "G", "B", "module", "encode", "decode", "module", "Stream", "i", "j", "x", "y", "module", "module", "i", "x", "module", "module", "module", "i", "j", "module", "i", "i", "y", "x", "module", "y", "x", "i", "module", "zlib", "module", "y", "x", "module", "i", "x", "y", "module", "zlib", "module", "Stream", "module", "module", "zlib", "inflatedData", "module", "zlib", "Stream", "y", "x", "i", "module", "n", "i", "module", "isBuffer", "module", "isBuffer", "a", "b", "i", "n", "d", "module", "a", "b", "i", "module", "i", "j", "re", "t", "f", "module", "i", "j", "module", "i", "x", "i", "a", "f", "module", "Stream", "stream", "module", "ndarray", "i", "j", "c", "savePixels", "require_chunkstream", "module", "Stream", "require_interlace", "i", "j", "x", "y", "require_paeth_predictor", "module", "require_filter_parse", "module", "i", "x", "require_filter_parse_async", "module", "require_constants", "module", "require_crc", "module", "i", "j", "require_parser", "module", "i", "require_bitmapper", "i", "y", "x", "require_format_normaliser", "module", "y", "x", "i", "require_parser_async", "module", "zlib", "require_bitpacker", "module", "y", "x", "require_filter_pack", "module", "x", "i", "y", "require_packer", "module", "zlib", "require_packer_async", "module", "Stream", "module", "assert", "zlib", "self", "require_sync_reader", "module", "require_filter_parse_sync", "require_parser_sync", "module", "zlib", "inflatedData", "require_packer_sync", "module", "zlib", "require_png_sync", "require_png", "Stream", "y", "x", "i", "module", "module", "ndarray", "c", "p", "i", "x", "y", "w", "h", "il", "rgb", "v", "c", "k", "palette_offset", "index", "r", "g", "b", "e", "module", "i", "r", "g", "b", "a", "h", "j", "paletteIndex", "palette", "module", "module", "isArray", "isPlainObject", "setProperty", "getProperty", "i", "module", "i", "path", "path", "a", "b", "module", "VERSION", "e", "c", "i", "d", "h", "m", "s", "path", "t", "a", "b", "cb", "err", "http", "now", "self", "module", "module", "Buffer", "crypto", "Buffer", "e", "o", "i", "module", "crypto", "r", "i", "path", "module", "crypto", "c", "i", "path", "a", "b", "module", "assert", "Stream", "noop", "k", "i", "module", "Buffer", "e", "module", "Buffer", "module", "assert", "require_errors", "module", "e", "module", "module", "assert", "Buffer", "b", "i", "o", "module", "assert", "Buffer", "to", "b", "i", "s", "self", "bytes", "module", "t", "e", "module", "module", "a", "b", "c", "i", "x", "w", "j", "n", "v", "l", "h", "m", "rr", "s", "r", "k", "d", "p", "t", "y", "q", "pt", "yt", "e", "z", "r2", "g", "f", "g2", "u", "SecureRandom", "module", "q", "x", "b", "y", "z", "r", "u", "v", "v2", "a", "w", "k", "e", "h", "R", "i", "j", "p", "s", "Q", "U", "V", "P", "n", "module", "i", "r", "D", "D2", "X", "Y", "I", "x", "h", "l", "y", "n", "d", "o", "p", "k", "c", "u", "m", "b", "z", "s", "g", "f", "a", "v", "q", "t", "j", "A", "Z", "M", "b2", "S", "e", "K", "L", "crypto", "module", "assert", "Buffer", "crypto", "D", "j", "i", "t", "T", "I", "c", "x", "o", "matches", "b", "g", "p", "y", "k", "d", "q", "a", "G", "module", "assert", "Buffer", "n", "v", "i", "p", "module", "assert", "Buffer", "crypto", "i", "r", "s", "e", "d", "module", "g", "n", "h", "s", "p", "a", "b", "G", "crypto", "Buffer", "c", "n", "r", "key", "S", "module", "assert", "crypto", "Buffer", "k", "n", "r", "p", "a", "b", "h", "G", "S", "c", "module", "stream", "assert", "Buffer", "module", "assert", "Buffer", "n", "e", "d", "p", "q", "g", "y", "x", "j", "c", "i", "k", "Q", "A", "a", "h", "module", "assert", "Buffer", "n", "e", "d", "p", "q", "g", "y", "x", "k", "A", "j", "c", "Q", "module", "assert", "Buffer", "i", "p", "module", "F", "S", "i", "x", "t", "d", "k", "j", "module", "assert", "Buffer", "crypto", "e", "n", "o", "i", "module", "assert", "crypto", "Buffer", "k", "m", "m2", "e", "o", "i", "module", "assert", "Buffer", "m", "e", "module", "assert", "Buffer", "k", "e", "d", "Q", "n", "p", "q", "module", "assert", "Buffer", "crypto", "module", "assert", "Buffer", "module", "assert", "Buffer", "crypto", "i", "p", "v", "e", "k", "module", "assert", "crypto", "Buffer", "k", "self", "c", "n", "v", "a", "b", "i", "m", "module", "assert", "crypto", "Buffer", "k", "i", "p", "pr", "d", "e", "module", "assert", "Buffer", "i", "k", "t", "m", "d", "n", "s", "j", "module", "assert", "Buffer", "m", "m2", "o", "i", "module", "assert", "Buffer", "crypto", "i", "k", "e", "module", "assert", "Buffer", "crypto", "e", "p", "a", "s", "h", "module", "assert", "crypto", "e", "i", "v", "self", "k", "require_lib", "module", "require_utils", "module", "assert", "k", "require_parser", "module", "assert", "i", "c", "e", "h", "re", "stream", "require_extsprintf", "re", "stream", "require_util", "isBoolean", "re", "isObject", "d", "e", "isFunction", "o", "module", "k", "a", "e", "c", "module", "exports", "schema", "path", "i", "l", "value", "j", "instance", "k", "i", "p", "d", "c", "j", "a", "b", "module", "assert", "crypto", "http", "path", "self", "e", "i", "h", "module", "assert", "crypto", "v", "require_lib", "module", "module", "module", "charset", "path", "extension", "i", "to", "module", "i", "c", "module", "self", "s", "index", "module", "Stream", "r", "module", "Stream", "stream", "self", "module", "module", "module", "module", "module", "a", "b", "module", "module", "module", "a", "b", "module", "module", "module", "module", "path", "http", "https", "fs", "i", "module", "stream", "module", "module", "require_utils", "module", "i", "compactQueue", "j", "arrayToObject", "merge", "decode", "e", "encode", "c", "compact", "isRegExp", "isBuffer", "module", "require_stringify", "module", "stringify", "i", "encode", "module", "i", "index", "require_lib", "module", "c", "merge", "sets", "length", "slice", "xl", "x", "join", "subexp", "str", "typeOf", "o", "undefined", "Object", "prototype", "toString", "call", "split", "pop", "shift", "toLowerCase", "toUpperCase", "toArray", "obj", "Array", "setInterval", "assign", "target", "source", "key", "buildExps", "isIRI", "ALPHA$$", "CR$", "DIGIT$$", "DQUOTE$$", "HEXDIG$$", "SP$$", "PCT_ENCODED$", "SUB_DELIMS$$", "RESERVED$$", "GEN_DELIMS$$", "UCSCHAR$$", "SCHEME$", "USERINFO$", "UNRESERVED$$", "DEC_OCTET$", "DEC_OCTET_RELAXED$", "H16$", "LS32$", "IPV4ADDRESS$", "IPV6ADDRESS1$", "IPV6ADDRESS2$", "IPV6ADDRESS3$", "IPV6ADDRESS4$", "IPV6ADDRESS5$", "IPV6ADDRESS6$", "IPV6ADDRESS7$", "IPV6ADDRESS8$", "IPV6ADDRESS9$", "ZONEID$", "IPV6ADDRESS$", "IP_LITERAL$", "IPV6ADDRZ_RELAXED$", "IPVFUTURE$", "HOST$", "REG_NAME$", "PORT$", "AUTHORITY$", "PCHAR$", "SEGMENT$", "SEGMENT_NZ$", "SEGMENT_NZ_NC$", "PATH_ABEMPTY$", "PATH_ABSOLUTE$", "PATH$", "PATH_NOSCHEME$", "PATH_ROOTLESS$", "PATH_EMPTY$", "QUERY$", "IPRIVATE$$", "FRAGMENT$", "HIER_PART$", "URI$", "RELATIVE_PART$", "RELATIVE$", "URI_REFERENCE$", "ABSOLUTE_URI$", "GENERIC_REF$", "RELATIVE_REF$", "ABSOLUTE_REF$", "SAMEDOC_REF$", "AUTHORITY_REF$", "RegExp", "maxInt", "base", "tMin", "tMax", "skew", "damp", "initialBias", "initialN", "delimiter", "regexPunycode", "regexNonASCII", "regexSeparators", "errors", "baseMinusTMin", "floor", "Math", "stringFromCharCode", "String", "fromCharCode", "error", "type", "RangeError", "map", "array", "fn", "result", "mapDomain", "string", "parts", "replace", "labels", "encoded", "ucs2decode", "output", "counter", "value", "charCodeAt", "extra", "push", "ucs2encode", "fromCodePoint", "basicToDigit", "codePoint", "digitToBasic", "digit", "flag", "adapt", "delta", "numPoints", "firstTime", "k", "decode", "input", "inputLength", "i", "n", "bias", "basic", "lastIndexOf", "j", "index", "oldi", "w", "t", "baseMinusT", "out", "splice", "encode", "currentValue", "basicLength", "handledCPCount", "m", "handledCPCountPlusOne", "q", "qMinusT", "toUnicode", "test", "toASCII", "punycode", "SCHEMES", "pctEncChar", "chr", "c", "e", "pctDecChars", "newStr", "il", "parseInt", "substr", "c2", "c3", "_normalizeComponentEncoding", "components", "protocol", "decodeUnreserved", "decStr", "match", "UNRESERVED", "scheme", "PCT_ENCODED", "NOT_SCHEME", "userinfo", "NOT_USERINFO", "host", "NOT_HOST", "path", "NOT_PATH", "NOT_PATH_NOSCHEME", "query", "NOT_QUERY", "fragment", "NOT_FRAGMENT", "_stripLeadingZeros", "_normalizeIPv4", "matches", "IPV4ADDRESS", "address", "_normalizeIPv6", "IPV6ADDRESS", "zone", "reverse", "last", "first", "firstFields", "lastFields", "isLastFieldIPv4Address", "fieldCount", "lastFieldsStart", "fields", "allZeroFields", "reduce", "acc", "field", "lastLongest", "longestZeroFields", "sort", "a", "b", "newHost", "newFirst", "newLast", "URI_PARSE", "NO_MATCH_IS_UNDEFINED", "parse", "uriString", "options", "iri", "IRI_PROTOCOL", "URI_PROTOCOL", "reference", "port", "isNaN", "indexOf", "schemeHandler", "unicodeSupport", "domainHost", "_recomposeAuthority", "uriTokens", "_", "$1", "$2", "RDS1", "RDS2", "RDS3", "RDS5", "removeDotSegments", "im", "s", "Error", "serialize", "authority", "charAt", "absolutePath", "resolveComponents", "relative", "skipNormalization", "tolerant", "resolve", "baseURI", "relativeURI", "schemelessOptions", "normalize", "uri", "equal", "uriA", "uriB", "escapeComponent", "ESCAPE", "unescapeComponent", "handler", "secure", "http", "isSecure", "wsComponents", "resourceName", "ws", "O", "ATEXT$$", "QTEXT$$", "VCHAR$$", "SOME_DELIMS$$", "NOT_LOCAL_PART", "NOT_HFNAME", "NOT_HFVALUE", "mailtoComponents", "to", "unknownHeaders", "headers", "hfields", "hfield", "toAddrs", "subject", "body", "addr", "toAddr", "atIdx", "localPart", "domain", "name", "URN_PARSE", "urnComponents", "nid", "nss", "urnScheme", "uriComponents", "UUID", "uuidComponents", "uuid", "https", "wss", "mailto", "urn", "module", "a", "b", "i", "module", "require_util", "module", "o", "to", "t", "i", "matches", "path", "a", "b", "module", "module", "i", "module", "v", "p", "i", "self", "module", "module", "f", "a", "b", "i", "require_validate", "module", "it", "$rulesGroup", "i", "$rule", "require_compile", "module", "self", "c", "v", "localRefs", "baseId", "e", "refVal", "index", "schema", "it", "compile", "i", "module", "Cache", "require_formats", "module", "URL", "matches", "e", "module", "it", "module", "it", "module", "it", "$sch", "module", "it", "module", "it", "module", "it", "module", "it", "module", "it", "module", "it", "module", "it", "module", "it", "module", "it", "module", "it", "module", "it", "module", "it", "module", "it", "module", "it", "module", "it", "module", "it", "module", "it", "p", "module", "it", "module", "it", "module", "it", "module", "require_rules", "module", "k", "module", "i", "j", "require_async", "module", "self", "p", "v", "e", "ref", "module", "it", "module", "module", "module", "i", "keyword", "dataType", "definition", "j", "v", "require_data", "module", "module", "v", "i", "self", "e", "noop", "module", "module", "module", "module", "require_cache", "module", "module", "require_cookie", "module", "module", "module", "module", "module", "module", "module", "module", "module", "module", "module", "module", "module", "require_lib", "module", "module", "ajv", "validate", "require_har", "fs", "e", "module", "crypto", "module", "i", "module", "i", "self", "path", "re", "cnonce", "ha1", "k", "c", "crypto", "i", "a", "b", "p", "crypto", "Buffer", "i", "self", "crypto", "Buffer", "self", "self", "http", "https", "assert", "Buffer", "self", "i", "j", "k", "self", "module", "hr", "require_request", "module", "http", "https", "stream", "zlib", "Buffer", "i", "isFunction", "self", "j", "a", "b", "v", "e", "q", "re", "path", "now", "cookies", "require_request", "module", "self", "module", "i", "module", "module", "ndarray", "path", "fs", "e", "i", "getPixels", "a", "o", "s", "n", "i", "u", "c", "d", "b", "stream", "index", "code_point", "TextDecoder", "TextEncoder", "ndarray", "savePixels", "ndarray", "getPixels", "isBrowser", "parentPort", "isBrowser", "requireFromFile", "requireFromString", "e", "readFileAsArrayBuffer", "readFileAsText", "path", "fs", "import_fs", "x", "zlib", "concatenateArrayBuffers", "x", "stream", "fs", "fsPromise", "path", "_e", "Stream", "Readable", "it", "r", "e", "t", "r", "o", "n", "a", "q", "i", "l", "s", "u", "c", "d", "_", "y", "S", "g", "v", "w", "R", "T", "P", "E", "C", "O", "f", "b", "h", "p", "ReadableStream", "ReadableStream", "import_fs", "fs", "code", "Module", "path", "Headers", "assert", "isBoolean", "x", "isFunction", "isObject", "isReadableNodeStream", "Response", "Headers", "assert", "isArrayBuffer", "x", "isBuffer", "toArrayBuffer", "fetchNode", "Response", "https", "http", "Headers", "nodeVersion", "TextEncoder", "TextDecoder", "Headers", "Response", "fetchNode", "i", "VERSION", "VERSION", "encode"]
}