diff --git a/examples/sites/devcon-issuer/react-third-party/README.md b/examples/sites/devcon-issuer/react-third-party/README.md index fe4fff73..a2b4cdba 100644 --- a/examples/sites/devcon-issuer/react-third-party/README.md +++ b/examples/sites/devcon-issuer/react-third-party/README.md @@ -1,5 +1,7 @@ # example +## Hotel Bogota (react=third-party) + ## Developer Getting Started 1. From this directory, run `yarn` or `npm install` diff --git a/examples/sites/devcon-issuer/react-third-party/package.json b/examples/sites/devcon-issuer/react-third-party/package.json index 809e692e..70359da1 100644 --- a/examples/sites/devcon-issuer/react-third-party/package.json +++ b/examples/sites/devcon-issuer/react-third-party/package.json @@ -3,7 +3,10 @@ "version": "0.1.0", "private": true, "dependencies": { + "@date-io/date-fns": "v1", "@material-ui/core": "^4.11.2", + "@material-ui/lab": "^4.0.0-alpha.57", + "@material-ui/pickers": "latest", "@testing-library/jest-dom": "^5.11.4", "@testing-library/react": "^11.1.0", "@testing-library/user-event": "^12.1.10", @@ -11,16 +14,13 @@ "asn1js": "^2.0.26", "big-integer": "^1.6.48", "bigint-polyfill": "^0.1.0", - "@material-ui/pickers": "latest", - "@date-io/date-fns": "v1", "date-fns": "latest", "isevn": "^2.0.2", "react": "^17.0.1", "react-dom": "^17.0.1", "react-scripts": "4.0.1", "web-vitals": "^0.2.4", - "web3": "^1.3.1", - "yarn": "^1.22.10" + "web3": "^1.3.1" }, "scripts": { "start": "react-scripts start", diff --git a/examples/sites/devcon-issuer/react-third-party/public/Authentication/getChallenge.json b/examples/sites/devcon-issuer/react-third-party/public/Authentication/getChallenge.json deleted file mode 100644 index 143a5d22..00000000 --- a/examples/sites/devcon-issuer/react-third-party/public/Authentication/getChallenge.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "value": "1323321" -} \ No newline at end of file diff --git a/examples/sites/devcon-issuer/react-third-party/public/Authentication/validChallenge.json b/examples/sites/devcon-issuer/react-third-party/public/Authentication/validChallenge.json deleted file mode 100644 index f1fccc5a..00000000 --- a/examples/sites/devcon-issuer/react-third-party/public/Authentication/validChallenge.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "value": true -} \ No newline at end of file diff --git a/examples/sites/devcon-issuer/react-third-party/public/Negotciator.js b/examples/sites/devcon-issuer/react-third-party/public/Negotciator.js new file mode 100644 index 00000000..57831f35 --- /dev/null +++ b/examples/sites/devcon-issuer/react-third-party/public/Negotciator.js @@ -0,0 +1 @@ +(() => { "use strict"; var e = { 360: (e, t, r) => { t.sc = ce, t.eN = function e(t, r, n) { if (n instanceof class { constructor(e = {}) { this.value = (0, s.getParametersValue)(e, "value", []), this.optional = (0, s.getParametersValue)(e, "optional", !1) } }) { const s = !1; for (let s = 0; s < n.value.length; s++)if (!0 === e(t, r, n.value[s]).verified) return { verified: !0, result: t }; if (!1 === s) { const e = { verified: !1, result: { error: "Wrong values for Choice type" } }; return n.hasOwnProperty("name") && (e.name = n.name), e } } if (n instanceof oe) return n.hasOwnProperty("name") && (t[n.name] = r), { verified: !0, result: t }; if (t instanceof Object == 0) return { verified: !1, result: { error: "Wrong root object" } }; if (r instanceof Object == 0) return { verified: !1, result: { error: "Wrong ASN.1 data" } }; if (n instanceof Object == 0) return { verified: !1, result: { error: "Wrong ASN.1 schema" } }; if ("idBlock" in n == 0) return { verified: !1, result: { error: "Wrong ASN.1 schema" } }; if ("fromBER" in n.idBlock == 0) return { verified: !1, result: { error: "Wrong ASN.1 schema" } }; if ("toBER" in n.idBlock == 0) return { verified: !1, result: { error: "Wrong ASN.1 schema" } }; const i = n.idBlock.toBER(!1); if (0 === i.byteLength) return { verified: !1, result: { error: "Error encoding idBlock for ASN.1 schema" } }; if (-1 === n.idBlock.fromBER(i, 0, i.byteLength)) return { verified: !1, result: { error: "Error decoding idBlock for ASN.1 schema" } }; if (!1 === n.idBlock.hasOwnProperty("tagClass")) return { verified: !1, result: { error: "Wrong ASN.1 schema" } }; if (n.idBlock.tagClass !== r.idBlock.tagClass) return { verified: !1, result: t }; if (!1 === n.idBlock.hasOwnProperty("tagNumber")) return { verified: !1, result: { error: "Wrong ASN.1 schema" } }; if (n.idBlock.tagNumber !== r.idBlock.tagNumber) return { verified: !1, result: t }; if (!1 === n.idBlock.hasOwnProperty("isConstructed")) return { verified: !1, result: { error: "Wrong ASN.1 schema" } }; if (n.idBlock.isConstructed !== r.idBlock.isConstructed) return { verified: !1, result: t }; if ("isHexOnly" in n.idBlock == 0) return { verified: !1, result: { error: "Wrong ASN.1 schema" } }; if (n.idBlock.isHexOnly !== r.idBlock.isHexOnly) return { verified: !1, result: t }; if (!0 === n.idBlock.isHexOnly) { if ("valueHex" in n.idBlock == 0) return { verified: !1, result: { error: "Wrong ASN.1 schema" } }; const e = new Uint8Array(n.idBlock.valueHex), s = new Uint8Array(r.idBlock.valueHex); if (e.length !== s.length) return { verified: !1, result: t }; for (let r = 0; r < e.length; r++)if (e[r] !== s[1]) return { verified: !1, result: t } } if (n.hasOwnProperty("name") && (n.name = n.name.replace(/^\s+|\s+$/g, ""), "" !== n.name && (t[n.name] = r)), !0 === n.idBlock.isConstructed) { let s = 0, i = { verified: !1 }, o = n.valueBlock.value.length; if (o > 0 && n.valueBlock.value[0] instanceof ae && (o = r.valueBlock.value.length), 0 === o) return { verified: !0, result: t }; if (0 === r.valueBlock.value.length && 0 !== n.valueBlock.value.length) { let e = !0; for (let t = 0; t < n.valueBlock.value.length; t++)e = e && (n.valueBlock.value[t].optional || !1); return !0 === e ? { verified: !0, result: t } : (n.hasOwnProperty("name") && (n.name = n.name.replace(/^\s+|\s+$/g, ""), "" !== n.name && delete t[n.name]), t.error = "Inconsistent object length", { verified: !1, result: t }) } for (let a = 0; a < o; a++)if (a - s >= r.valueBlock.value.length) { if (!1 === n.valueBlock.value[a].optional) { const e = { verified: !1, result: t }; return t.error = "Inconsistent length between ASN.1 data and schema", n.hasOwnProperty("name") && (n.name = n.name.replace(/^\s+|\s+$/g, ""), "" !== n.name && (delete t[n.name], e.name = n.name)), e } } else if (n.valueBlock.value[0] instanceof ae) { if (i = e(t, r.valueBlock.value[a], n.valueBlock.value[0].value), !1 === i.verified) { if (!0 !== n.valueBlock.value[0].optional) return n.hasOwnProperty("name") && (n.name = n.name.replace(/^\s+|\s+$/g, ""), "" !== n.name && delete t[n.name]), i; s++ } if ("name" in n.valueBlock.value[0] && n.valueBlock.value[0].name.length > 0) { let e = {}; e = "local" in n.valueBlock.value[0] && !0 === n.valueBlock.value[0].local ? r : t, void 0 === e[n.valueBlock.value[0].name] && (e[n.valueBlock.value[0].name] = []), e[n.valueBlock.value[0].name].push(r.valueBlock.value[a]) } } else if (i = e(t, r.valueBlock.value[a - s], n.valueBlock.value[a]), !1 === i.verified) { if (!0 !== n.valueBlock.value[a].optional) return n.hasOwnProperty("name") && (n.name = n.name.replace(/^\s+|\s+$/g, ""), "" !== n.name && delete t[n.name]), i; s++ } if (!1 === i.verified) { const e = { verified: !1, result: t }; return n.hasOwnProperty("name") && (n.name = n.name.replace(/^\s+|\s+$/g, ""), "" !== n.name && (delete t[n.name], e.name = n.name)), e } return { verified: !0, result: t } } if ("primitiveSchema" in n && "valueHex" in r.valueBlock) { const s = ce(r.valueBlock.valueHex); if (-1 === s.offset) { const e = { verified: !1, result: s.result }; return n.hasOwnProperty("name") && (n.name = n.name.replace(/^\s+|\s+$/g, ""), "" !== n.name && (delete t[n.name], e.name = n.name)), e } return e(t, s.result, n.primitiveSchema) } return { verified: !0, result: t } }, t.IK = t.rP = t.z8 = t._K = t.fi = t.T9 = void 0; var s = r(447); const n = [new Uint8Array([1])], i = "0123456789"; class o { constructor(e = {}) { this.blockLength = (0, s.getParametersValue)(e, "blockLength", 0), this.error = (0, s.getParametersValue)(e, "error", ""), this.warnings = (0, s.getParametersValue)(e, "warnings", []), this.valueBeforeDecode = "valueBeforeDecode" in e ? e.valueBeforeDecode.slice(0) : new ArrayBuffer(0) } static blockName() { return "baseBlock" } toJSON() { return { blockName: this.constructor.blockName(), blockLength: this.blockLength, error: this.error, warnings: this.warnings, valueBeforeDecode: (0, s.bufferToHexCodes)(this.valueBeforeDecode, 0, this.valueBeforeDecode.byteLength) } } } const a = e => class extends e { constructor(e = {}) { super(e), this.isHexOnly = (0, s.getParametersValue)(e, "isHexOnly", !1), this.valueHex = "valueHex" in e ? e.valueHex.slice(0) : new ArrayBuffer(0) } static blockName() { return "hexBlock" } fromBER(e, t, r) { return !1 === (0, s.checkBufferParams)(this, e, t, r) ? -1 : 0 === new Uint8Array(e, t, r).length ? (this.warnings.push("Zero buffer length"), t) : (this.valueHex = e.slice(t, t + r), this.blockLength = r, t + r) } toBER(e = !1) { return !0 !== this.isHexOnly ? (this.error = 'Flag "isHexOnly" is not set, abort', new ArrayBuffer(0)) : !0 === e ? new ArrayBuffer(this.valueHex.byteLength) : this.valueHex.slice(0) } toJSON() { let e = {}; try { e = super.toJSON() } catch (e) { } return e.blockName = this.constructor.blockName(), e.isHexOnly = this.isHexOnly, e.valueHex = (0, s.bufferToHexCodes)(this.valueHex, 0, this.valueHex.byteLength), e } }; class l extends (a(o)) { constructor(e = {}) { super(), "idBlock" in e ? (this.isHexOnly = (0, s.getParametersValue)(e.idBlock, "isHexOnly", !1), this.valueHex = (0, s.getParametersValue)(e.idBlock, "valueHex", new ArrayBuffer(0)), this.tagClass = (0, s.getParametersValue)(e.idBlock, "tagClass", -1), this.tagNumber = (0, s.getParametersValue)(e.idBlock, "tagNumber", -1), this.isConstructed = (0, s.getParametersValue)(e.idBlock, "isConstructed", !1)) : (this.tagClass = -1, this.tagNumber = -1, this.isConstructed = !1) } static blockName() { return "identificationBlock" } toBER(e = !1) { let t, r, n = 0; switch (this.tagClass) { case 1: n |= 0; break; case 2: n |= 64; break; case 3: n |= 128; break; case 4: n |= 192; break; default: return this.error = "Unknown tag class", new ArrayBuffer(0) }if (this.isConstructed && (n |= 32), this.tagNumber < 31 && !this.isHexOnly) { if (t = new ArrayBuffer(1), r = new Uint8Array(t), !e) { let e = this.tagNumber; e &= 31, n |= e, r[0] = n } return t } if (!1 === this.isHexOnly) { const i = (0, s.utilToBase)(this.tagNumber, 7), o = new Uint8Array(i), a = i.byteLength; if (t = new ArrayBuffer(a + 1), r = new Uint8Array(t), r[0] = 31 | n, !e) { for (let e = 0; e < a - 1; e++)r[e + 1] = 128 | o[e]; r[a] = o[a - 1] } return t } if (t = new ArrayBuffer(this.valueHex.byteLength + 1), r = new Uint8Array(t), r[0] = 31 | n, !1 === e) { const e = new Uint8Array(this.valueHex); for (let t = 0; t < e.length - 1; t++)r[t + 1] = 128 | e[t]; r[this.valueHex.byteLength] = e[e.length - 1] } return t } fromBER(e, t, r) { if (!1 === (0, s.checkBufferParams)(this, e, t, r)) return -1; const n = new Uint8Array(e, t, r); if (0 === n.length) return this.error = "Zero buffer length", -1; switch (192 & n[0]) { case 0: this.tagClass = 1; break; case 64: this.tagClass = 2; break; case 128: this.tagClass = 3; break; case 192: this.tagClass = 4; break; default: return this.error = "Unknown tag class", -1 }this.isConstructed = 32 == (32 & n[0]), this.isHexOnly = !1; const i = 31 & n[0]; if (31 !== i) this.tagNumber = i, this.blockLength = 1; else { let e = 1; this.valueHex = new ArrayBuffer(255); let t = 255, r = new Uint8Array(this.valueHex); for (; 128 & n[e];) { if (r[e - 1] = 127 & n[e], e++, e >= n.length) return this.error = "End of input reached before message was fully decoded", -1; if (e === t) { t += 255; const e = new ArrayBuffer(t), s = new Uint8Array(e); for (let e = 0; e < r.length; e++)s[e] = r[e]; this.valueHex = new ArrayBuffer(t), r = new Uint8Array(this.valueHex) } } this.blockLength = e + 1, r[e - 1] = 127 & n[e]; const i = new ArrayBuffer(e), o = new Uint8Array(i); for (let t = 0; t < e; t++)o[t] = r[t]; this.valueHex = new ArrayBuffer(e), r = new Uint8Array(this.valueHex), r.set(o), this.blockLength <= 9 ? this.tagNumber = (0, s.utilFromBase)(r, 7) : (this.isHexOnly = !0, this.warnings.push("Tag too long, represented as hex-coded")) } if (1 === this.tagClass && this.isConstructed) switch (this.tagNumber) { case 1: case 2: case 5: case 6: case 9: case 13: case 14: case 23: case 24: case 31: case 32: case 33: case 34: return this.error = "Constructed encoding used for primitive type", -1 }return t + this.blockLength } toJSON() { let e = {}; try { e = super.toJSON() } catch (e) { } return e.blockName = this.constructor.blockName(), e.tagClass = this.tagClass, e.tagNumber = this.tagNumber, e.isConstructed = this.isConstructed, e } } class c extends o { constructor(e = {}) { super(), "lenBlock" in e ? (this.isIndefiniteForm = (0, s.getParametersValue)(e.lenBlock, "isIndefiniteForm", !1), this.longFormUsed = (0, s.getParametersValue)(e.lenBlock, "longFormUsed", !1), this.length = (0, s.getParametersValue)(e.lenBlock, "length", 0)) : (this.isIndefiniteForm = !1, this.longFormUsed = !1, this.length = 0) } static blockName() { return "lengthBlock" } fromBER(e, t, r) { if (!1 === (0, s.checkBufferParams)(this, e, t, r)) return -1; const n = new Uint8Array(e, t, r); if (0 === n.length) return this.error = "Zero buffer length", -1; if (255 === n[0]) return this.error = "Length block 0xFF is reserved by standard", -1; if (this.isIndefiniteForm = 128 === n[0], !0 === this.isIndefiniteForm) return this.blockLength = 1, t + this.blockLength; if (this.longFormUsed = !!(128 & n[0]), !1 === this.longFormUsed) return this.length = n[0], this.blockLength = 1, t + this.blockLength; const i = 127 & n[0]; if (i > 8) return this.error = "Too big integer", -1; if (i + 1 > n.length) return this.error = "End of input reached before message was fully decoded", -1; const o = new Uint8Array(i); for (let e = 0; e < i; e++)o[e] = n[e + 1]; return 0 === o[i - 1] && this.warnings.push("Needlessly long encoded length"), this.length = (0, s.utilFromBase)(o, 8), this.longFormUsed && this.length <= 127 && this.warnings.push("Unneccesary usage of long length form"), this.blockLength = i + 1, t + this.blockLength } toBER(e = !1) { let t, r; if (this.length > 127 && (this.longFormUsed = !0), this.isIndefiniteForm) return t = new ArrayBuffer(1), !1 === e && (r = new Uint8Array(t), r[0] = 128), t; if (!0 === this.longFormUsed) { const n = (0, s.utilToBase)(this.length, 8); if (n.byteLength > 127) return this.error = "Too big length", new ArrayBuffer(0); if (t = new ArrayBuffer(n.byteLength + 1), !0 === e) return t; const i = new Uint8Array(n); r = new Uint8Array(t), r[0] = 128 | n.byteLength; for (let e = 0; e < n.byteLength; e++)r[e + 1] = i[e]; return t } return t = new ArrayBuffer(1), !1 === e && (r = new Uint8Array(t), r[0] = this.length), t } toJSON() { let e = {}; try { e = super.toJSON() } catch (e) { } return e.blockName = this.constructor.blockName(), e.isIndefiniteForm = this.isIndefiniteForm, e.longFormUsed = this.longFormUsed, e.length = this.length, e } } class u extends o { constructor(e = {}) { super(e) } static blockName() { return "valueBlock" } fromBER(e, t, r) { throw TypeError('User need to make a specific function in a class which extends "ValueBlock"') } toBER(e = !1) { throw TypeError('User need to make a specific function in a class which extends "ValueBlock"') } } class h extends o { constructor(e = {}, t = u) { super(e), "name" in e && (this.name = e.name), "optional" in e && (this.optional = e.optional), "primitiveSchema" in e && (this.primitiveSchema = e.primitiveSchema), this.idBlock = new l(e), this.lenBlock = new c(e), this.valueBlock = new t(e) } static blockName() { return "BaseBlock" } fromBER(e, t, r) { const s = this.valueBlock.fromBER(e, t, !0 === this.lenBlock.isIndefiniteForm ? r : this.lenBlock.length); return -1 === s ? (this.error = this.valueBlock.error, s) : (0 === this.idBlock.error.length && (this.blockLength += this.idBlock.blockLength), 0 === this.lenBlock.error.length && (this.blockLength += this.lenBlock.blockLength), 0 === this.valueBlock.error.length && (this.blockLength += this.valueBlock.blockLength), s) } toBER(e = !1) { let t; const r = this.idBlock.toBER(e), n = this.valueBlock.toBER(!0); this.lenBlock.length = n.byteLength; const i = this.lenBlock.toBER(e); let o; if (t = (0, s.utilConcatBuf)(r, i), o = !1 === e ? this.valueBlock.toBER(e) : new ArrayBuffer(this.lenBlock.length), t = (0, s.utilConcatBuf)(t, o), !0 === this.lenBlock.isIndefiniteForm) { const r = new ArrayBuffer(2); if (!1 === e) { const e = new Uint8Array(r); e[0] = 0, e[1] = 0 } t = (0, s.utilConcatBuf)(t, r) } return t } toJSON() { let e = {}; try { e = super.toJSON() } catch (e) { } return e.idBlock = this.idBlock.toJSON(), e.lenBlock = this.lenBlock.toJSON(), e.valueBlock = this.valueBlock.toJSON(), "name" in this && (e.name = this.name), "optional" in this && (e.optional = this.optional), "primitiveSchema" in this && (e.primitiveSchema = this.primitiveSchema.toJSON()), e } } class f extends u { constructor(e = {}) { super(e), this.valueHex = "valueHex" in e ? e.valueHex.slice(0) : new ArrayBuffer(0), this.isHexOnly = (0, s.getParametersValue)(e, "isHexOnly", !0) } fromBER(e, t, r) { if (!1 === (0, s.checkBufferParams)(this, e, t, r)) return -1; const n = new Uint8Array(e, t, r); if (0 === n.length) return this.warnings.push("Zero buffer length"), t; this.valueHex = new ArrayBuffer(n.length); const i = new Uint8Array(this.valueHex); for (let e = 0; e < n.length; e++)i[e] = n[e]; return this.blockLength = r, t + r } toBER(e = !1) { return this.valueHex.slice(0) } static blockName() { return "PrimitiveValueBlock" } toJSON() { let e = {}; try { e = super.toJSON() } catch (e) { } return e.valueHex = (0, s.bufferToHexCodes)(this.valueHex, 0, this.valueHex.byteLength), e.isHexOnly = this.isHexOnly, e } } class g extends h { constructor(e = {}) { super(e, f), this.idBlock.isConstructed = !1 } static blockName() { return "PRIMITIVE" } } class d extends u { constructor(e = {}) { super(e), this.value = (0, s.getParametersValue)(e, "value", []), this.isIndefiniteForm = (0, s.getParametersValue)(e, "isIndefiniteForm", !1) } fromBER(e, t, r) { const n = t, i = r; if (!1 === (0, s.checkBufferParams)(this, e, t, r)) return -1; if (0 === new Uint8Array(e, t, r).length) return this.warnings.push("Zero buffer length"), t; let o = t; for (; (!0 === this.isIndefiniteForm ? 1 : r) > 0;) { const t = le(e, o, r); if (-1 === t.offset) return this.error = t.result.error, this.warnings.concat(t.result.warnings), -1; if (o = t.offset, this.blockLength += t.result.blockLength, r -= t.result.blockLength, this.value.push(t.result), !0 === this.isIndefiniteForm && t.result.constructor.blockName() === B.blockName()) break } return !0 === this.isIndefiniteForm && (this.value[this.value.length - 1].constructor.blockName() === B.blockName() ? this.value.pop() : this.warnings.push("No EndOfContent block encoded")), this.valueBeforeDecode = e.slice(n, n + i), o } toBER(e = !1) { let t = new ArrayBuffer(0); for (let r = 0; r < this.value.length; r++) { const n = this.value[r].toBER(e); t = (0, s.utilConcatBuf)(t, n) } return t } static blockName() { return "ConstructedValueBlock" } toJSON() { let e = {}; try { e = super.toJSON() } catch (e) { } e.isIndefiniteForm = this.isIndefiniteForm, e.value = []; for (let t = 0; t < this.value.length; t++)e.value.push(this.value[t].toJSON()); return e } } class k extends h { constructor(e = {}) { super(e, d), this.idBlock.isConstructed = !0 } static blockName() { return "CONSTRUCTED" } fromBER(e, t, r) { this.valueBlock.isIndefiniteForm = this.lenBlock.isIndefiniteForm; const s = this.valueBlock.fromBER(e, t, !0 === this.lenBlock.isIndefiniteForm ? r : this.lenBlock.length); return -1 === s ? (this.error = this.valueBlock.error, s) : (0 === this.idBlock.error.length && (this.blockLength += this.idBlock.blockLength), 0 === this.lenBlock.error.length && (this.blockLength += this.lenBlock.blockLength), 0 === this.valueBlock.error.length && (this.blockLength += this.valueBlock.blockLength), s) } } class m extends u { constructor(e = {}) { super(e) } fromBER(e, t, r) { return t } toBER(e = !1) { return new ArrayBuffer(0) } static blockName() { return "EndOfContentValueBlock" } } class B extends h { constructor(e = {}) { super(e, m), this.idBlock.tagClass = 1, this.idBlock.tagNumber = 0 } static blockName() { return "EndOfContent" } } class v extends u { constructor(e = {}) { super(e), this.value = (0, s.getParametersValue)(e, "value", !1), this.isHexOnly = (0, s.getParametersValue)(e, "isHexOnly", !1), "valueHex" in e ? this.valueHex = e.valueHex.slice(0) : (this.valueHex = new ArrayBuffer(1), !0 === this.value && (new Uint8Array(this.valueHex)[0] = 255)) } fromBER(e, t, r) { if (!1 === (0, s.checkBufferParams)(this, e, t, r)) return -1; const n = new Uint8Array(e, t, r); r > 1 && this.warnings.push("Boolean value encoded in more then 1 octet"), this.isHexOnly = !0, this.valueHex = new ArrayBuffer(n.length); const i = new Uint8Array(this.valueHex); for (let e = 0; e < n.length; e++)i[e] = n[e]; return 0 !== s.utilDecodeTC.call(this) ? this.value = !0 : this.value = !1, this.blockLength = r, t + r } toBER(e = !1) { return this.valueHex } static blockName() { return "BooleanValueBlock" } toJSON() { let e = {}; try { e = super.toJSON() } catch (e) { } return e.value = this.value, e.isHexOnly = this.isHexOnly, e.valueHex = (0, s.bufferToHexCodes)(this.valueHex, 0, this.valueHex.byteLength), e } } class b extends h { constructor(e = {}) { super(e, v), this.idBlock.tagClass = 1, this.idBlock.tagNumber = 1 } static blockName() { return "Boolean" } } class y extends k { constructor(e = {}) { super(e), this.idBlock.tagClass = 1, this.idBlock.tagNumber = 16 } static blockName() { return "Sequence" } } t.T9 = y; class w extends k { constructor(e = {}) { super(e), this.idBlock.tagClass = 1, this.idBlock.tagNumber = 17 } static blockName() { return "Set" } } class p extends h { constructor(e = {}) { super(e, o), this.idBlock.tagClass = 1, this.idBlock.tagNumber = 5 } static blockName() { return "Null" } fromBER(e, t, r) { return this.lenBlock.length > 0 && this.warnings.push("Non-zero length of value block for Null type"), 0 === this.idBlock.error.length && (this.blockLength += this.idBlock.blockLength), 0 === this.lenBlock.error.length && (this.blockLength += this.lenBlock.blockLength), this.blockLength += r, t + r > e.byteLength ? (this.error = "End of input reached before message was fully decoded (inconsistent offset and length values)", -1) : t + r } toBER(e = !1) { const t = new ArrayBuffer(2); if (!0 === e) return t; const r = new Uint8Array(t); return r[0] = 5, r[1] = 0, t } } class x extends (a(d)) { constructor(e = {}) { super(e), this.isConstructed = (0, s.getParametersValue)(e, "isConstructed", !1) } fromBER(e, t, r) { let s = 0; if (!0 === this.isConstructed) { if (this.isHexOnly = !1, s = d.prototype.fromBER.call(this, e, t, r), -1 === s) return s; for (let e = 0; e < this.value.length; e++) { const t = this.value[e].constructor.blockName(); if (t === B.blockName()) { if (!0 === this.isIndefiniteForm) break; return this.error = "EndOfContent is unexpected, OCTET STRING may consists of OCTET STRINGs only", -1 } if (t !== N.blockName()) return this.error = "OCTET STRING may consists of OCTET STRINGs only", -1 } } else this.isHexOnly = !0, s = super.fromBER(e, t, r), this.blockLength = r; return s } toBER(e = !1) { if (!0 === this.isConstructed) return d.prototype.toBER.call(this, e); let t = new ArrayBuffer(this.valueHex.byteLength); return !0 === e || 0 === this.valueHex.byteLength || (t = this.valueHex.slice(0)), t } static blockName() { return "OctetStringValueBlock" } toJSON() { let e = {}; try { e = super.toJSON() } catch (e) { } return e.isConstructed = this.isConstructed, e.isHexOnly = this.isHexOnly, e.valueHex = (0, s.bufferToHexCodes)(this.valueHex, 0, this.valueHex.byteLength), e } } class N extends h { constructor(e = {}) { super(e, x), this.idBlock.tagClass = 1, this.idBlock.tagNumber = 4 } fromBER(e, t, r) { return this.valueBlock.isConstructed = this.idBlock.isConstructed, this.valueBlock.isIndefiniteForm = this.lenBlock.isIndefiniteForm, 0 === r ? (0 === this.idBlock.error.length && (this.blockLength += this.idBlock.blockLength), 0 === this.lenBlock.error.length && (this.blockLength += this.lenBlock.blockLength), t) : super.fromBER(e, t, r) } static blockName() { return "OctetString" } isEqual(e) { return e instanceof N != 0 && JSON.stringify(this) === JSON.stringify(e) } } t.fi = N; class A extends (a(d)) { constructor(e = {}) { super(e), this.unusedBits = (0, s.getParametersValue)(e, "unusedBits", 0), this.isConstructed = (0, s.getParametersValue)(e, "isConstructed", !1), this.blockLength = this.valueHex.byteLength } fromBER(e, t, r) { if (0 === r) return t; let n = -1; if (!0 === this.isConstructed) { if (n = d.prototype.fromBER.call(this, e, t, r), -1 === n) return n; for (let e = 0; e < this.value.length; e++) { const t = this.value[e].constructor.blockName(); if (t === B.blockName()) { if (!0 === this.isIndefiniteForm) break; return this.error = "EndOfContent is unexpected, BIT STRING may consists of BIT STRINGs only", -1 } if (t !== S.blockName()) return this.error = "BIT STRING may consists of BIT STRINGs only", -1; if (this.unusedBits > 0 && this.value[e].valueBlock.unusedBits > 0) return this.error = 'Usign of "unused bits" inside constructive BIT STRING allowed for least one only', -1; if (this.unusedBits = this.value[e].valueBlock.unusedBits, this.unusedBits > 7) return this.error = "Unused bits for BitString must be in range 0-7", -1 } return n } if (!1 === (0, s.checkBufferParams)(this, e, t, r)) return -1; const i = new Uint8Array(e, t, r); if (this.unusedBits = i[0], this.unusedBits > 7) return this.error = "Unused bits for BitString must be in range 0-7", -1; this.valueHex = new ArrayBuffer(i.length - 1); const o = new Uint8Array(this.valueHex); for (let e = 0; e < r - 1; e++)o[e] = i[e + 1]; return this.blockLength = i.length, t + r } toBER(e = !1) { if (!0 === this.isConstructed) return d.prototype.toBER.call(this, e); if (!0 === e) return new ArrayBuffer(this.valueHex.byteLength + 1); if (0 === this.valueHex.byteLength) return new ArrayBuffer(0); const t = new Uint8Array(this.valueHex), r = new ArrayBuffer(this.valueHex.byteLength + 1), s = new Uint8Array(r); s[0] = this.unusedBits; for (let e = 0; e < this.valueHex.byteLength; e++)s[e + 1] = t[e]; return r } static blockName() { return "BitStringValueBlock" } toJSON() { let e = {}; try { e = super.toJSON() } catch (e) { } return e.unusedBits = this.unusedBits, e.isConstructed = this.isConstructed, e.isHexOnly = this.isHexOnly, e.valueHex = (0, s.bufferToHexCodes)(this.valueHex, 0, this.valueHex.byteLength), e } } class S extends h { constructor(e = {}) { super(e, A), this.idBlock.tagClass = 1, this.idBlock.tagNumber = 3 } static blockName() { return "BitString" } fromBER(e, t, r) { return 0 === r ? t : (this.valueBlock.isConstructed = this.idBlock.isConstructed, this.valueBlock.isIndefiniteForm = this.lenBlock.isIndefiniteForm, super.fromBER(e, t, r)) } isEqual(e) { return e instanceof S != 0 && JSON.stringify(this) === JSON.stringify(e) } } t._K = S; class H extends (a(u)) { constructor(e = {}) { super(e), "value" in e && (this.valueDec = e.value) } set valueHex(e) { this._valueHex = e.slice(0), e.byteLength >= 4 ? (this.warnings.push("Too big Integer for decoding, hex only"), this.isHexOnly = !0, this._valueDec = 0) : (this.isHexOnly = !1, e.byteLength > 0 && (this._valueDec = s.utilDecodeTC.call(this))) } get valueHex() { return this._valueHex } set valueDec(e) { this._valueDec = e, this.isHexOnly = !1, this._valueHex = (0, s.utilEncodeTC)(e) } get valueDec() { return this._valueDec } fromDER(e, t, r, s = 0) { const n = this.fromBER(e, t, r); if (-1 === n) return n; const i = new Uint8Array(this._valueHex); if (0 === i[0] && 0 != (128 & i[1])) { const e = new ArrayBuffer(this._valueHex.byteLength - 1); new Uint8Array(e).set(new Uint8Array(this._valueHex, 1, this._valueHex.byteLength - 1)), this._valueHex = e.slice(0) } else if (0 !== s && this._valueHex.byteLength < s) { s - this._valueHex.byteLength > 1 && (s = this._valueHex.byteLength + 1); const e = new ArrayBuffer(s); new Uint8Array(e).set(i, s - this._valueHex.byteLength), this._valueHex = e.slice(0) } return n } toDER(e = !1) { const t = new Uint8Array(this._valueHex); switch (!0) { case 0 != (128 & t[0]): { const e = new ArrayBuffer(this._valueHex.byteLength + 1), r = new Uint8Array(e); r[0] = 0, r.set(t, 1), this._valueHex = e.slice(0) } break; case 0 === t[0] && 0 == (128 & t[1]): { const e = new ArrayBuffer(this._valueHex.byteLength - 1); new Uint8Array(e).set(new Uint8Array(this._valueHex, 1, this._valueHex.byteLength - 1)), this._valueHex = e.slice(0) } }return this.toBER(e) } fromBER(e, t, r) { const s = super.fromBER(e, t, r); return -1 === s ? s : (this.blockLength = r, t + r) } toBER(e = !1) { return this.valueHex.slice(0) } static blockName() { return "IntegerValueBlock" } toJSON() { let e = {}; try { e = super.toJSON() } catch (e) { } return e.valueDec = this.valueDec, e } toString() { function e(e, t) { const r = new Uint8Array([0]); let n = new Uint8Array(e), i = new Uint8Array(t), o = n.slice(0); const a = o.length - 1; let l = i.slice(0); const c = l.length - 1; let u = 0, h = 0; for (let e = c < a ? a : c; e >= 0; e--, h++) { switch (!0) { case h < l.length: u = o[a - h] + l[c - h] + r[0]; break; default: u = o[a - h] + r[0] }switch (r[0] = u / 10, !0) { case h >= o.length: o = (0, s.utilConcatView)(new Uint8Array([u % 10]), o); break; default: o[a - h] = u % 10 } } return r[0] > 0 && (o = (0, s.utilConcatView)(r, o)), o.slice(0) } function t(e) { if (e >= n.length) for (let t = n.length; t <= e; t++) { const e = new Uint8Array([0]); let r = n[t - 1].slice(0); for (let t = r.length - 1; t >= 0; t--) { const s = new Uint8Array([(r[t] << 1) + e[0]]); e[0] = s[0] / 10, r[t] = s[0] % 10 } e[0] > 0 && (r = (0, s.utilConcatView)(e, r)), n.push(r) } return n[e] } function r(e, t) { let r = 0, s = new Uint8Array(e), n = new Uint8Array(t), i = s.slice(0); const o = i.length - 1; let a = n.slice(0); const l = a.length - 1; let c, u = 0; for (let e = l; e >= 0; e--, u++)switch (c = i[o - u] - a[l - u] - r, !0) { case c < 0: r = 1, i[o - u] = c + 10; break; default: r = 0, i[o - u] = c }if (r > 0) for (let e = o - l + 1; e >= 0; e--, u++) { if (c = i[o - u] - r, !(c < 0)) { r = 0, i[o - u] = c; break } r = 1, i[o - u] = c + 10 } return i.slice() } const o = 8 * this._valueHex.byteLength - 1; let a, l = new Uint8Array(8 * this._valueHex.byteLength / 3), c = 0; const u = new Uint8Array(this._valueHex); let h = "", f = !1; for (let s = this._valueHex.byteLength - 1; s >= 0; s--) { a = u[s]; for (let s = 0; s < 8; s++) { if (1 == (1 & a)) switch (c) { case o: l = r(t(c), l), h = "-"; break; default: l = e(l, t(c)) }c++, a >>= 1 } } for (let e = 0; e < l.length; e++)l[e] && (f = !0), f && (h += i.charAt(l[e])); return !1 === f && (h += i.charAt(0)), h } } class L extends h { constructor(e = {}) { super(e, H), this.idBlock.tagClass = 1, this.idBlock.tagNumber = 2 } static blockName() { return "Integer" } isEqual(e) { return e instanceof L ? this.valueBlock.isHexOnly && e.valueBlock.isHexOnly ? (0, s.isEqualBuffer)(this.valueBlock.valueHex, e.valueBlock.valueHex) : this.valueBlock.isHexOnly === e.valueBlock.isHexOnly && this.valueBlock.valueDec === e.valueBlock.valueDec : e instanceof ArrayBuffer && (0, s.isEqualBuffer)(this.valueBlock.valueHex, e) } convertToDER() { const e = new L({ valueHex: this.valueBlock.valueHex }); return e.valueBlock.toDER(), e } convertFromDER() { const e = this.valueBlock.valueHex.byteLength % 2 ? this.valueBlock.valueHex.byteLength + 1 : this.valueBlock.valueHex.byteLength, t = new L({ valueHex: this.valueBlock.valueHex }); return t.valueBlock.fromDER(t.valueBlock.valueHex, 0, t.valueBlock.valueHex.byteLength, e), t } } t.z8 = L; class O extends L { constructor(e = {}) { super(e), this.idBlock.tagClass = 1, this.idBlock.tagNumber = 10 } static blockName() { return "Enumerated" } } class C extends (a(o)) { constructor(e = {}) { super(e), this.valueDec = (0, s.getParametersValue)(e, "valueDec", -1), this.isFirstSid = (0, s.getParametersValue)(e, "isFirstSid", !1) } static blockName() { return "sidBlock" } fromBER(e, t, r) { if (0 === r) return t; if (!1 === (0, s.checkBufferParams)(this, e, t, r)) return -1; const n = new Uint8Array(e, t, r); this.valueHex = new ArrayBuffer(r); let i = new Uint8Array(this.valueHex); for (let e = 0; e < r && (i[e] = 127 & n[e], this.blockLength++, 0 != (128 & n[e])); e++); const o = new ArrayBuffer(this.blockLength), a = new Uint8Array(o); for (let e = 0; e < this.blockLength; e++)a[e] = i[e]; return this.valueHex = o.slice(0), i = new Uint8Array(this.valueHex), 0 != (128 & n[this.blockLength - 1]) ? (this.error = "End of input reached before message was fully decoded", -1) : (0 === i[0] && this.warnings.push("Needlessly long format of SID encoding"), this.blockLength <= 8 ? this.valueDec = (0, s.utilFromBase)(i, 7) : (this.isHexOnly = !0, this.warnings.push("Too big SID for decoding, hex only")), t + this.blockLength) } toBER(e = !1) { let t, r; if (this.isHexOnly) { if (!0 === e) return new ArrayBuffer(this.valueHex.byteLength); const s = new Uint8Array(this.valueHex); t = new ArrayBuffer(this.blockLength), r = new Uint8Array(t); for (let e = 0; e < this.blockLength - 1; e++)r[e] = 128 | s[e]; return r[this.blockLength - 1] = s[this.blockLength - 1], t } const n = (0, s.utilToBase)(this.valueDec, 7); if (0 === n.byteLength) return this.error = "Error during encoding SID value", new ArrayBuffer(0); if (t = new ArrayBuffer(n.byteLength), !1 === e) { const e = new Uint8Array(n); r = new Uint8Array(t); for (let t = 0; t < n.byteLength - 1; t++)r[t] = 128 | e[t]; r[n.byteLength - 1] = e[n.byteLength - 1] } return t } toString() { let e = ""; if (!0 === this.isHexOnly) e = (0, s.bufferToHexCodes)(this.valueHex, 0, this.valueHex.byteLength); else if (this.isFirstSid) { let t = this.valueDec; this.valueDec <= 39 ? e = "0." : this.valueDec <= 79 ? (e = "1.", t -= 40) : (e = "2.", t -= 80), e += t.toString() } else e = this.valueDec.toString(); return e } toJSON() { let e = {}; try { e = super.toJSON() } catch (e) { } return e.valueDec = this.valueDec, e.isFirstSid = this.isFirstSid, e } } class U extends u { constructor(e = {}) { super(e), this.fromString((0, s.getParametersValue)(e, "value", "")) } fromBER(e, t, r) { let s = t; for (; r > 0;) { const t = new C; if (s = t.fromBER(e, s, r), -1 === s) return this.blockLength = 0, this.error = t.error, s; 0 === this.value.length && (t.isFirstSid = !0), this.blockLength += t.blockLength, r -= t.blockLength, this.value.push(t) } return s } toBER(e = !1) { let t = new ArrayBuffer(0); for (let r = 0; r < this.value.length; r++) { const n = this.value[r].toBER(e); if (0 === n.byteLength) return this.error = this.value[r].error, new ArrayBuffer(0); t = (0, s.utilConcatBuf)(t, n) } return t } fromString(e) { this.value = []; let t = 0, r = 0, s = "", n = !1; do { if (r = e.indexOf(".", t), s = -1 === r ? e.substr(t) : e.substr(t, r - t), t = r + 1, n) { const e = this.value[0]; let t = 0; switch (e.valueDec) { case 0: break; case 1: t = 40; break; case 2: t = 80; break; default: return this.value = [], !1 }const r = parseInt(s, 10); if (isNaN(r)) return !0; e.valueDec = r + t, n = !1 } else { const e = new C; if (e.valueDec = parseInt(s, 10), isNaN(e.valueDec)) return !0; 0 === this.value.length && (e.isFirstSid = !0, n = !0), this.value.push(e) } } while (-1 !== r); return !0 } toString() { let e = "", t = !1; for (let r = 0; r < this.value.length; r++) { t = this.value[r].isHexOnly; let s = this.value[r].toString(); 0 !== r && (e = `${e}.`), t ? (s = `{${s}}`, this.value[r].isFirstSid ? e = `2.{${s} - 80}` : e += s) : e += s } return e } static blockName() { return "ObjectIdentifierValueBlock" } toJSON() { let e = {}; try { e = super.toJSON() } catch (e) { } e.value = this.toString(), e.sidArray = []; for (let t = 0; t < this.value.length; t++)e.sidArray.push(this.value[t].toJSON()); return e } } class I extends h { constructor(e = {}) { super(e, U), this.idBlock.tagClass = 1, this.idBlock.tagNumber = 6 } static blockName() { return "ObjectIdentifier" } } t.rP = I; class E extends (a(o)) { constructor(e = {}) { super(e), this.isHexOnly = !0, this.value = "" } static blockName() { return "Utf8StringValueBlock" } toJSON() { let e = {}; try { e = super.toJSON() } catch (e) { } return e.value = this.value, e } } class T extends h { constructor(e = {}) { super(e, E), "value" in e && this.fromString(e.value), this.idBlock.tagClass = 1, this.idBlock.tagNumber = 12 } static blockName() { return "Utf8String" } fromBER(e, t, r) { const s = this.valueBlock.fromBER(e, t, !0 === this.lenBlock.isIndefiniteForm ? r : this.lenBlock.length); return -1 === s ? (this.error = this.valueBlock.error, s) : (this.fromBuffer(this.valueBlock.valueHex), 0 === this.idBlock.error.length && (this.blockLength += this.idBlock.blockLength), 0 === this.lenBlock.error.length && (this.blockLength += this.lenBlock.blockLength), 0 === this.valueBlock.error.length && (this.blockLength += this.valueBlock.blockLength), s) } fromBuffer(e) { this.valueBlock.value = String.fromCharCode.apply(null, new Uint8Array(e)); try { this.valueBlock.value = decodeURIComponent(escape(this.valueBlock.value)) } catch (e) { this.warnings.push(`Error during "decodeURIComponent": ${e}, using raw string`) } } fromString(e) { const t = unescape(encodeURIComponent(e)), r = t.length; this.valueBlock.valueHex = new ArrayBuffer(r); const s = new Uint8Array(this.valueBlock.valueHex); for (let e = 0; e < r; e++)s[e] = t.charCodeAt(e); this.valueBlock.value = e } } class R extends (a(o)) { constructor(e = {}) { super(e), this.valueDec = (0, s.getParametersValue)(e, "valueDec", -1) } static blockName() { return "relativeSidBlock" } fromBER(e, t, r) { if (0 === r) return t; if (!1 === (0, s.checkBufferParams)(this, e, t, r)) return -1; const n = new Uint8Array(e, t, r); this.valueHex = new ArrayBuffer(r); let i = new Uint8Array(this.valueHex); for (let e = 0; e < r && (i[e] = 127 & n[e], this.blockLength++, 0 != (128 & n[e])); e++); const o = new ArrayBuffer(this.blockLength), a = new Uint8Array(o); for (let e = 0; e < this.blockLength; e++)a[e] = i[e]; return this.valueHex = o.slice(0), i = new Uint8Array(this.valueHex), 0 != (128 & n[this.blockLength - 1]) ? (this.error = "End of input reached before message was fully decoded", -1) : (0 === i[0] && this.warnings.push("Needlessly long format of SID encoding"), this.blockLength <= 8 ? this.valueDec = (0, s.utilFromBase)(i, 7) : (this.isHexOnly = !0, this.warnings.push("Too big SID for decoding, hex only")), t + this.blockLength) } toBER(e = !1) { let t, r; if (this.isHexOnly) { if (!0 === e) return new ArrayBuffer(this.valueHex.byteLength); const s = new Uint8Array(this.valueHex); t = new ArrayBuffer(this.blockLength), r = new Uint8Array(t); for (let e = 0; e < this.blockLength - 1; e++)r[e] = 128 | s[e]; return r[this.blockLength - 1] = s[this.blockLength - 1], t } const n = (0, s.utilToBase)(this.valueDec, 7); if (0 === n.byteLength) return this.error = "Error during encoding SID value", new ArrayBuffer(0); if (t = new ArrayBuffer(n.byteLength), !1 === e) { const e = new Uint8Array(n); r = new Uint8Array(t); for (let t = 0; t < n.byteLength - 1; t++)r[t] = 128 | e[t]; r[n.byteLength - 1] = e[n.byteLength - 1] } return t } toString() { let e = ""; return e = !0 === this.isHexOnly ? (0, s.bufferToHexCodes)(this.valueHex, 0, this.valueHex.byteLength) : this.valueDec.toString(), e } toJSON() { let e = {}; try { e = super.toJSON() } catch (e) { } return e.valueDec = this.valueDec, e } } class P extends u { constructor(e = {}) { super(e), this.fromString((0, s.getParametersValue)(e, "value", "")) } fromBER(e, t, r) { let s = t; for (; r > 0;) { const t = new R; if (s = t.fromBER(e, s, r), -1 === s) return this.blockLength = 0, this.error = t.error, s; this.blockLength += t.blockLength, r -= t.blockLength, this.value.push(t) } return s } toBER(e = !1) { let t = new ArrayBuffer(0); for (let r = 0; r < this.value.length; r++) { const n = this.value[r].toBER(e); if (0 === n.byteLength) return this.error = this.value[r].error, new ArrayBuffer(0); t = (0, s.utilConcatBuf)(t, n) } return t } fromString(e) { this.value = []; let t = 0, r = 0, s = ""; do { r = e.indexOf(".", t), s = -1 === r ? e.substr(t) : e.substr(t, r - t), t = r + 1; const n = new R; if (n.valueDec = parseInt(s, 10), isNaN(n.valueDec)) return !0; this.value.push(n) } while (-1 !== r); return !0 } toString() { let e = "", t = !1; for (let r = 0; r < this.value.length; r++) { t = this.value[r].isHexOnly; let s = this.value[r].toString(); 0 !== r && (e = `${e}.`), t ? (s = `{${s}}`, e += s) : e += s } return e } static blockName() { return "RelativeObjectIdentifierValueBlock" } toJSON() { let e = {}; try { e = super.toJSON() } catch (e) { } e.value = this.toString(), e.sidArray = []; for (let t = 0; t < this.value.length; t++)e.sidArray.push(this.value[t].toJSON()); return e } } class D extends h { constructor(e = {}) { super(e, P), this.idBlock.tagClass = 1, this.idBlock.tagNumber = 13 } static blockName() { return "RelativeObjectIdentifier" } } class V extends (a(o)) { constructor(e = {}) { super(e), this.isHexOnly = !0, this.value = "" } static blockName() { return "BmpStringValueBlock" } toJSON() { let e = {}; try { e = super.toJSON() } catch (e) { } return e.value = this.value, e } } class F extends h { constructor(e = {}) { super(e, V), "value" in e && this.fromString(e.value), this.idBlock.tagClass = 1, this.idBlock.tagNumber = 30 } static blockName() { return "BmpString" } fromBER(e, t, r) { const s = this.valueBlock.fromBER(e, t, !0 === this.lenBlock.isIndefiniteForm ? r : this.lenBlock.length); return -1 === s ? (this.error = this.valueBlock.error, s) : (this.fromBuffer(this.valueBlock.valueHex), 0 === this.idBlock.error.length && (this.blockLength += this.idBlock.blockLength), 0 === this.lenBlock.error.length && (this.blockLength += this.lenBlock.blockLength), 0 === this.valueBlock.error.length && (this.blockLength += this.valueBlock.blockLength), s) } fromBuffer(e) { const t = e.slice(0), r = new Uint8Array(t); for (let e = 0; e < r.length; e += 2) { const t = r[e]; r[e] = r[e + 1], r[e + 1] = t } this.valueBlock.value = String.fromCharCode.apply(null, new Uint16Array(t)) } fromString(e) { const t = e.length; this.valueBlock.valueHex = new ArrayBuffer(2 * t); const r = new Uint8Array(this.valueBlock.valueHex); for (let n = 0; n < t; n++) { const t = (0, s.utilToBase)(e.charCodeAt(n), 8), i = new Uint8Array(t); if (i.length > 2) continue; const o = 2 - i.length; for (let e = i.length - 1; e >= 0; e--)r[2 * n + e + o] = i[e] } this.valueBlock.value = e } } class J extends (a(o)) { constructor(e = {}) { super(e), this.isHexOnly = !0, this.value = "" } static blockName() { return "UniversalStringValueBlock" } toJSON() { let e = {}; try { e = super.toJSON() } catch (e) { } return e.value = this.value, e } } class _ extends h { constructor(e = {}) { super(e, J), "value" in e && this.fromString(e.value), this.idBlock.tagClass = 1, this.idBlock.tagNumber = 28 } static blockName() { return "UniversalString" } fromBER(e, t, r) { const s = this.valueBlock.fromBER(e, t, !0 === this.lenBlock.isIndefiniteForm ? r : this.lenBlock.length); return -1 === s ? (this.error = this.valueBlock.error, s) : (this.fromBuffer(this.valueBlock.valueHex), 0 === this.idBlock.error.length && (this.blockLength += this.idBlock.blockLength), 0 === this.lenBlock.error.length && (this.blockLength += this.lenBlock.blockLength), 0 === this.valueBlock.error.length && (this.blockLength += this.valueBlock.blockLength), s) } fromBuffer(e) { const t = e.slice(0), r = new Uint8Array(t); for (let e = 0; e < r.length; e += 4)r[e] = r[e + 3], r[e + 1] = r[e + 2], r[e + 2] = 0, r[e + 3] = 0; this.valueBlock.value = String.fromCharCode.apply(null, new Uint32Array(t)) } fromString(e) { const t = e.length; this.valueBlock.valueHex = new ArrayBuffer(4 * t); const r = new Uint8Array(this.valueBlock.valueHex); for (let n = 0; n < t; n++) { const t = (0, s.utilToBase)(e.charCodeAt(n), 8), i = new Uint8Array(t); if (i.length > 4) continue; const o = 4 - i.length; for (let e = i.length - 1; e >= 0; e--)r[4 * n + e + o] = i[e] } this.valueBlock.value = e } } class j extends (a(o)) { constructor(e = {}) { super(e), this.value = "", this.isHexOnly = !0 } static blockName() { return "SimpleStringValueBlock" } toJSON() { let e = {}; try { e = super.toJSON() } catch (e) { } return e.value = this.value, e } } class M extends h { constructor(e = {}) { super(e, j), "value" in e && this.fromString(e.value) } static blockName() { return "SIMPLESTRING" } fromBER(e, t, r) { const s = this.valueBlock.fromBER(e, t, !0 === this.lenBlock.isIndefiniteForm ? r : this.lenBlock.length); return -1 === s ? (this.error = this.valueBlock.error, s) : (this.fromBuffer(this.valueBlock.valueHex), 0 === this.idBlock.error.length && (this.blockLength += this.idBlock.blockLength), 0 === this.lenBlock.error.length && (this.blockLength += this.lenBlock.blockLength), 0 === this.valueBlock.error.length && (this.blockLength += this.valueBlock.blockLength), s) } fromBuffer(e) { this.valueBlock.value = String.fromCharCode.apply(null, new Uint8Array(e)) } fromString(e) { const t = e.length; this.valueBlock.valueHex = new ArrayBuffer(t); const r = new Uint8Array(this.valueBlock.valueHex); for (let s = 0; s < t; s++)r[s] = e.charCodeAt(s); this.valueBlock.value = e } } class W extends M { constructor(e = {}) { super(e), this.idBlock.tagClass = 1, this.idBlock.tagNumber = 18 } static blockName() { return "NumericString" } } class $ extends M { constructor(e = {}) { super(e), this.idBlock.tagClass = 1, this.idBlock.tagNumber = 19 } static blockName() { return "PrintableString" } } class K extends M { constructor(e = {}) { super(e), this.idBlock.tagClass = 1, this.idBlock.tagNumber = 20 } static blockName() { return "TeletexString" } } class G extends M { constructor(e = {}) { super(e), this.idBlock.tagClass = 1, this.idBlock.tagNumber = 21 } static blockName() { return "VideotexString" } } class z extends M { constructor(e = {}) { super(e), this.idBlock.tagClass = 1, this.idBlock.tagNumber = 22 } static blockName() { return "IA5String" } } class Z extends M { constructor(e = {}) { super(e), this.idBlock.tagClass = 1, this.idBlock.tagNumber = 25 } static blockName() { return "GraphicString" } } class q extends M { constructor(e = {}) { super(e), this.idBlock.tagClass = 1, this.idBlock.tagNumber = 26 } static blockName() { return "VisibleString" } } class Y extends M { constructor(e = {}) { super(e), this.idBlock.tagClass = 1, this.idBlock.tagNumber = 27 } static blockName() { return "GeneralString" } } class Q extends M { constructor(e = {}) { super(e), this.idBlock.tagClass = 1, this.idBlock.tagNumber = 29 } static blockName() { return "CharacterString" } } class X extends q { constructor(e = {}) { if (super(e), this.year = 0, this.month = 0, this.day = 0, this.hour = 0, this.minute = 0, this.second = 0, "value" in e) { this.fromString(e.value), this.valueBlock.valueHex = new ArrayBuffer(e.value.length); const t = new Uint8Array(this.valueBlock.valueHex); for (let r = 0; r < e.value.length; r++)t[r] = e.value.charCodeAt(r) } "valueDate" in e && (this.fromDate(e.valueDate), this.valueBlock.valueHex = this.toBuffer()), this.idBlock.tagClass = 1, this.idBlock.tagNumber = 23 } fromBER(e, t, r) { const s = this.valueBlock.fromBER(e, t, !0 === this.lenBlock.isIndefiniteForm ? r : this.lenBlock.length); return -1 === s ? (this.error = this.valueBlock.error, s) : (this.fromBuffer(this.valueBlock.valueHex), 0 === this.idBlock.error.length && (this.blockLength += this.idBlock.blockLength), 0 === this.lenBlock.error.length && (this.blockLength += this.lenBlock.blockLength), 0 === this.valueBlock.error.length && (this.blockLength += this.valueBlock.blockLength), s) } fromBuffer(e) { this.fromString(String.fromCharCode.apply(null, new Uint8Array(e))) } toBuffer() { const e = this.toString(), t = new ArrayBuffer(e.length), r = new Uint8Array(t); for (let t = 0; t < e.length; t++)r[t] = e.charCodeAt(t); return t } fromDate(e) { this.year = e.getUTCFullYear(), this.month = e.getUTCMonth() + 1, this.day = e.getUTCDate(), this.hour = e.getUTCHours(), this.minute = e.getUTCMinutes(), this.second = e.getUTCSeconds() } toDate() { return new Date(Date.UTC(this.year, this.month - 1, this.day, this.hour, this.minute, this.second)) } fromString(e) { const t = /(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})Z/gi.exec(e); if (null === t) return void (this.error = "Wrong input string for convertion"); const r = parseInt(t[1], 10); this.year = r >= 50 ? 1900 + r : 2e3 + r, this.month = parseInt(t[2], 10), this.day = parseInt(t[3], 10), this.hour = parseInt(t[4], 10), this.minute = parseInt(t[5], 10), this.second = parseInt(t[6], 10) } toString() { const e = new Array(7); return e[0] = (0, s.padNumber)(this.year < 2e3 ? this.year - 1900 : this.year - 2e3, 2), e[1] = (0, s.padNumber)(this.month, 2), e[2] = (0, s.padNumber)(this.day, 2), e[3] = (0, s.padNumber)(this.hour, 2), e[4] = (0, s.padNumber)(this.minute, 2), e[5] = (0, s.padNumber)(this.second, 2), e[6] = "Z", e.join("") } static blockName() { return "UTCTime" } toJSON() { let e = {}; try { e = super.toJSON() } catch (e) { } return e.year = this.year, e.month = this.month, e.day = this.day, e.hour = this.hour, e.minute = this.minute, e.second = this.second, e } } class ee extends q { constructor(e = {}) { if (super(e), this.year = 0, this.month = 0, this.day = 0, this.hour = 0, this.minute = 0, this.second = 0, this.millisecond = 0, "value" in e) { this.fromString(e.value), this.valueBlock.valueHex = new ArrayBuffer(e.value.length); const t = new Uint8Array(this.valueBlock.valueHex); for (let r = 0; r < e.value.length; r++)t[r] = e.value.charCodeAt(r) } "valueDate" in e && (this.fromDate(e.valueDate), this.valueBlock.valueHex = this.toBuffer()), this.idBlock.tagClass = 1, this.idBlock.tagNumber = 24 } fromBER(e, t, r) { const s = this.valueBlock.fromBER(e, t, !0 === this.lenBlock.isIndefiniteForm ? r : this.lenBlock.length); return -1 === s ? (this.error = this.valueBlock.error, s) : (this.fromBuffer(this.valueBlock.valueHex), 0 === this.idBlock.error.length && (this.blockLength += this.idBlock.blockLength), 0 === this.lenBlock.error.length && (this.blockLength += this.lenBlock.blockLength), 0 === this.valueBlock.error.length && (this.blockLength += this.valueBlock.blockLength), s) } fromBuffer(e) { this.fromString(String.fromCharCode.apply(null, new Uint8Array(e))) } toBuffer() { const e = this.toString(), t = new ArrayBuffer(e.length), r = new Uint8Array(t); for (let t = 0; t < e.length; t++)r[t] = e.charCodeAt(t); return t } fromDate(e) { this.year = e.getUTCFullYear(), this.month = e.getUTCMonth() + 1, this.day = e.getUTCDate(), this.hour = e.getUTCHours(), this.minute = e.getUTCMinutes(), this.second = e.getUTCSeconds(), this.millisecond = e.getUTCMilliseconds() } toDate() { return new Date(Date.UTC(this.year, this.month - 1, this.day, this.hour, this.minute, this.second, this.millisecond)) } fromString(e) { let t, r = !1, s = "", n = "", i = 0, o = 0, a = 0; if ("Z" === e[e.length - 1]) s = e.substr(0, e.length - 1), r = !0; else { const t = new Number(e[e.length - 1]); if (isNaN(t.valueOf())) throw new Error("Wrong input string for convertion"); s = e } if (r) { if (-1 !== s.indexOf("+")) throw new Error("Wrong input string for convertion"); if (-1 !== s.indexOf("-")) throw new Error("Wrong input string for convertion") } else { let e = 1, t = s.indexOf("+"), r = ""; if (-1 === t && (t = s.indexOf("-"), e = -1), -1 !== t) { if (r = s.substr(t + 1), s = s.substr(0, t), 2 !== r.length && 4 !== r.length) throw new Error("Wrong input string for convertion"); let n = new Number(r.substr(0, 2)); if (isNaN(n.valueOf())) throw new Error("Wrong input string for convertion"); if (o = e * n, 4 === r.length) { if (n = new Number(r.substr(2, 2)), isNaN(n.valueOf())) throw new Error("Wrong input string for convertion"); a = e * n } } } let l = s.indexOf("."); if (-1 === l && (l = s.indexOf(",")), -1 !== l) { const e = new Number(`0${s.substr(l)}`); if (isNaN(e.valueOf())) throw new Error("Wrong input string for convertion"); i = e.valueOf(), n = s.substr(0, l) } else n = s; switch (!0) { case 8 === n.length: if (t = /(\d{4})(\d{2})(\d{2})/gi, -1 !== l) throw new Error("Wrong input string for convertion"); break; case 10 === n.length: if (t = /(\d{4})(\d{2})(\d{2})(\d{2})/gi, -1 !== l) { let e = 60 * i; this.minute = Math.floor(e), e = 60 * (e - this.minute), this.second = Math.floor(e), e = 1e3 * (e - this.second), this.millisecond = Math.floor(e) } break; case 12 === n.length: if (t = /(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})/gi, -1 !== l) { let e = 60 * i; this.second = Math.floor(e), e = 1e3 * (e - this.second), this.millisecond = Math.floor(e) } break; case 14 === n.length: if (t = /(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/gi, -1 !== l) { const e = 1e3 * i; this.millisecond = Math.floor(e) } break; default: throw new Error("Wrong input string for convertion") }const c = t.exec(n); if (null === c) throw new Error("Wrong input string for convertion"); for (let e = 1; e < c.length; e++)switch (e) { case 1: this.year = parseInt(c[e], 10); break; case 2: this.month = parseInt(c[e], 10); break; case 3: this.day = parseInt(c[e], 10); break; case 4: this.hour = parseInt(c[e], 10) + o; break; case 5: this.minute = parseInt(c[e], 10) + a; break; case 6: this.second = parseInt(c[e], 10); break; default: throw new Error("Wrong input string for convertion") }if (!1 === r) { const e = new Date(this.year, this.month, this.day, this.hour, this.minute, this.second, this.millisecond); this.year = e.getUTCFullYear(), this.month = e.getUTCMonth(), this.day = e.getUTCDay(), this.hour = e.getUTCHours(), this.minute = e.getUTCMinutes(), this.second = e.getUTCSeconds(), this.millisecond = e.getUTCMilliseconds() } } toString() { const e = []; return e.push((0, s.padNumber)(this.year, 4)), e.push((0, s.padNumber)(this.month, 2)), e.push((0, s.padNumber)(this.day, 2)), e.push((0, s.padNumber)(this.hour, 2)), e.push((0, s.padNumber)(this.minute, 2)), e.push((0, s.padNumber)(this.second, 2)), 0 !== this.millisecond && (e.push("."), e.push((0, s.padNumber)(this.millisecond, 3))), e.push("Z"), e.join("") } static blockName() { return "GeneralizedTime" } toJSON() { let e = {}; try { e = super.toJSON() } catch (e) { } return e.year = this.year, e.month = this.month, e.day = this.day, e.hour = this.hour, e.minute = this.minute, e.second = this.second, e.millisecond = this.millisecond, e } } class te extends T { constructor(e = {}) { super(e), this.idBlock.tagClass = 1, this.idBlock.tagNumber = 31 } static blockName() { return "DATE" } } class re extends T { constructor(e = {}) { super(e), this.idBlock.tagClass = 1, this.idBlock.tagNumber = 32 } static blockName() { return "TimeOfDay" } } class se extends T { constructor(e = {}) { super(e), this.idBlock.tagClass = 1, this.idBlock.tagNumber = 33 } static blockName() { return "DateTime" } } class ne extends T { constructor(e = {}) { super(e), this.idBlock.tagClass = 1, this.idBlock.tagNumber = 34 } static blockName() { return "Duration" } } class ie extends T { constructor(e = {}) { super(e), this.idBlock.tagClass = 1, this.idBlock.tagNumber = 14 } static blockName() { return "TIME" } } class oe { constructor(e = {}) { this.name = (0, s.getParametersValue)(e, "name", ""), this.optional = (0, s.getParametersValue)(e, "optional", !1) } } t.IK = oe; class ae { constructor(e = {}) { this.name = (0, s.getParametersValue)(e, "name", ""), this.optional = (0, s.getParametersValue)(e, "optional", !1), this.value = (0, s.getParametersValue)(e, "value", new oe), this.local = (0, s.getParametersValue)(e, "local", !1) } } function le(e, t, r) { const n = t; let i = new h({}, Object); const a = new o; if (!1 === (0, s.checkBufferParams)(a, e, t, r)) return i.error = a.error, { offset: -1, result: i }; if (0 === new Uint8Array(e, t, r).length) return this.error = "Zero buffer length", { offset: -1, result: i }; let l = i.idBlock.fromBER(e, t, r); if (i.warnings.concat(i.idBlock.warnings), -1 === l) return i.error = i.idBlock.error, { offset: -1, result: i }; if (t = l, r -= i.idBlock.blockLength, l = i.lenBlock.fromBER(e, t, r), i.warnings.concat(i.lenBlock.warnings), -1 === l) return i.error = i.lenBlock.error, { offset: -1, result: i }; if (t = l, r -= i.lenBlock.blockLength, !1 === i.idBlock.isConstructed && !0 === i.lenBlock.isIndefiniteForm) return i.error = "Indefinite length form used for primitive encoding form", { offset: -1, result: i }; let c = h; switch (i.idBlock.tagClass) { case 1: if (i.idBlock.tagNumber >= 37 && !1 === i.idBlock.isHexOnly) return i.error = "UNIVERSAL 37 and upper tags are reserved by ASN.1 standard", { offset: -1, result: i }; switch (i.idBlock.tagNumber) { case 0: if (!0 === i.idBlock.isConstructed && i.lenBlock.length > 0) return i.error = "Type [UNIVERSAL 0] is reserved", { offset: -1, result: i }; c = B; break; case 1: c = b; break; case 2: c = L; break; case 3: c = S; break; case 4: c = N; break; case 5: c = p; break; case 6: c = I; break; case 10: c = O; break; case 12: c = T; break; case 13: c = D; break; case 14: c = ie; break; case 15: return i.error = "[UNIVERSAL 15] is reserved by ASN.1 standard", { offset: -1, result: i }; case 16: c = y; break; case 17: c = w; break; case 18: c = W; break; case 19: c = $; break; case 20: c = K; break; case 21: c = G; break; case 22: c = z; break; case 23: c = X; break; case 24: c = ee; break; case 25: c = Z; break; case 26: c = q; break; case 27: c = Y; break; case 28: c = _; break; case 29: c = Q; break; case 30: c = F; break; case 31: c = te; break; case 32: c = re; break; case 33: c = se; break; case 34: c = ne; break; default: { let s; s = !0 === i.idBlock.isConstructed ? new k : new g, s.idBlock = i.idBlock, s.lenBlock = i.lenBlock, s.warnings = i.warnings, i = s, l = i.fromBER(e, t, r) } }break; case 2: case 3: case 4: default: c = !0 === i.idBlock.isConstructed ? k : g }return i = function (e, t) { if (e instanceof t) return e; const r = new t; return r.idBlock = e.idBlock, r.lenBlock = e.lenBlock, r.warnings = e.warnings, r.valueBeforeDecode = e.valueBeforeDecode.slice(0), r }(i, c), l = i.fromBER(e, t, !0 === i.lenBlock.isIndefiniteForm ? r : i.lenBlock.length), i.valueBeforeDecode = e.slice(n, n + i.blockLength), { offset: l, result: i } } function ce(e) { if (0 === e.byteLength) { const e = new h({}, Object); return e.error = "Input buffer has zero length", { offset: -1, result: e } } return le(e, 0, e.byteLength) } }, 447: (e, t, r) => { function s(e) { return new Date(e.getTime() + 6e4 * e.getTimezoneOffset()) } function n(e, t, r) { return e instanceof Object == 0 ? r : t in e ? e[t] : r } function i(e, t = 0, r = e.byteLength - t, s = !1) { let n = ""; for (const i of new Uint8Array(e, t, r)) { const e = i.toString(16).toUpperCase(); 1 === e.length && (n += "0"), n += e, s && (n += " ") } return n.trim() } function o(e, t, r, s) { return t instanceof ArrayBuffer == 0 ? (e.error = 'Wrong parameter: inputBuffer must be "ArrayBuffer"', !1) : 0 === t.byteLength ? (e.error = "Wrong parameter: inputBuffer has zero length", !1) : r < 0 ? (e.error = "Wrong parameter: inputOffset less than zero", !1) : s < 0 ? (e.error = "Wrong parameter: inputLength less than zero", !1) : !(t.byteLength - r - s < 0 && (e.error = "End of input reached before message was fully decoded (inconsistent offset and length values)", 1)) } function a(e, t) { let r = 0; if (1 === e.length) return e[0]; for (let s = e.length - 1; s >= 0; s--)r += e[e.length - 1 - s] * Math.pow(2, t * s); return r } function l(e, t, r = -1) { const s = r; let n = e, i = 0, o = Math.pow(2, t); for (let r = 1; r < 8; r++) { if (e < o) { let e; if (s < 0) e = new ArrayBuffer(r), i = r; else { if (s < r) return new ArrayBuffer(0); e = new ArrayBuffer(s), i = s } const o = new Uint8Array(e); for (let e = r - 1; e >= 0; e--) { const r = Math.pow(2, e * t); o[i - e - 1] = Math.floor(n / r), n -= o[i - e - 1] * r } return e } o *= Math.pow(2, t) } return new ArrayBuffer(0) } function c(...e) { let t = 0, r = 0; for (const r of e) t += r.byteLength; const s = new ArrayBuffer(t), n = new Uint8Array(s); for (const t of e) n.set(new Uint8Array(t), r), r += t.byteLength; return s } function u(...e) { let t = 0, r = 0; for (const r of e) t += r.length; const s = new ArrayBuffer(t), n = new Uint8Array(s); for (const t of e) n.set(t, r), r += t.length; return n } function h() { const e = new Uint8Array(this.valueHex); if (this.valueHex.byteLength >= 2) { const t = 255 === e[0] && 128 & e[1], r = 0 === e[0] && 0 == (128 & e[1]); (t || r) && this.warnings.push("Needlessly long format") } const t = new ArrayBuffer(this.valueHex.byteLength), r = new Uint8Array(t); for (let e = 0; e < this.valueHex.byteLength; e++)r[e] = 0; r[0] = 128 & e[0]; const s = a(r, 8), n = new ArrayBuffer(this.valueHex.byteLength), i = new Uint8Array(n); for (let t = 0; t < this.valueHex.byteLength; t++)i[t] = e[t]; return i[0] &= 127, a(i, 8) - s } function f(e) { const t = e < 0 ? -1 * e : e; let r = 128; for (let s = 1; s < 8; s++) { if (t <= r) { if (e < 0) { const e = l(r - t, 8, s); return new Uint8Array(e)[0] |= 128, e } let n = l(t, 8, s), i = new Uint8Array(n); if (128 & i[0]) { const e = n.slice(0), t = new Uint8Array(e); n = new ArrayBuffer(n.byteLength + 1), i = new Uint8Array(n); for (let r = 0; r < e.byteLength; r++)i[r + 1] = t[r]; i[0] = 0 } return n } r *= Math.pow(2, 8) } return new ArrayBuffer(0) } function g(e, t) { if (e.byteLength !== t.byteLength) return !1; const r = new Uint8Array(e), s = new Uint8Array(t); for (let e = 0; e < r.length; e++)if (r[e] !== s[e]) return !1; return !0 } function d(e, t) { const r = e.toString(10); if (t < r.length) return ""; const s = t - r.length, n = new Array(s); for (let e = 0; e < s; e++)n[e] = "0"; return n.join("").concat(r) } r.r(t), r.d(t, { getUTCDate: () => s, getParametersValue: () => n, bufferToHexCodes: () => i, checkBufferParams: () => o, utilFromBase: () => a, utilToBase: () => l, utilConcatBuf: () => c, utilConcatView: () => u, utilDecodeTC: () => h, utilEncodeTC: () => f, isEqualBuffer: () => g, padNumber: () => d, toBase64: () => B, fromBase64: () => v, arrayBufferToString: () => b, stringToArrayBuffer: () => y, nearestPowerOf2: () => p, clearProps: () => x }); const k = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=", m = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_="; function B(e, t = !1, r = !1, s = !1) { let n = 0, i = 0, o = 0, a = ""; const l = t ? m : k; if (s) { let t = 0; for (let r = 0; r < e.length; r++)if (0 !== e.charCodeAt(r)) { t = r; break } e = e.slice(t) } for (; n < e.length;) { const t = e.charCodeAt(n++); n >= e.length && (i = 1); const s = e.charCodeAt(n++); n >= e.length && (o = 1); const c = e.charCodeAt(n++), u = t >> 2, h = (3 & t) << 4 | s >> 4; let f = (15 & s) << 2 | c >> 6, g = 63 & c; 1 === i ? f = g = 64 : 1 === o && (g = 64), a += r ? 64 === f ? `${l.charAt(u)}${l.charAt(h)}` : 64 === g ? `${l.charAt(u)}${l.charAt(h)}${l.charAt(f)}` : `${l.charAt(u)}${l.charAt(h)}${l.charAt(f)}${l.charAt(g)}` : `${l.charAt(u)}${l.charAt(h)}${l.charAt(f)}${l.charAt(g)}` } return a } function v(e, t = !1, r = !1) { const s = t ? m : k; function n(e) { for (let t = 0; t < 64; t++)if (s.charAt(t) === e) return t; return 64 } function i(e) { return 64 === e ? 0 : e } let o = 0, a = ""; for (; o < e.length;) { const t = n(e.charAt(o++)), r = o >= e.length ? 0 : n(e.charAt(o++)), s = o >= e.length ? 0 : n(e.charAt(o++)), l = o >= e.length ? 0 : n(e.charAt(o++)), c = i(t) << 2 | i(r) >> 4, u = (15 & i(r)) << 4 | i(s) >> 2, h = (3 & i(s)) << 6 | i(l); a += String.fromCharCode(c), 64 !== s && (a += String.fromCharCode(u)), 64 !== l && (a += String.fromCharCode(h)) } if (r) { let e = -1; for (let t = a.length - 1; t >= 0; t--)if (0 !== a.charCodeAt(t)) { e = t; break } a = -1 !== e ? a.slice(0, e + 1) : "" } return a } function b(e) { let t = ""; const r = new Uint8Array(e); for (const e of r) t += String.fromCharCode(e); return t } function y(e) { const t = e.length, r = new ArrayBuffer(t), s = new Uint8Array(r); for (let r = 0; r < t; r++)s[r] = e.charCodeAt(r); return r } const w = Math.log(2); function p(e) { const t = Math.log(e) / w, r = Math.floor(t), s = Math.round(t); return r === s ? r : s } function x(e, t) { for (const r of t) delete e[r] } } }, t = {}; function r(s) { if (t[s]) return t[s].exports; var n = t[s] = { exports: {} }; return e[s](n, n.exports, r), n.exports } r.d = (e, t) => { for (var s in t) r.o(t, s) && !r.o(e, s) && Object.defineProperty(e, s, { enumerable: !0, get: t[s] }) }, r.o = (e, t) => Object.prototype.hasOwnProperty.call(e, t), r.r = e => { "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, { value: "Module" }), Object.defineProperty(e, "__esModule", { value: !0 }) }, (() => { var e = r(360); function t(e, t, r) { return e instanceof Object == 0 ? r : t in e ? e[t] : r } function s(e, t = 0, r = e.byteLength - t, s = !1) { let n = ""; for (const i of new Uint8Array(e, t, r)) { const e = i.toString(16).toUpperCase(); 1 === e.length && (n += "0"), n += e, s && (n += " ") } return n.trim() } function n(e, t) { for (const r of t) delete e[r] } Math.log(2); class i { constructor(e = {}) { if ("string" == typeof e) throw new TypeError("Unimplemented: Not accepting string yet."); if (e instanceof ArrayBuffer) { const t = fromBER(e); this.fromSchema(t.result) } else this.algorithmId = t(e, "algorithmId"), "algorithmParams" in e && (this.algorithmParams = t(e, "algorithmParams", i.defaultValues("algorithmParams"))) } static defaultValues(t) { switch (t) { case "algorithmParams": return new e.IK; default: throw new Error(`Invalid member name for AlgorithmIdentifier class: ${t}`) } } static compareWithDefault(e, t) { switch (e) { case "algorithmId": return "" === t; case "algorithmParams": return t instanceof asn1js.Any; default: throw new Error(`Invalid member name for AlgorithmIdentifier class: ${e}`) } } static schema(r = {}) { const s = t(r, "names", {}); return new e.T9({ name: s.blockName || "", optional: s.optional || !1, value: [new e.rP({ name: s.algorithmIdentifier || "algorithm" }), new e.IK({ name: s.algorithmParams || "parameters", optional: !0 })] }) } fromSchema(t) { n(t, ["algorithm", "params"]); const r = (0, e.eN)(t, t, i.schema({ names: { algorithmIdentifier: "algorithm", algorithmParams: "params" } })); if (!1 === r.verified) throw new Error("Object's schema was not verified against input data for AlgorithmIdentifier"); this.algorithmId = r.result.algorithm.valueBlock.toString(), "params" in r.result && (this.algorithmParams = r.result.params) } toSchema() { const t = []; return t.push(new e.rP({ value: this.algorithmId })), "algorithmParams" in this && this.algorithmParams instanceof asn1js.Any == 0 && t.push(this.algorithmParams), new e.T9({ value: t }) } toJSON() { const e = { algorithmId: this.algorithmId }; return "algorithmParams" in this && this.algorithmParams instanceof asn1js.Any == 0 && (e.algorithmParams = this.algorithmParams.toJSON()), e } isEqual(e) { return e instanceof i != 0 && this.algorithmId === e.algorithmId && ("algorithmParams" in this ? "algorithmParams" in e && JSON.stringify(this.algorithmParams) === JSON.stringify(e.algorithmParams) : !("algorithmParams" in e)) } } class o { constructor(r = {}) { if ("string" == typeof r) throw new TypeError("Not accepting string. For base64, convert to ArrayBuffer."); if (r instanceof ArrayBuffer) { const t = (0, e.sc)(r); this.fromSchema(t.result) } else this.signatureAlgorithm = t(r, "signatureAlgorithm"), this.publicKey = t(r, "publicKey") } static schema(r = {}) { const s = t(r, "names", {}); return new e.T9({ name: s.blockName || "", optional: !0, value: [i.schema(s.signatureAlgorithm || { names: { blockName: "signatureAlgorithm" } }), new e._K({ name: "publicKey" })] }) } fromSchema(t) { if (n(t, ["signatureAlgorithm", "publicKey"]), !1 === (0, e.eN)(t, t, o.schema({ names: { signatureAlgorithm: "signatureAlgorithm", publicKey: "publicKey" } })).verified) throw new Error("Object's schema was not verified against input data for AlgorithmIdentifier") } } class a { constructor(r = {}) { if ("string" == typeof r) throw new TypeError("Unimplemented: Not accepting string yet."); if (r instanceof ArrayBuffer) { const t = (0, e.sc)(r); this.fromSchema(t.result) } else this.devconId = t(r, "devconId"), this.ticketId = t(r, "ticketId"), this.ticketClass = t(r, "ticketClass") } static schema(r = {}) { const s = t(r, "names", {}); return new e.T9({ name: s.blockName || "ticket", value: [new e.z8({ name: s.devconId || "devconId" }), new e.z8({ name: s.ticketId || "ticketId" }), new e.z8({ name: s.ticketClass || "ticketClass" })] }) } fromSchema(t) { n(t, ["devconId", "ticketId", "ticketClass"]); const r = (0, e.eN)(t, t, a.schema()); if (!1 === r.verified) throw new Error("Object's schema was not verified against input data for DevconTicket"); if ("devconId" in r.result) { const e = r.result.devconId.valueBlock._valueHex; this.devconId = BigInt("0x" + s(e)) } if ("ticketId" in r.result) { const e = r.result.ticketId.valueBlock._valueHex; this.ticketId = BigInt("0x" + s(e)) } if ("ticketClass" in r.result) { const e = r.result.ticketClass.valueBlock._valueHex; this.ticketClass = BigInt("0x" + s(e)) } } } class l { constructor(r = {}) { if ("string" == typeof r) { let e = (r.startsWith("https://") ? new URL(r).searchParams.get("ticket") : r).split("_").join("/").split("-").join("+").split(".").join("="); r = "undefined" != typeof Buffer ? Uint8Array.from(Buffer.from(e, "base64")).buffer : Uint8Array.from(atob(e), (e => e.charCodeAt(0))).buffer } if (r instanceof ArrayBuffer) { const t = (0, e.sc)(r); this.fromSchema(t.result) } else this.ticket = new a(r.ticket), this.commitment = t(r, "commitment"), this.publicKeyInfo = new o(r.publicKeyInfo), this.signatureValue = t(r, "signatureValue") } static schema(r = {}) { const s = t(r, "names", {}); return new e.T9({ name: s.blockName || "SignedDevconTicket", value: [a.schema(r), new e.fi({ name: "commitment" }), new e.T9({ name: "publicKeyInfo", optional: !0, value: [o.schema(s.publicKeyInfo || { names: { blockName: "publicKeyInfo" } })] }), new e._K({ name: "signatureValue" })] }) } fromSchema(t) { n(t, ["ticket", "commitment", "publicKeyInfo", "signatureValue"]); const r = (0, e.eN)(t, t, l.schema()); if (!1 === r.verified) throw new Error("Object's schema was not verified against input data for SignedDevconTicket"); this.ticket = new a(r.result.ticket.valueBeforeDecode), "commitment" in r.result && (this.commitment = r.result.commitment.valueBlock.valueHex), this.publicKeyInfo = new o({ schema: r.result.publicKeyInfo }); const s = r.result.signatureValue; this.signatureValue = s.valueBlock.valueHex } } window.Negotiator = class { constructor(e = {}, t = {}) { let r = { attestationOrigin: "http://stage.attestation.id", tokensOrigin: "https://devcontickets.herokuapp.com/outlet/", tokenUrlName: "ticket", tokenSecretName: "secret", unsignedTokenDataName: "ticket", tokenParser: l, localStorageItemName: "dcTokens" }; if (this.filter = e, this.debug = 0, this.hideTokensIframe = 1, this.tokensOrigin = r.tokensOrigin, this.attestationOrigin = r.attestationOrigin, this.tokenUrlName = r.tokenUrlName, this.tokenSecretName = r.tokenSecretName, this.unsignedTokenDataName = r.unsignedTokenDataName, this.tokenParser = r.tokenParser, this.localStorageItemName = r.localStorageItemName, t.hasOwnProperty("debug") && (this.debug = t.debug), t.hasOwnProperty("attestationOrigin") && (this.attestationOrigin = t.attestationOrigin), t.hasOwnProperty("tokensOrigin") && (this.tokensOrigin = t.tokensOrigin), this.isTokenOriginWebsite = !1, this.attestationOrigin) { let e = new URL(window.location.href), t = new URL(this.tokensOrigin); e.origin === t.origin && (this.isTokenOriginWebsite = !0, this.readMagicUrl()) } window !== window.parent && (this.debug && console.log("negotiator: its iframe, lets return tokens to the parent"), this.returnTokensToParent()) } returnTokensToParent() { let e = this.readTokens(); if (e.success && !e.noTokens) { let t = this.decodeTokens(e.tokens), r = this.filterTokens(t); e.tokens = r } let t = new URL(document.referrer); window.parent.postMessage({ tokensOutput: e }, t.origin) } readMagicUrl() { const e = new URLSearchParams(window.location.search), t = e.get(this.tokenUrlName), r = e.get(this.tokenSecretName); if (!t || !r) return; let s = this.readTokens(), n = [], i = !0; s.noTokens || (n = s.tokens, t && r || n.map((e => { e.token === t && (i = !1) }))), i && n.push({ token: t, secret: r }), localStorage.setItem(this.localStorageItemName, JSON.stringify(n)) } filterTokens(e, t = {}) { 0 == Object.keys(t).length && (t = this.filter); let r = []; if (e.length && "object" == typeof t && Object.keys(t).length) { let s = Object.keys(t); return e.forEach((e => { let n = 1; this.debug && console.log("test token:", e), s.forEach((r => { e[r].toString() != t[r].toString() && (n = 0) })), n && (r.push(e), this.debug && console.log("token fits:", e)) })), r } return e } readTokens() { const e = localStorage.getItem(this.localStorageItemName); let t = [], r = { tokens: [], noTokens: !0, success: !0 }; try { e && e.length && (t = JSON.parse(e), 0 !== t.length && t.forEach((e => { e.token && e.secret && r.tokens.push({ token: e.token, secret: e.secret }) })), r.tokens.length && (r.noTokens = !1)) } catch (e) { console.log("Cant parse tokens in LocalStorage"), "function" == typeof callBack && (r.success = !1) } return r } getRawToken(e) { let t = this.readTokens(); if (t.success && !t.noTokens) { let r = this.decodeTokens(t.tokens); return this.filterTokens(r, e) } } signToken(e) { let t = new URL(this.tokensOrigin); this.attachPostMessageListener((e => { if (e.origin !== t.origin) return; if (void 0 === e.data.tokensOutput) return; let r = e.data.tokensOutput; if (this.tokensIframe.remove(), r.success && !r.noTokens) { let e = this.filterTokens(r.tokens); r.tokens = e } this.negotiateCallback(r) })); const r = document.createElement("iframe"); this.tokenSignIframe = r, this.hideTokensIframe && (r.style.display = "none"), r.src = this.tokensOrigin, document.body.appendChild(r) } negotiate(e) { if ("function" != typeof e) return !1; if (this.negotiateCallback = e, this.attestationOrigin) if (this.isTokenOriginWebsite) { let e = this.readTokens(); if (e.success && !e.noTokens) { let t = this.decodeTokens(e.tokens), r = this.filterTokens(t); e.tokens = r, this.negotiateCallback(e) } } else { let e = new URL(this.tokensOrigin); this.attachPostMessageListener((t => { if (t.origin !== e.origin) return; if (void 0 === t.data.tokensOutput) return; let r = t.data.tokensOutput; if (this.tokensIframe.remove(), r.success && !r.noTokens) { let e = this.filterTokens(r.tokens); r.tokens = e } this.negotiateCallback(r) })); const t = document.createElement("iframe"); this.tokensIframe = t, this.hideTokensIframe && (t.style.display = "none"), t.src = this.tokensOrigin, document.body.appendChild(t) } else console.log("no attestationOrigin...") } base64ToUint8array(e) { let t; return e = e.split("-").join("+").split("_").join("/").split(".").join("="), t = "undefined" != typeof Buffer ? Uint8Array.from(Buffer.from(e, "base64")) : Uint8Array.from(atob(e), (e => e.charCodeAt(0))), t } decodeTokens(e) { this.debug && (console.log("decodeTokens fired"), console.log(e)); let t = []; return e.length && e.forEach((e => { let r = new this.tokenParser(this.base64ToUint8array(e.token).buffer); r && r[this.unsignedTokenDataName] && t.push(r[this.unsignedTokenDataName]) })), t } attachPostMessageListener(e) { window.addEventListener ? window.addEventListener("message", (t => e(t)), !1) : window.attachEvent("onmessage", (t => { e(t) })) } } })() })(); \ No newline at end of file diff --git a/examples/sites/devcon-issuer/react-third-party/public/attestation.js b/examples/sites/devcon-issuer/react-third-party/public/attestation.js new file mode 100644 index 00000000..2a51df5f --- /dev/null +++ b/examples/sites/devcon-issuer/react-third-party/public/attestation.js @@ -0,0 +1,2 @@ +/*! For license information please see bundle.js.LICENSE.txt */ +(()=>{var e={360:(e,t,r)=>{"use strict";t.sc=de,t.eN=function e(t,r,n){if(n instanceof class{constructor(e={}){this.value=(0,i.getParametersValue)(e,"value",[]),this.optional=(0,i.getParametersValue)(e,"optional",!1)}}){const i=!1;for(let i=0;i0&&n.valueBlock.value[0]instanceof ce&&(a=r.valueBlock.value.length),0===a)return{verified:!0,result:t};if(0===r.valueBlock.value.length&&0!==n.valueBlock.value.length){let e=!0;for(let t=0;t=r.valueBlock.value.length){if(!1===n.valueBlock.value[c].optional){const e={verified:!1,result:t};return t.error="Inconsistent length between ASN.1 data and schema",n.hasOwnProperty("name")&&(n.name=n.name.replace(/^\s+|\s+$/g,""),""!==n.name&&(delete t[n.name],e.name=n.name)),e}}else if(n.valueBlock.value[0]instanceof ce){if(s=e(t,r.valueBlock.value[c],n.valueBlock.value[0].value),!1===s.verified){if(!0!==n.valueBlock.value[0].optional)return n.hasOwnProperty("name")&&(n.name=n.name.replace(/^\s+|\s+$/g,""),""!==n.name&&delete t[n.name]),s;i++}if("name"in n.valueBlock.value[0]&&n.valueBlock.value[0].name.length>0){let e={};e="local"in n.valueBlock.value[0]&&!0===n.valueBlock.value[0].local?r:t,void 0===e[n.valueBlock.value[0].name]&&(e[n.valueBlock.value[0].name]=[]),e[n.valueBlock.value[0].name].push(r.valueBlock.value[c])}}else if(s=e(t,r.valueBlock.value[c-i],n.valueBlock.value[c]),!1===s.verified){if(!0!==n.valueBlock.value[c].optional)return n.hasOwnProperty("name")&&(n.name=n.name.replace(/^\s+|\s+$/g,""),""!==n.name&&delete t[n.name]),s;i++}if(!1===s.verified){const e={verified:!1,result:t};return n.hasOwnProperty("name")&&(n.name=n.name.replace(/^\s+|\s+$/g,""),""!==n.name&&(delete t[n.name],e.name=n.name)),e}return{verified:!0,result:t}}if("primitiveSchema"in n&&"valueHex"in r.valueBlock){const i=de(r.valueBlock.valueHex);if(-1===i.offset){const e={verified:!1,result:i.result};return n.hasOwnProperty("name")&&(n.name=n.name.replace(/^\s+|\s+$/g,""),""!==n.name&&(delete t[n.name],e.name=n.name)),e}return e(t,i.result,n.primitiveSchema)}return{verified:!0,result:t}},t.IK=t.rP=t.z8=t._K=t.fi=t.T9=void 0;var i=r(447);const n=[new Uint8Array([1])],s="0123456789";class a{constructor(e={}){this.blockLength=(0,i.getParametersValue)(e,"blockLength",0),this.error=(0,i.getParametersValue)(e,"error",""),this.warnings=(0,i.getParametersValue)(e,"warnings",[]),this.valueBeforeDecode="valueBeforeDecode"in e?e.valueBeforeDecode.slice(0):new ArrayBuffer(0)}static blockName(){return"baseBlock"}toJSON(){return{blockName:this.constructor.blockName(),blockLength:this.blockLength,error:this.error,warnings:this.warnings,valueBeforeDecode:(0,i.bufferToHexCodes)(this.valueBeforeDecode,0,this.valueBeforeDecode.byteLength)}}}const c=e=>class extends e{constructor(e={}){super(e),this.isHexOnly=(0,i.getParametersValue)(e,"isHexOnly",!1),this.valueHex="valueHex"in e?e.valueHex.slice(0):new ArrayBuffer(0)}static blockName(){return"hexBlock"}fromBER(e,t,r){return!1===(0,i.checkBufferParams)(this,e,t,r)?-1:0===new Uint8Array(e,t,r).length?(this.warnings.push("Zero buffer length"),t):(this.valueHex=e.slice(t,t+r),this.blockLength=r,t+r)}toBER(e=!1){return!0!==this.isHexOnly?(this.error='Flag "isHexOnly" is not set, abort',new ArrayBuffer(0)):!0===e?new ArrayBuffer(this.valueHex.byteLength):this.valueHex.slice(0)}toJSON(){let e={};try{e=super.toJSON()}catch(e){}return e.blockName=this.constructor.blockName(),e.isHexOnly=this.isHexOnly,e.valueHex=(0,i.bufferToHexCodes)(this.valueHex,0,this.valueHex.byteLength),e}};class o extends(c(a)){constructor(e={}){super(),"idBlock"in e?(this.isHexOnly=(0,i.getParametersValue)(e.idBlock,"isHexOnly",!1),this.valueHex=(0,i.getParametersValue)(e.idBlock,"valueHex",new ArrayBuffer(0)),this.tagClass=(0,i.getParametersValue)(e.idBlock,"tagClass",-1),this.tagNumber=(0,i.getParametersValue)(e.idBlock,"tagNumber",-1),this.isConstructed=(0,i.getParametersValue)(e.idBlock,"isConstructed",!1)):(this.tagClass=-1,this.tagNumber=-1,this.isConstructed=!1)}static blockName(){return"identificationBlock"}toBER(e=!1){let t,r,n=0;switch(this.tagClass){case 1:n|=0;break;case 2:n|=64;break;case 3:n|=128;break;case 4:n|=192;break;default:return this.error="Unknown tag class",new ArrayBuffer(0)}if(this.isConstructed&&(n|=32),this.tagNumber<31&&!this.isHexOnly){if(t=new ArrayBuffer(1),r=new Uint8Array(t),!e){let e=this.tagNumber;e&=31,n|=e,r[0]=n}return t}if(!1===this.isHexOnly){const s=(0,i.utilToBase)(this.tagNumber,7),a=new Uint8Array(s),c=s.byteLength;if(t=new ArrayBuffer(c+1),r=new Uint8Array(t),r[0]=31|n,!e){for(let e=0;e=n.length)return this.error="End of input reached before message was fully decoded",-1;if(e===t){t+=255;const e=new ArrayBuffer(t),i=new Uint8Array(e);for(let e=0;e8)return this.error="Too big integer",-1;if(s+1>n.length)return this.error="End of input reached before message was fully decoded",-1;const a=new Uint8Array(s);for(let e=0;e127&&(this.longFormUsed=!0),this.isIndefiniteForm)return t=new ArrayBuffer(1),!1===e&&(r=new Uint8Array(t),r[0]=128),t;if(!0===this.longFormUsed){const n=(0,i.utilToBase)(this.length,8);if(n.byteLength>127)return this.error="Too big length",new ArrayBuffer(0);if(t=new ArrayBuffer(n.byteLength+1),!0===e)return t;const s=new Uint8Array(n);r=new Uint8Array(t),r[0]=128|n.byteLength;for(let e=0;e0;){const t=oe(e,a,r);if(-1===t.offset)return this.error=t.result.error,this.warnings.concat(t.result.warnings),-1;if(a=t.offset,this.blockLength+=t.result.blockLength,r-=t.result.blockLength,this.value.push(t.result),!0===this.isIndefiniteForm&&t.result.constructor.blockName()===g.blockName())break}return!0===this.isIndefiniteForm&&(this.value[this.value.length-1].constructor.blockName()===g.blockName()?this.value.pop():this.warnings.push("No EndOfContent block encoded")),this.valueBeforeDecode=e.slice(n,n+s),a}toBER(e=!1){let t=new ArrayBuffer(0);for(let r=0;r1&&this.warnings.push("Boolean value encoded in more then 1 octet"),this.isHexOnly=!0,this.valueHex=new ArrayBuffer(n.length);const s=new Uint8Array(this.valueHex);for(let e=0;e0&&this.warnings.push("Non-zero length of value block for Null type"),0===this.idBlock.error.length&&(this.blockLength+=this.idBlock.blockLength),0===this.lenBlock.error.length&&(this.blockLength+=this.lenBlock.blockLength),this.blockLength+=r,t+r>e.byteLength?(this.error="End of input reached before message was fully decoded (inconsistent offset and length values)",-1):t+r}toBER(e=!1){const t=new ArrayBuffer(2);if(!0===e)return t;const r=new Uint8Array(t);return r[0]=5,r[1]=0,t}}class I extends(c(p)){constructor(e={}){super(e),this.isConstructed=(0,i.getParametersValue)(e,"isConstructed",!1)}fromBER(e,t,r){let i=0;if(!0===this.isConstructed){if(this.isHexOnly=!1,i=p.prototype.fromBER.call(this,e,t,r),-1===i)return i;for(let e=0;e0&&this.value[e].valueBlock.unusedBits>0)return this.error='Usign of "unused bits" inside constructive BIT STRING allowed for least one only',-1;if(this.unusedBits=this.value[e].valueBlock.unusedBits,this.unusedBits>7)return this.error="Unused bits for BitString must be in range 0-7",-1}return n}if(!1===(0,i.checkBufferParams)(this,e,t,r))return-1;const s=new Uint8Array(e,t,r);if(this.unusedBits=s[0],this.unusedBits>7)return this.error="Unused bits for BitString must be in range 0-7",-1;this.valueHex=new ArrayBuffer(s.length-1);const a=new Uint8Array(this.valueHex);for(let e=0;e=4?(this.warnings.push("Too big Integer for decoding, hex only"),this.isHexOnly=!0,this._valueDec=0):(this.isHexOnly=!1,e.byteLength>0&&(this._valueDec=i.utilDecodeTC.call(this)))}get valueHex(){return this._valueHex}set valueDec(e){this._valueDec=e,this.isHexOnly=!1,this._valueHex=(0,i.utilEncodeTC)(e)}get valueDec(){return this._valueDec}fromDER(e,t,r,i=0){const n=this.fromBER(e,t,r);if(-1===n)return n;const s=new Uint8Array(this._valueHex);if(0===s[0]&&0!=(128&s[1])){const e=new ArrayBuffer(this._valueHex.byteLength-1);new Uint8Array(e).set(new Uint8Array(this._valueHex,1,this._valueHex.byteLength-1)),this._valueHex=e.slice(0)}else if(0!==i&&this._valueHex.byteLength1&&(i=this._valueHex.byteLength+1);const e=new ArrayBuffer(i);new Uint8Array(e).set(s,i-this._valueHex.byteLength),this._valueHex=e.slice(0)}return n}toDER(e=!1){const t=new Uint8Array(this._valueHex);switch(!0){case 0!=(128&t[0]):{const e=new ArrayBuffer(this._valueHex.byteLength+1),r=new Uint8Array(e);r[0]=0,r.set(t,1),this._valueHex=e.slice(0)}break;case 0===t[0]&&0==(128&t[1]):{const e=new ArrayBuffer(this._valueHex.byteLength-1);new Uint8Array(e).set(new Uint8Array(this._valueHex,1,this._valueHex.byteLength-1)),this._valueHex=e.slice(0)}}return this.toBER(e)}fromBER(e,t,r){const i=super.fromBER(e,t,r);return-1===i?i:(this.blockLength=r,t+r)}toBER(e=!1){return this.valueHex.slice(0)}static blockName(){return"IntegerValueBlock"}toJSON(){let e={};try{e=super.toJSON()}catch(e){}return e.valueDec=this.valueDec,e}toString(){function e(e,t){const r=new Uint8Array([0]);let n=new Uint8Array(e),s=new Uint8Array(t),a=n.slice(0);const c=a.length-1;let o=s.slice(0);const d=o.length-1;let l=0,u=0;for(let e=d=0;e--,u++){switch(!0){case u=a.length:a=(0,i.utilConcatView)(new Uint8Array([l%10]),a);break;default:a[c-u]=l%10}}return r[0]>0&&(a=(0,i.utilConcatView)(r,a)),a.slice(0)}function t(e){if(e>=n.length)for(let t=n.length;t<=e;t++){const e=new Uint8Array([0]);let r=n[t-1].slice(0);for(let t=r.length-1;t>=0;t--){const i=new Uint8Array([(r[t]<<1)+e[0]]);e[0]=i[0]/10,r[t]=i[0]%10}e[0]>0&&(r=(0,i.utilConcatView)(e,r)),n.push(r)}return n[e]}function r(e,t){let r=0,i=new Uint8Array(e),n=new Uint8Array(t),s=i.slice(0);const a=s.length-1;let c=n.slice(0);const o=c.length-1;let d,l=0;for(let e=o;e>=0;e--,l++)switch(d=s[a-l]-c[o-l]-r,!0){case d<0:r=1,s[a-l]=d+10;break;default:r=0,s[a-l]=d}if(r>0)for(let e=a-o+1;e>=0;e--,l++){if(d=s[a-l]-r,!(d<0)){r=0,s[a-l]=d;break}r=1,s[a-l]=d+10}return s.slice()}const a=8*this._valueHex.byteLength-1;let c,o=new Uint8Array(8*this._valueHex.byteLength/3),d=0;const l=new Uint8Array(this._valueHex);let u="",h=!1;for(let i=this._valueHex.byteLength-1;i>=0;i--){c=l[i];for(let i=0;i<8;i++){if(1==(1&c))switch(d){case a:o=r(t(d),o),u="-";break;default:o=e(o,t(d))}d++,c>>=1}}for(let e=0;e0;){const t=new N;if(i=t.fromBER(e,i,r),-1===i)return this.blockLength=0,this.error=t.error,i;0===this.value.length&&(t.isFirstSid=!0),this.blockLength+=t.blockLength,r-=t.blockLength,this.value.push(t)}return i}toBER(e=!1){let t=new ArrayBuffer(0);for(let r=0;r0;){const t=new R;if(i=t.fromBER(e,i,r),-1===i)return this.blockLength=0,this.error=t.error,i;this.blockLength+=t.blockLength,r-=t.blockLength,this.value.push(t)}return i}toBER(e=!1){let t=new ArrayBuffer(0);for(let r=0;r2)continue;const a=2-s.length;for(let e=s.length-1;e>=0;e--)r[2*n+e+a]=s[e]}this.valueBlock.value=e}}class L extends(c(a)){constructor(e={}){super(e),this.isHexOnly=!0,this.value=""}static blockName(){return"UniversalStringValueBlock"}toJSON(){let e={};try{e=super.toJSON()}catch(e){}return e.value=this.value,e}}class U extends u{constructor(e={}){super(e,L),"value"in e&&this.fromString(e.value),this.idBlock.tagClass=1,this.idBlock.tagNumber=28}static blockName(){return"UniversalString"}fromBER(e,t,r){const i=this.valueBlock.fromBER(e,t,!0===this.lenBlock.isIndefiniteForm?r:this.lenBlock.length);return-1===i?(this.error=this.valueBlock.error,i):(this.fromBuffer(this.valueBlock.valueHex),0===this.idBlock.error.length&&(this.blockLength+=this.idBlock.blockLength),0===this.lenBlock.error.length&&(this.blockLength+=this.lenBlock.blockLength),0===this.valueBlock.error.length&&(this.blockLength+=this.valueBlock.blockLength),i)}fromBuffer(e){const t=e.slice(0),r=new Uint8Array(t);for(let e=0;e4)continue;const a=4-s.length;for(let e=s.length-1;e>=0;e--)r[4*n+e+a]=s[e]}this.valueBlock.value=e}}class X extends(c(a)){constructor(e={}){super(e),this.value="",this.isHexOnly=!0}static blockName(){return"SimpleStringValueBlock"}toJSON(){let e={};try{e=super.toJSON()}catch(e){}return e.value=this.value,e}}class G extends u{constructor(e={}){super(e,X),"value"in e&&this.fromString(e.value)}static blockName(){return"SIMPLESTRING"}fromBER(e,t,r){const i=this.valueBlock.fromBER(e,t,!0===this.lenBlock.isIndefiniteForm?r:this.lenBlock.length);return-1===i?(this.error=this.valueBlock.error,i):(this.fromBuffer(this.valueBlock.valueHex),0===this.idBlock.error.length&&(this.blockLength+=this.idBlock.blockLength),0===this.lenBlock.error.length&&(this.blockLength+=this.lenBlock.blockLength),0===this.valueBlock.error.length&&(this.blockLength+=this.valueBlock.blockLength),i)}fromBuffer(e){this.valueBlock.value=String.fromCharCode.apply(null,new Uint8Array(e))}fromString(e){const t=e.length;this.valueBlock.valueHex=new ArrayBuffer(t);const r=new Uint8Array(this.valueBlock.valueHex);for(let i=0;i=50?1900+r:2e3+r,this.month=parseInt(t[2],10),this.day=parseInt(t[3],10),this.hour=parseInt(t[4],10),this.minute=parseInt(t[5],10),this.second=parseInt(t[6],10)}toString(){const e=new Array(7);return e[0]=(0,i.padNumber)(this.year<2e3?this.year-1900:this.year-2e3,2),e[1]=(0,i.padNumber)(this.month,2),e[2]=(0,i.padNumber)(this.day,2),e[3]=(0,i.padNumber)(this.hour,2),e[4]=(0,i.padNumber)(this.minute,2),e[5]=(0,i.padNumber)(this.second,2),e[6]="Z",e.join("")}static blockName(){return"UTCTime"}toJSON(){let e={};try{e=super.toJSON()}catch(e){}return e.year=this.year,e.month=this.month,e.day=this.day,e.hour=this.hour,e.minute=this.minute,e.second=this.second,e}}class ee extends Q{constructor(e={}){if(super(e),this.year=0,this.month=0,this.day=0,this.hour=0,this.minute=0,this.second=0,this.millisecond=0,"value"in e){this.fromString(e.value),this.valueBlock.valueHex=new ArrayBuffer(e.value.length);const t=new Uint8Array(this.valueBlock.valueHex);for(let r=0;r=37&&!1===s.idBlock.isHexOnly)return s.error="UNIVERSAL 37 and upper tags are reserved by ASN.1 standard",{offset:-1,result:s};switch(s.idBlock.tagNumber){case 0:if(!0===s.idBlock.isConstructed&&s.lenBlock.length>0)return s.error="Type [UNIVERSAL 0] is reserved",{offset:-1,result:s};d=g;break;case 1:d=S;break;case 2:d=M;break;case 3:d=w;break;case 4:d=k;break;case 5:d=C;break;case 6:d=D;break;case 10:d=T;break;case 12:d=O;break;case 13:d=K;break;case 14:d=se;break;case 15:return s.error="[UNIVERSAL 15] is reserved by ASN.1 standard",{offset:-1,result:s};case 16:d=v;break;case 17:d=A;break;case 18:d=V;break;case 19:d=q;break;case 20:d=W;break;case 21:d=z;break;case 22:d=j;break;case 23:d=Y;break;case 24:d=ee;break;case 25:d=J;break;case 26:d=Q;break;case 27:d=Z;break;case 28:d=U;break;case 29:d=$;break;case 30:d=_;break;case 31:d=te;break;case 32:d=re;break;case 33:d=ie;break;case 34:d=ne;break;default:{let i;i=!0===s.idBlock.isConstructed?new m:new f,i.idBlock=s.idBlock,i.lenBlock=s.lenBlock,i.warnings=s.warnings,s=i,o=s.fromBER(e,t,r)}}break;case 2:case 3:case 4:default:d=!0===s.idBlock.isConstructed?m:f}return s=function(e,t){if(e instanceof t)return e;const r=new t;return r.idBlock=e.idBlock,r.lenBlock=e.lenBlock,r.warnings=e.warnings,r.valueBeforeDecode=e.valueBeforeDecode.slice(0),r}(s,d),o=s.fromBER(e,t,!0===s.lenBlock.isIndefiniteForm?r:s.lenBlock.length),s.valueBeforeDecode=e.slice(n,n+s.blockLength),{offset:o,result:s}}function de(e){if(0===e.byteLength){const e=new u({},Object);return e.error="Input buffer has zero length",{offset:-1,result:e}}return oe(e,0,e.byteLength)}},447:(e,t,r)=>{"use strict";function i(e){return new Date(e.getTime()+6e4*e.getTimezoneOffset())}function n(e,t,r){return e instanceof Object==0?r:t in e?e[t]:r}function s(e,t=0,r=e.byteLength-t,i=!1){let n="";for(const s of new Uint8Array(e,t,r)){const e=s.toString(16).toUpperCase();1===e.length&&(n+="0"),n+=e,i&&(n+=" ")}return n.trim()}function a(e,t,r,i){return t instanceof ArrayBuffer==0?(e.error='Wrong parameter: inputBuffer must be "ArrayBuffer"',!1):0===t.byteLength?(e.error="Wrong parameter: inputBuffer has zero length",!1):r<0?(e.error="Wrong parameter: inputOffset less than zero",!1):i<0?(e.error="Wrong parameter: inputLength less than zero",!1):!(t.byteLength-r-i<0&&(e.error="End of input reached before message was fully decoded (inconsistent offset and length values)",1))}function c(e,t){let r=0;if(1===e.length)return e[0];for(let i=e.length-1;i>=0;i--)r+=e[e.length-1-i]*Math.pow(2,t*i);return r}function o(e,t,r=-1){const i=r;let n=e,s=0,a=Math.pow(2,t);for(let r=1;r<8;r++){if(e=0;e--){const r=Math.pow(2,e*t);a[s-e-1]=Math.floor(n/r),n-=a[s-e-1]*r}return e}a*=Math.pow(2,t)}return new ArrayBuffer(0)}function d(...e){let t=0,r=0;for(const r of e)t+=r.byteLength;const i=new ArrayBuffer(t),n=new Uint8Array(i);for(const t of e)n.set(new Uint8Array(t),r),r+=t.byteLength;return i}function l(...e){let t=0,r=0;for(const r of e)t+=r.length;const i=new ArrayBuffer(t),n=new Uint8Array(i);for(const t of e)n.set(t,r),r+=t.length;return n}function u(){const e=new Uint8Array(this.valueHex);if(this.valueHex.byteLength>=2){const t=255===e[0]&&128&e[1],r=0===e[0]&&0==(128&e[1]);(t||r)&&this.warnings.push("Needlessly long format")}const t=new ArrayBuffer(this.valueHex.byteLength),r=new Uint8Array(t);for(let e=0;ei,getParametersValue:()=>n,bufferToHexCodes:()=>s,checkBufferParams:()=>a,utilFromBase:()=>c,utilToBase:()=>o,utilConcatBuf:()=>d,utilConcatView:()=>l,utilDecodeTC:()=>u,utilEncodeTC:()=>h,isEqualBuffer:()=>f,padNumber:()=>p,toBase64:()=>g,fromBase64:()=>y,arrayBufferToString:()=>S,stringToArrayBuffer:()=>v,nearestPowerOf2:()=>C,clearProps:()=>I});const m="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",b="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=";function g(e,t=!1,r=!1,i=!1){let n=0,s=0,a=0,c="";const o=t?b:m;if(i){let t=0;for(let r=0;r=e.length&&(s=1);const i=e.charCodeAt(n++);n>=e.length&&(a=1);const d=e.charCodeAt(n++),l=t>>2,u=(3&t)<<4|i>>4;let h=(15&i)<<2|d>>6,f=63&d;1===s?h=f=64:1===a&&(f=64),c+=r?64===h?`${o.charAt(l)}${o.charAt(u)}`:64===f?`${o.charAt(l)}${o.charAt(u)}${o.charAt(h)}`:`${o.charAt(l)}${o.charAt(u)}${o.charAt(h)}${o.charAt(f)}`:`${o.charAt(l)}${o.charAt(u)}${o.charAt(h)}${o.charAt(f)}`}return c}function y(e,t=!1,r=!1){const i=t?b:m;function n(e){for(let t=0;t<64;t++)if(i.charAt(t)===e)return t;return 64}function s(e){return 64===e?0:e}let a=0,c="";for(;a=e.length?0:n(e.charAt(a++)),i=a>=e.length?0:n(e.charAt(a++)),o=a>=e.length?0:n(e.charAt(a++)),d=s(t)<<2|s(r)>>4,l=(15&s(r))<<4|s(i)>>2,u=(3&s(i))<<6|s(o);c+=String.fromCharCode(d),64!==i&&(c+=String.fromCharCode(l)),64!==o&&(c+=String.fromCharCode(u))}if(r){let e=-1;for(let t=c.length-1;t>=0;t--)if(0!==c.charCodeAt(t)){e=t;break}c=-1!==e?c.slice(0,e+1):""}return c}function S(e){let t="";const r=new Uint8Array(e);for(const e of r)t+=String.fromCharCode(e);return t}function v(e){const t=e.length,r=new ArrayBuffer(t),i=new Uint8Array(r);for(let r=0;r{var i;void 0===(i=function(e){"use strict";var t=r(897),i=r(212),n=/^(\d\d)(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])([01]\d|2[0-3])(?:([0-5]\d)(?:([0-5]\d)(?:[.,](\d{1,3}))?)?)?(Z|[-+](?:[0]\d|1[0-2])([0-5]\d)?)?$/,s=/^(\d\d\d\d)(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])([01]\d|2[0-3])(?:([0-5]\d)(?:([0-5]\d)(?:[.,](\d{1,3}))?)?)?(Z|[-+](?:[0]\d|1[0-2])([0-5]\d)?)?$/;function a(e,t){return e.length>t&&(e=e.substring(0,t)+"…"),e}function c(e,t){e instanceof c?(this.enc=e.enc,this.pos=e.pos):(this.enc=e,this.pos=t)}c.prototype.get=function(e){if(void 0===e&&(e=this.pos++),e>=this.enc.length)throw"Requesting byte offset "+e+" on a stream of length "+this.enc.length;return"string"==typeof this.enc?this.enc.charCodeAt(e):this.enc[e]},c.prototype.hexDigits="0123456789ABCDEF",c.prototype.hexByte=function(e){return this.hexDigits.charAt(e>>4&15)+this.hexDigits.charAt(15&e)},c.prototype.hexDump=function(e,t,r){for(var i="",n=e;n>6,this.tagConstructed=0!=(32&r),this.tagNumber=31&r,31==this.tagNumber){var i=new t;do{r=e.get(),i.mulAdd(128,127&r)}while(128&r);this.tagNumber=i.simplify()}}return c.prototype.b64Dump=function(e,t){var r,i,n=(t-e)%3,s="";for(r=e;r+2>18&63),s+=o.charAt(i>>12&63),s+=o.charAt(i>>6&63),s+=o.charAt(63&i);return n>0&&(i=this.get(r)<<16,n>1&&(i|=this.get(r+1)<<8),s+=o.charAt(i>>18&63),s+=o.charAt(i>>12&63),2==n&&(s+=o.charAt(i>>6&63))),s},c.prototype.isASCII=function(e,t){for(var r=e;r176)return!1}return!0},c.prototype.parseStringISO=function(e,t){for(var r="",i=e;i=192)throw new Error("Invalid UTF-8 continuation byte: "+e);return 63&e}function i(e){if(e<65536)throw new Error("UTF-8 overlong encoding, codepoint encoded in 4 bytes: "+e);return e-=65536,String.fromCharCode(55296+(e>>10),56320+(1023&e))}for(var n="",s=e;s127,a=s?255:0,c="";n==a&&++e4){for(c=n,i<<=3;0==(128&(c^a));)c<<=1,--i;c="("+i+" bit)\n"}s&&(n-=256);for(var o=new t(n),d=e+1;d7)throw"Invalid BitString with unusedBits="+i;for(var n=(t-e-1<<3)-i,s="",c=e+1;c=d;--l)s+=o>>l&1?"1":"0";s.length>r&&(s=a(s,r))}return{size:n,str:s}},c.prototype.parseOctetString=function(e,t,r){var i,n=t-e;try{var s;for(i=this.parseStringUTF(e,t),a=0;a(r/=2)&&(t=e+r),i="";for(var a=e;ar&&(i+="…"),{size:n,str:i}},c.prototype.parseOID=function(e,r,n){for(var s="",c=new t,o=0,d=e;dn)return a(s,n);c=new t,o=0}}if(o>0&&(s+=".incomplete"),"object"==typeof i){var h=i[s];h&&(h.d&&(s+="\n"+h.d),h.c&&(s+="\n"+h.c),h.w&&(s+="\n(warning!)"))}return s},d.prototype.typeName=function(){switch(this.tag.tagClass){case 0:switch(this.tag.tagNumber){case 0:return"EOC";case 1:return"BOOLEAN";case 2:return"INTEGER";case 3:return"BIT_STRING";case 4:return"OCTET_STRING";case 5:return"NULL";case 6:return"OBJECT_IDENTIFIER";case 7:return"ObjectDescriptor";case 8:return"EXTERNAL";case 9:return"REAL";case 10:return"ENUMERATED";case 11:return"EMBEDDED_PDV";case 12:return"UTF8String";case 16:return"SEQUENCE";case 17:return"SET";case 18:return"NumericString";case 19:return"PrintableString";case 20:return"TeletexString";case 21:return"VideotexString";case 22:return"IA5String";case 23:return"UTCTime";case 24:return"GeneralizedTime";case 25:return"GraphicString";case 26:return"VisibleString";case 27:return"GeneralString";case 28:return"UniversalString";case 30:return"BMPString"}return"Universal_"+this.tag.tagNumber.toString();case 1:return"Application_"+this.tag.tagNumber.toString();case 2:return"["+this.tag.tagNumber.toString()+"]";case 3:return"Private_"+this.tag.tagNumber.toString()}},d.prototype.content=function(e){if(void 0===this.tag)return null;void 0===e&&(e=1/0);var t=this.posContent(),r=Math.abs(this.length);if(!this.tag.isUniversal()){if(null!==this.sub)return"("+this.sub.length+" elem)";var i=this.stream.parseOctetString(t,t+r,e);return"("+i.size+" byte)\n"+i.str}switch(this.tag.tagNumber){case 1:return 0===this.stream.get(t)?"false":"true";case 2:return this.stream.parseInteger(t,t+r);case 3:var n=l(this,"parseBitString",e);return"("+n.size+" bit)\n"+n.str;case 4:return"("+(n=l(this,"parseOctetString",e)).size+" byte)\n"+n.str;case 6:return this.stream.parseOID(t,t+r,e);case 10:return this.stream.parseInteger(t,t+r);case 16:case 17:return null!==this.sub?"("+this.sub.length+" elem)":"(no elem)";case 12:return a(this.stream.parseStringUTF(t,t+r),e);case 18:case 19:case 20:case 21:case 22:case 26:case 27:return a(this.stream.parseStringISO(t,t+r),e);case 30:return a(this.stream.parseStringBMP(t,t+r),e);case 23:case 24:return this.stream.parseTime(t,t+r,23==this.tag.tagNumber)}return null},d.prototype.toString=function(){return this.typeName()+"@"+this.stream.pos+"[header:"+this.header+",length:"+this.length+",sub:"+(null===this.sub?"null":this.sub.length)+"]"},d.prototype.toPrettyString=function(e){void 0===e&&(e="");var t=e+this.typeName()+" @"+this.stream.pos;this.length>=0&&(t+="+"),t+=this.length,this.tag.tagConstructed?t+=" (constructed)":!this.tag.isUniversal()||3!=this.tag.tagNumber&&4!=this.tag.tagNumber||null===this.sub||(t+=" (encapsulates)");var r=this.content();if(r&&(t+=": "+r.replace(/\n/g,"|")),t+="\n",null!==this.sub){e+=" ";for(var i=0,n=this.sub.length;i6)throw"Length over 48 bits not supported at position "+(e.pos-1);t=0;for(var i=0;ie.enc.length)throw"Container at offset "+a+" has a length of "+s+", which is past the end of the stream";for(;e.pos{var i;void 0===(i=function(){"use strict";var e=1e13;function t(e){this.buf=[+e||0]}return t.prototype.mulAdd=function(t,r){var i,n,s=this.buf,a=s.length;for(i=0;i0&&(s[i]=r)},t.prototype.sub=function(t){var r,i,n=this.buf,s=n.length;for(r=0;r=0;--n)i+=(e+r[n]).toString().substring(1);return i},t.prototype.valueOf=function(){for(var t=this.buf,r=0,i=t.length-1;i>=0;--i)r=r*e+t[i];return r},t.prototype.simplify=function(){var e=this.buf;return 1==e.length?e[0]:this},t}.call(t,r,t,e))||(e.exports=i)},212:(e,t,r)=>{var i;void 0===(i=function(){"use strict";return{"0.2.262.1.10":{d:"Telesec",c:"Deutsche Telekom"},"0.2.262.1.10.0":{d:"extension",c:"Telesec"},"0.2.262.1.10.1":{d:"mechanism",c:"Telesec"},"0.2.262.1.10.1.0":{d:"authentication",c:"Telesec mechanism"},"0.2.262.1.10.1.0.1":{d:"passwordAuthentication",c:"Telesec authentication"},"0.2.262.1.10.1.0.2":{d:"protectedPasswordAuthentication",c:"Telesec authentication"},"0.2.262.1.10.1.0.3":{d:"oneWayX509Authentication",c:"Telesec authentication"},"0.2.262.1.10.1.0.4":{d:"twoWayX509Authentication",c:"Telesec authentication"},"0.2.262.1.10.1.0.5":{d:"threeWayX509Authentication",c:"Telesec authentication"},"0.2.262.1.10.1.0.6":{d:"oneWayISO9798Authentication",c:"Telesec authentication"},"0.2.262.1.10.1.0.7":{d:"twoWayISO9798Authentication",c:"Telesec authentication"},"0.2.262.1.10.1.0.8":{d:"telekomAuthentication",c:"Telesec authentication"},"0.2.262.1.10.1.1":{d:"signature",c:"Telesec mechanism"},"0.2.262.1.10.1.1.1":{d:"md4WithRSAAndISO9697",c:"Telesec mechanism"},"0.2.262.1.10.1.1.2":{d:"md4WithRSAAndTelesecSignatureStandard",c:"Telesec mechanism"},"0.2.262.1.10.1.1.3":{d:"md5WithRSAAndISO9697",c:"Telesec mechanism"},"0.2.262.1.10.1.1.4":{d:"md5WithRSAAndTelesecSignatureStandard",c:"Telesec mechanism"},"0.2.262.1.10.1.1.5":{d:"ripemd160WithRSAAndTelekomSignatureStandard",c:"Telesec mechanism"},"0.2.262.1.10.1.1.9":{d:"hbciRsaSignature",c:"Telesec signature"},"0.2.262.1.10.1.2":{d:"encryption",c:"Telesec mechanism"},"0.2.262.1.10.1.2.0":{d:"none",c:"Telesec encryption"},"0.2.262.1.10.1.2.1":{d:"rsaTelesec",c:"Telesec encryption"},"0.2.262.1.10.1.2.2":{d:"des",c:"Telesec encryption"},"0.2.262.1.10.1.2.2.1":{d:"desECB",c:"Telesec encryption"},"0.2.262.1.10.1.2.2.2":{d:"desCBC",c:"Telesec encryption"},"0.2.262.1.10.1.2.2.3":{d:"desOFB",c:"Telesec encryption"},"0.2.262.1.10.1.2.2.4":{d:"desCFB8",c:"Telesec encryption"},"0.2.262.1.10.1.2.2.5":{d:"desCFB64",c:"Telesec encryption"},"0.2.262.1.10.1.2.3":{d:"des3",c:"Telesec encryption"},"0.2.262.1.10.1.2.3.1":{d:"des3ECB",c:"Telesec encryption"},"0.2.262.1.10.1.2.3.2":{d:"des3CBC",c:"Telesec encryption"},"0.2.262.1.10.1.2.3.3":{d:"des3OFB",c:"Telesec encryption"},"0.2.262.1.10.1.2.3.4":{d:"des3CFB8",c:"Telesec encryption"},"0.2.262.1.10.1.2.3.5":{d:"des3CFB64",c:"Telesec encryption"},"0.2.262.1.10.1.2.4":{d:"magenta",c:"Telesec encryption"},"0.2.262.1.10.1.2.5":{d:"idea",c:"Telesec encryption"},"0.2.262.1.10.1.2.5.1":{d:"ideaECB",c:"Telesec encryption"},"0.2.262.1.10.1.2.5.2":{d:"ideaCBC",c:"Telesec encryption"},"0.2.262.1.10.1.2.5.3":{d:"ideaOFB",c:"Telesec encryption"},"0.2.262.1.10.1.2.5.4":{d:"ideaCFB8",c:"Telesec encryption"},"0.2.262.1.10.1.2.5.5":{d:"ideaCFB64",c:"Telesec encryption"},"0.2.262.1.10.1.3":{d:"oneWayFunction",c:"Telesec mechanism"},"0.2.262.1.10.1.3.1":{d:"md4",c:"Telesec one-way function"},"0.2.262.1.10.1.3.2":{d:"md5",c:"Telesec one-way function"},"0.2.262.1.10.1.3.3":{d:"sqModNX509",c:"Telesec one-way function"},"0.2.262.1.10.1.3.4":{d:"sqModNISO",c:"Telesec one-way function"},"0.2.262.1.10.1.3.5":{d:"ripemd128",c:"Telesec one-way function"},"0.2.262.1.10.1.3.6":{d:"hashUsingBlockCipher",c:"Telesec one-way function"},"0.2.262.1.10.1.3.7":{d:"mac",c:"Telesec one-way function"},"0.2.262.1.10.1.3.8":{d:"ripemd160",c:"Telesec one-way function"},"0.2.262.1.10.1.4":{d:"fecFunction",c:"Telesec mechanism"},"0.2.262.1.10.1.4.1":{d:"reedSolomon",c:"Telesec mechanism"},"0.2.262.1.10.2":{d:"module",c:"Telesec"},"0.2.262.1.10.2.0":{d:"algorithms",c:"Telesec module"},"0.2.262.1.10.2.1":{d:"attributeTypes",c:"Telesec module"},"0.2.262.1.10.2.2":{d:"certificateTypes",c:"Telesec module"},"0.2.262.1.10.2.3":{d:"messageTypes",c:"Telesec module"},"0.2.262.1.10.2.4":{d:"plProtocol",c:"Telesec module"},"0.2.262.1.10.2.5":{d:"smeAndComponentsOfSme",c:"Telesec module"},"0.2.262.1.10.2.6":{d:"fec",c:"Telesec module"},"0.2.262.1.10.2.7":{d:"usefulDefinitions",c:"Telesec module"},"0.2.262.1.10.2.8":{d:"stefiles",c:"Telesec module"},"0.2.262.1.10.2.9":{d:"sadmib",c:"Telesec module"},"0.2.262.1.10.2.10":{d:"electronicOrder",c:"Telesec module"},"0.2.262.1.10.2.11":{d:"telesecTtpAsymmetricApplication",c:"Telesec module"},"0.2.262.1.10.2.12":{d:"telesecTtpBasisApplication",c:"Telesec module"},"0.2.262.1.10.2.13":{d:"telesecTtpMessages",c:"Telesec module"},"0.2.262.1.10.2.14":{d:"telesecTtpTimeStampApplication",c:"Telesec module"},"0.2.262.1.10.3":{d:"objectClass",c:"Telesec"},"0.2.262.1.10.3.0":{d:"telesecOtherName",c:"Telesec object class"},"0.2.262.1.10.3.1":{d:"directory",c:"Telesec object class"},"0.2.262.1.10.3.2":{d:"directoryType",c:"Telesec object class"},"0.2.262.1.10.3.3":{d:"directoryGroup",c:"Telesec object class"},"0.2.262.1.10.3.4":{d:"directoryUser",c:"Telesec object class"},"0.2.262.1.10.3.5":{d:"symmetricKeyEntry",c:"Telesec object class"},"0.2.262.1.10.4":{d:"package",c:"Telesec"},"0.2.262.1.10.5":{d:"parameter",c:"Telesec"},"0.2.262.1.10.6":{d:"nameBinding",c:"Telesec"},"0.2.262.1.10.7":{d:"attribute",c:"Telesec"},"0.2.262.1.10.7.0":{d:"applicationGroupIdentifier",c:"Telesec attribute"},"0.2.262.1.10.7.1":{d:"certificateType",c:"Telesec attribute"},"0.2.262.1.10.7.2":{d:"telesecCertificate",c:"Telesec attribute"},"0.2.262.1.10.7.3":{d:"certificateNumber",c:"Telesec attribute"},"0.2.262.1.10.7.4":{d:"certificateRevocationList",c:"Telesec attribute"},"0.2.262.1.10.7.5":{d:"creationDate",c:"Telesec attribute"},"0.2.262.1.10.7.6":{d:"issuer",c:"Telesec attribute"},"0.2.262.1.10.7.7":{d:"namingAuthority",c:"Telesec attribute"},"0.2.262.1.10.7.8":{d:"publicKeyDirectory",c:"Telesec attribute"},"0.2.262.1.10.7.9":{d:"securityDomain",c:"Telesec attribute"},"0.2.262.1.10.7.10":{d:"subject",c:"Telesec attribute"},"0.2.262.1.10.7.11":{d:"timeOfRevocation",c:"Telesec attribute"},"0.2.262.1.10.7.12":{d:"userGroupReference",c:"Telesec attribute"},"0.2.262.1.10.7.13":{d:"validity",c:"Telesec attribute"},"0.2.262.1.10.7.14":{d:"zert93",c:"Telesec attribute"},"0.2.262.1.10.7.15":{d:"securityMessEnv",c:"Telesec attribute"},"0.2.262.1.10.7.16":{d:"anonymizedPublicKeyDirectory",c:"Telesec attribute"},"0.2.262.1.10.7.17":{d:"telesecGivenName",c:"Telesec attribute"},"0.2.262.1.10.7.18":{d:"nameAdditions",c:"Telesec attribute"},"0.2.262.1.10.7.19":{d:"telesecPostalCode",c:"Telesec attribute"},"0.2.262.1.10.7.20":{d:"nameDistinguisher",c:"Telesec attribute"},"0.2.262.1.10.7.21":{d:"telesecCertificateList",c:"Telesec attribute"},"0.2.262.1.10.7.22":{d:"teletrustCertificateList",c:"Telesec attribute"},"0.2.262.1.10.7.23":{d:"x509CertificateList",c:"Telesec attribute"},"0.2.262.1.10.7.24":{d:"timeOfIssue",c:"Telesec attribute"},"0.2.262.1.10.7.25":{d:"physicalCardNumber",c:"Telesec attribute"},"0.2.262.1.10.7.26":{d:"fileType",c:"Telesec attribute"},"0.2.262.1.10.7.27":{d:"ctlFileIsArchive",c:"Telesec attribute"},"0.2.262.1.10.7.28":{d:"emailAddress",c:"Telesec attribute"},"0.2.262.1.10.7.29":{d:"certificateTemplateList",c:"Telesec attribute"},"0.2.262.1.10.7.30":{d:"directoryName",c:"Telesec attribute"},"0.2.262.1.10.7.31":{d:"directoryTypeName",c:"Telesec attribute"},"0.2.262.1.10.7.32":{d:"directoryGroupName",c:"Telesec attribute"},"0.2.262.1.10.7.33":{d:"directoryUserName",c:"Telesec attribute"},"0.2.262.1.10.7.34":{d:"revocationFlag",c:"Telesec attribute"},"0.2.262.1.10.7.35":{d:"symmetricKeyEntryName",c:"Telesec attribute"},"0.2.262.1.10.7.36":{d:"glNumber",c:"Telesec attribute"},"0.2.262.1.10.7.37":{d:"goNumber",c:"Telesec attribute"},"0.2.262.1.10.7.38":{d:"gKeyData",c:"Telesec attribute"},"0.2.262.1.10.7.39":{d:"zKeyData",c:"Telesec attribute"},"0.2.262.1.10.7.40":{d:"ktKeyData",c:"Telesec attribute"},"0.2.262.1.10.7.41":{d:"ktKeyNumber",c:"Telesec attribute"},"0.2.262.1.10.7.51":{d:"timeOfRevocationGen",c:"Telesec attribute"},"0.2.262.1.10.7.52":{d:"liabilityText",c:"Telesec attribute"},"0.2.262.1.10.8":{d:"attributeGroup",c:"Telesec"},"0.2.262.1.10.9":{d:"action",c:"Telesec"},"0.2.262.1.10.10":{d:"notification",c:"Telesec"},"0.2.262.1.10.11":{d:"snmp-mibs",c:"Telesec"},"0.2.262.1.10.11.1":{d:"securityApplication",c:"Telesec SNMP MIBs"},"0.2.262.1.10.12":{d:"certAndCrlExtensionDefinitions",c:"Telesec"},"0.2.262.1.10.12.0":{d:"liabilityLimitationFlag",c:"Telesec cert/CRL extension"},"0.2.262.1.10.12.1":{d:"telesecCertIdExt",c:"Telesec cert/CRL extension"},"0.2.262.1.10.12.2":{d:"Telesec policyIdentifier",c:"Telesec cert/CRL extension"},"0.2.262.1.10.12.3":{d:"telesecPolicyQualifierID",c:"Telesec cert/CRL extension"},"0.2.262.1.10.12.4":{d:"telesecCRLFilteredExt",c:"Telesec cert/CRL extension"},"0.2.262.1.10.12.5":{d:"telesecCRLFilterExt",c:"Telesec cert/CRL extension"},"0.2.262.1.10.12.6":{d:"telesecNamingAuthorityExt",c:"Telesec cert/CRL extension"},"0.4.0.127.0.7":{d:"bsi",c:"BSI TR-03110/TR-03111"},"0.4.0.127.0.7.1":{d:"bsiEcc",c:"BSI TR-03111"},"0.4.0.127.0.7.1.1":{d:"bsifieldType",c:"BSI TR-03111"},"0.4.0.127.0.7.1.1.1":{d:"bsiPrimeField",c:"BSI TR-03111"},"0.4.0.127.0.7.1.1.2":{d:"bsiCharacteristicTwoField",c:"BSI TR-03111"},"0.4.0.127.0.7.1.1.2.2":{d:"bsiECTLVKeyFormat",c:"BSI TR-03111"},"0.4.0.127.0.7.1.1.2.2.1":{d:"bsiECTLVPublicKey",c:"BSI TR-03111"},"0.4.0.127.0.7.1.1.2.3":{d:"bsiCharacteristicTwoBasis",c:"BSI TR-03111"},"0.4.0.127.0.7.1.1.2.3.1":{d:"bsiGnBasis",c:"BSI TR-03111"},"0.4.0.127.0.7.1.1.2.3.2":{d:"bsiTpBasis",c:"BSI TR-03111"},"0.4.0.127.0.7.1.1.2.3.3":{d:"bsiPpBasis",c:"BSI TR-03111"},"0.4.0.127.0.7.1.1.4.1":{d:"bsiEcdsaSignatures",c:"BSI TR-03111"},"0.4.0.127.0.7.1.1.4.1.1":{d:"bsiEcdsaWithSHA1",c:"BSI TR-03111"},"0.4.0.127.0.7.1.1.4.1.2":{d:"bsiEcdsaWithSHA224",c:"BSI TR-03111"},"0.4.0.127.0.7.1.1.4.1.3":{d:"bsiEcdsaWithSHA256",c:"BSI TR-03111"},"0.4.0.127.0.7.1.1.4.1.4":{d:"bsiEcdsaWithSHA384",c:"BSI TR-03111"},"0.4.0.127.0.7.1.1.4.1.5":{d:"bsiEcdsaWithSHA512",c:"BSI TR-03111"},"0.4.0.127.0.7.1.1.4.1.6":{d:"bsiEcdsaWithRIPEMD160",c:"BSI TR-03111"},"0.4.0.127.0.7.1.1.5.1.1":{d:"bsiEckaEgX963KDF",c:"BSI TR-03111"},"0.4.0.127.0.7.1.1.5.1.1.1":{d:"bsiEckaEgX963KDFWithSHA1",c:"BSI TR-03111"},"0.4.0.127.0.7.1.1.5.1.1.2":{d:"bsiEckaEgX963KDFWithSHA224",c:"BSI TR-03111"},"0.4.0.127.0.7.1.1.5.1.1.3":{d:"bsiEckaEgX963KDFWithSHA256",c:"BSI TR-03111"},"0.4.0.127.0.7.1.1.5.1.1.4":{d:"bsiEckaEgX963KDFWithSHA384",c:"BSI TR-03111"},"0.4.0.127.0.7.1.1.5.1.1.5":{d:"bsiEckaEgX963KDFWithSHA512",c:"BSI TR-03111"},"0.4.0.127.0.7.1.1.5.1.1.6":{d:"bsiEckaEgX963KDFWithRIPEMD160",c:"BSI TR-03111"},"0.4.0.127.0.7.1.1.5.1.2":{d:"bsiEckaEgSessionKDF",c:"BSI TR-03111"},"0.4.0.127.0.7.1.1.5.1.2.1":{d:"bsiEckaEgSessionKDFWith3DES",c:"BSI TR-03111"},"0.4.0.127.0.7.1.1.5.1.2.2":{d:"bsiEckaEgSessionKDFWithAES128",c:"BSI TR-03111"},"0.4.0.127.0.7.1.1.5.1.2.3":{d:"bsiEckaEgSessionKDFWithAES192",c:"BSI TR-03111"},"0.4.0.127.0.7.1.1.5.1.2.4":{d:"bsiEckaEgSessionKDFWithAES256",c:"BSI TR-03111"},"0.4.0.127.0.7.1.1.5.2":{d:"bsiEckaDH",c:"BSI TR-03111"},"0.4.0.127.0.7.1.1.5.2.1":{d:"bsiEckaDHX963KDF",c:"BSI TR-03111"},"0.4.0.127.0.7.1.1.5.2.1.1":{d:"bsiEckaDHX963KDFWithSHA1",c:"BSI TR-03111"},"0.4.0.127.0.7.1.1.5.2.1.2":{d:"bsiEckaDHX963KDFWithSHA224",c:"BSI TR-03111"},"0.4.0.127.0.7.1.1.5.2.1.3":{d:"bsiEckaDHX963KDFWithSHA256",c:"BSI TR-03111"},"0.4.0.127.0.7.1.1.5.2.1.4":{d:"bsiEckaDHX963KDFWithSHA384",c:"BSI TR-03111"},"0.4.0.127.0.7.1.1.5.2.1.5":{d:"bsiEckaDHX963KDFWithSHA512",c:"BSI TR-03111"},"0.4.0.127.0.7.1.1.5.2.1.6":{d:"bsiEckaDHX963KDFWithRIPEMD160",c:"BSI TR-03111"},"0.4.0.127.0.7.1.1.5.2.2":{d:"bsiEckaDHSessionKDF",c:"BSI TR-03111"},"0.4.0.127.0.7.1.1.5.2.2.1":{d:"bsiEckaDHSessionKDFWith3DES",c:"BSI TR-03111"},"0.4.0.127.0.7.1.1.5.2.2.2":{d:"bsiEckaDHSessionKDFWithAES128",c:"BSI TR-03111"},"0.4.0.127.0.7.1.1.5.2.2.3":{d:"bsiEckaDHSessionKDFWithAES192",c:"BSI TR-03111"},"0.4.0.127.0.7.1.1.5.2.2.4":{d:"bsiEckaDHSessionKDFWithAES256",c:"BSI TR-03111"},"0.4.0.127.0.7.1.2":{d:"bsiEcKeyType",c:"BSI TR-03111"},"0.4.0.127.0.7.1.2.1":{d:"bsiEcPublicKey",c:"BSI TR-03111"},"0.4.0.127.0.7.1.5.1":{d:"bsiKaeg",c:"BSI TR-03111"},"0.4.0.127.0.7.1.5.1.1":{d:"bsiKaegWithX963KDF",c:"BSI TR-03111"},"0.4.0.127.0.7.1.5.1.2":{d:"bsiKaegWith3DESKDF",c:"BSI TR-03111"},"0.4.0.127.0.7.2.2.1":{d:"bsiPK",c:"BSI TR-03110. Formerly known as bsiCA, now moved to ...2.2.3.x"},"0.4.0.127.0.7.2.2.1.1":{d:"bsiPK_DH",c:"BSI TR-03110. Formerly known as bsiCA_DH, now moved to ...2.2.3.x"},"0.4.0.127.0.7.2.2.1.2":{d:"bsiPK_ECDH",c:"BSI TR-03110. Formerly known as bsiCA_ECDH, now moved to ...2.2.3.x"},"0.4.0.127.0.7.2.2.2":{d:"bsiTA",c:"BSI TR-03110"},"0.4.0.127.0.7.2.2.2.1":{d:"bsiTA_RSA",c:"BSI TR-03110"},"0.4.0.127.0.7.2.2.2.1.1":{d:"bsiTA_RSAv1_5_SHA1",c:"BSI TR-03110"},"0.4.0.127.0.7.2.2.2.1.2":{d:"bsiTA_RSAv1_5_SHA256",c:"BSI TR-03110"},"0.4.0.127.0.7.2.2.2.1.3":{d:"bsiTA_RSAPSS_SHA1",c:"BSI TR-03110"},"0.4.0.127.0.7.2.2.2.1.4":{d:"bsiTA_RSAPSS_SHA256",c:"BSI TR-03110"},"0.4.0.127.0.7.2.2.2.1.5":{d:"bsiTA_RSAv1_5_SHA512",c:"BSI TR-03110"},"0.4.0.127.0.7.2.2.2.1.6":{d:"bsiTA_RSAPSS_SHA512",c:"BSI TR-03110"},"0.4.0.127.0.7.2.2.2.2":{d:"bsiTA_ECDSA",c:"BSI TR-03110"},"0.4.0.127.0.7.2.2.2.2.1":{d:"bsiTA_ECDSA_SHA1",c:"BSI TR-03110"},"0.4.0.127.0.7.2.2.2.2.2":{d:"bsiTA_ECDSA_SHA224",c:"BSI TR-03110"},"0.4.0.127.0.7.2.2.2.2.3":{d:"bsiTA_ECDSA_SHA256",c:"BSI TR-03110"},"0.4.0.127.0.7.2.2.2.2.4":{d:"bsiTA_ECDSA_SHA384",c:"BSI TR-03110"},"0.4.0.127.0.7.2.2.2.2.5":{d:"bsiTA_ECDSA_SHA512",c:"BSI TR-03110"},"0.4.0.127.0.7.2.2.3":{d:"bsiCA",c:"BSI TR-03110"},"0.4.0.127.0.7.2.2.3.1":{d:"bsiCA_DH",c:"BSI TR-03110"},"0.4.0.127.0.7.2.2.3.1.1":{d:"bsiCA_DH_3DES_CBC_CBC",c:"BSI TR-03110"},"0.4.0.127.0.7.2.2.3.1.2":{d:"bsiCA_DH_AES_CBC_CMAC_128",c:"BSI TR-03110"},"0.4.0.127.0.7.2.2.3.1.3":{d:"bsiCA_DH_AES_CBC_CMAC_192",c:"BSI TR-03110"},"0.4.0.127.0.7.2.2.3.1.4":{d:"bsiCA_DH_AES_CBC_CMAC_256",c:"BSI TR-03110"},"0.4.0.127.0.7.2.2.3.2":{d:"bsiCA_ECDH",c:"BSI TR-03110"},"0.4.0.127.0.7.2.2.3.2.1":{d:"bsiCA_ECDH_3DES_CBC_CBC",c:"BSI TR-03110"},"0.4.0.127.0.7.2.2.3.2.2":{d:"bsiCA_ECDH_AES_CBC_CMAC_128",c:"BSI TR-03110"},"0.4.0.127.0.7.2.2.3.2.3":{d:"bsiCA_ECDH_AES_CBC_CMAC_192",c:"BSI TR-03110"},"0.4.0.127.0.7.2.2.3.2.4":{d:"bsiCA_ECDH_AES_CBC_CMAC_256",c:"BSI TR-03110"},"0.4.0.127.0.7.2.2.4":{d:"bsiPACE",c:"BSI TR-03110"},"0.4.0.127.0.7.2.2.4.1":{d:"bsiPACE_DH_GM",c:"BSI TR-03110"},"0.4.0.127.0.7.2.2.4.1.1":{d:"bsiPACE_DH_GM_3DES_CBC_CBC",c:"BSI TR-03110"},"0.4.0.127.0.7.2.2.4.1.2":{d:"bsiPACE_DH_GM_AES_CBC_CMAC_128",c:"BSI TR-03110"},"0.4.0.127.0.7.2.2.4.1.3":{d:"bsiPACE_DH_GM_AES_CBC_CMAC_192",c:"BSI TR-03110"},"0.4.0.127.0.7.2.2.4.1.4":{d:"bsiPACE_DH_GM_AES_CBC_CMAC_256",c:"BSI TR-03110"},"0.4.0.127.0.7.2.2.4.2":{d:"bsiPACE_ECDH_GM",c:"BSI TR-03110"},"0.4.0.127.0.7.2.2.4.2.1":{d:"bsiPACE_ECDH_GM_3DES_CBC_CBC",c:"BSI TR-03110"},"0.4.0.127.0.7.2.2.4.2.2":{d:"bsiPACE_ECDH_GM_AES_CBC_CMAC_128",c:"BSI TR-03110"},"0.4.0.127.0.7.2.2.4.2.3":{d:"bsiPACE_ECDH_GM_AES_CBC_CMAC_192",c:"BSI TR-03110"},"0.4.0.127.0.7.2.2.4.2.4":{d:"bsiPACE_ECDH_GM_AES_CBC_CMAC_256",c:"BSI TR-03110"},"0.4.0.127.0.7.2.2.4.3":{d:"bsiPACE_DH_IM",c:"BSI TR-03110"},"0.4.0.127.0.7.2.2.4.3.1":{d:"bsiPACE_DH_IM_3DES_CBC_CBC",c:"BSI TR-03110"},"0.4.0.127.0.7.2.2.4.3.2":{d:"bsiPACE_DH_IM_AES_CBC_CMAC_128",c:"BSI TR-03110"},"0.4.0.127.0.7.2.2.4.3.3":{d:"bsiPACE_DH_IM_AES_CBC_CMAC_192",c:"BSI TR-03110"},"0.4.0.127.0.7.2.2.4.3.4":{d:"bsiPACE_DH_IM_AES_CBC_CMAC_256",c:"BSI TR-03110"},"0.4.0.127.0.7.2.2.4.4":{d:"bsiPACE_ECDH_IM",c:"BSI TR-03110"},"0.4.0.127.0.7.2.2.4.4.1":{d:"bsiPACE_ECDH_IM_3DES_CBC_CBC",c:"BSI TR-03110"},"0.4.0.127.0.7.2.2.4.4.2":{d:"bsiPACE_ECDH_IM_AES_CBC_CMAC_128",c:"BSI TR-03110"},"0.4.0.127.0.7.2.2.4.4.3":{d:"bsiPACE_ECDH_IM_AES_CBC_CMAC_192",c:"BSI TR-03110"},"0.4.0.127.0.7.2.2.4.4.4":{d:"bsiPACE_ECDH_IM_AES_CBC_CMAC_256",c:"BSI TR-03110"},"0.4.0.127.0.7.2.2.5":{d:"bsiRI",c:"BSI TR-03110"},"0.4.0.127.0.7.2.2.5.1":{d:"bsiRI_DH",c:"BSI TR-03110"},"0.4.0.127.0.7.2.2.5.1.1":{d:"bsiRI_DH_SHA1",c:"BSI TR-03110"},"0.4.0.127.0.7.2.2.5.1.2":{d:"bsiRI_DH_SHA224",c:"BSI TR-03110"},"0.4.0.127.0.7.2.2.5.1.3":{d:"bsiRI_DH_SHA256",c:"BSI TR-03110"},"0.4.0.127.0.7.2.2.5.1.4":{d:"bsiRI_DH_SHA384",c:"BSI TR-03110"},"0.4.0.127.0.7.2.2.5.1.5":{d:"bsiRI_DH_SHA512",c:"BSI TR-03110"},"0.4.0.127.0.7.2.2.5.2":{d:"bsiRI_ECDH",c:"BSI TR-03110"},"0.4.0.127.0.7.2.2.5.2.1":{d:"bsiRI_ECDH_SHA1",c:"BSI TR-03110"},"0.4.0.127.0.7.2.2.5.2.2":{d:"bsiRI_ECDH_SHA224",c:"BSI TR-03110"},"0.4.0.127.0.7.2.2.5.2.3":{d:"bsiRI_ECDH_SHA256",c:"BSI TR-03110"},"0.4.0.127.0.7.2.2.5.2.4":{d:"bsiRI_ECDH_SHA384",c:"BSI TR-03110"},"0.4.0.127.0.7.2.2.5.2.5":{d:"bsiRI_ECDH_SHA512",c:"BSI TR-03110"},"0.4.0.127.0.7.2.2.6":{d:"bsiCardInfo",c:"BSI TR-03110"},"0.4.0.127.0.7.2.2.7":{d:"bsiEidSecurity",c:"BSI TR-03110"},"0.4.0.127.0.7.2.2.8":{d:"bsiPT",c:"BSI TR-03110"},"0.4.0.127.0.7.3.1.2":{d:"bsiEACRoles",c:"BSI TR-03110"},"0.4.0.127.0.7.3.1.2.1":{d:"bsiEACRolesIS",c:"BSI TR-03110"},"0.4.0.127.0.7.3.1.2.2":{d:"bsiEACRolesAT",c:"BSI TR-03110"},"0.4.0.127.0.7.3.1.2.3":{d:"bsiEACRolesST",c:"BSI TR-03110"},"0.4.0.127.0.7.3.1.3":{d:"bsiTAv2ce",c:"BSI TR-03110"},"0.4.0.127.0.7.3.1.3.1":{d:"bsiTAv2ceDescription",c:"BSI TR-03110"},"0.4.0.127.0.7.3.1.3.1.1":{d:"bsiTAv2ceDescriptionPlainText",c:"BSI TR-03110"},"0.4.0.127.0.7.3.1.3.1.2":{d:"bsiTAv2ceDescriptionIA5String",c:"BSI TR-03110"},"0.4.0.127.0.7.3.1.3.1.3":{d:"bsiTAv2ceDescriptionOctetString",c:"BSI TR-03110"},"0.4.0.127.0.7.3.1.3.2":{d:"bsiTAv2ceTerminalSector",c:"BSI TR-03110"},"0.4.0.127.0.7.3.1.4":{d:"bsiAuxData",c:"BSI TR-03110"},"0.4.0.127.0.7.3.1.4.1":{d:"bsiAuxDataBirthday",c:"BSI TR-03110"},"0.4.0.127.0.7.3.1.4.2":{d:"bsiAuxDataExpireDate",c:"BSI TR-03110"},"0.4.0.127.0.7.3.1.4.3":{d:"bsiAuxDataCommunityID",c:"BSI TR-03110"},"0.4.0.127.0.7.3.1.5":{d:"bsiDefectList",c:"BSI TR-03110"},"0.4.0.127.0.7.3.1.5.1":{d:"bsiDefectAuthDefect",c:"BSI TR-03110"},"0.4.0.127.0.7.3.1.5.1.1":{d:"bsiDefectCertRevoked",c:"BSI TR-03110"},"0.4.0.127.0.7.3.1.5.1.2":{d:"bsiDefectCertReplaced",c:"BSI TR-03110"},"0.4.0.127.0.7.3.1.5.1.3":{d:"bsiDefectChipAuthKeyRevoked",c:"BSI TR-03110"},"0.4.0.127.0.7.3.1.5.1.4":{d:"bsiDefectActiveAuthKeyRevoked",c:"BSI TR-03110"},"0.4.0.127.0.7.3.1.5.2":{d:"bsiDefectEPassportDefect",c:"BSI TR-03110"},"0.4.0.127.0.7.3.1.5.2.1":{d:"bsiDefectEPassportDGMalformed",c:"BSI TR-03110"},"0.4.0.127.0.7.3.1.5.2.2":{d:"bsiDefectSODInvalid",c:"BSI TR-03110"},"0.4.0.127.0.7.3.1.5.3":{d:"bsiDefectEIDDefect",c:"BSI TR-03110"},"0.4.0.127.0.7.3.1.5.3.1":{d:"bsiDefectEIDDGMalformed",c:"BSI TR-03110"},"0.4.0.127.0.7.3.1.5.3.2":{d:"bsiDefectEIDIntegrity",c:"BSI TR-03110"},"0.4.0.127.0.7.3.1.5.4":{d:"bsiDefectDocumentDefect",c:"BSI TR-03110"},"0.4.0.127.0.7.3.1.5.4.1":{d:"bsiDefectCardSecurityMalformed",c:"BSI TR-03110"},"0.4.0.127.0.7.3.1.5.4.2":{d:"bsiDefectChipSecurityMalformed",c:"BSI TR-03110"},"0.4.0.127.0.7.3.1.5.4.3":{d:"bsiDefectPowerDownReq",c:"BSI TR-03110"},"0.4.0.127.0.7.3.1.6":{d:"bsiListContentDescription",c:"BSI TR-03110"},"0.4.0.127.0.7.3.2.1":{d:"bsiSecurityObject",c:"BSI TR-03110"},"0.4.0.127.0.7.3.2.2":{d:"bsiBlackList",c:"BSI TR-03110"},"0.4.0.127.0.7.3.4.2.2":{d:"bsiSignedUpdateDeviceAdmin",c:"BSI TR-03109"},"0.4.0.127.0.7.4.1.1.1":{d:"bsiCertReqMsgs",c:"BSI TR-03109"},"0.4.0.127.0.7.4.1.1.2":{d:"bsiCertReqMsgswithOuterSignature",c:"BSI TR-03109"},"0.4.0.127.0.7.4.1.1.3":{d:"bsiAuthorizedCertReqMsgs",c:"BSI TR-03109"},"0.4.0.127.0.7.4.1.2.2":{d:"bsiSignedRevReqs",c:"BSI TR-03109"},"0.4.0.1862":{d:"etsiQcsProfile",c:"ETSI TS 101 862 qualified certificates"},"0.4.0.1862.1":{d:"etsiQcs",c:"ETSI TS 101 862 qualified certificates"},"0.4.0.1862.1.1":{d:"etsiQcsCompliance",c:"ETSI TS 101 862 qualified certificates"},"0.4.0.1862.1.2":{d:"etsiQcsLimitValue",c:"ETSI TS 101 862 qualified certificates"},"0.4.0.1862.1.3":{d:"etsiQcsRetentionPeriod",c:"ETSI TS 101 862 qualified certificates"},"0.4.0.1862.1.4":{d:"etsiQcsQcSSCD",c:"ETSI TS 101 862 qualified certificates"},"0.9.2342.19200300.100.1.1":{d:"userID",c:"Some oddball X.500 attribute collection"},"0.9.2342.19200300.100.1.3":{d:"rfc822Mailbox",c:"Some oddball X.500 attribute collection"},"0.9.2342.19200300.100.1.25":{d:"domainComponent",c:"Men are from Mars, this OID is from Pluto"},"1.0.10118.3.0.49":{d:"ripemd160",c:"ISO 10118-3 hash function"},"1.0.10118.3.0.50":{d:"ripemd128",c:"ISO 10118-3 hash function"},"1.0.10118.3.0.55":{d:"whirlpool",c:"ISO 10118-3 hash function"},"1.0.18033.2":{d:"iso18033-2",c:"ISO 18033-2"},"1.0.18033.2.2":{d:"kem",c:"ISO 18033-2 algorithms"},"1.0.18033.2.2.4":{d:"kemRSA",c:"ISO 18033-2 KEM algorithms"},"1.2.36.1.3.1.1.1":{d:"qgpki",c:"Queensland Government PKI"},"1.2.36.1.3.1.1.1.1":{d:"qgpkiPolicies",c:"QGPKI policies"},"1.2.36.1.3.1.1.1.1.1":{d:"qgpkiMedIntermedCA",c:"QGPKI policy"},"1.2.36.1.3.1.1.1.1.1.1":{d:"qgpkiMedIntermedIndividual",c:"QGPKI policy"},"1.2.36.1.3.1.1.1.1.1.2":{d:"qgpkiMedIntermedDeviceControl",c:"QGPKI policy"},"1.2.36.1.3.1.1.1.1.1.3":{d:"qgpkiMedIntermedDevice",c:"QGPKI policy"},"1.2.36.1.3.1.1.1.1.1.4":{d:"qgpkiMedIntermedAuthorisedParty",c:"QGPKI policy"},"1.2.36.1.3.1.1.1.1.1.5":{d:"qgpkiMedIntermedDeviceSystem",c:"QGPKI policy"},"1.2.36.1.3.1.1.1.1.2":{d:"qgpkiMedIssuingCA",c:"QGPKI policy"},"1.2.36.1.3.1.1.1.1.2.1":{d:"qgpkiMedIssuingIndividual",c:"QGPKI policy"},"1.2.36.1.3.1.1.1.1.2.2":{d:"qgpkiMedIssuingDeviceControl",c:"QGPKI policy"},"1.2.36.1.3.1.1.1.1.2.3":{d:"qgpkiMedIssuingDevice",c:"QGPKI policy"},"1.2.36.1.3.1.1.1.1.2.4":{d:"qgpkiMedIssuingAuthorisedParty",c:"QGPKI policy"},"1.2.36.1.3.1.1.1.1.2.5":{d:"qgpkiMedIssuingClientAuth",c:"QGPKI policy"},"1.2.36.1.3.1.1.1.1.2.6":{d:"qgpkiMedIssuingServerAuth",c:"QGPKI policy"},"1.2.36.1.3.1.1.1.1.2.7":{d:"qgpkiMedIssuingDataProt",c:"QGPKI policy"},"1.2.36.1.3.1.1.1.1.2.8":{d:"qgpkiMedIssuingTokenAuth",c:"QGPKI policy"},"1.2.36.1.3.1.1.1.1.3":{d:"qgpkiBasicIntermedCA",c:"QGPKI policy"},"1.2.36.1.3.1.1.1.1.3.1":{d:"qgpkiBasicIntermedDeviceSystem",c:"QGPKI policy"},"1.2.36.1.3.1.1.1.1.4":{d:"qgpkiBasicIssuingCA",c:"QGPKI policy"},"1.2.36.1.3.1.1.1.1.4.1":{d:"qgpkiBasicIssuingClientAuth",c:"QGPKI policy"},"1.2.36.1.3.1.1.1.1.4.2":{d:"qgpkiBasicIssuingServerAuth",c:"QGPKI policy"},"1.2.36.1.3.1.1.1.1.4.3":{d:"qgpkiBasicIssuingDataSigning",c:"QGPKI policy"},"1.2.36.1.3.1.1.1.2":{d:"qgpkiAssuranceLevel",c:"QGPKI assurance level"},"1.2.36.1.3.1.1.1.2.1":{d:"qgpkiAssuranceRudimentary",c:"QGPKI assurance level"},"1.2.36.1.3.1.1.1.2.2":{d:"qgpkiAssuranceBasic",c:"QGPKI assurance level"},"1.2.36.1.3.1.1.1.2.3":{d:"qgpkiAssuranceMedium",c:"QGPKI assurance level"},"1.2.36.1.3.1.1.1.2.4":{d:"qgpkiAssuranceHigh",c:"QGPKI assurance level"},"1.2.36.1.3.1.1.1.3":{d:"qgpkiCertFunction",c:"QGPKI policies"},"1.2.36.1.3.1.1.1.3.1":{d:"qgpkiFunctionIndividual",c:"QGPKI policies"},"1.2.36.1.3.1.1.1.3.2":{d:"qgpkiFunctionDevice",c:"QGPKI policies"},"1.2.36.1.3.1.1.1.3.3":{d:"qgpkiFunctionAuthorisedParty",c:"QGPKI policies"},"1.2.36.1.3.1.1.1.3.4":{d:"qgpkiFunctionDeviceControl",c:"QGPKI policies"},"1.2.36.1.3.1.2":{d:"qpspki",c:"Queensland Police PKI"},"1.2.36.1.3.1.2.1":{d:"qpspkiPolicies",c:"Queensland Police PKI"},"1.2.36.1.3.1.2.1.2":{d:"qpspkiPolicyBasic",c:"Queensland Police PKI"},"1.2.36.1.3.1.2.1.3":{d:"qpspkiPolicyMedium",c:"Queensland Police PKI"},"1.2.36.1.3.1.2.1.4":{d:"qpspkiPolicyHigh",c:"Queensland Police PKI"},"1.2.36.1.3.1.3.2":{d:"qtmrpki",c:"Queensland Transport PKI"},"1.2.36.1.3.1.3.2.1":{d:"qtmrpkiPolicies",c:"Queensland Transport PKI"},"1.2.36.1.3.1.3.2.2":{d:"qtmrpkiPurpose",c:"Queensland Transport PKI"},"1.2.36.1.3.1.3.2.2.1":{d:"qtmrpkiIndividual",c:"Queensland Transport PKI purpose"},"1.2.36.1.3.1.3.2.2.2":{d:"qtmrpkiDeviceControl",c:"Queensland Transport PKI purpose"},"1.2.36.1.3.1.3.2.2.3":{d:"qtmrpkiDevice",c:"Queensland Transport PKI purpose"},"1.2.36.1.3.1.3.2.2.4":{d:"qtmrpkiAuthorisedParty",c:"Queensland Transport PKI purpose"},"1.2.36.1.3.1.3.2.2.5":{d:"qtmrpkiDeviceSystem",c:"Queensland Transport PKI purpose"},"1.2.36.1.3.1.3.2.3":{d:"qtmrpkiDevice",c:"Queensland Transport PKI"},"1.2.36.1.3.1.3.2.3.1":{d:"qtmrpkiDriverLicense",c:"Queensland Transport PKI device"},"1.2.36.1.3.1.3.2.3.2":{d:"qtmrpkiIndustryAuthority",c:"Queensland Transport PKI device"},"1.2.36.1.3.1.3.2.3.3":{d:"qtmrpkiMarineLicense",c:"Queensland Transport PKI device"},"1.2.36.1.3.1.3.2.3.4":{d:"qtmrpkiAdultProofOfAge",c:"Queensland Transport PKI device"},"1.2.36.1.3.1.3.2.3.5":{d:"qtmrpkiSam",c:"Queensland Transport PKI device"},"1.2.36.1.3.1.3.2.4":{d:"qtmrpkiAuthorisedParty",c:"Queensland Transport PKI"},"1.2.36.1.3.1.3.2.4.1":{d:"qtmrpkiTransportInspector",c:"Queensland Transport PKI authorised party"},"1.2.36.1.3.1.3.2.4.2":{d:"qtmrpkiPoliceOfficer",c:"Queensland Transport PKI authorised party"},"1.2.36.1.3.1.3.2.4.3":{d:"qtmrpkiSystem",c:"Queensland Transport PKI authorised party"},"1.2.36.1.3.1.3.2.4.4":{d:"qtmrpkiLiquorLicensingInspector",c:"Queensland Transport PKI authorised party"},"1.2.36.1.3.1.3.2.4.5":{d:"qtmrpkiMarineEnforcementOfficer",c:"Queensland Transport PKI authorised party"},"1.2.36.1.333.1":{d:"australianBusinessNumber",c:"Australian Government corporate taxpayer ID"},"1.2.36.68980861.1.1.2":{d:"signetPersonal",c:"Signet CA"},"1.2.36.68980861.1.1.3":{d:"signetBusiness",c:"Signet CA"},"1.2.36.68980861.1.1.4":{d:"signetLegal",c:"Signet CA"},"1.2.36.68980861.1.1.10":{d:"signetPilot",c:"Signet CA"},"1.2.36.68980861.1.1.11":{d:"signetIntraNet",c:"Signet CA"},"1.2.36.68980861.1.1.20":{d:"signetPolicy",c:"Signet CA"},"1.2.36.75878867.1.100.1.1":{d:"certificatesAustraliaPolicy",c:"Certificates Australia CA"},"1.2.156.10197.1":{d:"gmtCryptographicAlgorithm",c:"China GM Standards Committee"},"1.2.156.10197.1.100":{d:"gmtBlockCipher",c:"China GM Standards Committee"},"1.2.156.10197.1.102":{d:"sm1Cipher",c:"China GM Standards Committee"},"1.2.156.10197.1.103":{d:"ssf33Cipher",c:"China GM Standards Committee"},"1.2.156.10197.1.104":{d:"sm4Cipher",c:"China GM Standards Committee"},"1.2.156.10197.1.200":{d:"gmtStreamCipher",c:"China GM Standards Committee"},"1.2.156.10197.1.201":{d:"zucCipher",c:"China GM Standards Committee"},"1.2.156.10197.1.300":{d:"gmtPublicKeyCryptography",c:"China GM Standards Committee"},"1.2.156.10197.1.301":{d:"sm2ECC",c:"China GM Standards Committee"},"1.2.156.10197.1.301.1":{d:"sm2-1DigitalSignature",c:"China GM Standards Committee"},"1.2.156.10197.1.301.2":{d:"sm2-2KeyExchange",c:"China GM Standards Committee"},"1.2.156.10197.1.301.3":{d:"sm2-3PublicKeyEncryption",c:"China GM Standards Committee"},"1.2.156.10197.1.302":{d:"gmtSM9IBE",c:"China GM Standards Committee"},"1.2.156.10197.1.302.1":{d:"sm9-1DigitalSignature",c:"China GM Standards Committee"},"1.2.156.10197.1.302.2":{d:"sm9-2KeyExchange",c:"China GM Standards Committee"},"1.2.156.10197.1.302.3":{d:"sm9-3PublicKeyEncryption",c:"China GM Standards Committee"},"1.2.156.10197.1.400":{d:"gmtHashAlgorithm",c:"China GM Standards Committee"},"1.2.156.10197.1.401":{d:"sm3Hash",c:"China GM Standards Committee"},"1.2.156.10197.1.401.1":{d:"sm3HashWithoutKey",c:"China GM Standards Committee"},"1.2.156.10197.1.401.2":{d:"sm3HashWithKey",c:"China GM Standards Committee"},"1.2.156.10197.1.500":{d:"gmtDigestSigning",c:"China GM Standards Committee"},"1.2.156.10197.1.501":{d:"sm2withSM3",c:"China GM Standards Committee"},"1.2.156.10197.1.504":{d:"rsaWithSM3",c:"China GM Standards Committee"},"1.2.156.10197.4.3":{d:"gmtCertificateAuthority",c:"China GM Standards Committee"},"1.2.156.10197.6":{d:"gmtStandardClass",c:"China GM Standards Committee"},"1.2.156.10197.6.1":{d:"gmtFoundationClass",c:"China GM Standards Committee"},"1.2.156.10197.6.1.1":{d:"gmtAlgorithmClass",c:"China GM Standards Committee"},"1.2.156.10197.6.1.1.1":{d:"zucStandard",c:"China GM Standards Committee"},"1.2.156.10197.6.1.1.2":{d:"sm4Standard",c:"China GM Standards Committee"},"1.2.156.10197.6.1.1.3":{d:"sm2Standard",c:"China GM Standards Committee"},"1.2.156.10197.6.1.1.4":{d:"sm3Standard",c:"China GM Standards Committee"},"1.2.156.10197.6.1.2":{d:"gmtIDClass",c:"China GM Standards Committee"},"1.2.156.10197.6.1.2.1":{d:"gmtCryptoID",c:"China GM Standards Committee"},"1.2.156.10197.6.1.3":{d:"gmtOperationModes",c:"China GM Standards Committee"},"1.2.156.10197.6.1.4":{d:"gmtSecurityMechanism",c:"China GM Standards Committee"},"1.2.156.10197.6.1.4.1":{d:"gmtSM2Specification",c:"China GM Standards Committee"},"1.2.156.10197.6.1.4.2":{d:"gmtSM2CryptographicMessageSyntax",c:"China GM Standards Committee"},"1.2.156.10197.6.2":{d:"gmtDeviceClass",c:"China GM Standards Committee"},"1.2.156.10197.6.3":{d:"gmtServiceClass",c:"China GM Standards Committee"},"1.2.156.10197.6.4":{d:"gmtInfrastructure",c:"China GM Standards Committee"},"1.2.156.10197.6.5":{d:"gmtTestingClass",c:"China GM Standards Committee"},"1.2.156.10197.6.5.1":{d:"gmtRandomTestingClass",c:"China GM Standards Committee"},"1.2.156.10197.6.6":{d:"gmtManagementClass",c:"China GM Standards Committee"},"1.2.392.200011.61.1.1.1":{d:"mitsubishiSecurityAlgorithm",c:"Mitsubishi security algorithm"},"1.2.392.200011.61.1.1.1.1":{d:"misty1-cbc",c:"Mitsubishi security algorithm"},"1.2.410.200004.1":{d:"kisaAlgorithm",c:"KISA algorithm"},"1.2.410.200004.1.1":{d:"kcdsa",c:"Korean DSA"},"1.2.410.200004.1.2":{d:"has160",c:"Korean hash algorithm"},"1.2.410.200004.1.3":{d:"seedECB",c:"Korean SEED algorithm, ECB mode"},"1.2.410.200004.1.4":{d:"seedCBC",c:"Korean SEED algorithm, CBC mode"},"1.2.410.200004.1.5":{d:"seedOFB",c:"Korean SEED algorithm, OFB mode"},"1.2.410.200004.1.6":{d:"seedCFB",c:"Korean SEED algorithm, CFB mode"},"1.2.410.200004.1.7":{d:"seedMAC",c:"Korean SEED algorithm, MAC mode"},"1.2.410.200004.1.8":{d:"kcdsaWithHAS160",c:"Korean signature algorithm"},"1.2.410.200004.1.9":{d:"kcdsaWithSHA1",c:"Korean signature algorithm"},"1.2.410.200004.1.10":{d:"pbeWithHAS160AndSEED-ECB",c:"Korean SEED algorithm, PBE key derivation"},"1.2.410.200004.1.11":{d:"pbeWithHAS160AndSEED-CBC",c:"Korean SEED algorithm, PBE key derivation"},"1.2.410.200004.1.12":{d:"pbeWithHAS160AndSEED-CFB",c:"Korean SEED algorithm, PBE key derivation"},"1.2.410.200004.1.13":{d:"pbeWithHAS160AndSEED-OFB",c:"Korean SEED algorithm, PBE key derivation"},"1.2.410.200004.1.14":{d:"pbeWithSHA1AndSEED-ECB",c:"Korean SEED algorithm, PBE key derivation"},"1.2.410.200004.1.15":{d:"pbeWithSHA1AndSEED-CBC",c:"Korean SEED algorithm, PBE key derivation"},"1.2.410.200004.1.16":{d:"pbeWithSHA1AndSEED-CFB",c:"Korean SEED algorithm, PBE key derivation"},"1.2.410.200004.1.17":{d:"pbeWithSHA1AndSEED-OFB",c:"Korean SEED algorithm, PBE key derivation"},"1.2.410.200004.1.20":{d:"rsaWithHAS160",c:"Korean signature algorithm"},"1.2.410.200004.1.21":{d:"kcdsa1",c:"Korean DSA"},"1.2.410.200004.2":{d:"npkiCP",c:"KISA NPKI certificate policies"},"1.2.410.200004.2.1":{d:"npkiSignaturePolicy",c:"KISA NPKI certificate policies"},"1.2.410.200004.3":{d:"npkiKP",c:"KISA NPKI key usage"},"1.2.410.200004.4":{d:"npkiAT",c:"KISA NPKI attribute"},"1.2.410.200004.5":{d:"npkiLCA",c:"KISA NPKI licensed CA"},"1.2.410.200004.5.1":{d:"npkiSignKorea",c:"KISA NPKI licensed CA"},"1.2.410.200004.5.2":{d:"npkiSignGate",c:"KISA NPKI licensed CA"},"1.2.410.200004.5.3":{d:"npkiNcaSign",c:"KISA NPKI licensed CA"},"1.2.410.200004.6":{d:"npkiON",c:"KISA NPKI otherName"},"1.2.410.200004.7":{d:"npkiAPP",c:"KISA NPKI application"},"1.2.410.200004.7.1":{d:"npkiSMIME",c:"KISA NPKI application"},"1.2.410.200004.7.1.1":{d:"npkiSMIMEAlgo",c:"KISA NPKI application"},"1.2.410.200004.7.1.1.1":{d:"npkiCmsSEEDWrap",c:"KISA NPKI application"},"1.2.410.200004.10":{d:"npki",c:"KISA NPKI"},"1.2.410.200004.10.1":{d:"npkiAttribute",c:"KISA NPKI attribute"},"1.2.410.200004.10.1.1":{d:"npkiIdentifyData",c:"KISA NPKI attribute"},"1.2.410.200004.10.1.1.1":{d:"npkiVID",c:"KISA NPKI attribute"},"1.2.410.200004.10.1.1.2":{d:"npkiEncryptedVID",c:"KISA NPKI attribute"},"1.2.410.200004.10.1.1.3":{d:"npkiRandomNum",c:"KISA NPKI attribute"},"1.2.410.200004.10.1.1.4":{d:"npkiVID",c:"KISA NPKI attribute"},"1.2.410.200046.1.1":{d:"aria1AlgorithmModes",c:"ARIA algorithm modes"},"1.2.410.200046.1.1.1":{d:"aria128-ecb",c:"ARIA algorithm modes"},"1.2.410.200046.1.1.2":{d:"aria128-cbc",c:"ARIA algorithm modes"},"1.2.410.200046.1.1.3":{d:"aria128-cfb",c:"ARIA algorithm modes"},"1.2.410.200046.1.1.4":{d:"aria128-ofb",c:"ARIA algorithm modes"},"1.2.410.200046.1.1.5":{d:"aria128-ctr",c:"ARIA algorithm modes"},"1.2.410.200046.1.1.6":{d:"aria192-ecb",c:"ARIA algorithm modes"},"1.2.410.200046.1.1.7":{d:"aria192-cbc",c:"ARIA algorithm modes"},"1.2.410.200046.1.1.8":{d:"aria192-cfb",c:"ARIA algorithm modes"},"1.2.410.200046.1.1.9":{d:"aria192-ofb",c:"ARIA algorithm modes"},"1.2.410.200046.1.1.10":{d:"aria192-ctr",c:"ARIA algorithm modes"},"1.2.410.200046.1.1.11":{d:"aria256-ecb",c:"ARIA algorithm modes"},"1.2.410.200046.1.1.12":{d:"aria256-cbc",c:"ARIA algorithm modes"},"1.2.410.200046.1.1.13":{d:"aria256-cfb",c:"ARIA algorithm modes"},"1.2.410.200046.1.1.14":{d:"aria256-ofb",c:"ARIA algorithm modes"},"1.2.410.200046.1.1.15":{d:"aria256-ctr",c:"ARIA algorithm modes"},"1.2.410.200046.1.1.21":{d:"aria128-cmac",c:"ARIA algorithm modes"},"1.2.410.200046.1.1.22":{d:"aria192-cmac",c:"ARIA algorithm modes"},"1.2.410.200046.1.1.23":{d:"aria256-cmac",c:"ARIA algorithm modes"},"1.2.410.200046.1.1.31":{d:"aria128-ocb2",c:"ARIA algorithm modes"},"1.2.410.200046.1.1.32":{d:"aria192-ocb2",c:"ARIA algorithm modes"},"1.2.410.200046.1.1.33":{d:"aria256-ocb2",c:"ARIA algorithm modes"},"1.2.410.200046.1.1.34":{d:"aria128-gcm",c:"ARIA algorithm modes"},"1.2.410.200046.1.1.35":{d:"aria192-gcm",c:"ARIA algorithm modes"},"1.2.410.200046.1.1.36":{d:"aria256-gcm",c:"ARIA algorithm modes"},"1.2.410.200046.1.1.37":{d:"aria128-ccm",c:"ARIA algorithm modes"},"1.2.410.200046.1.1.38":{d:"aria192-ccm",c:"ARIA algorithm modes"},"1.2.410.200046.1.1.39":{d:"aria256-ccm",c:"ARIA algorithm modes"},"1.2.410.200046.1.1.40":{d:"aria128-keywrap",c:"ARIA algorithm modes"},"1.2.410.200046.1.1.41":{d:"aria192-keywrap",c:"ARIA algorithm modes"},"1.2.410.200046.1.1.42":{d:"aria256-keywrap",c:"ARIA algorithm modes"},"1.2.410.200046.1.1.43":{d:"aria128-keywrapWithPad",c:"ARIA algorithm modes"},"1.2.410.200046.1.1.44":{d:"aria192-keywrapWithPad",c:"ARIA algorithm modes"},"1.2.410.200046.1.1.45":{d:"aria256-keywrapWithPad",c:"ARIA algorithm modes"},"1.2.643.2.2.3":{d:"gostSignature",c:"GOST R 34.10-2001 + GOST R 34.11-94 signature"},"1.2.643.2.2.4":{d:"gost94Signature",c:"GOST R 34.10-94 + GOST R 34.11-94 signature. Obsoleted by GOST R 34.10-2001",w:!0},"1.2.643.2.2.19":{d:"gostPublicKey",c:"GOST R 34.10-2001 (ECC) public key"},"1.2.643.2.2.20":{d:"gost94PublicKey",c:"GOST R 34.10-94 public key. Obsoleted by GOST R 34.10-2001",w:!0},"1.2.643.2.2.21":{d:"gostCipher",c:"GOST 28147-89 (symmetric key block cipher)"},"1.2.643.2.2.31.0":{d:"testCipherParams",c:"Test params for GOST 28147-89"},"1.2.643.2.2.31.1":{d:"cryptoProCipherA",c:"CryptoPro params A (default, variant 'Verba-O') for GOST 28147-89"},"1.2.643.2.2.31.2":{d:"cryptoProCipherB",c:"CryptoPro params B (variant 1) for GOST 28147-89"},"1.2.643.2.2.31.3":{d:"cryptoProCipherC",c:"CryptoPro params C (variant 2) for GOST 28147-89"},"1.2.643.2.2.31.4":{d:"cryptoProCipherD",c:"CryptoPro params D (variant 3) for GOST 28147-89"},"1.2.643.2.2.31.5":{d:"oscar11Cipher",c:"Oscar-1.1 params for GOST 28147-89"},"1.2.643.2.2.31.6":{d:"oscar10Cipher",c:"Oscar-1.0 params for GOST 28147-89"},"1.2.643.2.2.31.7":{d:"ric1Cipher",c:"RIC-1 params for GOST 28147-89"},"1.2.643.2.2.31.12":{d:"tc26CipherA",c:"TC26 params 2 for GOST 28147-89"},"1.2.643.2.2.31.13":{d:"tc26CipherB",c:"TC26 params 1 for GOST 28147-89"},"1.2.643.2.2.31.14":{d:"tc26CipherC",c:"TC26 params 3 for GOST 28147-89"},"1.2.643.2.2.31.15":{d:"tc26CipherD",c:"TC26 params 4 for GOST 28147-89"},"1.2.643.2.2.31.16":{d:"tc26CipherE",c:"TC26 params 5 for GOST 28147-89"},"1.2.643.2.2.31.17":{d:"tc26CipherF",c:"TC26 params 6 for GOST 28147-89"},"1.2.643.7.1.2.5.1.1":{d:"tc26CipherZ",c:"TC26 params Z for GOST 28147-89"},"1.2.643.2.2.9":{d:"gostDigest",c:"GOST R 34.11-94 digest"},"1.2.643.2.2.30.0":{d:"testDigestParams",c:"Test params for GOST R 34.11-94"},"1.2.643.2.2.30.1":{d:"cryptoProDigestA",c:"CryptoPro digest params A (default, variant 'Verba-O') for GOST R 34.11-94"},"1.2.643.2.2.30.2":{d:"cryptoProDigestB",c:"CryptoPro digest params B (variant 1) for GOST R 34.11-94"},"1.2.643.2.2.30.3":{d:"cryptoProDigestC",c:"CryptoPro digest params C (variant 2) for GOST R 34.11-94"},"1.2.643.2.2.30.4":{d:"cryptoProDigestD",c:"CryptoPro digest params D (variant 3) for GOST R 34.11-94"},"1.2.643.2.2.32.2":{d:"cryptoPro94SignA",c:"CryptoPro sign params A (default, variant 'Verba-O') for GOST R 34.10-94"},"1.2.643.2.2.32.3":{d:"cryptoPro94SignB",c:"CryptoPro sign params B (variant 1) for GOST R 34.10-94"},"1.2.643.2.2.32.4":{d:"cryptoPro94SignC",c:"CryptoPro sign params C (variant 2) for GOST R 34.10-94"},"1.2.643.2.2.32.5":{d:"cryptoPro94SignD",c:"CryptoPro sign params D (variant 3) for GOST R 34.10-94"},"1.2.643.2.2.33.1":{d:"cryptoPro94SignXA",c:"CryptoPro sign params XA (variant 1) for GOST R 34.10-94"},"1.2.643.2.2.33.2":{d:"cryptoPro94SignXB",c:"CryptoPro sign params XB (variant 2) for GOST R 34.10-94"},"1.2.643.2.2.33.3":{d:"cryptoPro94SignXC",c:"CryptoPro sign params XC (variant 3) for GOST R 34.10-94"},"1.2.643.2.2.35.0":{d:"testSignParams",c:"Test elliptic curve for GOST R 34.10-2001"},"1.2.643.2.2.35.1":{d:"cryptoProSignA",c:"CryptoPro ell.curve A for GOST R 34.10-2001"},"1.2.643.2.2.35.2":{d:"cryptoProSignB",c:"CryptoPro ell.curve B for GOST R 34.10-2001"},"1.2.643.2.2.35.3":{d:"cryptoProSignC",c:"CryptoPro ell.curve C for GOST R 34.10-2001"},"1.2.643.2.2.36.0":{d:"cryptoProSignXA",c:"CryptoPro ell.curve XA for GOST R 34.10-2001"},"1.2.643.2.2.36.1":{d:"cryptoProSignXB",c:"CryptoPro ell.curve XB for GOST R 34.10-2001"},"1.2.643.7.1.2.1.1.1":{d:"cryptoPro2012Sign256A",c:"CryptoPro ell.curve A for GOST R 34.10-2012 256 bit"},"1.2.643.7.1.2.1.2.1":{d:"cryptoPro2012Sign512A",c:"CryptoPro ell.curve A (default) for GOST R 34.10-2012 512 bit"},"1.2.643.7.1.2.1.2.2":{d:"cryptoPro2012Sign512B",c:"CryptoPro ell.curve B for GOST R 34.10-2012 512 bit"},"1.2.643.7.1.2.1.2.3":{d:"cryptoPro2012Sign512C",c:"CryptoPro ell.curve C for GOST R 34.10-2012 512 bit"},"1.2.643.2.2.14.0":{d:"nullMeshing",c:"Do not mesh state of GOST 28147-89 cipher"},"1.2.643.2.2.14.1":{d:"cryptoProMeshing",c:"CryptoPro meshing of state of GOST 28147-89 cipher"},"1.2.643.2.2.10":{d:"hmacGost",c:"HMAC with GOST R 34.11-94"},"1.2.643.2.2.13.0":{d:"gostWrap",c:"Wrap key using GOST 28147-89 key"},"1.2.643.2.2.13.1":{d:"cryptoProWrap",c:"Wrap key using diversified GOST 28147-89 key"},"1.2.643.2.2.96":{d:"cryptoProECDHWrap",c:"Wrap key using ECC DH on GOST R 34.10-2001 keys (VKO)"},"1.2.643.7.1.1.1.1":{d:"gost2012PublicKey256",c:"GOST R 34.10-2012 256 bit public key"},"1.2.643.7.1.1.1.2":{d:"gost2012PublicKey512",c:"GOST R 34.10-2012 512 bit public key"},"1.2.643.7.1.1.2.2":{d:"gost2012Digest256",c:"GOST R 34.11-2012 256 bit digest"},"1.2.643.7.1.1.2.3":{d:"gost2012Digest512",c:"GOST R 34.11-2012 512 bit digest"},"1.2.643.7.1.1.3.2":{d:"gost2012Signature256",c:"GOST R 34.10-2012 256 bit signature"},"1.2.643.7.1.1.3.3":{d:"gost2012Signature512",c:"GOST R 34.10-2012 512 bit signature"},"1.2.643.7.1.1.6.1":{d:"cryptoProECDH256",c:"CryptoPro ECC DH algorithm for GOST R 34.10-2012 256 bit key"},"1.2.643.7.1.1.6.2":{d:"cryptoProECDH512",c:"CryptoPro ECC DH algorithm for GOST R 34.10-2012 512 bit key"},"1.2.752.34.1":{d:"seis-cp",c:"SEIS Project"},"1.2.752.34.1.1":{d:"SEIS high-assurance policyIdentifier",c:"SEIS Project certificate policies"},"1.2.752.34.1.2":{d:"SEIS GAK policyIdentifier",c:"SEIS Project certificate policies"},"1.2.752.34.2":{d:"SEIS pe",c:"SEIS Project"},"1.2.752.34.3":{d:"SEIS at",c:"SEIS Project"},"1.2.752.34.3.1":{d:"SEIS at-personalIdentifier",c:"SEIS Project attribute"},"1.2.840.10040.1":{d:"module",c:"ANSI X9.57"},"1.2.840.10040.1.1":{d:"x9f1-cert-mgmt",c:"ANSI X9.57 module"},"1.2.840.10040.2":{d:"holdinstruction",c:"ANSI X9.57"},"1.2.840.10040.2.1":{d:"holdinstruction-none",c:"ANSI X9.57 hold instruction"},"1.2.840.10040.2.2":{d:"callissuer",c:"ANSI X9.57 hold instruction"},"1.2.840.10040.2.3":{d:"reject",c:"ANSI X9.57 hold instruction"},"1.2.840.10040.2.4":{d:"pickupToken",c:"ANSI X9.57 hold instruction"},"1.2.840.10040.3":{d:"attribute",c:"ANSI X9.57"},"1.2.840.10040.3.1":{d:"countersignature",c:"ANSI X9.57 attribute"},"1.2.840.10040.3.2":{d:"attribute-cert",c:"ANSI X9.57 attribute"},"1.2.840.10040.4":{d:"algorithm",c:"ANSI X9.57"},"1.2.840.10040.4.1":{d:"dsa",c:"ANSI X9.57 algorithm"},"1.2.840.10040.4.2":{d:"dsa-match",c:"ANSI X9.57 algorithm"},"1.2.840.10040.4.3":{d:"dsaWithSha1",c:"ANSI X9.57 algorithm"},"1.2.840.10045.1":{d:"fieldType",c:"ANSI X9.62. This OID is also assigned as ecdsa-with-SHA1"},"1.2.840.10045.1.1":{d:"prime-field",c:"ANSI X9.62 field type"},"1.2.840.10045.1.2":{d:"characteristic-two-field",c:"ANSI X9.62 field type"},"1.2.840.10045.1.2.3":{d:"characteristic-two-basis",c:"ANSI X9.62 field type"},"1.2.840.10045.1.2.3.1":{d:"onBasis",c:"ANSI X9.62 field basis"},"1.2.840.10045.1.2.3.2":{d:"tpBasis",c:"ANSI X9.62 field basis"},"1.2.840.10045.1.2.3.3":{d:"ppBasis",c:"ANSI X9.62 field basis"},"1.2.840.10045.2":{d:"publicKeyType",c:"ANSI X9.62"},"1.2.840.10045.2.1":{d:"ecPublicKey",c:"ANSI X9.62 public key type"},"1.2.840.10045.3.0.1":{d:"c2pnb163v1",c:"ANSI X9.62 named elliptic curve"},"1.2.840.10045.3.0.2":{d:"c2pnb163v2",c:"ANSI X9.62 named elliptic curve"},"1.2.840.10045.3.0.3":{d:"c2pnb163v3",c:"ANSI X9.62 named elliptic curve"},"1.2.840.10045.3.0.5":{d:"c2tnb191v1",c:"ANSI X9.62 named elliptic curve"},"1.2.840.10045.3.0.6":{d:"c2tnb191v2",c:"ANSI X9.62 named elliptic curve"},"1.2.840.10045.3.0.7":{d:"c2tnb191v3",c:"ANSI X9.62 named elliptic curve"},"1.2.840.10045.3.0.10":{d:"c2pnb208w1",c:"ANSI X9.62 named elliptic curve"},"1.2.840.10045.3.0.11":{d:"c2tnb239v1",c:"ANSI X9.62 named elliptic curve"},"1.2.840.10045.3.0.12":{d:"c2tnb239v2",c:"ANSI X9.62 named elliptic curve"},"1.2.840.10045.3.0.13":{d:"c2tnb239v3",c:"ANSI X9.62 named elliptic curve"},"1.2.840.10045.3.0.16":{d:"c2pnb272w1",c:"ANSI X9.62 named elliptic curve"},"1.2.840.10045.3.0.18":{d:"c2tnb359v1",c:"ANSI X9.62 named elliptic curve"},"1.2.840.10045.3.0.19":{d:"c2pnb368w1",c:"ANSI X9.62 named elliptic curve"},"1.2.840.10045.3.0.20":{d:"c2tnb431r1",c:"ANSI X9.62 named elliptic curve"},"1.2.840.10045.3.1.1":{d:"prime192v1",c:"ANSI X9.62 named elliptic curve"},"1.2.840.10045.3.1.2":{d:"prime192v2",c:"ANSI X9.62 named elliptic curve"},"1.2.840.10045.3.1.3":{d:"prime192v3",c:"ANSI X9.62 named elliptic curve"},"1.2.840.10045.3.1.4":{d:"prime239v1",c:"ANSI X9.62 named elliptic curve"},"1.2.840.10045.3.1.5":{d:"prime239v2",c:"ANSI X9.62 named elliptic curve"},"1.2.840.10045.3.1.6":{d:"prime239v3",c:"ANSI X9.62 named elliptic curve"},"1.2.840.10045.3.1.7":{d:"prime256v1",c:"ANSI X9.62 named elliptic curve"},"1.2.840.10045.4.1":{d:"ecdsaWithSHA1",c:"ANSI X9.62 ECDSA algorithm with SHA1"},"1.2.840.10045.4.2":{d:"ecdsaWithRecommended",c:"ANSI X9.62 ECDSA algorithm with Recommended"},"1.2.840.10045.4.3":{d:"ecdsaWithSpecified",c:"ANSI X9.62 ECDSA algorithm with Specified"},"1.2.840.10045.4.3.1":{d:"ecdsaWithSHA224",c:"ANSI X9.62 ECDSA algorithm with SHA224"},"1.2.840.10045.4.3.2":{d:"ecdsaWithSHA256",c:"ANSI X9.62 ECDSA algorithm with SHA256"},"1.2.840.10045.4.3.3":{d:"ecdsaWithSHA384",c:"ANSI X9.62 ECDSA algorithm with SHA384"},"1.2.840.10045.4.3.4":{d:"ecdsaWithSHA512",c:"ANSI X9.62 ECDSA algorithm with SHA512"},"1.2.840.10046.1":{d:"fieldType",c:"ANSI X9.42"},"1.2.840.10046.1.1":{d:"gf-prime",c:"ANSI X9.42 field type"},"1.2.840.10046.2":{d:"numberType",c:"ANSI X9.42"},"1.2.840.10046.2.1":{d:"dhPublicKey",c:"ANSI X9.42 number type"},"1.2.840.10046.3":{d:"scheme",c:"ANSI X9.42"},"1.2.840.10046.3.1":{d:"dhStatic",c:"ANSI X9.42 scheme"},"1.2.840.10046.3.2":{d:"dhEphem",c:"ANSI X9.42 scheme"},"1.2.840.10046.3.3":{d:"dhHybrid1",c:"ANSI X9.42 scheme"},"1.2.840.10046.3.4":{d:"dhHybrid2",c:"ANSI X9.42 scheme"},"1.2.840.10046.3.5":{d:"mqv2",c:"ANSI X9.42 scheme"},"1.2.840.10046.3.6":{d:"mqv1",c:"ANSI X9.42 scheme"},"1.2.840.10065.2.2":{d:"?",c:"ASTM 31.20"},"1.2.840.10065.2.3":{d:"healthcareLicense",c:"ASTM 31.20"},"1.2.840.10065.2.3.1.1":{d:"license?",c:"ASTM 31.20 healthcare license type"},"1.2.840.10070":{d:"iec62351",c:"IEC 62351"},"1.2.840.10070.8":{d:"iec62351_8",c:"IEC 62351-8"},"1.2.840.10070.8.1":{d:"iecUserRoles",c:"IEC 62351-8"},"1.2.840.113533.7":{d:"nsn",c:""},"1.2.840.113533.7.65":{d:"nsn-ce",c:""},"1.2.840.113533.7.65.0":{d:"entrustVersInfo",c:"Nortel Secure Networks ce"},"1.2.840.113533.7.66":{d:"nsn-alg",c:""},"1.2.840.113533.7.66.3":{d:"cast3CBC",c:"Nortel Secure Networks alg"},"1.2.840.113533.7.66.10":{d:"cast5CBC",c:"Nortel Secure Networks alg"},"1.2.840.113533.7.66.11":{d:"cast5MAC",c:"Nortel Secure Networks alg"},"1.2.840.113533.7.66.12":{d:"pbeWithMD5AndCAST5-CBC",c:"Nortel Secure Networks alg"},"1.2.840.113533.7.66.13":{d:"passwordBasedMac",c:"Nortel Secure Networks alg"},"1.2.840.113533.7.67":{d:"nsn-oc",c:""},"1.2.840.113533.7.67.0":{d:"entrustUser",c:"Nortel Secure Networks oc"},"1.2.840.113533.7.68":{d:"nsn-at",c:""},"1.2.840.113533.7.68.0":{d:"entrustCAInfo",c:"Nortel Secure Networks at"},"1.2.840.113533.7.68.10":{d:"attributeCertificate",c:"Nortel Secure Networks at"},"1.2.840.113549.1.1":{d:"pkcs-1",c:""},"1.2.840.113549.1.1.1":{d:"rsaEncryption",c:"PKCS #1"},"1.2.840.113549.1.1.2":{d:"md2WithRSAEncryption",c:"PKCS #1"},"1.2.840.113549.1.1.3":{d:"md4WithRSAEncryption",c:"PKCS #1"},"1.2.840.113549.1.1.4":{d:"md5WithRSAEncryption",c:"PKCS #1"},"1.2.840.113549.1.1.5":{d:"sha1WithRSAEncryption",c:"PKCS #1"},"1.2.840.113549.1.1.7":{d:"rsaOAEP",c:"PKCS #1"},"1.2.840.113549.1.1.8":{d:"pkcs1-MGF",c:"PKCS #1"},"1.2.840.113549.1.1.9":{d:"rsaOAEP-pSpecified",c:"PKCS #1"},"1.2.840.113549.1.1.10":{d:"rsaPSS",c:"PKCS #1"},"1.2.840.113549.1.1.11":{d:"sha256WithRSAEncryption",c:"PKCS #1"},"1.2.840.113549.1.1.12":{d:"sha384WithRSAEncryption",c:"PKCS #1"},"1.2.840.113549.1.1.13":{d:"sha512WithRSAEncryption",c:"PKCS #1"},"1.2.840.113549.1.1.14":{d:"sha224WithRSAEncryption",c:"PKCS #1"},"1.2.840.113549.1.1.6":{d:"rsaOAEPEncryptionSET",c:"PKCS #1. This OID may also be assigned as ripemd160WithRSAEncryption"},"1.2.840.113549.1.2":{d:"bsafeRsaEncr",c:"Obsolete BSAFE OID",w:!0},"1.2.840.113549.1.3":{d:"pkcs-3",c:""},"1.2.840.113549.1.3.1":{d:"dhKeyAgreement",c:"PKCS #3"},"1.2.840.113549.1.5":{d:"pkcs-5",c:""},"1.2.840.113549.1.5.1":{d:"pbeWithMD2AndDES-CBC",c:"PKCS #5"},"1.2.840.113549.1.5.3":{d:"pbeWithMD5AndDES-CBC",c:"PKCS #5"},"1.2.840.113549.1.5.4":{d:"pbeWithMD2AndRC2-CBC",c:"PKCS #5"},"1.2.840.113549.1.5.6":{d:"pbeWithMD5AndRC2-CBC",c:"PKCS #5"},"1.2.840.113549.1.5.9":{d:"pbeWithMD5AndXOR",c:"PKCS #5, used in BSAFE only",w:!0},"1.2.840.113549.1.5.10":{d:"pbeWithSHAAndDES-CBC",c:"PKCS #5"},"1.2.840.113549.1.5.12":{d:"pkcs5PBKDF2",c:"PKCS #5 v2.0"},"1.2.840.113549.1.5.13":{d:"pkcs5PBES2",c:"PKCS #5 v2.0"},"1.2.840.113549.1.5.14":{d:"pkcs5PBMAC1",c:"PKCS #5 v2.0"},"1.2.840.113549.1.7":{d:"pkcs-7",c:""},"1.2.840.113549.1.7.1":{d:"data",c:"PKCS #7"},"1.2.840.113549.1.7.2":{d:"signedData",c:"PKCS #7"},"1.2.840.113549.1.7.3":{d:"envelopedData",c:"PKCS #7"},"1.2.840.113549.1.7.4":{d:"signedAndEnvelopedData",c:"PKCS #7"},"1.2.840.113549.1.7.5":{d:"digestedData",c:"PKCS #7"},"1.2.840.113549.1.7.6":{d:"encryptedData",c:"PKCS #7"},"1.2.840.113549.1.7.7":{d:"dataWithAttributes",c:"PKCS #7 experimental",w:!0},"1.2.840.113549.1.7.8":{d:"encryptedPrivateKeyInfo",c:"PKCS #7 experimental",w:!0},"1.2.840.113549.1.9":{d:"pkcs-9",c:""},"1.2.840.113549.1.9.1":{d:"emailAddress",c:"PKCS #9. Deprecated, use an altName extension instead"},"1.2.840.113549.1.9.2":{d:"unstructuredName",c:"PKCS #9"},"1.2.840.113549.1.9.3":{d:"contentType",c:"PKCS #9"},"1.2.840.113549.1.9.4":{d:"messageDigest",c:"PKCS #9"},"1.2.840.113549.1.9.5":{d:"signingTime",c:"PKCS #9"},"1.2.840.113549.1.9.6":{d:"countersignature",c:"PKCS #9"},"1.2.840.113549.1.9.7":{d:"challengePassword",c:"PKCS #9"},"1.2.840.113549.1.9.8":{d:"unstructuredAddress",c:"PKCS #9"},"1.2.840.113549.1.9.9":{d:"extendedCertificateAttributes",c:"PKCS #9"},"1.2.840.113549.1.9.10":{d:"issuerAndSerialNumber",c:"PKCS #9 experimental",w:!0},"1.2.840.113549.1.9.11":{d:"passwordCheck",c:"PKCS #9 experimental",w:!0},"1.2.840.113549.1.9.12":{d:"publicKey",c:"PKCS #9 experimental",w:!0},"1.2.840.113549.1.9.13":{d:"signingDescription",c:"PKCS #9"},"1.2.840.113549.1.9.14":{d:"extensionRequest",c:"PKCS #9 via CRMF"},"1.2.840.113549.1.9.15":{d:"sMIMECapabilities",c:"PKCS #9. This OID was formerly assigned as symmetricCapabilities, then reassigned as SMIMECapabilities, then renamed to the current name"},"1.2.840.113549.1.9.15.1":{d:"preferSignedData",c:"sMIMECapabilities"},"1.2.840.113549.1.9.15.2":{d:"canNotDecryptAny",c:"sMIMECapabilities"},"1.2.840.113549.1.9.15.3":{d:"receiptRequest",c:"sMIMECapabilities. Deprecated, use (1 2 840 113549 1 9 16 2 1) instead",w:!0},"1.2.840.113549.1.9.15.4":{d:"receipt",c:"sMIMECapabilities. Deprecated, use (1 2 840 113549 1 9 16 1 1) instead",w:!0},"1.2.840.113549.1.9.15.5":{d:"contentHints",c:"sMIMECapabilities. Deprecated, use (1 2 840 113549 1 9 16 2 4) instead",w:!0},"1.2.840.113549.1.9.15.6":{d:"mlExpansionHistory",c:"sMIMECapabilities. Deprecated, use (1 2 840 113549 1 9 16 2 3) instead",w:!0},"1.2.840.113549.1.9.16":{d:"id-sMIME",c:"PKCS #9"},"1.2.840.113549.1.9.16.0":{d:"id-mod",c:"id-sMIME"},"1.2.840.113549.1.9.16.0.1":{d:"id-mod-cms",c:"S/MIME Modules"},"1.2.840.113549.1.9.16.0.2":{d:"id-mod-ess",c:"S/MIME Modules"},"1.2.840.113549.1.9.16.0.3":{d:"id-mod-oid",c:"S/MIME Modules"},"1.2.840.113549.1.9.16.0.4":{d:"id-mod-msg-v3",c:"S/MIME Modules"},"1.2.840.113549.1.9.16.0.5":{d:"id-mod-ets-eSignature-88",c:"S/MIME Modules"},"1.2.840.113549.1.9.16.0.6":{d:"id-mod-ets-eSignature-97",c:"S/MIME Modules"},"1.2.840.113549.1.9.16.0.7":{d:"id-mod-ets-eSigPolicy-88",c:"S/MIME Modules"},"1.2.840.113549.1.9.16.0.8":{d:"id-mod-ets-eSigPolicy-88",c:"S/MIME Modules"},"1.2.840.113549.1.9.16.1":{d:"contentType",c:"S/MIME"},"1.2.840.113549.1.9.16.1.1":{d:"receipt",c:"S/MIME Content Types"},"1.2.840.113549.1.9.16.1.2":{d:"authData",c:"S/MIME Content Types"},"1.2.840.113549.1.9.16.1.3":{d:"publishCert",c:"S/MIME Content Types"},"1.2.840.113549.1.9.16.1.4":{d:"tSTInfo",c:"S/MIME Content Types"},"1.2.840.113549.1.9.16.1.5":{d:"tDTInfo",c:"S/MIME Content Types"},"1.2.840.113549.1.9.16.1.6":{d:"contentInfo",c:"S/MIME Content Types"},"1.2.840.113549.1.9.16.1.7":{d:"dVCSRequestData",c:"S/MIME Content Types"},"1.2.840.113549.1.9.16.1.8":{d:"dVCSResponseData",c:"S/MIME Content Types"},"1.2.840.113549.1.9.16.1.9":{d:"compressedData",c:"S/MIME Content Types"},"1.2.840.113549.1.9.16.1.10":{d:"scvpCertValRequest",c:"S/MIME Content Types"},"1.2.840.113549.1.9.16.1.11":{d:"scvpCertValResponse",c:"S/MIME Content Types"},"1.2.840.113549.1.9.16.1.12":{d:"scvpValPolRequest",c:"S/MIME Content Types"},"1.2.840.113549.1.9.16.1.13":{d:"scvpValPolResponse",c:"S/MIME Content Types"},"1.2.840.113549.1.9.16.1.14":{d:"attrCertEncAttrs",c:"S/MIME Content Types"},"1.2.840.113549.1.9.16.1.15":{d:"tSReq",c:"S/MIME Content Types"},"1.2.840.113549.1.9.16.1.16":{d:"firmwarePackage",c:"S/MIME Content Types"},"1.2.840.113549.1.9.16.1.17":{d:"firmwareLoadReceipt",c:"S/MIME Content Types"},"1.2.840.113549.1.9.16.1.18":{d:"firmwareLoadError",c:"S/MIME Content Types"},"1.2.840.113549.1.9.16.1.19":{d:"contentCollection",c:"S/MIME Content Types"},"1.2.840.113549.1.9.16.1.20":{d:"contentWithAttrs",c:"S/MIME Content Types"},"1.2.840.113549.1.9.16.1.21":{d:"encKeyWithID",c:"S/MIME Content Types"},"1.2.840.113549.1.9.16.1.22":{d:"encPEPSI",c:"S/MIME Content Types"},"1.2.840.113549.1.9.16.1.23":{d:"authEnvelopedData",c:"S/MIME Content Types"},"1.2.840.113549.1.9.16.1.24":{d:"routeOriginAttest",c:"S/MIME Content Types"},"1.2.840.113549.1.9.16.1.25":{d:"symmetricKeyPackage",c:"S/MIME Content Types"},"1.2.840.113549.1.9.16.1.26":{d:"rpkiManifest",c:"S/MIME Content Types"},"1.2.840.113549.1.9.16.1.27":{d:"asciiTextWithCRLF",c:"S/MIME Content Types"},"1.2.840.113549.1.9.16.1.28":{d:"xml",c:"S/MIME Content Types"},"1.2.840.113549.1.9.16.1.29":{d:"pdf",c:"S/MIME Content Types"},"1.2.840.113549.1.9.16.1.30":{d:"postscript",c:"S/MIME Content Types"},"1.2.840.113549.1.9.16.1.31":{d:"timestampedData",c:"S/MIME Content Types"},"1.2.840.113549.1.9.16.1.32":{d:"asAdjacencyAttest",c:"S/MIME Content Types",w:!0},"1.2.840.113549.1.9.16.1.33":{d:"rpkiTrustAnchor",c:"S/MIME Content Types"},"1.2.840.113549.1.9.16.1.34":{d:"trustAnchorList",c:"S/MIME Content Types"},"1.2.840.113549.1.9.16.2":{d:"authenticatedAttributes",c:"S/MIME"},"1.2.840.113549.1.9.16.2.1":{d:"receiptRequest",c:"S/MIME Authenticated Attributes"},"1.2.840.113549.1.9.16.2.2":{d:"securityLabel",c:"S/MIME Authenticated Attributes"},"1.2.840.113549.1.9.16.2.3":{d:"mlExpandHistory",c:"S/MIME Authenticated Attributes"},"1.2.840.113549.1.9.16.2.4":{d:"contentHint",c:"S/MIME Authenticated Attributes"},"1.2.840.113549.1.9.16.2.5":{d:"msgSigDigest",c:"S/MIME Authenticated Attributes"},"1.2.840.113549.1.9.16.2.6":{d:"encapContentType",c:"S/MIME Authenticated Attributes. Obsolete",w:!0},"1.2.840.113549.1.9.16.2.7":{d:"contentIdentifier",c:"S/MIME Authenticated Attributes"},"1.2.840.113549.1.9.16.2.8":{d:"macValue",c:"S/MIME Authenticated Attributes. Obsolete",w:!0},"1.2.840.113549.1.9.16.2.9":{d:"equivalentLabels",c:"S/MIME Authenticated Attributes"},"1.2.840.113549.1.9.16.2.10":{d:"contentReference",c:"S/MIME Authenticated Attributes"},"1.2.840.113549.1.9.16.2.11":{d:"encrypKeyPref",c:"S/MIME Authenticated Attributes"},"1.2.840.113549.1.9.16.2.12":{d:"signingCertificate",c:"S/MIME Authenticated Attributes"},"1.2.840.113549.1.9.16.2.13":{d:"smimeEncryptCerts",c:"S/MIME Authenticated Attributes"},"1.2.840.113549.1.9.16.2.14":{d:"timeStampToken",c:"S/MIME Authenticated Attributes"},"1.2.840.113549.1.9.16.2.15":{d:"sigPolicyId",c:"S/MIME Authenticated Attributes"},"1.2.840.113549.1.9.16.2.16":{d:"commitmentType",c:"S/MIME Authenticated Attributes"},"1.2.840.113549.1.9.16.2.17":{d:"signerLocation",c:"S/MIME Authenticated Attributes"},"1.2.840.113549.1.9.16.2.18":{d:"signerAttr",c:"S/MIME Authenticated Attributes"},"1.2.840.113549.1.9.16.2.19":{d:"otherSigCert",c:"S/MIME Authenticated Attributes"},"1.2.840.113549.1.9.16.2.20":{d:"contentTimestamp",c:"S/MIME Authenticated Attributes"},"1.2.840.113549.1.9.16.2.21":{d:"certificateRefs",c:"S/MIME Authenticated Attributes"},"1.2.840.113549.1.9.16.2.22":{d:"revocationRefs",c:"S/MIME Authenticated Attributes"},"1.2.840.113549.1.9.16.2.23":{d:"certValues",c:"S/MIME Authenticated Attributes"},"1.2.840.113549.1.9.16.2.24":{d:"revocationValues",c:"S/MIME Authenticated Attributes"},"1.2.840.113549.1.9.16.2.25":{d:"escTimeStamp",c:"S/MIME Authenticated Attributes"},"1.2.840.113549.1.9.16.2.26":{d:"certCRLTimestamp",c:"S/MIME Authenticated Attributes"},"1.2.840.113549.1.9.16.2.27":{d:"archiveTimeStamp",c:"S/MIME Authenticated Attributes"},"1.2.840.113549.1.9.16.2.28":{d:"signatureType",c:"S/MIME Authenticated Attributes"},"1.2.840.113549.1.9.16.2.29":{d:"dvcsDvc",c:"S/MIME Authenticated Attributes"},"1.2.840.113549.1.9.16.2.30":{d:"cekReference",c:"S/MIME Authenticated Attributes"},"1.2.840.113549.1.9.16.2.31":{d:"maxCEKDecrypts",c:"S/MIME Authenticated Attributes"},"1.2.840.113549.1.9.16.2.32":{d:"kekDerivationAlg",c:"S/MIME Authenticated Attributes"},"1.2.840.113549.1.9.16.2.33":{d:"intendedRecipients",c:"S/MIME Authenticated Attributes. Obsolete",w:!0},"1.2.840.113549.1.9.16.2.34":{d:"cmcUnsignedData",c:"S/MIME Authenticated Attributes"},"1.2.840.113549.1.9.16.2.35":{d:"fwPackageID",c:"S/MIME Authenticated Attributes"},"1.2.840.113549.1.9.16.2.36":{d:"fwTargetHardwareIDs",c:"S/MIME Authenticated Attributes"},"1.2.840.113549.1.9.16.2.37":{d:"fwDecryptKeyID",c:"S/MIME Authenticated Attributes"},"1.2.840.113549.1.9.16.2.38":{d:"fwImplCryptAlgs",c:"S/MIME Authenticated Attributes"},"1.2.840.113549.1.9.16.2.39":{d:"fwWrappedFirmwareKey",c:"S/MIME Authenticated Attributes"},"1.2.840.113549.1.9.16.2.40":{d:"fwCommunityIdentifiers",c:"S/MIME Authenticated Attributes"},"1.2.840.113549.1.9.16.2.41":{d:"fwPkgMessageDigest",c:"S/MIME Authenticated Attributes"},"1.2.840.113549.1.9.16.2.42":{d:"fwPackageInfo",c:"S/MIME Authenticated Attributes"},"1.2.840.113549.1.9.16.2.43":{d:"fwImplCompressAlgs",c:"S/MIME Authenticated Attributes"},"1.2.840.113549.1.9.16.2.44":{d:"etsAttrCertificateRefs",c:"S/MIME Authenticated Attributes"},"1.2.840.113549.1.9.16.2.45":{d:"etsAttrRevocationRefs",c:"S/MIME Authenticated Attributes"},"1.2.840.113549.1.9.16.2.46":{d:"binarySigningTime",c:"S/MIME Authenticated Attributes"},"1.2.840.113549.1.9.16.2.47":{d:"signingCertificateV2",c:"S/MIME Authenticated Attributes"},"1.2.840.113549.1.9.16.2.48":{d:"etsArchiveTimeStampV2",c:"S/MIME Authenticated Attributes"},"1.2.840.113549.1.9.16.2.49":{d:"erInternal",c:"S/MIME Authenticated Attributes"},"1.2.840.113549.1.9.16.2.50":{d:"erExternal",c:"S/MIME Authenticated Attributes"},"1.2.840.113549.1.9.16.2.51":{d:"multipleSignatures",c:"S/MIME Authenticated Attributes"},"1.2.840.113549.1.9.16.3.1":{d:"esDHwith3DES",c:"S/MIME Algorithms. Obsolete",w:!0},"1.2.840.113549.1.9.16.3.2":{d:"esDHwithRC2",c:"S/MIME Algorithms. Obsolete",w:!0},"1.2.840.113549.1.9.16.3.3":{d:"3desWrap",c:"S/MIME Algorithms. Obsolete",w:!0},"1.2.840.113549.1.9.16.3.4":{d:"rc2Wrap",c:"S/MIME Algorithms. Obsolete",w:!0},"1.2.840.113549.1.9.16.3.5":{d:"esDH",c:"S/MIME Algorithms"},"1.2.840.113549.1.9.16.3.6":{d:"cms3DESwrap",c:"S/MIME Algorithms"},"1.2.840.113549.1.9.16.3.7":{d:"cmsRC2wrap",c:"S/MIME Algorithms"},"1.2.840.113549.1.9.16.3.8":{d:"zlib",c:"S/MIME Algorithms"},"1.2.840.113549.1.9.16.3.9":{d:"pwriKEK",c:"S/MIME Algorithms"},"1.2.840.113549.1.9.16.3.10":{d:"ssDH",c:"S/MIME Algorithms"},"1.2.840.113549.1.9.16.3.11":{d:"hmacWith3DESwrap",c:"S/MIME Algorithms"},"1.2.840.113549.1.9.16.3.12":{d:"hmacWithAESwrap",c:"S/MIME Algorithms"},"1.2.840.113549.1.9.16.3.13":{d:"md5XorExperiment",c:"S/MIME Algorithms. Experimental",w:!0},"1.2.840.113549.1.9.16.3.14":{d:"rsaKEM",c:"S/MIME Algorithms"},"1.2.840.113549.1.9.16.3.15":{d:"authEnc128",c:"S/MIME Algorithms"},"1.2.840.113549.1.9.16.3.16":{d:"authEnc256",c:"S/MIME Algorithms"},"1.2.840.113549.1.9.16.3.17":{d:"hssLmsHashSig",c:"S/MIME Algorithms"},"1.2.840.113549.1.9.16.3.18":{d:"chaCha20Poly1305",c:"S/MIME Algorithms"},"1.2.840.113549.1.9.16.3.19":{d:"ecdhHKDF-SHA256",c:"S/MIME Algorithms"},"1.2.840.113549.1.9.16.3.20":{d:"ecdhHKDF-SHA384",c:"S/MIME Algorithms"},"1.2.840.113549.1.9.16.3.21":{d:"ecdhHKDF-SHA512",c:"S/MIME Algorithms"},"1.2.840.113549.1.9.16.3.22":{d:"aesSIV-CMAC-256",c:"S/MIME Algorithms"},"1.2.840.113549.1.9.16.3.23":{d:"aesSIV-CMAC-384",c:"S/MIME Algorithms"},"1.2.840.113549.1.9.16.3.24":{d:"aesSIV-CMAC-512",c:"S/MIME Algorithms"},"1.2.840.113549.1.9.16.3.25":{d:"aesSIV-CMAC-wrap256",c:"S/MIME Algorithms"},"1.2.840.113549.1.9.16.3.26":{d:"aesSIV-CMAC-wrap384",c:"S/MIME Algorithms"},"1.2.840.113549.1.9.16.3.27":{d:"aesSIV-CMAC-wrap512",c:"S/MIME Algorithms"},"1.2.840.113549.1.9.16.3.28":{d:"hkdfWithSha256",c:"S/MIME Algorithms"},"1.2.840.113549.1.9.16.3.29":{d:"hkdfWithSha384",c:"S/MIME Algorithms"},"1.2.840.113549.1.9.16.3.30":{d:"hkdfWithSha512",c:"S/MIME Algorithms"},"1.2.840.113549.1.9.16.4.1":{d:"certDist-ldap",c:"S/MIME Certificate Distribution"},"1.2.840.113549.1.9.16.5.1":{d:"sigPolicyQualifier-spuri x",c:"S/MIME Signature Policy Qualifiers"},"1.2.840.113549.1.9.16.5.2":{d:"sigPolicyQualifier-spUserNotice",c:"S/MIME Signature Policy Qualifiers"},"1.2.840.113549.1.9.16.6.1":{d:"proofOfOrigin",c:"S/MIME Commitment Type Identifiers"},"1.2.840.113549.1.9.16.6.2":{d:"proofOfReceipt",c:"S/MIME Commitment Type Identifiers"},"1.2.840.113549.1.9.16.6.3":{d:"proofOfDelivery",c:"S/MIME Commitment Type Identifiers"},"1.2.840.113549.1.9.16.6.4":{d:"proofOfSender",c:"S/MIME Commitment Type Identifiers"},"1.2.840.113549.1.9.16.6.5":{d:"proofOfApproval",c:"S/MIME Commitment Type Identifiers"},"1.2.840.113549.1.9.16.6.6":{d:"proofOfCreation",c:"S/MIME Commitment Type Identifiers"},"1.2.840.113549.1.9.16.8.1":{d:"glUseKEK",c:"S/MIME Symmetric Key Distribution Attributes"},"1.2.840.113549.1.9.16.8.2":{d:"glDelete",c:"S/MIME Symmetric Key Distribution Attributes"},"1.2.840.113549.1.9.16.8.3":{d:"glAddMember",c:"S/MIME Symmetric Key Distribution Attributes"},"1.2.840.113549.1.9.16.8.4":{d:"glDeleteMember",c:"S/MIME Symmetric Key Distribution Attributes"},"1.2.840.113549.1.9.16.8.5":{d:"glRekey",c:"S/MIME Symmetric Key Distribution Attributes"},"1.2.840.113549.1.9.16.8.6":{d:"glAddOwner",c:"S/MIME Symmetric Key Distribution Attributes"},"1.2.840.113549.1.9.16.8.7":{d:"glRemoveOwner",c:"S/MIME Symmetric Key Distribution Attributes"},"1.2.840.113549.1.9.16.8.8":{d:"glkCompromise",c:"S/MIME Symmetric Key Distribution Attributes"},"1.2.840.113549.1.9.16.8.9":{d:"glkRefresh",c:"S/MIME Symmetric Key Distribution Attributes"},"1.2.840.113549.1.9.16.8.10":{d:"glFailInfo",c:"S/MIME Symmetric Key Distribution Attributes. Obsolete",w:!0},"1.2.840.113549.1.9.16.8.11":{d:"glaQueryRequest",c:"S/MIME Symmetric Key Distribution Attributes"},"1.2.840.113549.1.9.16.8.12":{d:"glaQueryResponse",c:"S/MIME Symmetric Key Distribution Attributes"},"1.2.840.113549.1.9.16.8.13":{d:"glProvideCert",c:"S/MIME Symmetric Key Distribution Attributes"},"1.2.840.113549.1.9.16.8.14":{d:"glUpdateCert",c:"S/MIME Symmetric Key Distribution Attributes"},"1.2.840.113549.1.9.16.8.15":{d:"glKey",c:"S/MIME Symmetric Key Distribution Attributes"},"1.2.840.113549.1.9.16.9":{d:"signatureTypeIdentifier",c:"S/MIME"},"1.2.840.113549.1.9.16.9.1":{d:"originatorSig",c:"S/MIME Signature Type Identifier"},"1.2.840.113549.1.9.16.9.2":{d:"domainSig",c:"S/MIME Signature Type Identifier"},"1.2.840.113549.1.9.16.9.3":{d:"additionalAttributesSig",c:"S/MIME Signature Type Identifier"},"1.2.840.113549.1.9.16.9.4":{d:"reviewSig",c:"S/MIME Signature Type Identifier"},"1.2.840.113549.1.9.16.11":{d:"capabilities",c:"S/MIME"},"1.2.840.113549.1.9.16.11.1":{d:"preferBinaryInside",c:"S/MIME Capability"},"1.2.840.113549.1.9.16.12":{d:"pskcAttributes",c:"S/MIME Portable Symmetric Key Container Attributes"},"1.2.840.113549.1.9.16.12.1":{d:"pskcManufacturer",c:"S/MIME Portable Symmetric Key Container Attributes"},"1.2.840.113549.1.9.16.12.2":{d:"pskcSerialNo",c:"S/MIME Portable Symmetric Key Container Attributes"},"1.2.840.113549.1.9.16.12.3":{d:"pskcModel",c:"S/MIME Portable Symmetric Key Container Attributes"},"1.2.840.113549.1.9.16.12.4":{d:"pskcIssueno",c:"S/MIME Portable Symmetric Key Container Attributes"},"1.2.840.113549.1.9.16.12.5":{d:"pskcDevicebinding",c:"S/MIME Portable Symmetric Key Container Attributes"},"1.2.840.113549.1.9.16.12.6":{d:"pskcDevicestartdate",c:"S/MIME Portable Symmetric Key Container Attributes"},"1.2.840.113549.1.9.16.12.7":{d:"pskcDeviceexpirydate",c:"S/MIME Portable Symmetric Key Container Attributes"},"1.2.840.113549.1.9.16.12.8":{d:"pskcModuleid",c:"S/MIME Portable Symmetric Key Container Attributes"},"1.2.840.113549.1.9.16.12.9":{d:"pskcKeyid",c:"S/MIME Portable Symmetric Key Container Attributes"},"1.2.840.113549.1.9.16.12.10":{d:"pskcAlgorithm",c:"S/MIME Portable Symmetric Key Container Attributes"},"1.2.840.113549.1.9.16.12.11":{d:"pskcIssuer",c:"S/MIME Portable Symmetric Key Container Attributes"},"1.2.840.113549.1.9.16.12.12":{d:"pskcKeyprofileid",c:"S/MIME Portable Symmetric Key Container Attributes"},"1.2.840.113549.1.9.16.12.13":{d:"pskcKeyreference",c:"S/MIME Portable Symmetric Key Container Attributes"},"1.2.840.113549.1.9.16.12.14":{d:"pskcFriendlyname",c:"S/MIME Portable Symmetric Key Container Attributes"},"1.2.840.113549.1.9.16.12.15":{d:"pskcAlgorithmparams",c:"S/MIME Portable Symmetric Key Container Attributes"},"1.2.840.113549.1.9.16.12.16":{d:"pskcCounter",c:"S/MIME Portable Symmetric Key Container Attributes"},"1.2.840.113549.1.9.16.12.17":{d:"pskcTime",c:"S/MIME Portable Symmetric Key Container Attributes"},"1.2.840.113549.1.9.16.12.18":{d:"pskcTimeinterval",c:"S/MIME Portable Symmetric Key Container Attributes"},"1.2.840.113549.1.9.16.12.19":{d:"pskcTimedrift",c:"S/MIME Portable Symmetric Key Container Attributes"},"1.2.840.113549.1.9.16.12.20":{d:"pskcValuemac",c:"S/MIME Portable Symmetric Key Container Attributes"},"1.2.840.113549.1.9.16.12.21":{d:"pskcKeystartdate",c:"S/MIME Portable Symmetric Key Container Attributes"},"1.2.840.113549.1.9.16.12.22":{d:"pskcKeyexpirydate",c:"S/MIME Portable Symmetric Key Container Attributes"},"1.2.840.113549.1.9.16.12.23":{d:"pskcNooftransactions",c:"S/MIME Portable Symmetric Key Container Attributes"},"1.2.840.113549.1.9.16.12.24":{d:"pskcKeyusages",c:"S/MIME Portable Symmetric Key Container Attributes"},"1.2.840.113549.1.9.16.12.25":{d:"pskcPinpolicy",c:"S/MIME Portable Symmetric Key Container Attributes"},"1.2.840.113549.1.9.16.12.26":{d:"pskcDeviceuserid",c:"S/MIME Portable Symmetric Key Container Attributes"},"1.2.840.113549.1.9.16.12.27":{d:"pskcKeyuserid",c:"S/MIME Portable Symmetric Key Container Attributes"},"1.2.840.113549.1.9.20":{d:"friendlyName (for PKCS #12)",c:"PKCS #9 via PKCS #12"},"1.2.840.113549.1.9.21":{d:"localKeyID (for PKCS #12)",c:"PKCS #9 via PKCS #12"},"1.2.840.113549.1.9.22":{d:"certTypes (for PKCS #12)",c:"PKCS #9 via PKCS #12"},"1.2.840.113549.1.9.22.1":{d:"x509Certificate (for PKCS #12)",c:"PKCS #9 via PKCS #12"},"1.2.840.113549.1.9.22.2":{d:"sdsiCertificate (for PKCS #12)",c:"PKCS #9 via PKCS #12"},"1.2.840.113549.1.9.23":{d:"crlTypes (for PKCS #12)",c:"PKCS #9 via PKCS #12"},"1.2.840.113549.1.9.23.1":{d:"x509Crl (for PKCS #12)",c:"PKCS #9 via PKCS #12"},"1.2.840.113549.1.9.24":{d:"pkcs9objectClass",c:"PKCS #9/RFC 2985"},"1.2.840.113549.1.9.25":{d:"pkcs9attributes",c:"PKCS #9/RFC 2985"},"1.2.840.113549.1.9.25.1":{d:"pkcs15Token",c:"PKCS #9/RFC 2985 attribute"},"1.2.840.113549.1.9.25.2":{d:"encryptedPrivateKeyInfo",c:"PKCS #9/RFC 2985 attribute"},"1.2.840.113549.1.9.25.3":{d:"randomNonce",c:"PKCS #9/RFC 2985 attribute"},"1.2.840.113549.1.9.25.4":{d:"sequenceNumber",c:"PKCS #9/RFC 2985 attribute"},"1.2.840.113549.1.9.25.5":{d:"pkcs7PDU",c:"PKCS #9/RFC 2985 attribute"},"1.2.840.113549.1.9.26":{d:"pkcs9syntax",c:"PKCS #9/RFC 2985"},"1.2.840.113549.1.9.27":{d:"pkcs9matchingRules",c:"PKCS #9/RFC 2985"},"1.2.840.113549.1.9.52":{d:"cmsAlgorithmProtection",c:"RFC 6211"},"1.2.840.113549.1.12":{d:"pkcs-12",c:""},"1.2.840.113549.1.12.1":{d:"pkcs-12-PbeIds",c:"This OID was formerly assigned as PKCS #12 modeID"},"1.2.840.113549.1.12.1.1":{d:"pbeWithSHAAnd128BitRC4",c:"PKCS #12 PbeIds. This OID was formerly assigned as pkcs-12-OfflineTransportMode"},"1.2.840.113549.1.12.1.2":{d:"pbeWithSHAAnd40BitRC4",c:"PKCS #12 PbeIds. This OID was formerly assigned as pkcs-12-OnlineTransportMode"},"1.2.840.113549.1.12.1.3":{d:"pbeWithSHAAnd3-KeyTripleDES-CBC",c:"PKCS #12 PbeIds"},"1.2.840.113549.1.12.1.4":{d:"pbeWithSHAAnd2-KeyTripleDES-CBC",c:"PKCS #12 PbeIds"},"1.2.840.113549.1.12.1.5":{d:"pbeWithSHAAnd128BitRC2-CBC",c:"PKCS #12 PbeIds"},"1.2.840.113549.1.12.1.6":{d:"pbeWithSHAAnd40BitRC2-CBC",c:"PKCS #12 PbeIds"},"1.2.840.113549.1.12.2":{d:"pkcs-12-ESPVKID",c:"Deprecated",w:!0},"1.2.840.113549.1.12.2.1":{d:"pkcs-12-PKCS8KeyShrouding",c:"PKCS #12 ESPVKID. Deprecated, use (1 2 840 113549 1 12 3 5) instead",w:!0},"1.2.840.113549.1.12.3":{d:"pkcs-12-BagIds",c:""},"1.2.840.113549.1.12.3.1":{d:"pkcs-12-keyBagId",c:"PKCS #12 BagIds"},"1.2.840.113549.1.12.3.2":{d:"pkcs-12-certAndCRLBagId",c:"PKCS #12 BagIds"},"1.2.840.113549.1.12.3.3":{d:"pkcs-12-secretBagId",c:"PKCS #12 BagIds"},"1.2.840.113549.1.12.3.4":{d:"pkcs-12-safeContentsId",c:"PKCS #12 BagIds"},"1.2.840.113549.1.12.3.5":{d:"pkcs-12-pkcs-8ShroudedKeyBagId",c:"PKCS #12 BagIds"},"1.2.840.113549.1.12.4":{d:"pkcs-12-CertBagID",c:"Deprecated",w:!0},"1.2.840.113549.1.12.4.1":{d:"pkcs-12-X509CertCRLBagID",c:"PKCS #12 CertBagID. This OID was formerly assigned as pkcs-12-X509CertCRLBag"},"1.2.840.113549.1.12.4.2":{d:"pkcs-12-SDSICertBagID",c:"PKCS #12 CertBagID. This OID was formerly assigned as pkcs-12-SDSICertBag"},"1.2.840.113549.1.12.5":{d:"pkcs-12-OID",c:"",w:!0},"1.2.840.113549.1.12.5.1":{d:"pkcs-12-PBEID",c:"PKCS #12 OID. Deprecated, use the partially compatible (1 2 840 113549 1 12 1) OIDs instead",w:!0},"1.2.840.113549.1.12.5.1.1":{d:"pkcs-12-PBEWithSha1And128BitRC4",c:"PKCS #12 OID PBEID. Deprecated, use (1 2 840 113549 1 12 1 1) instead",w:!0},"1.2.840.113549.1.12.5.1.2":{d:"pkcs-12-PBEWithSha1And40BitRC4",c:"PKCS #12 OID PBEID. Deprecated, use (1 2 840 113549 1 12 1 2) instead",w:!0},"1.2.840.113549.1.12.5.1.3":{d:"pkcs-12-PBEWithSha1AndTripleDESCBC",c:"PKCS #12 OID PBEID. Deprecated, use the incompatible but similar (1 2 840 113549 1 12 1 3) or (1 2 840 113549 1 12 1 4) instead",w:!0},"1.2.840.113549.1.12.5.1.4":{d:"pkcs-12-PBEWithSha1And128BitRC2CBC",c:"PKCS #12 OID PBEID. Deprecated, use (1 2 840 113549 1 12 1 5) instead",w:!0},"1.2.840.113549.1.12.5.1.5":{d:"pkcs-12-PBEWithSha1And40BitRC2CBC",c:"PKCS #12 OID PBEID. Deprecated, use (1 2 840 113549 1 12 1 6) instead",w:!0},"1.2.840.113549.1.12.5.1.6":{d:"pkcs-12-PBEWithSha1AndRC4",c:"PKCS #12 OID PBEID. Deprecated, use the incompatible but similar (1 2 840 113549 1 12 1 1) or (1 2 840 113549 1 12 1 2) instead",w:!0},"1.2.840.113549.1.12.5.1.7":{d:"pkcs-12-PBEWithSha1AndRC2CBC",c:"PKCS #12 OID PBEID. Deprecated, use the incompatible but similar (1 2 840 113549 1 12 1 5) or (1 2 840 113549 1 12 1 6) instead",w:!0},"1.2.840.113549.1.12.5.2":{d:"pkcs-12-EnvelopingID",c:"PKCS #12 OID. Deprecated, use the conventional PKCS #1 OIDs instead"},"1.2.840.113549.1.12.5.2.1":{d:"pkcs-12-RSAEncryptionWith128BitRC4",c:"PKCS #12 OID EnvelopingID. Deprecated, use the conventional PKCS #1 OIDs instead",w:!0},"1.2.840.113549.1.12.5.2.2":{d:"pkcs-12-RSAEncryptionWith40BitRC4",c:"PKCS #12 OID EnvelopingID. Deprecated, use the conventional PKCS #1 OIDs instead",w:!0},"1.2.840.113549.1.12.5.2.3":{d:"pkcs-12-RSAEncryptionWithTripleDES",c:"PKCS #12 OID EnvelopingID. Deprecated, use the conventional PKCS #1 OIDs instead",w:!0},"1.2.840.113549.1.12.5.3":{d:"pkcs-12-SignatureID",c:"PKCS #12 OID EnvelopingID. Deprecated, use the conventional PKCS #1 OIDs instead",w:!0},"1.2.840.113549.1.12.5.3.1":{d:"pkcs-12-RSASignatureWithSHA1Digest",c:"PKCS #12 OID SignatureID. Deprecated, use the conventional PKCS #1 OIDs instead",w:!0},"1.2.840.113549.1.12.10":{d:"pkcs-12Version1",c:""},"1.2.840.113549.1.12.10.1":{d:"pkcs-12BadIds",c:""},"1.2.840.113549.1.12.10.1.1":{d:"pkcs-12-keyBag",c:"PKCS #12 BagIds"},"1.2.840.113549.1.12.10.1.2":{d:"pkcs-12-pkcs-8ShroudedKeyBag",c:"PKCS #12 BagIds"},"1.2.840.113549.1.12.10.1.3":{d:"pkcs-12-certBag",c:"PKCS #12 BagIds"},"1.2.840.113549.1.12.10.1.4":{d:"pkcs-12-crlBag",c:"PKCS #12 BagIds"},"1.2.840.113549.1.12.10.1.5":{d:"pkcs-12-secretBag",c:"PKCS #12 BagIds"},"1.2.840.113549.1.12.10.1.6":{d:"pkcs-12-safeContentsBag",c:"PKCS #12 BagIds"},"1.2.840.113549.1.15.1":{d:"pkcs15modules",c:"PKCS #15"},"1.2.840.113549.1.15.2":{d:"pkcs15attributes",c:"PKCS #15"},"1.2.840.113549.1.15.3":{d:"pkcs15contentType",c:"PKCS #15"},"1.2.840.113549.1.15.3.1":{d:"pkcs15content",c:"PKCS #15 content type"},"1.2.840.113549.2":{d:"digestAlgorithm",c:""},"1.2.840.113549.2.2":{d:"md2",c:"RSADSI digestAlgorithm"},"1.2.840.113549.2.4":{d:"md4",c:"RSADSI digestAlgorithm"},"1.2.840.113549.2.5":{d:"md5",c:"RSADSI digestAlgorithm"},"1.2.840.113549.2.7":{d:"hmacWithSHA1",c:"RSADSI digestAlgorithm"},"1.2.840.113549.2.8":{d:"hmacWithSHA224",c:"RSADSI digestAlgorithm"},"1.2.840.113549.2.9":{d:"hmacWithSHA256",c:"RSADSI digestAlgorithm"},"1.2.840.113549.2.10":{d:"hmacWithSHA384",c:"RSADSI digestAlgorithm"},"1.2.840.113549.2.11":{d:"hmacWithSHA512",c:"RSADSI digestAlgorithm"},"1.2.840.113549.3":{d:"encryptionAlgorithm",c:""},"1.2.840.113549.3.2":{d:"rc2CBC",c:"RSADSI encryptionAlgorithm"},"1.2.840.113549.3.3":{d:"rc2ECB",c:"RSADSI encryptionAlgorithm"},"1.2.840.113549.3.4":{d:"rc4",c:"RSADSI encryptionAlgorithm"},"1.2.840.113549.3.5":{d:"rc4WithMAC",c:"RSADSI encryptionAlgorithm"},"1.2.840.113549.3.6":{d:"desx-CBC",c:"RSADSI encryptionAlgorithm"},"1.2.840.113549.3.7":{d:"des-EDE3-CBC",c:"RSADSI encryptionAlgorithm"},"1.2.840.113549.3.8":{d:"rc5CBC",c:"RSADSI encryptionAlgorithm"},"1.2.840.113549.3.9":{d:"rc5-CBCPad",c:"RSADSI encryptionAlgorithm"},"1.2.840.113549.3.10":{d:"desCDMF",c:"RSADSI encryptionAlgorithm. Formerly called CDMFCBCPad"},"1.2.840.114021.1.6.1":{d:"Identrus unknown policyIdentifier",c:"Identrus"},"1.2.840.114021.4.1":{d:"identrusOCSP",c:"Identrus"},"1.2.840.113556.1.2.241":{d:"deliveryMechanism",c:"Microsoft Exchange Server - attribute"},"1.2.840.113556.1.2.281":{d:"ntSecurityDescriptor",c:"Microsoft Cert Template - attribute"},"1.2.840.113556.1.3.0":{d:"site-Addressing",c:"Microsoft Exchange Server - object class"},"1.2.840.113556.1.3.13":{d:"classSchema",c:"Microsoft Exchange Server - object class"},"1.2.840.113556.1.3.14":{d:"attributeSchema",c:"Microsoft Exchange Server - object class"},"1.2.840.113556.1.3.17":{d:"mailbox-Agent",c:"Microsoft Exchange Server - object class"},"1.2.840.113556.1.3.22":{d:"mailbox",c:"Microsoft Exchange Server - object class"},"1.2.840.113556.1.3.23":{d:"container",c:"Microsoft Exchange Server - object class"},"1.2.840.113556.1.3.46":{d:"mailRecipient",c:"Microsoft Exchange Server - object class"},"1.2.840.113556.1.4.145":{d:"revision",c:"Microsoft Cert Template - attribute"},"1.2.840.113556.1.4.1327":{d:"pKIDefaultKeySpec",c:"Microsoft Cert Template - attribute"},"1.2.840.113556.1.4.1328":{d:"pKIKeyUsage",c:"Microsoft Cert Template - attribute"},"1.2.840.113556.1.4.1329":{d:"pKIMaxIssuingDepth",c:"Microsoft Cert Template - attribute"},"1.2.840.113556.1.4.1330":{d:"pKICriticalExtensions",c:"Microsoft Cert Template - attribute"},"1.2.840.113556.1.4.1331":{d:"pKIExpirationPeriod",c:"Microsoft Cert Template - attribute"},"1.2.840.113556.1.4.1332":{d:"pKIOverlapPeriod",c:"Microsoft Cert Template - attribute"},"1.2.840.113556.1.4.1333":{d:"pKIExtendedKeyUsage",c:"Microsoft Cert Template - attribute"},"1.2.840.113556.1.4.1334":{d:"pKIDefaultCSPs",c:"Microsoft Cert Template - attribute"},"1.2.840.113556.1.4.1335":{d:"pKIEnrollmentAccess",c:"Microsoft Cert Template - attribute"},"1.2.840.113556.1.4.1429":{d:"msPKI-RA-Signature",c:"Microsoft Cert Template - attribute"},"1.2.840.113556.1.4.1430":{d:"msPKI-Enrollment-Flag",c:"Microsoft Cert Template - attribute"},"1.2.840.113556.1.4.1431":{d:"msPKI-Private-Key-Flag",c:"Microsoft Cert Template - attribute"},"1.2.840.113556.1.4.1432":{d:"msPKI-Certificate-Name-Flag",c:"Microsoft Cert Template - attribute"},"1.2.840.113556.1.4.1433":{d:"msPKI-Minimal-Key-Size",c:"Microsoft Cert Template - attribute"},"1.2.840.113556.1.4.1434":{d:"msPKI-Template-Schema-Version",c:"Microsoft Cert Template - attribute"},"1.2.840.113556.1.4.1435":{d:"msPKI-Template-Minor-Revision",c:"Microsoft Cert Template - attribute"},"1.2.840.113556.1.4.1436":{d:"msPKI-Cert-Template-OID",c:"Microsoft Cert Template - attribute"},"1.2.840.113556.1.4.1437":{d:"msPKI-Supersede-Templates",c:"Microsoft Cert Template - attribute"},"1.2.840.113556.1.4.1438":{d:"msPKI-RA-Policies",c:"Microsoft Cert Template - attribute"},"1.2.840.113556.1.4.1439":{d:"msPKI-Certificate-Policy",c:"Microsoft Cert Template - attribute"},"1.2.840.113556.1.4.1674":{d:"msPKI-Certificate-Application-Policy",c:"Microsoft Cert Template - attribute"},"1.2.840.113556.1.4.1675":{d:"msPKI-RA-Application-Policies",c:"Microsoft Cert Template - attribute"},"1.2.840.113556.4.3":{d:"microsoftExcel",c:"Microsoft"},"1.2.840.113556.4.4":{d:"titledWithOID",c:"Microsoft"},"1.2.840.113556.4.5":{d:"microsoftPowerPoint",c:"Microsoft"},"1.2.840.113583.1":{d:"adobeAcrobat",c:"Adobe Acrobat"},"1.2.840.113583.1.1":{d:"acrobatSecurity",c:"Adobe Acrobat security"},"1.2.840.113583.1.1.1":{d:"pdfPassword",c:"Adobe Acrobat security"},"1.2.840.113583.1.1.2":{d:"pdfDefaultSigningCredential",c:"Adobe Acrobat security"},"1.2.840.113583.1.1.3":{d:"pdfDefaultEncryptionCredential",c:"Adobe Acrobat security"},"1.2.840.113583.1.1.4":{d:"pdfPasswordTimeout",c:"Adobe Acrobat security"},"1.2.840.113583.1.1.5":{d:"pdfAuthenticDocumentsTrust",c:"Adobe Acrobat security"},"1.2.840.113583.1.1.6":{d:"pdfDynamicContentTrust",c:"Adobe Acrobat security",w:!0},"1.2.840.113583.1.1.7":{d:"pdfUbiquityTrust",c:"Adobe Acrobat security"},"1.2.840.113583.1.1.8":{d:"pdfRevocationInfoArchival",c:"Adobe Acrobat security"},"1.2.840.113583.1.1.9":{d:"pdfX509Extension",c:"Adobe Acrobat security"},"1.2.840.113583.1.1.9.1":{d:"pdfTimeStamp",c:"Adobe Acrobat security"},"1.2.840.113583.1.1.9.2":{d:"pdfArchiveRevInfo",c:"Adobe Acrobat security"},"1.2.840.113583.1.1.10":{d:"pdfPPLKLiteCredential",c:"Adobe Acrobat security"},"1.2.840.113583.1.2":{d:"acrobatCPS",c:"Adobe Acrobat CPS"},"1.2.840.113583.1.2.1":{d:"pdfAuthenticDocumentsCPS",c:"Adobe Acrobat CPS"},"1.2.840.113583.1.2.2":{d:"pdfTestCPS",c:"Adobe Acrobat CPS"},"1.2.840.113583.1.2.3":{d:"pdfUbiquityCPS",c:"Adobe Acrobat CPS"},"1.2.840.113583.1.2.4":{d:"pdfAdhocCPS",c:"Adobe Acrobat CPS"},"1.2.840.113583.1.7":{d:"acrobatUbiquity",c:"Adobe Acrobat ubiquity"},"1.2.840.113583.1.7.1":{d:"pdfUbiquitySubRights",c:"Adobe Acrobat ubiquity"},"1.2.840.113583.1.9":{d:"acrobatExtension",c:"Adobe Acrobat X.509 extension"},"1.2.840.113628.114.1.7":{d:"adobePKCS7",c:"Adobe"},"1.2.840.113635.100":{d:"appleDataSecurity",c:"Apple"},"1.2.840.113635.100.1":{d:"appleTrustPolicy",c:"Apple"},"1.2.840.113635.100.1.1":{d:"appleISignTP",c:"Apple trust policy"},"1.2.840.113635.100.1.2":{d:"appleX509Basic",c:"Apple trust policy"},"1.2.840.113635.100.1.3":{d:"appleSSLPolicy",c:"Apple trust policy"},"1.2.840.113635.100.1.4":{d:"appleLocalCertGenPolicy",c:"Apple trust policy"},"1.2.840.113635.100.1.5":{d:"appleCSRGenPolicy",c:"Apple trust policy"},"1.2.840.113635.100.1.6":{d:"appleCRLPolicy",c:"Apple trust policy"},"1.2.840.113635.100.1.7":{d:"appleOCSPPolicy",c:"Apple trust policy"},"1.2.840.113635.100.1.8":{d:"appleSMIMEPolicy",c:"Apple trust policy"},"1.2.840.113635.100.1.9":{d:"appleEAPPolicy",c:"Apple trust policy"},"1.2.840.113635.100.1.10":{d:"appleSWUpdateSigningPolicy",c:"Apple trust policy"},"1.2.840.113635.100.1.11":{d:"appleIPSecPolicy",c:"Apple trust policy"},"1.2.840.113635.100.1.12":{d:"appleIChatPolicy",c:"Apple trust policy"},"1.2.840.113635.100.1.13":{d:"appleResourceSignPolicy",c:"Apple trust policy"},"1.2.840.113635.100.1.14":{d:"applePKINITClientPolicy",c:"Apple trust policy"},"1.2.840.113635.100.1.15":{d:"applePKINITServerPolicy",c:"Apple trust policy"},"1.2.840.113635.100.1.16":{d:"appleCodeSigningPolicy",c:"Apple trust policy"},"1.2.840.113635.100.1.17":{d:"applePackageSigningPolicy",c:"Apple trust policy"},"1.2.840.113635.100.2":{d:"appleSecurityAlgorithm",c:"Apple"},"1.2.840.113635.100.2.1":{d:"appleFEE",c:"Apple security algorithm"},"1.2.840.113635.100.2.2":{d:"appleASC",c:"Apple security algorithm"},"1.2.840.113635.100.2.3":{d:"appleFEE_MD5",c:"Apple security algorithm"},"1.2.840.113635.100.2.4":{d:"appleFEE_SHA1",c:"Apple security algorithm"},"1.2.840.113635.100.2.5":{d:"appleFEED",c:"Apple security algorithm"},"1.2.840.113635.100.2.6":{d:"appleFEEDEXP",c:"Apple security algorithm"},"1.2.840.113635.100.2.7":{d:"appleECDSA",c:"Apple security algorithm"},"1.2.840.113635.100.3":{d:"appleDotMacCertificate",c:"Apple"},"1.2.840.113635.100.3.1":{d:"appleDotMacCertificateRequest",c:"Apple dotMac certificate"},"1.2.840.113635.100.3.2":{d:"appleDotMacCertificateExtension",c:"Apple dotMac certificate"},"1.2.840.113635.100.3.3":{d:"appleDotMacCertificateRequestValues",c:"Apple dotMac certificate"},"1.2.840.113635.100.4":{d:"appleExtendedKeyUsage",c:"Apple"},"1.2.840.113635.100.4.1":{d:"appleCodeSigning",c:"Apple extended key usage"},"1.2.840.113635.100.4.1.1":{d:"appleCodeSigningDevelopment",c:"Apple extended key usage"},"1.2.840.113635.100.4.1.2":{d:"appleSoftwareUpdateSigning",c:"Apple extended key usage"},"1.2.840.113635.100.4.1.3":{d:"appleCodeSigningThirdParty",c:"Apple extended key usage"},"1.2.840.113635.100.4.1.4":{d:"appleResourceSigning",c:"Apple extended key usage"},"1.2.840.113635.100.4.2":{d:"appleIChatSigning",c:"Apple extended key usage"},"1.2.840.113635.100.4.3":{d:"appleIChatEncryption",c:"Apple extended key usage"},"1.2.840.113635.100.4.4":{d:"appleSystemIdentity",c:"Apple extended key usage"},"1.2.840.113635.100.4.5":{d:"appleCryptoEnv",c:"Apple extended key usage"},"1.2.840.113635.100.4.5.1":{d:"appleCryptoProductionEnv",c:"Apple extended key usage"},"1.2.840.113635.100.4.5.2":{d:"appleCryptoMaintenanceEnv",c:"Apple extended key usage"},"1.2.840.113635.100.4.5.3":{d:"appleCryptoTestEnv",c:"Apple extended key usage"},"1.2.840.113635.100.4.5.4":{d:"appleCryptoDevelopmentEnv",c:"Apple extended key usage"},"1.2.840.113635.100.4.6":{d:"appleCryptoQoS",c:"Apple extended key usage"},"1.2.840.113635.100.4.6.1":{d:"appleCryptoTier0QoS",c:"Apple extended key usage"},"1.2.840.113635.100.4.6.2":{d:"appleCryptoTier1QoS",c:"Apple extended key usage"},"1.2.840.113635.100.4.6.3":{d:"appleCryptoTier2QoS",c:"Apple extended key usage"},"1.2.840.113635.100.4.6.4":{d:"appleCryptoTier3QoS",c:"Apple extended key usage"},"1.2.840.113635.100.5":{d:"appleCertificatePolicies",c:"Apple"},"1.2.840.113635.100.5.1":{d:"appleCertificatePolicyID",c:"Apple"},"1.2.840.113635.100.5.2":{d:"appleDotMacCertificatePolicyID",c:"Apple"},"1.2.840.113635.100.5.3":{d:"appleADCCertificatePolicyID",c:"Apple"},"1.2.840.113635.100.6":{d:"appleCertificateExtensions",c:"Apple"},"1.2.840.113635.100.6.1":{d:"appleCertificateExtensionCodeSigning",c:"Apple certificate extension"},"1.2.840.113635.100.6.1.1":{d:"appleCertificateExtensionAppleSigning",c:"Apple certificate extension"},"1.2.840.113635.100.6.1.2":{d:"appleCertificateExtensionADCDeveloperSigning",c:"Apple certificate extension"},"1.2.840.113635.100.6.1.3":{d:"appleCertificateExtensionADCAppleSigning",c:"Apple certificate extension"},"1.3.6.1.4.1.311.2.1.4":{d:"spcIndirectDataContext",c:"Microsoft code signing"},"1.3.6.1.4.1.311.2.1.10":{d:"spcAgencyInfo",c:"Microsoft code signing. Also known as policyLink"},"1.3.6.1.4.1.311.2.1.11":{d:"spcStatementType",c:"Microsoft code signing"},"1.3.6.1.4.1.311.2.1.12":{d:"spcSpOpusInfo",c:"Microsoft code signing"},"1.3.6.1.4.1.311.2.1.14":{d:"certReqExtensions",c:"Microsoft"},"1.3.6.1.4.1.311.2.1.15":{d:"spcPEImageData",c:"Microsoft code signing"},"1.3.6.1.4.1.311.2.1.18":{d:"spcRawFileData",c:"Microsoft code signing"},"1.3.6.1.4.1.311.2.1.19":{d:"spcStructuredStorageData",c:"Microsoft code signing"},"1.3.6.1.4.1.311.2.1.20":{d:"spcJavaClassData (type 1)",c:'Microsoft code signing. Formerly "link extension" aka "glue extension"'},"1.3.6.1.4.1.311.2.1.21":{d:"individualCodeSigning",c:"Microsoft"},"1.3.6.1.4.1.311.2.1.22":{d:"commercialCodeSigning",c:"Microsoft"},"1.3.6.1.4.1.311.2.1.25":{d:"spcLink (type 2)",c:'Microsoft code signing. Also known as "glue extension"'},"1.3.6.1.4.1.311.2.1.26":{d:"spcMinimalCriteriaInfo",c:"Microsoft code signing"},"1.3.6.1.4.1.311.2.1.27":{d:"spcFinancialCriteriaInfo",c:"Microsoft code signing"},"1.3.6.1.4.1.311.2.1.28":{d:"spcLink (type 3)",c:'Microsoft code signing. Also known as "glue extension"'},"1.3.6.1.4.1.311.2.1.29":{d:"spcHashInfoObjID",c:"Microsoft code signing"},"1.3.6.1.4.1.311.2.1.30":{d:"spcSipInfoObjID",c:"Microsoft code signing"},"1.3.6.1.4.1.311.2.2":{d:"ctl",c:"Microsoft CTL"},"1.3.6.1.4.1.311.2.2.1":{d:"ctlTrustedCodesigningCAList",c:"Microsoft CTL"},"1.3.6.1.4.1.311.2.2.2":{d:"ctlTrustedClientAuthCAList",c:"Microsoft CTL"},"1.3.6.1.4.1.311.2.2.3":{d:"ctlTrustedServerAuthCAList",c:"Microsoft CTL"},"1.3.6.1.4.1.311.3.2.1":{d:"timestampRequest",c:"Microsoft code signing"},"1.3.6.1.4.1.311.10.1":{d:"certTrustList",c:"Microsoft contentType"},"1.3.6.1.4.1.311.10.1.1":{d:"sortedCtl",c:"Microsoft contentType"},"1.3.6.1.4.1.311.10.2":{d:"nextUpdateLocation",c:"Microsoft"},"1.3.6.1.4.1.311.10.3.1":{d:"certTrustListSigning",c:"Microsoft enhanced key usage"},"1.3.6.1.4.1.311.10.3.2":{d:"timeStampSigning",c:"Microsoft enhanced key usage"},"1.3.6.1.4.1.311.10.3.3":{d:"serverGatedCrypto",c:"Microsoft enhanced key usage"},"1.3.6.1.4.1.311.10.3.3.1":{d:"serialized",c:"Microsoft"},"1.3.6.1.4.1.311.10.3.4":{d:"encryptedFileSystem",c:"Microsoft enhanced key usage"},"1.3.6.1.4.1.311.10.3.5":{d:"whqlCrypto",c:"Microsoft enhanced key usage"},"1.3.6.1.4.1.311.10.3.6":{d:"nt5Crypto",c:"Microsoft enhanced key usage"},"1.3.6.1.4.1.311.10.3.7":{d:"oemWHQLCrypto",c:"Microsoft enhanced key usage"},"1.3.6.1.4.1.311.10.3.8":{d:"embeddedNTCrypto",c:"Microsoft enhanced key usage"},"1.3.6.1.4.1.311.10.3.9":{d:"rootListSigner",c:"Microsoft enhanced key usage"},"1.3.6.1.4.1.311.10.3.10":{d:"qualifiedSubordination",c:"Microsoft enhanced key usage"},"1.3.6.1.4.1.311.10.3.11":{d:"keyRecovery",c:"Microsoft enhanced key usage"},"1.3.6.1.4.1.311.10.3.12":{d:"documentSigning",c:"Microsoft enhanced key usage"},"1.3.6.1.4.1.311.10.3.13":{d:"lifetimeSigning",c:"Microsoft enhanced key usage"},"1.3.6.1.4.1.311.10.3.14":{d:"mobileDeviceSoftware",c:"Microsoft enhanced key usage"},"1.3.6.1.4.1.311.10.3.15":{d:"smartDisplay",c:"Microsoft enhanced key usage"},"1.3.6.1.4.1.311.10.3.16":{d:"cspSignature",c:"Microsoft enhanced key usage"},"1.3.6.1.4.1.311.10.3.4.1":{d:"efsRecovery",c:"Microsoft enhanced key usage"},"1.3.6.1.4.1.311.10.4.1":{d:"yesnoTrustAttr",c:"Microsoft attribute"},"1.3.6.1.4.1.311.10.5.1":{d:"drm",c:"Microsoft enhanced key usage"},"1.3.6.1.4.1.311.10.5.2":{d:"drmIndividualization",c:"Microsoft enhanced key usage"},"1.3.6.1.4.1.311.10.6.1":{d:"licenses",c:"Microsoft enhanced key usage"},"1.3.6.1.4.1.311.10.6.2":{d:"licenseServer",c:"Microsoft enhanced key usage"},"1.3.6.1.4.1.311.10.7.1":{d:"keyidRdn",c:"Microsoft attribute"},"1.3.6.1.4.1.311.10.8.1":{d:"removeCertificate",c:"Microsoft attribute"},"1.3.6.1.4.1.311.10.9.1":{d:"crossCertDistPoints",c:"Microsoft attribute"},"1.3.6.1.4.1.311.10.10.1":{d:"cmcAddAttributes",c:"Microsoft"},"1.3.6.1.4.1.311.10.11":{d:"certPropIdPrefix",c:"Microsoft"},"1.3.6.1.4.1.311.10.11.4":{d:"certMd5HashPropId",c:"Microsoft"},"1.3.6.1.4.1.311.10.11.20":{d:"certKeyIdentifierPropId",c:"Microsoft"},"1.3.6.1.4.1.311.10.11.28":{d:"certIssuerSerialNumberMd5HashPropId",c:"Microsoft"},"1.3.6.1.4.1.311.10.11.29":{d:"certSubjectNameMd5HashPropId",c:"Microsoft"},"1.3.6.1.4.1.311.10.12.1":{d:"anyApplicationPolicy",c:"Microsoft attribute"},"1.3.6.1.4.1.311.12":{d:"catalog",c:"Microsoft attribute"},"1.3.6.1.4.1.311.12.1.1":{d:"catalogList",c:"Microsoft attribute"},"1.3.6.1.4.1.311.12.1.2":{d:"catalogListMember",c:"Microsoft attribute"},"1.3.6.1.4.1.311.12.2.1":{d:"catalogNameValueObjID",c:"Microsoft attribute"},"1.3.6.1.4.1.311.12.2.2":{d:"catalogMemberInfoObjID",c:"Microsoft attribute"},"1.3.6.1.4.1.311.13.1":{d:"renewalCertificate",c:"Microsoft attribute"},"1.3.6.1.4.1.311.13.2.1":{d:"enrolmentNameValuePair",c:"Microsoft attribute"},"1.3.6.1.4.1.311.13.2.2":{d:"enrolmentCSP",c:"Microsoft attribute"},"1.3.6.1.4.1.311.13.2.3":{d:"osVersion",c:"Microsoft attribute"},"1.3.6.1.4.1.311.16.4":{d:"microsoftRecipientInfo",c:"Microsoft attribute"},"1.3.6.1.4.1.311.17.1":{d:"pkcs12KeyProviderNameAttr",c:"Microsoft attribute"},"1.3.6.1.4.1.311.17.2":{d:"localMachineKeyset",c:"Microsoft attribute"},"1.3.6.1.4.1.311.17.3":{d:"pkcs12ExtendedAttributes",c:"Microsoft attribute"},"1.3.6.1.4.1.311.20.1":{d:"autoEnrollCtlUsage",c:"Microsoft"},"1.3.6.1.4.1.311.20.2":{d:"enrollCerttypeExtension",c:"Microsoft CAPICOM certificate template, V1"},"1.3.6.1.4.1.311.20.2.1":{d:"enrollmentAgent",c:"Microsoft enhanced key usage"},"1.3.6.1.4.1.311.20.2.2":{d:"smartcardLogon",c:"Microsoft enhanced key usage"},"1.3.6.1.4.1.311.20.2.3":{d:"universalPrincipalName",c:"Microsoft UPN"},"1.3.6.1.4.1.311.20.3":{d:"certManifold",c:"Microsoft"},"1.3.6.1.4.1.311.21.1":{d:"cAKeyCertIndexPair",c:"Microsoft attribute. Also known as certsrvCaVersion"},"1.3.6.1.4.1.311.21.2":{d:"certSrvPreviousCertHash",c:"Microsoft"},"1.3.6.1.4.1.311.21.3":{d:"crlVirtualBase",c:"Microsoft"},"1.3.6.1.4.1.311.21.4":{d:"crlNextPublish",c:"Microsoft"},"1.3.6.1.4.1.311.21.5":{d:"caExchange",c:"Microsoft extended key usage",w:!0},"1.3.6.1.4.1.311.21.6":{d:"keyRecovery",c:"Microsoft extended key usage",w:!0},"1.3.6.1.4.1.311.21.7":{d:"certificateTemplate",c:"Microsoft CAPICOM certificate template, V2"},"1.3.6.1.4.1.311.21.9":{d:"rdnDummySigner",c:"Microsoft"},"1.3.6.1.4.1.311.21.10":{d:"applicationCertPolicies",c:"Microsoft"},"1.3.6.1.4.1.311.21.11":{d:"applicationPolicyMappings",c:"Microsoft"},"1.3.6.1.4.1.311.21.12":{d:"applicationPolicyConstraints",c:"Microsoft"},"1.3.6.1.4.1.311.21.13":{d:"archivedKey",c:"Microsoft attribute"},"1.3.6.1.4.1.311.21.14":{d:"crlSelfCDP",c:"Microsoft"},"1.3.6.1.4.1.311.21.15":{d:"requireCertChainPolicy",c:"Microsoft"},"1.3.6.1.4.1.311.21.16":{d:"archivedKeyCertHash",c:"Microsoft"},"1.3.6.1.4.1.311.21.17":{d:"issuedCertHash",c:"Microsoft"},"1.3.6.1.4.1.311.21.19":{d:"dsEmailReplication",c:"Microsoft"},"1.3.6.1.4.1.311.21.20":{d:"requestClientInfo",c:"Microsoft attribute"},"1.3.6.1.4.1.311.21.21":{d:"encryptedKeyHash",c:"Microsoft attribute"},"1.3.6.1.4.1.311.21.22":{d:"certsrvCrossCaVersion",c:"Microsoft"},"1.3.6.1.4.1.311.25.1":{d:"ntdsReplication",c:"Microsoft"},"1.3.6.1.4.1.311.31.1":{d:"productUpdate",c:"Microsoft attribute"},"1.3.6.1.4.1.311.47.1.1":{d:"systemHealth",c:"Microsoft extended key usage"},"1.3.6.1.4.1.311.47.1.3":{d:"systemHealthLoophole",c:"Microsoft extended key usage"},"1.3.6.1.4.1.311.60.1.1":{d:"rootProgramFlags",c:"Microsoft policy attribute"},"1.3.6.1.4.1.311.61.1.1":{d:"kernelModeCodeSigning",c:"Microsoft enhanced key usage"},"1.3.6.1.4.1.311.60.2.1.1":{d:"jurisdictionOfIncorporationL",c:"Microsoft (???)"},"1.3.6.1.4.1.311.60.2.1.2":{d:"jurisdictionOfIncorporationSP",c:"Microsoft (???)"},"1.3.6.1.4.1.311.60.2.1.3":{d:"jurisdictionOfIncorporationC",c:"Microsoft (???)"},"1.3.6.1.4.1.311.88":{d:"capiCom",c:"Microsoft attribute"},"1.3.6.1.4.1.311.88.1":{d:"capiComVersion",c:"Microsoft attribute"},"1.3.6.1.4.1.311.88.2":{d:"capiComAttribute",c:"Microsoft attribute"},"1.3.6.1.4.1.311.88.2.1":{d:"capiComDocumentName",c:"Microsoft attribute"},"1.3.6.1.4.1.311.88.2.2":{d:"capiComDocumentDescription",c:"Microsoft attribute"},"1.3.6.1.4.1.311.88.3":{d:"capiComEncryptedData",c:"Microsoft attribute"},"1.3.6.1.4.1.311.88.3.1":{d:"capiComEncryptedContent",c:"Microsoft attribute"},"1.3.6.1.4.1.188.7.1.1":{d:"ascom",c:"Ascom Systech"},"1.3.6.1.4.1.188.7.1.1.1":{d:"ideaECB",c:"Ascom Systech"},"1.3.6.1.4.1.188.7.1.1.2":{d:"ideaCBC",c:"Ascom Systech"},"1.3.6.1.4.1.188.7.1.1.3":{d:"ideaCFB",c:"Ascom Systech"},"1.3.6.1.4.1.188.7.1.1.4":{d:"ideaOFB",c:"Ascom Systech"},"1.3.6.1.4.1.2428.10.1.1":{d:"UNINETT policyIdentifier",c:"UNINETT PCA"},"1.3.6.1.4.1.2712.10":{d:"ICE-TEL policyIdentifier",c:"ICE-TEL CA"},"1.3.6.1.4.1.2786.1.1.1":{d:"ICE-TEL Italian policyIdentifier",c:"ICE-TEL CA policy"},"1.3.6.1.4.1.3029.1.1.1":{d:"blowfishECB",c:"cryptlib encryption algorithm"},"1.3.6.1.4.1.3029.1.1.2":{d:"blowfishCBC",c:"cryptlib encryption algorithm"},"1.3.6.1.4.1.3029.1.1.3":{d:"blowfishCFB",c:"cryptlib encryption algorithm"},"1.3.6.1.4.1.3029.1.1.4":{d:"blowfishOFB",c:"cryptlib encryption algorithm"},"1.3.6.1.4.1.3029.1.2.1":{d:"elgamal",c:"cryptlib public-key algorithm"},"1.3.6.1.4.1.3029.1.2.1.1":{d:"elgamalWithSHA-1",c:"cryptlib public-key algorithm"},"1.3.6.1.4.1.3029.1.2.1.2":{d:"elgamalWithRIPEMD-160",c:"cryptlib public-key algorithm"},"1.3.6.1.4.1.3029.3.1.1":{d:"cryptlibPresenceCheck",c:"cryptlib attribute type"},"1.3.6.1.4.1.3029.3.1.2":{d:"pkiBoot",c:"cryptlib attribute type"},"1.3.6.1.4.1.3029.3.1.4":{d:"crlExtReason",c:"cryptlib attribute type"},"1.3.6.1.4.1.3029.3.1.5":{d:"keyFeatures",c:"cryptlib attribute type"},"1.3.6.1.4.1.3029.4.1":{d:"cryptlibContent",c:"cryptlib"},"1.3.6.1.4.1.3029.4.1.1":{d:"cryptlibConfigData",c:"cryptlib content type"},"1.3.6.1.4.1.3029.4.1.2":{d:"cryptlibUserIndex",c:"cryptlib content type"},"1.3.6.1.4.1.3029.4.1.3":{d:"cryptlibUserInfo",c:"cryptlib content type"},"1.3.6.1.4.1.3029.4.1.4":{d:"rtcsRequest",c:"cryptlib content type"},"1.3.6.1.4.1.3029.4.1.5":{d:"rtcsResponse",c:"cryptlib content type"},"1.3.6.1.4.1.3029.4.1.6":{d:"rtcsResponseExt",c:"cryptlib content type"},"1.3.6.1.4.1.3029.42.11172.1":{d:"mpeg-1",c:"cryptlib special MPEG-of-cat OID"},"1.3.6.1.4.1.3029.54.11940.54":{d:'TSA policy "Anything that arrives, we sign"',c:"cryptlib TSA policy"},"1.3.6.1.4.1.3029.88.89.90.90.89":{d:"xYZZY policyIdentifier",c:"cryptlib certificate policy"},"1.3.6.1.4.1.3401.8.1.1":{d:"pgpExtension",c:"PGP key information"},"1.3.6.1.4.1.3576.7":{d:"eciaAscX12Edi",c:"TMN EDI for Interactive Agents"},"1.3.6.1.4.1.3576.7.1":{d:"plainEDImessage",c:"TMN EDI for Interactive Agents"},"1.3.6.1.4.1.3576.7.2":{d:"signedEDImessage",c:"TMN EDI for Interactive Agents"},"1.3.6.1.4.1.3576.7.5":{d:"integrityEDImessage",c:"TMN EDI for Interactive Agents"},"1.3.6.1.4.1.3576.7.65":{d:"iaReceiptMessage",c:"TMN EDI for Interactive Agents"},"1.3.6.1.4.1.3576.7.97":{d:"iaStatusMessage",c:"TMN EDI for Interactive Agents"},"1.3.6.1.4.1.3576.8":{d:"eciaEdifact",c:"TMN EDI for Interactive Agents"},"1.3.6.1.4.1.3576.9":{d:"eciaNonEdi",c:"TMN EDI for Interactive Agents"},"1.3.6.1.4.1.4146":{d:"Globalsign",c:"Globalsign"},"1.3.6.1.4.1.4146.1":{d:"globalsignPolicy",c:"Globalsign"},"1.3.6.1.4.1.4146.1.10":{d:"globalsignDVPolicy",c:"Globalsign policy"},"1.3.6.1.4.1.4146.1.20":{d:"globalsignOVPolicy",c:"Globalsign policy"},"1.3.6.1.4.1.4146.1.30":{d:"globalsignTSAPolicy",c:"Globalsign policy"},"1.3.6.1.4.1.4146.1.40":{d:"globalsignClientCertPolicy",c:"Globalsign policy"},"1.3.6.1.4.1.4146.1.50":{d:"globalsignCodeSignPolicy",c:"Globalsign policy"},"1.3.6.1.4.1.4146.1.60":{d:"globalsignRootSignPolicy",c:"Globalsign policy"},"1.3.6.1.4.1.4146.1.70":{d:"globalsignTrustedRootPolicy",c:"Globalsign policy"},"1.3.6.1.4.1.4146.1.80":{d:"globalsignEDIClientPolicy",c:"Globalsign policy"},"1.3.6.1.4.1.4146.1.81":{d:"globalsignEDIServerPolicy",c:"Globalsign policy"},"1.3.6.1.4.1.4146.1.90":{d:"globalsignTPMRootPolicy",c:"Globalsign policy"},"1.3.6.1.4.1.4146.1.95":{d:"globalsignOCSPPolicy",c:"Globalsign policy"},"1.3.6.1.4.1.5309.1":{d:"edelWebPolicy",c:"EdelWeb policy"},"1.3.6.1.4.1.5309.1.2":{d:"edelWebCustomerPolicy",c:"EdelWeb policy"},"1.3.6.1.4.1.5309.1.2.1":{d:"edelWebClepsydrePolicy",c:"EdelWeb policy"},"1.3.6.1.4.1.5309.1.2.2":{d:"edelWebExperimentalTSAPolicy",c:"EdelWeb policy"},"1.3.6.1.4.1.5309.1.2.3":{d:"edelWebOpenEvidenceTSAPolicy",c:"EdelWeb policy"},"1.3.6.1.4.1.5472":{d:"timeproof",c:"enterprise"},"1.3.6.1.4.1.5472.1":{d:"tss",c:"timeproof"},"1.3.6.1.4.1.5472.1.1":{d:"tss80",c:"timeproof TSS"},"1.3.6.1.4.1.5472.1.2":{d:"tss380",c:"timeproof TSS"},"1.3.6.1.4.1.5472.1.3":{d:"tss400",c:"timeproof TSS"},"1.3.6.1.4.1.5770.0.3":{d:"secondaryPractices",c:"MEDePass"},"1.3.6.1.4.1.5770.0.4":{d:"physicianIdentifiers",c:"MEDePass"},"1.3.6.1.4.1.6449.1.2.1.3.1":{d:"comodoPolicy",c:"Comodo CA"},"1.3.6.1.4.1.6449.1.2.2.15":{d:"wotrustPolicy",c:"WoTrust (Comodo) CA"},"1.3.6.1.4.1.6449.1.3.5.2":{d:"comodoCertifiedDeliveryService",c:"Comodo CA"},"1.3.6.1.4.1.6449.2.1.1":{d:"comodoTimestampingPolicy",c:"Comodo CA"},"1.3.6.1.4.1.8301.3.5.1":{d:"validityModelChain",c:"TU Darmstadt ValidityModel"},"1.3.6.1.4.1.8301.3.5.2":{d:"validityModelShell",c:"ValidityModel"},"1.3.6.1.4.1.8231.1":{d:"rolUnicoNacional",c:"Chilean Government national unique roll number"},"1.3.6.1.4.1.11591":{d:"gnu",c:"GNU Project (see http://www.gnupg.org/oids.html)"},"1.3.6.1.4.1.11591.1":{d:"gnuRadius",c:"GNU Radius"},"1.3.6.1.4.1.11591.3":{d:"gnuRadar",c:"GNU Radar"},"1.3.6.1.4.1.11591.4.11":{d:"scrypt",c:"GNU Generic Security Service"},"1.3.6.1.4.1.11591.12":{d:"gnuDigestAlgorithm",c:"GNU digest algorithm"},"1.3.6.1.4.1.11591.12.2":{d:"tiger",c:"GNU digest algorithm"},"1.3.6.1.4.1.11591.13":{d:"gnuEncryptionAlgorithm",c:"GNU encryption algorithm"},"1.3.6.1.4.1.11591.13.2":{d:"serpent",c:"GNU encryption algorithm"},"1.3.6.1.4.1.11591.13.2.1":{d:"serpent128_ECB",c:"GNU encryption algorithm"},"1.3.6.1.4.1.11591.13.2.2":{d:"serpent128_CBC",c:"GNU encryption algorithm"},"1.3.6.1.4.1.11591.13.2.3":{d:"serpent128_OFB",c:"GNU encryption algorithm"},"1.3.6.1.4.1.11591.13.2.4":{d:"serpent128_CFB",c:"GNU encryption algorithm"},"1.3.6.1.4.1.11591.13.2.21":{d:"serpent192_ECB",c:"GNU encryption algorithm"},"1.3.6.1.4.1.11591.13.2.22":{d:"serpent192_CBC",c:"GNU encryption algorithm"},"1.3.6.1.4.1.11591.13.2.23":{d:"serpent192_OFB",c:"GNU encryption algorithm"},"1.3.6.1.4.1.11591.13.2.24":{d:"serpent192_CFB",c:"GNU encryption algorithm"},"1.3.6.1.4.1.11591.13.2.41":{d:"serpent256_ECB",c:"GNU encryption algorithm"},"1.3.6.1.4.1.11591.13.2.42":{d:"serpent256_CBC",c:"GNU encryption algorithm"},"1.3.6.1.4.1.11591.13.2.43":{d:"serpent256_OFB",c:"GNU encryption algorithm"},"1.3.6.1.4.1.11591.13.2.44":{d:"serpent256_CFB",c:"GNU encryption algorithm"},"1.3.6.1.4.1.11591.15.1":{d:"curve25519",c:"GNU encryption algorithm"},"1.3.6.1.4.1.11591.15.2":{d:"curve448",c:"GNU encryption algorithm"},"1.3.6.1.4.1.11591.15.3":{d:"curve25519ph",c:"GNU encryption algorithm"},"1.3.6.1.4.1.11591.15.4":{d:"curve448ph",c:"GNU encryption algorithm"},"1.3.6.1.4.1.16334.509.1.1":{d:"Northrop Grumman extKeyUsage?",c:"Northrop Grumman extended key usage"},"1.3.6.1.4.1.16334.509.2.1":{d:"ngcClass1",c:"Northrop Grumman policy"},"1.3.6.1.4.1.16334.509.2.2":{d:"ngcClass2",c:"Northrop Grumman policy"},"1.3.6.1.4.1.16334.509.2.3":{d:"ngcClass3",c:"Northrop Grumman policy"},"1.3.6.1.4.1.23629.1.4.2.1.1":{d:"safenetUsageLimit",c:"SafeNet"},"1.3.6.1.4.1.23629.1.4.2.1.2":{d:"safenetEndDate",c:"SafeNet"},"1.3.6.1.4.1.23629.1.4.2.1.3":{d:"safenetStartDate",c:"SafeNet"},"1.3.6.1.4.1.23629.1.4.2.1.4":{d:"safenetAdminCert",c:"SafeNet"},"1.3.6.1.4.1.23629.1.4.2.2.1":{d:"safenetKeyDigest",c:"SafeNet"},"1.3.6.1.5.2.3.1":{d:"authData",c:"Kerberos"},"1.3.6.1.5.2.3.2":{d:"dHKeyData",c:"Kerberos"},"1.3.6.1.5.2.3.3":{d:"rkeyData",c:"Kerberos"},"1.3.6.1.5.2.3.4":{d:"keyPurposeClientAuth",c:"Kerberos"},"1.3.6.1.5.2.3.5":{d:"keyPurposeKdc",c:"Kerberos"},"1.3.6.1.5.2.3.6":{d:"kdf",c:"Kerberos"},"1.3.6.1.5.5.7":{d:"pkix",c:""},"1.3.6.1.5.5.7.0.12":{d:"attributeCert",c:"PKIX"},"1.3.6.1.5.5.7.1":{d:"privateExtension",c:"PKIX"},"1.3.6.1.5.5.7.1.1":{d:"authorityInfoAccess",c:"PKIX private extension"},"1.3.6.1.5.5.7.1.2":{d:"biometricInfo",c:"PKIX private extension"},"1.3.6.1.5.5.7.1.3":{d:"qcStatements",c:"PKIX private extension"},"1.3.6.1.5.5.7.1.4":{d:"acAuditIdentity",c:"PKIX private extension"},"1.3.6.1.5.5.7.1.5":{d:"acTargeting",c:"PKIX private extension"},"1.3.6.1.5.5.7.1.6":{d:"acAaControls",c:"PKIX private extension"},"1.3.6.1.5.5.7.1.7":{d:"ipAddrBlocks",c:"PKIX private extension"},"1.3.6.1.5.5.7.1.8":{d:"autonomousSysIds",c:"PKIX private extension"},"1.3.6.1.5.5.7.1.9":{d:"routerIdentifier",c:"PKIX private extension"},"1.3.6.1.5.5.7.1.10":{d:"acProxying",c:"PKIX private extension"},"1.3.6.1.5.5.7.1.11":{d:"subjectInfoAccess",c:"PKIX private extension"},"1.3.6.1.5.5.7.1.12":{d:"logoType",c:"PKIX private extension"},"1.3.6.1.5.5.7.1.13":{d:"wlanSSID",c:"PKIX private extension"},"1.3.6.1.5.5.7.1.14":{d:"proxyCertInfo",c:"PKIX private extension"},"1.3.6.1.5.5.7.1.15":{d:"acPolicies",c:"PKIX private extension"},"1.3.6.1.5.5.7.1.16":{d:"certificateWarranty",c:"PKIX private extension"},"1.3.6.1.5.5.7.1.18":{d:"cmsContentConstraints",c:"PKIX private extension"},"1.3.6.1.5.5.7.1.19":{d:"otherCerts",c:"PKIX private extension"},"1.3.6.1.5.5.7.1.20":{d:"wrappedApexContinKey",c:"PKIX private extension"},"1.3.6.1.5.5.7.1.21":{d:"clearanceConstraints",c:"PKIX private extension"},"1.3.6.1.5.5.7.1.22":{d:"skiSemantics",c:"PKIX private extension"},"1.3.6.1.5.5.7.1.23":{d:"noSecrecyAfforded",c:"PKIX private extension"},"1.3.6.1.5.5.7.1.24":{d:"tlsFeature",c:"PKIX private extension"},"1.3.6.1.5.5.7.1.25":{d:"manufacturerUsageDescription",c:"PKIX private extension"},"1.3.6.1.5.5.7.1.26":{d:"tnAuthList",c:"PKIX private extension"},"1.3.6.1.5.5.7.1.27":{d:"jwtClaimConstraints",c:"PKIX private extension"},"1.3.6.1.5.5.7.1.28":{d:"ipAddrBlocksV2",c:"PKIX private extension"},"1.3.6.1.5.5.7.1.29":{d:"autonomousSysIdsV2",c:"PKIX private extension"},"1.3.6.1.5.5.7.1.30":{d:"manufacturerUsageDescriptionSigner",c:"PKIX private extension"},"1.3.6.1.5.5.7.1.31":{d:"acmeIdentifier",c:"PKIX private extension"},"1.3.6.1.5.5.7.2":{d:"policyQualifierIds",c:"PKIX"},"1.3.6.1.5.5.7.2.1":{d:"cps",c:"PKIX policy qualifier"},"1.3.6.1.5.5.7.2.2":{d:"unotice",c:"PKIX policy qualifier"},"1.3.6.1.5.5.7.2.3":{d:"textNotice",c:"PKIX policy qualifier"},"1.3.6.1.5.5.7.3":{d:"keyPurpose",c:"PKIX"},"1.3.6.1.5.5.7.3.1":{d:"serverAuth",c:"PKIX key purpose"},"1.3.6.1.5.5.7.3.2":{d:"clientAuth",c:"PKIX key purpose"},"1.3.6.1.5.5.7.3.3":{d:"codeSigning",c:"PKIX key purpose"},"1.3.6.1.5.5.7.3.4":{d:"emailProtection",c:"PKIX key purpose"},"1.3.6.1.5.5.7.3.5":{d:"ipsecEndSystem",c:"PKIX key purpose",w:!0},"1.3.6.1.5.5.7.3.6":{d:"ipsecTunnel",c:"PKIX key purpose",w:!0},"1.3.6.1.5.5.7.3.7":{d:"ipsecUser",c:"PKIX key purpose",w:!0},"1.3.6.1.5.5.7.3.8":{d:"timeStamping",c:"PKIX key purpose"},"1.3.6.1.5.5.7.3.9":{d:"ocspSigning",c:"PKIX key purpose"},"1.3.6.1.5.5.7.3.10":{d:"dvcs",c:"PKIX key purpose"},"1.3.6.1.5.5.7.3.11":{d:"sbgpCertAAServerAuth",c:"PKIX key purpose",w:!0},"1.3.6.1.5.5.7.3.12":{d:"scvpResponder",c:"PKIX key purpose",w:!0},"1.3.6.1.5.5.7.3.13":{d:"eapOverPPP",c:"PKIX key purpose"},"1.3.6.1.5.5.7.3.14":{d:"eapOverLAN",c:"PKIX key purpose"},"1.3.6.1.5.5.7.3.15":{d:"scvpServer",c:"PKIX key purpose"},"1.3.6.1.5.5.7.3.16":{d:"scvpClient",c:"PKIX key purpose"},"1.3.6.1.5.5.7.3.17":{d:"ipsecIKE",c:"PKIX key purpose"},"1.3.6.1.5.5.7.3.18":{d:"capwapAC",c:"PKIX key purpose"},"1.3.6.1.5.5.7.3.19":{d:"capwapWTP",c:"PKIX key purpose"},"1.3.6.1.5.5.7.3.20":{d:"sipDomain",c:"PKIX key purpose"},"1.3.6.1.5.5.7.3.21":{d:"secureShellClient",c:"PKIX key purpose"},"1.3.6.1.5.5.7.3.22":{d:"secureShellServer",c:"PKIX key purpose"},"1.3.6.1.5.5.7.3.23":{d:"sendRouter",c:"PKIX key purpose"},"1.3.6.1.5.5.7.3.24":{d:"sendProxiedRouter",c:"PKIX key purpose"},"1.3.6.1.5.5.7.3.25":{d:"sendOwner",c:"PKIX key purpose"},"1.3.6.1.5.5.7.3.26":{d:"sendProxiedOwner",c:"PKIX key purpose"},"1.3.6.1.5.5.7.3.27":{d:"cmcCA",c:"PKIX key purpose"},"1.3.6.1.5.5.7.3.28":{d:"cmcRA",c:"PKIX key purpose"},"1.3.6.1.5.5.7.3.29":{d:"cmcArchive",c:"PKIX key purpose"},"1.3.6.1.5.5.7.3.30":{d:"bgpsecRouter",c:"PKIX key purpose"},"1.3.6.1.5.5.7.4":{d:"cmpInformationTypes",c:"PKIX"},"1.3.6.1.5.5.7.4.1":{d:"caProtEncCert",c:"PKIX CMP information"},"1.3.6.1.5.5.7.4.2":{d:"signKeyPairTypes",c:"PKIX CMP information"},"1.3.6.1.5.5.7.4.3":{d:"encKeyPairTypes",c:"PKIX CMP information"},"1.3.6.1.5.5.7.4.4":{d:"preferredSymmAlg",c:"PKIX CMP information"},"1.3.6.1.5.5.7.4.5":{d:"caKeyUpdateInfo",c:"PKIX CMP information"},"1.3.6.1.5.5.7.4.6":{d:"currentCRL",c:"PKIX CMP information"},"1.3.6.1.5.5.7.4.7":{d:"unsupportedOIDs",c:"PKIX CMP information"},"1.3.6.1.5.5.7.4.10":{d:"keyPairParamReq",c:"PKIX CMP information"},"1.3.6.1.5.5.7.4.11":{d:"keyPairParamRep",c:"PKIX CMP information"},"1.3.6.1.5.5.7.4.12":{d:"revPassphrase",c:"PKIX CMP information"},"1.3.6.1.5.5.7.4.13":{d:"implicitConfirm",c:"PKIX CMP information"},"1.3.6.1.5.5.7.4.14":{d:"confirmWaitTime",c:"PKIX CMP information"},"1.3.6.1.5.5.7.4.15":{d:"origPKIMessage",c:"PKIX CMP information"},"1.3.6.1.5.5.7.4.16":{d:"suppLangTags",c:"PKIX CMP information"},"1.3.6.1.5.5.7.5":{d:"crmfRegistration",c:"PKIX"},"1.3.6.1.5.5.7.5.1":{d:"regCtrl",c:"PKIX CRMF registration"},"1.3.6.1.5.5.7.5.1.1":{d:"regToken",c:"PKIX CRMF registration control"},"1.3.6.1.5.5.7.5.1.2":{d:"authenticator",c:"PKIX CRMF registration control"},"1.3.6.1.5.5.7.5.1.3":{d:"pkiPublicationInfo",c:"PKIX CRMF registration control"},"1.3.6.1.5.5.7.5.1.4":{d:"pkiArchiveOptions",c:"PKIX CRMF registration control"},"1.3.6.1.5.5.7.5.1.5":{d:"oldCertID",c:"PKIX CRMF registration control"},"1.3.6.1.5.5.7.5.1.6":{d:"protocolEncrKey",c:"PKIX CRMF registration control"},"1.3.6.1.5.5.7.5.1.7":{d:"altCertTemplate",c:"PKIX CRMF registration control"},"1.3.6.1.5.5.7.5.1.8":{d:"wtlsTemplate",c:"PKIX CRMF registration control"},"1.3.6.1.5.5.7.5.2":{d:"utf8Pairs",c:"PKIX CRMF registration"},"1.3.6.1.5.5.7.5.2.1":{d:"utf8Pairs",c:"PKIX CRMF registration control"},"1.3.6.1.5.5.7.5.2.2":{d:"certReq",c:"PKIX CRMF registration control"},"1.3.6.1.5.5.7.6":{d:"algorithms",c:"PKIX"},"1.3.6.1.5.5.7.6.1":{d:"des40",c:"PKIX algorithm"},"1.3.6.1.5.5.7.6.2":{d:"noSignature",c:"PKIX algorithm"},"1.3.6.1.5.5.7.6.3":{d:"dhSigHmacSha1",c:"PKIX algorithm"},"1.3.6.1.5.5.7.6.4":{d:"dhPop",c:"PKIX algorithm"},"1.3.6.1.5.5.7.6.5":{d:"dhPopSha224",c:"PKIX algorithm"},"1.3.6.1.5.5.7.6.6":{d:"dhPopSha256",c:"PKIX algorithm"},"1.3.6.1.5.5.7.6.7":{d:"dhPopSha384",c:"PKIX algorithm"},"1.3.6.1.5.5.7.6.8":{d:"dhPopSha512",c:"PKIX algorithm"},"1.3.6.1.5.5.7.6.15":{d:"dhPopStaticSha224HmacSha224",c:"PKIX algorithm"},"1.3.6.1.5.5.7.6.16":{d:"dhPopStaticSha256HmacSha256",c:"PKIX algorithm"},"1.3.6.1.5.5.7.6.17":{d:"dhPopStaticSha384HmacSha384",c:"PKIX algorithm"},"1.3.6.1.5.5.7.6.18":{d:"dhPopStaticSha512HmacSha512",c:"PKIX algorithm"},"1.3.6.1.5.5.7.6.25":{d:"ecdhPopStaticSha224HmacSha224",c:"PKIX algorithm"},"1.3.6.1.5.5.7.6.26":{d:"ecdhPopStaticSha256HmacSha256",c:"PKIX algorithm"},"1.3.6.1.5.5.7.6.27":{d:"ecdhPopStaticSha384HmacSha384",c:"PKIX algorithm"},"1.3.6.1.5.5.7.6.28":{d:"ecdhPopStaticSha512HmacSha512",c:"PKIX algorithm"},"1.3.6.1.5.5.7.7":{d:"cmcControls",c:"PKIX"},"1.3.6.1.5.5.7.8":{d:"otherNames",c:"PKIX"},"1.3.6.1.5.5.7.8.1":{d:"personalData",c:"PKIX other name"},"1.3.6.1.5.5.7.8.2":{d:"userGroup",c:"PKIX other name"},"1.3.6.1.5.5.7.8.5":{d:"xmppAddr",c:"PKIX other name"},"1.3.6.1.5.5.7.9":{d:"personalData",c:"PKIX qualified certificates"},"1.3.6.1.5.5.7.9.1":{d:"dateOfBirth",c:"PKIX personal data"},"1.3.6.1.5.5.7.9.2":{d:"placeOfBirth",c:"PKIX personal data"},"1.3.6.1.5.5.7.9.3":{d:"gender",c:"PKIX personal data"},"1.3.6.1.5.5.7.9.4":{d:"countryOfCitizenship",c:"PKIX personal data"},"1.3.6.1.5.5.7.9.5":{d:"countryOfResidence",c:"PKIX personal data"},"1.3.6.1.5.5.7.10":{d:"attributeCertificate",c:"PKIX"},"1.3.6.1.5.5.7.10.1":{d:"authenticationInfo",c:"PKIX attribute certificate extension"},"1.3.6.1.5.5.7.10.2":{d:"accessIdentity",c:"PKIX attribute certificate extension"},"1.3.6.1.5.5.7.10.3":{d:"chargingIdentity",c:"PKIX attribute certificate extension"},"1.3.6.1.5.5.7.10.4":{d:"group",c:"PKIX attribute certificate extension"},"1.3.6.1.5.5.7.10.5":{d:"role",c:"PKIX attribute certificate extension"},"1.3.6.1.5.5.7.10.6":{d:"wlanSSID",c:"PKIX attribute-certificate extension"},"1.3.6.1.5.5.7.11":{d:"personalData",c:"PKIX qualified certificates"},"1.3.6.1.5.5.7.11.1":{d:"pkixQCSyntax-v1",c:"PKIX qualified certificates"},"1.3.6.1.5.5.7.14.2":{d:"resourceCertificatePolicy",c:"PKIX policies"},"1.3.6.1.5.5.7.20":{d:"logo",c:"PKIX qualified certificates"},"1.3.6.1.5.5.7.20.1":{d:"logoLoyalty",c:"PKIX"},"1.3.6.1.5.5.7.20.2":{d:"logoBackground",c:"PKIX"},"1.3.6.1.5.5.7.48.1":{d:"ocsp",c:"PKIX"},"1.3.6.1.5.5.7.48.1.1":{d:"ocspBasic",c:"OCSP"},"1.3.6.1.5.5.7.48.1.2":{d:"ocspNonce",c:"OCSP"},"1.3.6.1.5.5.7.48.1.3":{d:"ocspCRL",c:"OCSP"},"1.3.6.1.5.5.7.48.1.4":{d:"ocspResponse",c:"OCSP"},"1.3.6.1.5.5.7.48.1.5":{d:"ocspNoCheck",c:"OCSP"},"1.3.6.1.5.5.7.48.1.6":{d:"ocspArchiveCutoff",c:"OCSP"},"1.3.6.1.5.5.7.48.1.7":{d:"ocspServiceLocator",c:"OCSP"},"1.3.6.1.5.5.7.48.2":{d:"caIssuers",c:"PKIX subject/authority info access descriptor"},"1.3.6.1.5.5.7.48.3":{d:"timeStamping",c:"PKIX subject/authority info access descriptor"},"1.3.6.1.5.5.7.48.4":{d:"dvcs",c:"PKIX subject/authority info access descriptor"},"1.3.6.1.5.5.7.48.5":{d:"caRepository",c:"PKIX subject/authority info access descriptor"},"1.3.6.1.5.5.7.48.7":{d:"signedObjectRepository",c:"PKIX subject/authority info access descriptor"},"1.3.6.1.5.5.7.48.10":{d:"rpkiManifest",c:"PKIX subject/authority info access descriptor"},"1.3.6.1.5.5.7.48.11":{d:"signedObject",c:"PKIX subject/authority info access descriptor"},"1.3.6.1.5.5.8.1.1":{d:"hmacMD5",c:"ISAKMP HMAC algorithm"},"1.3.6.1.5.5.8.1.2":{d:"hmacSHA",c:"ISAKMP HMAC algorithm"},"1.3.6.1.5.5.8.1.3":{d:"hmacTiger",c:"ISAKMP HMAC algorithm"},"1.3.6.1.5.5.8.2.2":{d:"iKEIntermediate",c:"IKE ???"},"1.3.12.2.1011.7.1":{d:"decEncryptionAlgorithm",c:"DASS algorithm"},"1.3.12.2.1011.7.1.2":{d:"decDEA",c:"DASS encryption algorithm"},"1.3.12.2.1011.7.2":{d:"decHashAlgorithm",c:"DASS algorithm"},"1.3.12.2.1011.7.2.1":{d:"decMD2",c:"DASS hash algorithm"},"1.3.12.2.1011.7.2.2":{d:"decMD4",c:"DASS hash algorithm"},"1.3.12.2.1011.7.3":{d:"decSignatureAlgorithm",c:"DASS algorithm"},"1.3.12.2.1011.7.3.1":{d:"decMD2withRSA",c:"DASS signature algorithm"},"1.3.12.2.1011.7.3.2":{d:"decMD4withRSA",c:"DASS signature algorithm"},"1.3.12.2.1011.7.3.3":{d:"decDEAMAC",c:"DASS signature algorithm"},"1.3.14.2.26.5":{d:"sha",c:"Unsure about this OID"},"1.3.14.3.2.1.1":{d:"rsa",c:"X.509. Unsure about this OID"},"1.3.14.3.2.2":{d:"md4WitRSA",c:"Oddball OIW OID"},"1.3.14.3.2.3":{d:"md5WithRSA",c:"Oddball OIW OID"},"1.3.14.3.2.4":{d:"md4WithRSAEncryption",c:"Oddball OIW OID"},"1.3.14.3.2.2.1":{d:"sqmod-N",c:"X.509. Deprecated",w:!0},"1.3.14.3.2.3.1":{d:"sqmod-NwithRSA",c:"X.509. Deprecated",w:!0},"1.3.14.3.2.6":{d:"desECB",c:""},"1.3.14.3.2.7":{d:"desCBC",c:""},"1.3.14.3.2.8":{d:"desOFB",c:""},"1.3.14.3.2.9":{d:"desCFB",c:""},"1.3.14.3.2.10":{d:"desMAC",c:""},"1.3.14.3.2.11":{d:"rsaSignature",c:"ISO 9796-2, also X9.31 Part 1"},"1.3.14.3.2.12":{d:"dsa",c:"OIW?, supposedly from an incomplete version of SDN.701 (doesn't match final SDN.701)",w:!0},"1.3.14.3.2.13":{d:"dsaWithSHA",c:"Oddball OIW OID. Incorrectly used by JDK 1.1 in place of (1 3 14 3 2 27)",w:!0},"1.3.14.3.2.14":{d:"mdc2WithRSASignature",c:"Oddball OIW OID using 9796-2 padding rules"},"1.3.14.3.2.15":{d:"shaWithRSASignature",c:"Oddball OIW OID using 9796-2 padding rules"},"1.3.14.3.2.16":{d:"dhWithCommonModulus",c:"Oddball OIW OID. Deprecated, use a plain DH OID instead",w:!0},"1.3.14.3.2.17":{d:"desEDE",c:"Oddball OIW OID. Mode is ECB"},"1.3.14.3.2.18":{d:"sha",c:"Oddball OIW OID"},"1.3.14.3.2.19":{d:"mdc-2",c:"Oddball OIW OID, DES-based hash, planned for X9.31 Part 2"},"1.3.14.3.2.20":{d:"dsaCommon",c:"Oddball OIW OID. Deprecated, use a plain DSA OID instead",w:!0},"1.3.14.3.2.21":{d:"dsaCommonWithSHA",c:"Oddball OIW OID. Deprecated, use a plain dsaWithSHA OID instead",w:!0},"1.3.14.3.2.22":{d:"rsaKeyTransport",c:"Oddball OIW OID"},"1.3.14.3.2.23":{d:"keyed-hash-seal",c:"Oddball OIW OID"},"1.3.14.3.2.24":{d:"md2WithRSASignature",c:"Oddball OIW OID using 9796-2 padding rules"},"1.3.14.3.2.25":{d:"md5WithRSASignature",c:"Oddball OIW OID using 9796-2 padding rules"},"1.3.14.3.2.26":{d:"sha1",c:"OIW"},"1.3.14.3.2.27":{d:"dsaWithSHA1",c:"OIW. This OID may also be assigned as ripemd-160"},"1.3.14.3.2.28":{d:"dsaWithCommonSHA1",c:"OIW"},"1.3.14.3.2.29":{d:"sha-1WithRSAEncryption",c:"Oddball OIW OID"},"1.3.14.3.3.1":{d:"simple-strong-auth-mechanism",c:"Oddball OIW OID"},"1.3.14.7.2.1.1":{d:"ElGamal",c:"Unsure about this OID"},"1.3.14.7.2.3.1":{d:"md2WithRSA",c:"Unsure about this OID"},"1.3.14.7.2.3.2":{d:"md2WithElGamal",c:"Unsure about this OID"},"1.3.36.1":{d:"document",c:"Teletrust document"},"1.3.36.1.1":{d:"finalVersion",c:"Teletrust document"},"1.3.36.1.2":{d:"draft",c:"Teletrust document"},"1.3.36.2":{d:"sio",c:"Teletrust sio"},"1.3.36.2.1":{d:"sedu",c:"Teletrust sio"},"1.3.36.3":{d:"algorithm",c:"Teletrust algorithm"},"1.3.36.3.1":{d:"encryptionAlgorithm",c:"Teletrust algorithm"},"1.3.36.3.1.1":{d:"des",c:"Teletrust encryption algorithm"},"1.3.36.3.1.1.1":{d:"desECB_pad",c:"Teletrust encryption algorithm"},"1.3.36.3.1.1.1.1":{d:"desECB_ISOpad",c:"Teletrust encryption algorithm"},"1.3.36.3.1.1.2.1":{d:"desCBC_pad",c:"Teletrust encryption algorithm"},"1.3.36.3.1.1.2.1.1":{d:"desCBC_ISOpad",c:"Teletrust encryption algorithm"},"1.3.36.3.1.3":{d:"des_3",c:"Teletrust encryption algorithm"},"1.3.36.3.1.3.1.1":{d:"des_3ECB_pad",c:"Teletrust encryption algorithm. EDE triple DES"},"1.3.36.3.1.3.1.1.1":{d:"des_3ECB_ISOpad",c:"Teletrust encryption algorithm. EDE triple DES"},"1.3.36.3.1.3.2.1":{d:"des_3CBC_pad",c:"Teletrust encryption algorithm. EDE triple DES"},"1.3.36.3.1.3.2.1.1":{d:"des_3CBC_ISOpad",c:"Teletrust encryption algorithm. EDE triple DES"},"1.3.36.3.1.2":{d:"idea",c:"Teletrust encryption algorithm"},"1.3.36.3.1.2.1":{d:"ideaECB",c:"Teletrust encryption algorithm"},"1.3.36.3.1.2.1.1":{d:"ideaECB_pad",c:"Teletrust encryption algorithm"},"1.3.36.3.1.2.1.1.1":{d:"ideaECB_ISOpad",c:"Teletrust encryption algorithm"},"1.3.36.3.1.2.2":{d:"ideaCBC",c:"Teletrust encryption algorithm"},"1.3.36.3.1.2.2.1":{d:"ideaCBC_pad",c:"Teletrust encryption algorithm"},"1.3.36.3.1.2.2.1.1":{d:"ideaCBC_ISOpad",c:"Teletrust encryption algorithm"},"1.3.36.3.1.2.3":{d:"ideaOFB",c:"Teletrust encryption algorithm"},"1.3.36.3.1.2.4":{d:"ideaCFB",c:"Teletrust encryption algorithm"},"1.3.36.3.1.4":{d:"rsaEncryption",c:"Teletrust encryption algorithm"},"1.3.36.3.1.4.512.17":{d:"rsaEncryptionWithlmod512expe17",c:"Teletrust encryption algorithm"},"1.3.36.3.1.5":{d:"bsi-1",c:"Teletrust encryption algorithm"},"1.3.36.3.1.5.1":{d:"bsi_1ECB_pad",c:"Teletrust encryption algorithm"},"1.3.36.3.1.5.2":{d:"bsi_1CBC_pad",c:"Teletrust encryption algorithm"},"1.3.36.3.1.5.2.1":{d:"bsi_1CBC_PEMpad",c:"Teletrust encryption algorithm"},"1.3.36.3.2":{d:"hashAlgorithm",c:"Teletrust algorithm"},"1.3.36.3.2.1":{d:"ripemd160",c:"Teletrust hash algorithm"},"1.3.36.3.2.2":{d:"ripemd128",c:"Teletrust hash algorithm"},"1.3.36.3.2.3":{d:"ripemd256",c:"Teletrust hash algorithm"},"1.3.36.3.2.4":{d:"mdc2singleLength",c:"Teletrust hash algorithm"},"1.3.36.3.2.5":{d:"mdc2doubleLength",c:"Teletrust hash algorithm"},"1.3.36.3.3":{d:"signatureAlgorithm",c:"Teletrust algorithm"},"1.3.36.3.3.1":{d:"rsaSignature",c:"Teletrust signature algorithm"},"1.3.36.3.3.1.1":{d:"rsaSignatureWithsha1",c:"Teletrust signature algorithm"},"1.3.36.3.3.1.1.1024.11":{d:"rsaSignatureWithsha1_l1024_l11",c:"Teletrust signature algorithm"},"1.3.36.3.3.1.2":{d:"rsaSignatureWithripemd160",c:"Teletrust signature algorithm"},"1.3.36.3.3.1.2.1024.11":{d:"rsaSignatureWithripemd160_l1024_l11",c:"Teletrust signature algorithm"},"1.3.36.3.3.1.3":{d:"rsaSignatureWithrimpemd128",c:"Teletrust signature algorithm"},"1.3.36.3.3.1.4":{d:"rsaSignatureWithrimpemd256",c:"Teletrust signature algorithm"},"1.3.36.3.3.2":{d:"ecsieSign",c:"Teletrust signature algorithm"},"1.3.36.3.3.2.1":{d:"ecsieSignWithsha1",c:"Teletrust signature algorithm"},"1.3.36.3.3.2.2":{d:"ecsieSignWithripemd160",c:"Teletrust signature algorithm"},"1.3.36.3.3.2.3":{d:"ecsieSignWithmd2",c:"Teletrust signature algorithm"},"1.3.36.3.3.2.4":{d:"ecsieSignWithmd5",c:"Teletrust signature algorithm"},"1.3.36.3.3.2.8.1.1.1":{d:"brainpoolP160r1",c:"ECC Brainpool Standard Curves and Curve Generation"},"1.3.36.3.3.2.8.1.1.2":{d:"brainpoolP160t1",c:"ECC Brainpool Standard Curves and Curve Generation"},"1.3.36.3.3.2.8.1.1.3":{d:"brainpoolP192r1",c:"ECC Brainpool Standard Curves and Curve Generation"},"1.3.36.3.3.2.8.1.1.4":{d:"brainpoolP192t1",c:"ECC Brainpool Standard Curves and Curve Generation"},"1.3.36.3.3.2.8.1.1.5":{d:"brainpoolP224r1",c:"ECC Brainpool Standard Curves and Curve Generation"},"1.3.36.3.3.2.8.1.1.6":{d:"brainpoolP224t1",c:"ECC Brainpool Standard Curves and Curve Generation"},"1.3.36.3.3.2.8.1.1.7":{d:"brainpoolP256r1",c:"ECC Brainpool Standard Curves and Curve Generation"},"1.3.36.3.3.2.8.1.1.8":{d:"brainpoolP256t1",c:"ECC Brainpool Standard Curves and Curve Generation"},"1.3.36.3.3.2.8.1.1.9":{d:"brainpoolP320r1",c:"ECC Brainpool Standard Curves and Curve Generation"},"1.3.36.3.3.2.8.1.1.10":{d:"brainpoolP320t1",c:"ECC Brainpool Standard Curves and Curve Generation"},"1.3.36.3.3.2.8.1.1.11":{d:"brainpoolP384r1",c:"ECC Brainpool Standard Curves and Curve Generation"},"1.3.36.3.3.2.8.1.1.12":{d:"brainpoolP384t1",c:"ECC Brainpool Standard Curves and Curve Generation"},"1.3.36.3.3.2.8.1.1.13":{d:"brainpoolP512r1",c:"ECC Brainpool Standard Curves and Curve Generation"},"1.3.36.3.3.2.8.1.1.14":{d:"brainpoolP512t1",c:"ECC Brainpool Standard Curves and Curve Generation"},"1.3.36.3.4":{d:"signatureScheme",c:"Teletrust algorithm"},"1.3.36.3.4.1":{d:"sigS_ISO9796-1",c:"Teletrust signature scheme"},"1.3.36.3.4.2":{d:"sigS_ISO9796-2",c:"Teletrust signature scheme"},"1.3.36.3.4.2.1":{d:"sigS_ISO9796-2Withred",c:"Teletrust signature scheme. Unsure what this is supposed to be"},"1.3.36.3.4.2.2":{d:"sigS_ISO9796-2Withrsa",c:"Teletrust signature scheme. Unsure what this is supposed to be"},"1.3.36.3.4.2.3":{d:"sigS_ISO9796-2Withrnd",c:"Teletrust signature scheme. 9796-2 with random number in padding field"},"1.3.36.4":{d:"attribute",c:"Teletrust attribute"},"1.3.36.5":{d:"policy",c:"Teletrust policy"},"1.3.36.6":{d:"api",c:"Teletrust API"},"1.3.36.6.1":{d:"manufacturer-specific_api",c:"Teletrust API"},"1.3.36.6.1.1":{d:"utimaco-api",c:"Teletrust API"},"1.3.36.6.2":{d:"functionality-specific_api",c:"Teletrust API"},"1.3.36.7":{d:"keymgmnt",c:"Teletrust key management"},"1.3.36.7.1":{d:"keyagree",c:"Teletrust key management"},"1.3.36.7.1.1":{d:"bsiPKE",c:"Teletrust key management"},"1.3.36.7.2":{d:"keytrans",c:"Teletrust key management"},"1.3.36.7.2.1":{d:"encISO9796-2Withrsa",c:"Teletrust key management. 9796-2 with key stored in hash field"},"1.3.36.8.1.1":{d:"Teletrust SigGConform policyIdentifier",c:"Teletrust policy"},"1.3.36.8.2.1":{d:"directoryService",c:"Teletrust extended key usage"},"1.3.36.8.3.1":{d:"dateOfCertGen",c:"Teletrust attribute"},"1.3.36.8.3.2":{d:"procuration",c:"Teletrust attribute"},"1.3.36.8.3.3":{d:"admission",c:"Teletrust attribute"},"1.3.36.8.3.4":{d:"monetaryLimit",c:"Teletrust attribute"},"1.3.36.8.3.5":{d:"declarationOfMajority",c:"Teletrust attribute"},"1.3.36.8.3.6":{d:"integratedCircuitCardSerialNumber",c:"Teletrust attribute"},"1.3.36.8.3.7":{d:"pKReference",c:"Teletrust attribute"},"1.3.36.8.3.8":{d:"restriction",c:"Teletrust attribute"},"1.3.36.8.3.9":{d:"retrieveIfAllowed",c:"Teletrust attribute"},"1.3.36.8.3.10":{d:"requestedCertificate",c:"Teletrust attribute"},"1.3.36.8.3.11":{d:"namingAuthorities",c:"Teletrust attribute"},"1.3.36.8.3.11.1":{d:"rechtWirtschaftSteuern",c:"Teletrust naming authorities"},"1.3.36.8.3.11.1.1":{d:"rechtsanwaeltin",c:"Teletrust ProfessionInfo"},"1.3.36.8.3.11.1.2":{d:"rechtsanwalt",c:"Teletrust ProfessionInfo"},"1.3.36.8.3.11.1.3":{d:"rechtsBeistand",c:"Teletrust ProfessionInfo"},"1.3.36.8.3.11.1.4":{d:"steuerBeraterin",c:"Teletrust ProfessionInfo"},"1.3.36.8.3.11.1.5":{d:"steuerBerater",c:"Teletrust ProfessionInfo"},"1.3.36.8.3.11.1.6":{d:"steuerBevollmaechtigte",c:"Teletrust ProfessionInfo"},"1.3.36.8.3.11.1.7":{d:"steuerBevollmaechtigter",c:"Teletrust ProfessionInfo"},"1.3.36.8.3.11.1.8":{d:"notarin",c:"Teletrust ProfessionInfo"},"1.3.36.8.3.11.1.9":{d:"notar",c:"Teletrust ProfessionInfo"},"1.3.36.8.3.11.1.10":{d:"notarVertreterin",c:"Teletrust ProfessionInfo"},"1.3.36.8.3.11.1.11":{d:"notarVertreter",c:"Teletrust ProfessionInfo"},"1.3.36.8.3.11.1.12":{d:"notariatsVerwalterin",c:"Teletrust ProfessionInfo"},"1.3.36.8.3.11.1.13":{d:"notariatsVerwalter",c:"Teletrust ProfessionInfo"},"1.3.36.8.3.11.1.14":{d:"wirtschaftsPrueferin",c:"Teletrust ProfessionInfo"},"1.3.36.8.3.11.1.15":{d:"wirtschaftsPruefer",c:"Teletrust ProfessionInfo"},"1.3.36.8.3.11.1.16":{d:"vereidigteBuchprueferin",c:"Teletrust ProfessionInfo"},"1.3.36.8.3.11.1.17":{d:"vereidigterBuchpruefer",c:"Teletrust ProfessionInfo"},"1.3.36.8.3.11.1.18":{d:"patentAnwaeltin",c:"Teletrust ProfessionInfo"},"1.3.36.8.3.11.1.19":{d:"patentAnwalt",c:"Teletrust ProfessionInfo"},"1.3.36.8.3.12":{d:"certInDirSince",c:"Teletrust OCSP attribute (obsolete)",w:!0},"1.3.36.8.3.13":{d:"certHash",c:"Teletrust OCSP attribute"},"1.3.36.8.3.14":{d:"nameAtBirth",c:"Teletrust attribute"},"1.3.36.8.3.15":{d:"additionalInformation",c:"Teletrust attribute"},"1.3.36.8.4.1":{d:"personalData",c:"Teletrust OtherName attribute"},"1.3.36.8.4.8":{d:"restriction",c:"Teletrust attribute certificate attribute"},"1.3.36.8.5.1.1.1":{d:"rsaIndicateSHA1",c:"Teletrust signature algorithm"},"1.3.36.8.5.1.1.2":{d:"rsaIndicateRIPEMD160",c:"Teletrust signature algorithm"},"1.3.36.8.5.1.1.3":{d:"rsaWithSHA1",c:"Teletrust signature algorithm"},"1.3.36.8.5.1.1.4":{d:"rsaWithRIPEMD160",c:"Teletrust signature algorithm"},"1.3.36.8.5.1.2.1":{d:"dsaExtended",c:"Teletrust signature algorithm"},"1.3.36.8.5.1.2.2":{d:"dsaWithRIPEMD160",c:"Teletrust signature algorithm"},"1.3.36.8.6.1":{d:"cert",c:"Teletrust signature attributes"},"1.3.36.8.6.2":{d:"certRef",c:"Teletrust signature attributes"},"1.3.36.8.6.3":{d:"attrCert",c:"Teletrust signature attributes"},"1.3.36.8.6.4":{d:"attrRef",c:"Teletrust signature attributes"},"1.3.36.8.6.5":{d:"fileName",c:"Teletrust signature attributes"},"1.3.36.8.6.6":{d:"storageTime",c:"Teletrust signature attributes"},"1.3.36.8.6.7":{d:"fileSize",c:"Teletrust signature attributes"},"1.3.36.8.6.8":{d:"location",c:"Teletrust signature attributes"},"1.3.36.8.6.9":{d:"sigNumber",c:"Teletrust signature attributes"},"1.3.36.8.6.10":{d:"autoGen",c:"Teletrust signature attributes"},"1.3.36.8.7.1.1":{d:"ptAdobeILL",c:"Teletrust presentation types"},"1.3.36.8.7.1.2":{d:"ptAmiPro",c:"Teletrust presentation types"},"1.3.36.8.7.1.3":{d:"ptAutoCAD",c:"Teletrust presentation types"},"1.3.36.8.7.1.4":{d:"ptBinary",c:"Teletrust presentation types"},"1.3.36.8.7.1.5":{d:"ptBMP",c:"Teletrust presentation types"},"1.3.36.8.7.1.6":{d:"ptCGM",c:"Teletrust presentation types"},"1.3.36.8.7.1.7":{d:"ptCorelCRT",c:"Teletrust presentation types"},"1.3.36.8.7.1.8":{d:"ptCorelDRW",c:"Teletrust presentation types"},"1.3.36.8.7.1.9":{d:"ptCorelEXC",c:"Teletrust presentation types"},"1.3.36.8.7.1.10":{d:"ptCorelPHT",c:"Teletrust presentation types"},"1.3.36.8.7.1.11":{d:"ptDraw",c:"Teletrust presentation types"},"1.3.36.8.7.1.12":{d:"ptDVI",c:"Teletrust presentation types"},"1.3.36.8.7.1.13":{d:"ptEPS",c:"Teletrust presentation types"},"1.3.36.8.7.1.14":{d:"ptExcel",c:"Teletrust presentation types"},"1.3.36.8.7.1.15":{d:"ptGEM",c:"Teletrust presentation types"},"1.3.36.8.7.1.16":{d:"ptGIF",c:"Teletrust presentation types"},"1.3.36.8.7.1.17":{d:"ptHPGL",c:"Teletrust presentation types"},"1.3.36.8.7.1.18":{d:"ptJPEG",c:"Teletrust presentation types"},"1.3.36.8.7.1.19":{d:"ptKodak",c:"Teletrust presentation types"},"1.3.36.8.7.1.20":{d:"ptLaTeX",c:"Teletrust presentation types"},"1.3.36.8.7.1.21":{d:"ptLotus",c:"Teletrust presentation types"},"1.3.36.8.7.1.22":{d:"ptLotusPIC",c:"Teletrust presentation types"},"1.3.36.8.7.1.23":{d:"ptMacPICT",c:"Teletrust presentation types"},"1.3.36.8.7.1.24":{d:"ptMacWord",c:"Teletrust presentation types"},"1.3.36.8.7.1.25":{d:"ptMSWfD",c:"Teletrust presentation types"},"1.3.36.8.7.1.26":{d:"ptMSWord",c:"Teletrust presentation types"},"1.3.36.8.7.1.27":{d:"ptMSWord2",c:"Teletrust presentation types"},"1.3.36.8.7.1.28":{d:"ptMSWord6",c:"Teletrust presentation types"},"1.3.36.8.7.1.29":{d:"ptMSWord8",c:"Teletrust presentation types"},"1.3.36.8.7.1.30":{d:"ptPDF",c:"Teletrust presentation types"},"1.3.36.8.7.1.31":{d:"ptPIF",c:"Teletrust presentation types"},"1.3.36.8.7.1.32":{d:"ptPostscript",c:"Teletrust presentation types"},"1.3.36.8.7.1.33":{d:"ptRTF",c:"Teletrust presentation types"},"1.3.36.8.7.1.34":{d:"ptSCITEX",c:"Teletrust presentation types"},"1.3.36.8.7.1.35":{d:"ptTAR",c:"Teletrust presentation types"},"1.3.36.8.7.1.36":{d:"ptTarga",c:"Teletrust presentation types"},"1.3.36.8.7.1.37":{d:"ptTeX",c:"Teletrust presentation types"},"1.3.36.8.7.1.38":{d:"ptText",c:"Teletrust presentation types"},"1.3.36.8.7.1.39":{d:"ptTIFF",c:"Teletrust presentation types"},"1.3.36.8.7.1.40":{d:"ptTIFF-FC",c:"Teletrust presentation types"},"1.3.36.8.7.1.41":{d:"ptUID",c:"Teletrust presentation types"},"1.3.36.8.7.1.42":{d:"ptUUEncode",c:"Teletrust presentation types"},"1.3.36.8.7.1.43":{d:"ptWMF",c:"Teletrust presentation types"},"1.3.36.8.7.1.44":{d:"ptWordPerfect",c:"Teletrust presentation types"},"1.3.36.8.7.1.45":{d:"ptWPGrph",c:"Teletrust presentation types"},"1.3.101.1.4":{d:"thawte-ce",c:"Thawte"},"1.3.101.1.4.1":{d:"strongExtranet",c:"Thawte certificate extension"},"1.3.101.110":{d:"curveX25519",c:"ECDH 25519 key agreement algorithm"},"1.3.101.111":{d:"curveX448",c:"ECDH 448 key agreement algorithm"},"1.3.101.112":{d:"curveEd25519",c:"EdDSA 25519 signature algorithm"},"1.3.101.113":{d:"curveEd448",c:"EdDSA 448 signature algorithm"},"1.3.101.114":{d:"curveEd25519ph",c:"EdDSA 25519 pre-hash signature algorithm"},"1.3.101.115":{d:"curveEd448ph",c:"EdDSA 448 pre-hash signature algorithm"},"1.3.132.0.1":{d:"sect163k1",c:"SECG (Certicom) named elliptic curve"},"1.3.132.0.2":{d:"sect163r1",c:"SECG (Certicom) named elliptic curve"},"1.3.132.0.3":{d:"sect239k1",c:"SECG (Certicom) named elliptic curve"},"1.3.132.0.4":{d:"sect113r1",c:"SECG (Certicom) named elliptic curve"},"1.3.132.0.5":{d:"sect113r2",c:"SECG (Certicom) named elliptic curve"},"1.3.132.0.6":{d:"secp112r1",c:"SECG (Certicom) named elliptic curve"},"1.3.132.0.7":{d:"secp112r2",c:"SECG (Certicom) named elliptic curve"},"1.3.132.0.8":{d:"secp160r1",c:"SECG (Certicom) named elliptic curve"},"1.3.132.0.9":{d:"secp160k1",c:"SECG (Certicom) named elliptic curve"},"1.3.132.0.10":{d:"secp256k1",c:"SECG (Certicom) named elliptic curve"},"1.3.132.0.15":{d:"sect163r2",c:"SECG (Certicom) named elliptic curve"},"1.3.132.0.16":{d:"sect283k1",c:"SECG (Certicom) named elliptic curve"},"1.3.132.0.17":{d:"sect283r1",c:"SECG (Certicom) named elliptic curve"},"1.3.132.0.22":{d:"sect131r1",c:"SECG (Certicom) named elliptic curve"},"1.3.132.0.23":{d:"sect131r2",c:"SECG (Certicom) named elliptic curve"},"1.3.132.0.24":{d:"sect193r1",c:"SECG (Certicom) named elliptic curve"},"1.3.132.0.25":{d:"sect193r2",c:"SECG (Certicom) named elliptic curve"},"1.3.132.0.26":{d:"sect233k1",c:"SECG (Certicom) named elliptic curve"},"1.3.132.0.27":{d:"sect233r1",c:"SECG (Certicom) named elliptic curve"},"1.3.132.0.28":{d:"secp128r1",c:"SECG (Certicom) named elliptic curve"},"1.3.132.0.29":{d:"secp128r2",c:"SECG (Certicom) named elliptic curve"},"1.3.132.0.30":{d:"secp160r2",c:"SECG (Certicom) named elliptic curve"},"1.3.132.0.31":{d:"secp192k1",c:"SECG (Certicom) named elliptic curve"},"1.3.132.0.32":{d:"secp224k1",c:"SECG (Certicom) named elliptic curve"},"1.3.132.0.33":{d:"secp224r1",c:"SECG (Certicom) named elliptic curve"},"1.3.132.0.34":{d:"secp384r1",c:"SECG (Certicom) named elliptic curve"},"1.3.132.0.35":{d:"secp521r1",c:"SECG (Certicom) named elliptic curve"},"1.3.132.0.36":{d:"sect409k1",c:"SECG (Certicom) named elliptic curve"},"1.3.132.0.37":{d:"sect409r1",c:"SECG (Certicom) named elliptic curve"},"1.3.132.0.38":{d:"sect571k1",c:"SECG (Certicom) named elliptic curve"},"1.3.132.0.39":{d:"sect571r1",c:"SECG (Certicom) named elliptic curve"},"1.3.132.1.11.1":{d:"ecdhX963KDF-SHA256",c:"SECG (Certicom) elliptic curve key agreement"},"1.3.132.1.11.2":{d:"ecdhX963KDF-SHA384",c:"SECG (Certicom) elliptic curve key agreement"},"1.3.132.1.11.3":{d:"ecdhX963KDF-SHA512",c:"SECG (Certicom) elliptic curve key agreement"},"1.3.133.16.840.9.44":{d:"x944",c:"X9.44"},"1.3.133.16.840.9.44.1":{d:"x944Components",c:"X9.44"},"1.3.133.16.840.9.44.1.1":{d:"x944Kdf2",c:"X9.44"},"1.3.133.16.840.9.44.1.2":{d:"x944Kdf3",c:"X9.44"},"1.3.133.16.840.9.84":{d:"x984",c:"X9.84"},"1.3.133.16.840.9.84.0":{d:"x984Module",c:"X9.84"},"1.3.133.16.840.9.84.0.1":{d:"x984Biometrics",c:"X9.84 Module"},"1.3.133.16.840.9.84.0.2":{d:"x984CMS",c:"X9.84 Module"},"1.3.133.16.840.9.84.0.3":{d:"x984Identifiers",c:"X9.84 Module"},"1.3.133.16.840.9.84.1":{d:"x984Biometric",c:"X9.84"},"1.3.133.16.840.9.84.1.0":{d:"biometricUnknownType",c:"X9.84 Biometric"},"1.3.133.16.840.9.84.1.1":{d:"biometricBodyOdor",c:"X9.84 Biometric"},"1.3.133.16.840.9.84.1.2":{d:"biometricDNA",c:"X9.84 Biometric"},"1.3.133.16.840.9.84.1.3":{d:"biometricEarShape",c:"X9.84 Biometric"},"1.3.133.16.840.9.84.1.4":{d:"biometricFacialFeatures",c:"X9.84 Biometric"},"1.3.133.16.840.9.84.1.5":{d:"biometricFingerImage",c:"X9.84 Biometric"},"1.3.133.16.840.9.84.1.6":{d:"biometricFingerGeometry",c:"X9.84 Biometric"},"1.3.133.16.840.9.84.1.7":{d:"biometricHandGeometry",c:"X9.84 Biometric"},"1.3.133.16.840.9.84.1.8":{d:"biometricIrisFeatures",c:"X9.84 Biometric"},"1.3.133.16.840.9.84.1.9":{d:"biometricKeystrokeDynamics",c:"X9.84 Biometric"},"1.3.133.16.840.9.84.1.10":{d:"biometricPalm",c:"X9.84 Biometric"},"1.3.133.16.840.9.84.1.11":{d:"biometricRetina",c:"X9.84 Biometric"},"1.3.133.16.840.9.84.1.12":{d:"biometricSignature",c:"X9.84 Biometric"},"1.3.133.16.840.9.84.1.13":{d:"biometricSpeechPattern",c:"X9.84 Biometric"},"1.3.133.16.840.9.84.1.14":{d:"biometricThermalImage",c:"X9.84 Biometric"},"1.3.133.16.840.9.84.1.15":{d:"biometricVeinPattern",c:"X9.84 Biometric"},"1.3.133.16.840.9.84.1.16":{d:"biometricThermalFaceImage",c:"X9.84 Biometric"},"1.3.133.16.840.9.84.1.17":{d:"biometricThermalHandImage",c:"X9.84 Biometric"},"1.3.133.16.840.9.84.1.18":{d:"biometricLipMovement",c:"X9.84 Biometric"},"1.3.133.16.840.9.84.1.19":{d:"biometricGait",c:"X9.84 Biometric"},"1.3.133.16.840.9.84.3":{d:"x984MatchingMethod",c:"X9.84"},"1.3.133.16.840.9.84.4":{d:"x984FormatOwner",c:"X9.84"},"1.3.133.16.840.9.84.4.0":{d:"x984CbeffOwner",c:"X9.84 Format Owner"},"1.3.133.16.840.9.84.4.1":{d:"x984IbiaOwner",c:"X9.84 Format Owner"},"1.3.133.16.840.9.84.4.1.1":{d:"ibiaOwnerSAFLINK",c:"X9.84 IBIA Format Owner"},"1.3.133.16.840.9.84.4.1.2":{d:"ibiaOwnerBioscrypt",c:"X9.84 IBIA Format Owner"},"1.3.133.16.840.9.84.4.1.3":{d:"ibiaOwnerVisionics",c:"X9.84 IBIA Format Owner"},"1.3.133.16.840.9.84.4.1.4":{d:"ibiaOwnerInfineonTechnologiesAG",c:"X9.84 IBIA Format Owner"},"1.3.133.16.840.9.84.4.1.5":{d:"ibiaOwnerIridianTechnologies",c:"X9.84 IBIA Format Owner"},"1.3.133.16.840.9.84.4.1.6":{d:"ibiaOwnerVeridicom",c:"X9.84 IBIA Format Owner"},"1.3.133.16.840.9.84.4.1.7":{d:"ibiaOwnerCyberSIGN",c:"X9.84 IBIA Format Owner"},"1.3.133.16.840.9.84.4.1.8":{d:"ibiaOwnereCryp",c:"X9.84 IBIA Format Owner"},"1.3.133.16.840.9.84.4.1.9":{d:"ibiaOwnerFingerprintCardsAB",c:"X9.84 IBIA Format Owner"},"1.3.133.16.840.9.84.4.1.10":{d:"ibiaOwnerSecuGen",c:"X9.84 IBIA Format Owner"},"1.3.133.16.840.9.84.4.1.11":{d:"ibiaOwnerPreciseBiometric",c:"X9.84 IBIA Format Owner"},"1.3.133.16.840.9.84.4.1.12":{d:"ibiaOwnerIdentix",c:"X9.84 IBIA Format Owner"},"1.3.133.16.840.9.84.4.1.13":{d:"ibiaOwnerDERMALOG",c:"X9.84 IBIA Format Owner"},"1.3.133.16.840.9.84.4.1.14":{d:"ibiaOwnerLOGICO",c:"X9.84 IBIA Format Owner"},"1.3.133.16.840.9.84.4.1.15":{d:"ibiaOwnerNIST",c:"X9.84 IBIA Format Owner"},"1.3.133.16.840.9.84.4.1.16":{d:"ibiaOwnerA3Vision",c:"X9.84 IBIA Format Owner"},"1.3.133.16.840.9.84.4.1.17":{d:"ibiaOwnerNEC",c:"X9.84 IBIA Format Owner"},"1.3.133.16.840.9.84.4.1.18":{d:"ibiaOwnerSTMicroelectronics",c:"X9.84 IBIA Format Owner"},"2.5.4.0":{d:"objectClass",c:"X.520 DN component"},"2.5.4.1":{d:"aliasedEntryName",c:"X.520 DN component"},"2.5.4.2":{d:"knowledgeInformation",c:"X.520 DN component"},"2.5.4.3":{d:"commonName",c:"X.520 DN component"},"2.5.4.4":{d:"surname",c:"X.520 DN component"},"2.5.4.5":{d:"serialNumber",c:"X.520 DN component"},"2.5.4.6":{d:"countryName",c:"X.520 DN component"},"2.5.4.7":{d:"localityName",c:"X.520 DN component"},"2.5.4.7.1":{d:"collectiveLocalityName",c:"X.520 DN component"},"2.5.4.8":{d:"stateOrProvinceName",c:"X.520 DN component"},"2.5.4.8.1":{d:"collectiveStateOrProvinceName",c:"X.520 DN component"},"2.5.4.9":{d:"streetAddress",c:"X.520 DN component"},"2.5.4.9.1":{d:"collectiveStreetAddress",c:"X.520 DN component"},"2.5.4.10":{d:"organizationName",c:"X.520 DN component"},"2.5.4.10.1":{d:"collectiveOrganizationName",c:"X.520 DN component"},"2.5.4.11":{d:"organizationalUnitName",c:"X.520 DN component"},"2.5.4.11.1":{d:"collectiveOrganizationalUnitName",c:"X.520 DN component"},"2.5.4.12":{d:"title",c:"X.520 DN component"},"2.5.4.13":{d:"description",c:"X.520 DN component"},"2.5.4.14":{d:"searchGuide",c:"X.520 DN component"},"2.5.4.15":{d:"businessCategory",c:"X.520 DN component"},"2.5.4.16":{d:"postalAddress",c:"X.520 DN component"},"2.5.4.16.1":{d:"collectivePostalAddress",c:"X.520 DN component"},"2.5.4.17":{d:"postalCode",c:"X.520 DN component"},"2.5.4.17.1":{d:"collectivePostalCode",c:"X.520 DN component"},"2.5.4.18":{d:"postOfficeBox",c:"X.520 DN component"},"2.5.4.18.1":{d:"collectivePostOfficeBox",c:"X.520 DN component"},"2.5.4.19":{d:"physicalDeliveryOfficeName",c:"X.520 DN component"},"2.5.4.19.1":{d:"collectivePhysicalDeliveryOfficeName",c:"X.520 DN component"},"2.5.4.20":{d:"telephoneNumber",c:"X.520 DN component"},"2.5.4.20.1":{d:"collectiveTelephoneNumber",c:"X.520 DN component"},"2.5.4.21":{d:"telexNumber",c:"X.520 DN component"},"2.5.4.21.1":{d:"collectiveTelexNumber",c:"X.520 DN component"},"2.5.4.22":{d:"teletexTerminalIdentifier",c:"X.520 DN component"},"2.5.4.22.1":{d:"collectiveTeletexTerminalIdentifier",c:"X.520 DN component"},"2.5.4.23":{d:"facsimileTelephoneNumber",c:"X.520 DN component"},"2.5.4.23.1":{d:"collectiveFacsimileTelephoneNumber",c:"X.520 DN component"},"2.5.4.24":{d:"x121Address",c:"X.520 DN component"},"2.5.4.25":{d:"internationalISDNNumber",c:"X.520 DN component"},"2.5.4.25.1":{d:"collectiveInternationalISDNNumber",c:"X.520 DN component"},"2.5.4.26":{d:"registeredAddress",c:"X.520 DN component"},"2.5.4.27":{d:"destinationIndicator",c:"X.520 DN component"},"2.5.4.28":{d:"preferredDeliveryMehtod",c:"X.520 DN component"},"2.5.4.29":{d:"presentationAddress",c:"X.520 DN component"},"2.5.4.30":{d:"supportedApplicationContext",c:"X.520 DN component"},"2.5.4.31":{d:"member",c:"X.520 DN component"},"2.5.4.32":{d:"owner",c:"X.520 DN component"},"2.5.4.33":{d:"roleOccupant",c:"X.520 DN component"},"2.5.4.34":{d:"seeAlso",c:"X.520 DN component"},"2.5.4.35":{d:"userPassword",c:"X.520 DN component"},"2.5.4.36":{d:"userCertificate",c:"X.520 DN component"},"2.5.4.37":{d:"caCertificate",c:"X.520 DN component"},"2.5.4.38":{d:"authorityRevocationList",c:"X.520 DN component"},"2.5.4.39":{d:"certificateRevocationList",c:"X.520 DN component"},"2.5.4.40":{d:"crossCertificatePair",c:"X.520 DN component"},"2.5.4.41":{d:"name",c:"X.520 DN component"},"2.5.4.42":{d:"givenName",c:"X.520 DN component"},"2.5.4.43":{d:"initials",c:"X.520 DN component"},"2.5.4.44":{d:"generationQualifier",c:"X.520 DN component"},"2.5.4.45":{d:"uniqueIdentifier",c:"X.520 DN component"},"2.5.4.46":{d:"dnQualifier",c:"X.520 DN component"},"2.5.4.47":{d:"enhancedSearchGuide",c:"X.520 DN component"},"2.5.4.48":{d:"protocolInformation",c:"X.520 DN component"},"2.5.4.49":{d:"distinguishedName",c:"X.520 DN component"},"2.5.4.50":{d:"uniqueMember",c:"X.520 DN component"},"2.5.4.51":{d:"houseIdentifier",c:"X.520 DN component"},"2.5.4.52":{d:"supportedAlgorithms",c:"X.520 DN component"},"2.5.4.53":{d:"deltaRevocationList",c:"X.520 DN component"},"2.5.4.54":{d:"dmdName",c:"X.520 DN component"},"2.5.4.55":{d:"clearance",c:"X.520 DN component"},"2.5.4.56":{d:"defaultDirQop",c:"X.520 DN component"},"2.5.4.57":{d:"attributeIntegrityInfo",c:"X.520 DN component"},"2.5.4.58":{d:"attributeCertificate",c:"X.520 DN component"},"2.5.4.59":{d:"attributeCertificateRevocationList",c:"X.520 DN component"},"2.5.4.60":{d:"confKeyInfo",c:"X.520 DN component"},"2.5.4.61":{d:"aACertificate",c:"X.520 DN component"},"2.5.4.62":{d:"attributeDescriptorCertificate",c:"X.520 DN component"},"2.5.4.63":{d:"attributeAuthorityRevocationList",c:"X.520 DN component"},"2.5.4.64":{d:"familyInformation",c:"X.520 DN component"},"2.5.4.65":{d:"pseudonym",c:"X.520 DN component"},"2.5.4.66":{d:"communicationsService",c:"X.520 DN component"},"2.5.4.67":{d:"communicationsNetwork",c:"X.520 DN component"},"2.5.4.68":{d:"certificationPracticeStmt",c:"X.520 DN component"},"2.5.4.69":{d:"certificatePolicy",c:"X.520 DN component"},"2.5.4.70":{d:"pkiPath",c:"X.520 DN component"},"2.5.4.71":{d:"privPolicy",c:"X.520 DN component"},"2.5.4.72":{d:"role",c:"X.520 DN component"},"2.5.4.73":{d:"delegationPath",c:"X.520 DN component"},"2.5.4.74":{d:"protPrivPolicy",c:"X.520 DN component"},"2.5.4.75":{d:"xMLPrivilegeInfo",c:"X.520 DN component"},"2.5.4.76":{d:"xmlPrivPolicy",c:"X.520 DN component"},"2.5.4.82":{d:"permission",c:"X.520 DN component"},"2.5.6.0":{d:"top",c:"X.520 objectClass"},"2.5.6.1":{d:"alias",c:"X.520 objectClass"},"2.5.6.2":{d:"country",c:"X.520 objectClass"},"2.5.6.3":{d:"locality",c:"X.520 objectClass"},"2.5.6.4":{d:"organization",c:"X.520 objectClass"},"2.5.6.5":{d:"organizationalUnit",c:"X.520 objectClass"},"2.5.6.6":{d:"person",c:"X.520 objectClass"},"2.5.6.7":{d:"organizationalPerson",c:"X.520 objectClass"},"2.5.6.8":{d:"organizationalRole",c:"X.520 objectClass"},"2.5.6.9":{d:"groupOfNames",c:"X.520 objectClass"},"2.5.6.10":{d:"residentialPerson",c:"X.520 objectClass"},"2.5.6.11":{d:"applicationProcess",c:"X.520 objectClass"},"2.5.6.12":{d:"applicationEntity",c:"X.520 objectClass"},"2.5.6.13":{d:"dSA",c:"X.520 objectClass"},"2.5.6.14":{d:"device",c:"X.520 objectClass"},"2.5.6.15":{d:"strongAuthenticationUser",c:"X.520 objectClass"},"2.5.6.16":{d:"certificateAuthority",c:"X.520 objectClass"},"2.5.6.17":{d:"groupOfUniqueNames",c:"X.520 objectClass"},"2.5.6.21":{d:"pkiUser",c:"X.520 objectClass"},"2.5.6.22":{d:"pkiCA",c:"X.520 objectClass"},"2.5.8.1.1":{d:"rsa",c:"X.500 algorithms. Ambiguous, since no padding rules specified",w:!0},"2.5.29.1":{d:"authorityKeyIdentifier",c:"X.509 extension. Deprecated, use 2 5 29 35 instead",w:!0},"2.5.29.2":{d:"keyAttributes",c:"X.509 extension. Obsolete, use keyUsage/extKeyUsage instead",w:!0},"2.5.29.3":{d:"certificatePolicies",c:"X.509 extension. Deprecated, use 2 5 29 32 instead",w:!0},"2.5.29.4":{d:"keyUsageRestriction",c:"X.509 extension. Obsolete, use keyUsage/extKeyUsage instead",w:!0},"2.5.29.5":{d:"policyMapping",c:"X.509 extension. Deprecated, use 2 5 29 33 instead",w:!0},"2.5.29.6":{d:"subtreesConstraint",c:"X.509 extension. Obsolete, use nameConstraints instead",w:!0},"2.5.29.7":{d:"subjectAltName",c:"X.509 extension. Deprecated, use 2 5 29 17 instead",w:!0},"2.5.29.8":{d:"issuerAltName",c:"X.509 extension. Deprecated, use 2 5 29 18 instead",w:!0},"2.5.29.9":{d:"subjectDirectoryAttributes",c:"X.509 extension"},"2.5.29.10":{d:"basicConstraints",c:"X.509 extension. Deprecated, use 2 5 29 19 instead",w:!0},"2.5.29.11":{d:"nameConstraints",c:"X.509 extension. Deprecated, use 2 5 29 30 instead",w:!0},"2.5.29.12":{d:"policyConstraints",c:"X.509 extension. Deprecated, use 2 5 29 36 instead",w:!0},"2.5.29.13":{d:"basicConstraints",c:"X.509 extension. Deprecated, use 2 5 29 19 instead",w:!0},"2.5.29.14":{d:"subjectKeyIdentifier",c:"X.509 extension"},"2.5.29.15":{d:"keyUsage",c:"X.509 extension"},"2.5.29.16":{d:"privateKeyUsagePeriod",c:"X.509 extension"},"2.5.29.17":{d:"subjectAltName",c:"X.509 extension"},"2.5.29.18":{d:"issuerAltName",c:"X.509 extension"},"2.5.29.19":{d:"basicConstraints",c:"X.509 extension"},"2.5.29.20":{d:"cRLNumber",c:"X.509 extension"},"2.5.29.21":{d:"cRLReason",c:"X.509 extension"},"2.5.29.22":{d:"expirationDate",c:"X.509 extension. Deprecated, alternative OID uncertain",w:!0},"2.5.29.23":{d:"instructionCode",c:"X.509 extension"},"2.5.29.24":{d:"invalidityDate",c:"X.509 extension"},"2.5.29.25":{d:"cRLDistributionPoints",c:"X.509 extension. Deprecated, use 2 5 29 31 instead",w:!0},"2.5.29.26":{d:"issuingDistributionPoint",c:"X.509 extension. Deprecated, use 2 5 29 28 instead",w:!0},"2.5.29.27":{d:"deltaCRLIndicator",c:"X.509 extension"},"2.5.29.28":{d:"issuingDistributionPoint",c:"X.509 extension"},"2.5.29.29":{d:"certificateIssuer",c:"X.509 extension"},"2.5.29.30":{d:"nameConstraints",c:"X.509 extension"},"2.5.29.31":{d:"cRLDistributionPoints",c:"X.509 extension"},"2.5.29.32":{d:"certificatePolicies",c:"X.509 extension"},"2.5.29.32.0":{d:"anyPolicy",c:"X.509 certificate policy"},"2.5.29.33":{d:"policyMappings",c:"X.509 extension"},"2.5.29.34":{d:"policyConstraints",c:"X.509 extension. Deprecated, use 2 5 29 36 instead",w:!0},"2.5.29.35":{d:"authorityKeyIdentifier",c:"X.509 extension"},"2.5.29.36":{d:"policyConstraints",c:"X.509 extension"},"2.5.29.37":{d:"extKeyUsage",c:"X.509 extension"},"2.5.29.37.0":{d:"anyExtendedKeyUsage",c:"X.509 extended key usage"},"2.5.29.38":{d:"authorityAttributeIdentifier",c:"X.509 extension"},"2.5.29.39":{d:"roleSpecCertIdentifier",c:"X.509 extension"},"2.5.29.40":{d:"cRLStreamIdentifier",c:"X.509 extension"},"2.5.29.41":{d:"basicAttConstraints",c:"X.509 extension"},"2.5.29.42":{d:"delegatedNameConstraints",c:"X.509 extension"},"2.5.29.43":{d:"timeSpecification",c:"X.509 extension"},"2.5.29.44":{d:"cRLScope",c:"X.509 extension"},"2.5.29.45":{d:"statusReferrals",c:"X.509 extension"},"2.5.29.46":{d:"freshestCRL",c:"X.509 extension"},"2.5.29.47":{d:"orderedList",c:"X.509 extension"},"2.5.29.48":{d:"attributeDescriptor",c:"X.509 extension"},"2.5.29.49":{d:"userNotice",c:"X.509 extension"},"2.5.29.50":{d:"sOAIdentifier",c:"X.509 extension"},"2.5.29.51":{d:"baseUpdateTime",c:"X.509 extension"},"2.5.29.52":{d:"acceptableCertPolicies",c:"X.509 extension"},"2.5.29.53":{d:"deltaInfo",c:"X.509 extension"},"2.5.29.54":{d:"inhibitAnyPolicy",c:"X.509 extension"},"2.5.29.55":{d:"targetInformation",c:"X.509 extension"},"2.5.29.56":{d:"noRevAvail",c:"X.509 extension"},"2.5.29.57":{d:"acceptablePrivilegePolicies",c:"X.509 extension"},"2.5.29.58":{d:"toBeRevoked",c:"X.509 extension"},"2.5.29.59":{d:"revokedGroups",c:"X.509 extension"},"2.5.29.60":{d:"expiredCertsOnCRL",c:"X.509 extension"},"2.5.29.61":{d:"indirectIssuer",c:"X.509 extension"},"2.5.29.62":{d:"noAssertion",c:"X.509 extension"},"2.5.29.63":{d:"aAissuingDistributionPoint",c:"X.509 extension"},"2.5.29.64":{d:"issuedOnBehalfOf",c:"X.509 extension"},"2.5.29.65":{d:"singleUse",c:"X.509 extension"},"2.5.29.66":{d:"groupAC",c:"X.509 extension"},"2.5.29.67":{d:"allowedAttAss",c:"X.509 extension"},"2.5.29.68":{d:"attributeMappings",c:"X.509 extension"},"2.5.29.69":{d:"holderNameConstraints",c:"X.509 extension"},"2.16.724.1.2.2.4.1":{d:"personalDataInfo",c:"Spanish Government PKI?"},"2.16.840.1.101.2.1.1.1":{d:"sdnsSignatureAlgorithm",c:"SDN.700 INFOSEC algorithms"},"2.16.840.1.101.2.1.1.2":{d:"fortezzaSignatureAlgorithm",c:"SDN.700 INFOSEC algorithms. Formerly known as mosaicSignatureAlgorithm, this OID is better known as dsaWithSHA-1."},"2.16.840.1.101.2.1.1.3":{d:"sdnsConfidentialityAlgorithm",c:"SDN.700 INFOSEC algorithms"},"2.16.840.1.101.2.1.1.4":{d:"fortezzaConfidentialityAlgorithm",c:"SDN.700 INFOSEC algorithms. Formerly known as mosaicConfidentialityAlgorithm"},"2.16.840.1.101.2.1.1.5":{d:"sdnsIntegrityAlgorithm",c:"SDN.700 INFOSEC algorithms"},"2.16.840.1.101.2.1.1.6":{d:"fortezzaIntegrityAlgorithm",c:"SDN.700 INFOSEC algorithms. Formerly known as mosaicIntegrityAlgorithm"},"2.16.840.1.101.2.1.1.7":{d:"sdnsTokenProtectionAlgorithm",c:"SDN.700 INFOSEC algorithms"},"2.16.840.1.101.2.1.1.8":{d:"fortezzaTokenProtectionAlgorithm",c:"SDN.700 INFOSEC algorithms. Formerly know as mosaicTokenProtectionAlgorithm"},"2.16.840.1.101.2.1.1.9":{d:"sdnsKeyManagementAlgorithm",c:"SDN.700 INFOSEC algorithms"},"2.16.840.1.101.2.1.1.10":{d:"fortezzaKeyManagementAlgorithm",c:"SDN.700 INFOSEC algorithms. Formerly known as mosaicKeyManagementAlgorithm"},"2.16.840.1.101.2.1.1.11":{d:"sdnsKMandSigAlgorithm",c:"SDN.700 INFOSEC algorithms"},"2.16.840.1.101.2.1.1.12":{d:"fortezzaKMandSigAlgorithm",c:"SDN.700 INFOSEC algorithms. Formerly known as mosaicKMandSigAlgorithm"},"2.16.840.1.101.2.1.1.13":{d:"suiteASignatureAlgorithm",c:"SDN.700 INFOSEC algorithms"},"2.16.840.1.101.2.1.1.14":{d:"suiteAConfidentialityAlgorithm",c:"SDN.700 INFOSEC algorithms"},"2.16.840.1.101.2.1.1.15":{d:"suiteAIntegrityAlgorithm",c:"SDN.700 INFOSEC algorithms"},"2.16.840.1.101.2.1.1.16":{d:"suiteATokenProtectionAlgorithm",c:"SDN.700 INFOSEC algorithms"},"2.16.840.1.101.2.1.1.17":{d:"suiteAKeyManagementAlgorithm",c:"SDN.700 INFOSEC algorithms"},"2.16.840.1.101.2.1.1.18":{d:"suiteAKMandSigAlgorithm",c:"SDN.700 INFOSEC algorithms"},"2.16.840.1.101.2.1.1.19":{d:"fortezzaUpdatedSigAlgorithm",c:"SDN.700 INFOSEC algorithms. Formerly known as mosaicUpdatedSigAlgorithm"},"2.16.840.1.101.2.1.1.20":{d:"fortezzaKMandUpdSigAlgorithms",c:"SDN.700 INFOSEC algorithms. Formerly known as mosaicKMandUpdSigAlgorithms"},"2.16.840.1.101.2.1.1.21":{d:"fortezzaUpdatedIntegAlgorithm",c:"SDN.700 INFOSEC algorithms. Formerly known as mosaicUpdatedIntegAlgorithm"},"2.16.840.1.101.2.1.1.22":{d:"keyExchangeAlgorithm",c:"SDN.700 INFOSEC algorithms. Formerly known as mosaicKeyEncryptionAlgorithm"},"2.16.840.1.101.2.1.1.23":{d:"fortezzaWrap80Algorithm",c:"SDN.700 INFOSEC algorithms"},"2.16.840.1.101.2.1.1.24":{d:"kEAKeyEncryptionAlgorithm",c:"SDN.700 INFOSEC algorithms"},"2.16.840.1.101.2.1.2.1":{d:"rfc822MessageFormat",c:"SDN.700 INFOSEC format"},"2.16.840.1.101.2.1.2.2":{d:"emptyContent",c:"SDN.700 INFOSEC format"},"2.16.840.1.101.2.1.2.3":{d:"cspContentType",c:"SDN.700 INFOSEC format"},"2.16.840.1.101.2.1.2.42":{d:"mspRev3ContentType",c:"SDN.700 INFOSEC format"},"2.16.840.1.101.2.1.2.48":{d:"mspContentType",c:"SDN.700 INFOSEC format"},"2.16.840.1.101.2.1.2.49":{d:"mspRekeyAgentProtocol",c:"SDN.700 INFOSEC format"},"2.16.840.1.101.2.1.2.50":{d:"mspMMP",c:"SDN.700 INFOSEC format"},"2.16.840.1.101.2.1.2.66":{d:"mspRev3-1ContentType",c:"SDN.700 INFOSEC format"},"2.16.840.1.101.2.1.2.72":{d:"forwardedMSPMessageBodyPart",c:"SDN.700 INFOSEC format"},"2.16.840.1.101.2.1.2.73":{d:"mspForwardedMessageParameters",c:"SDN.700 INFOSEC format"},"2.16.840.1.101.2.1.2.74":{d:"forwardedCSPMsgBodyPart",c:"SDN.700 INFOSEC format"},"2.16.840.1.101.2.1.2.75":{d:"cspForwardedMessageParameters",c:"SDN.700 INFOSEC format"},"2.16.840.1.101.2.1.2.76":{d:"mspMMP2",c:"SDN.700 INFOSEC format"},"2.16.840.1.101.2.1.2.78.2":{d:"encryptedKeyPackage",c:"SDN.700 INFOSEC format and RFC 6032"},"2.16.840.1.101.2.1.2.78.3":{d:"keyPackageReceipt",c:"SDN.700 INFOSEC format and RFC 7191"},"2.16.840.1.101.2.1.2.78.6":{d:"keyPackageError",c:"SDN.700 INFOSEC format and RFC 7191"},"2.16.840.1.101.2.1.3.1":{d:"sdnsSecurityPolicy",c:"SDN.700 INFOSEC policy"},"2.16.840.1.101.2.1.3.2":{d:"sdnsPRBAC",c:"SDN.700 INFOSEC policy"},"2.16.840.1.101.2.1.3.3":{d:"mosaicPRBAC",c:"SDN.700 INFOSEC policy"},"2.16.840.1.101.2.1.3.10":{d:"siSecurityPolicy",c:"SDN.700 INFOSEC policy"},"2.16.840.1.101.2.1.3.10.0":{d:"siNASP",c:"SDN.700 INFOSEC policy (obsolete)",w:!0},"2.16.840.1.101.2.1.3.10.1":{d:"siELCO",c:"SDN.700 INFOSEC policy (obsolete)",w:!0},"2.16.840.1.101.2.1.3.10.2":{d:"siTK",c:"SDN.700 INFOSEC policy (obsolete)",w:!0},"2.16.840.1.101.2.1.3.10.3":{d:"siDSAP",c:"SDN.700 INFOSEC policy (obsolete)",w:!0},"2.16.840.1.101.2.1.3.10.4":{d:"siSSSS",c:"SDN.700 INFOSEC policy (obsolete)",w:!0},"2.16.840.1.101.2.1.3.10.5":{d:"siDNASP",c:"SDN.700 INFOSEC policy (obsolete)",w:!0},"2.16.840.1.101.2.1.3.10.6":{d:"siBYEMAN",c:"SDN.700 INFOSEC policy (obsolete)",w:!0},"2.16.840.1.101.2.1.3.10.7":{d:"siREL-US",c:"SDN.700 INFOSEC policy (obsolete)",w:!0},"2.16.840.1.101.2.1.3.10.8":{d:"siREL-AUS",c:"SDN.700 INFOSEC policy (obsolete)",w:!0},"2.16.840.1.101.2.1.3.10.9":{d:"siREL-CAN",c:"SDN.700 INFOSEC policy (obsolete)",w:!0},"2.16.840.1.101.2.1.3.10.10":{d:"siREL_UK",c:"SDN.700 INFOSEC policy (obsolete)",w:!0},"2.16.840.1.101.2.1.3.10.11":{d:"siREL-NZ",c:"SDN.700 INFOSEC policy (obsolete)",w:!0},"2.16.840.1.101.2.1.3.10.12":{d:"siGeneric",c:"SDN.700 INFOSEC policy (obsolete)",w:!0},"2.16.840.1.101.2.1.3.11":{d:"genser",c:"SDN.700 INFOSEC policy"},"2.16.840.1.101.2.1.3.11.0":{d:"genserNations",c:"SDN.700 INFOSEC policy (obsolete)",w:!0},"2.16.840.1.101.2.1.3.11.1":{d:"genserComsec",c:"SDN.700 INFOSEC policy (obsolete)",w:!0},"2.16.840.1.101.2.1.3.11.2":{d:"genserAcquisition",c:"SDN.700 INFOSEC policy (obsolete)",w:!0},"2.16.840.1.101.2.1.3.11.3":{d:"genserSecurityCategories",c:"SDN.700 INFOSEC policy"},"2.16.840.1.101.2.1.3.11.3.0":{d:"genserTagSetName",c:"SDN.700 INFOSEC GENSER policy"},"2.16.840.1.101.2.1.3.12":{d:"defaultSecurityPolicy",c:"SDN.700 INFOSEC policy"},"2.16.840.1.101.2.1.3.13":{d:"capcoMarkings",c:"SDN.700 INFOSEC policy"},"2.16.840.1.101.2.1.3.13.0":{d:"capcoSecurityCategories",c:"SDN.700 INFOSEC policy CAPCO markings"},"2.16.840.1.101.2.1.3.13.0.1":{d:"capcoTagSetName1",c:"SDN.700 INFOSEC policy CAPCO markings"},"2.16.840.1.101.2.1.3.13.0.2":{d:"capcoTagSetName2",c:"SDN.700 INFOSEC policy CAPCO markings"},"2.16.840.1.101.2.1.3.13.0.3":{d:"capcoTagSetName3",c:"SDN.700 INFOSEC policy CAPCO markings"},"2.16.840.1.101.2.1.3.13.0.4":{d:"capcoTagSetName4",c:"SDN.700 INFOSEC policy CAPCO markings"},"2.16.840.1.101.2.1.5.1":{d:"sdnsKeyManagementCertificate",c:"SDN.700 INFOSEC attributes (superseded)",w:!0},"2.16.840.1.101.2.1.5.2":{d:"sdnsUserSignatureCertificate",c:"SDN.700 INFOSEC attributes (superseded)",w:!0},"2.16.840.1.101.2.1.5.3":{d:"sdnsKMandSigCertificate",c:"SDN.700 INFOSEC attributes (superseded)",w:!0},"2.16.840.1.101.2.1.5.4":{d:"fortezzaKeyManagementCertificate",c:"SDN.700 INFOSEC attributes (superseded)",w:!0},"2.16.840.1.101.2.1.5.5":{d:"fortezzaKMandSigCertificate",c:"SDN.700 INFOSEC attributes (superseded)",w:!0},"2.16.840.1.101.2.1.5.6":{d:"fortezzaUserSignatureCertificate",c:"SDN.700 INFOSEC attributes (superseded)",w:!0},"2.16.840.1.101.2.1.5.7":{d:"fortezzaCASignatureCertificate",c:"SDN.700 INFOSEC attributes (superseded)",w:!0},"2.16.840.1.101.2.1.5.8":{d:"sdnsCASignatureCertificate",c:"SDN.700 INFOSEC attributes (superseded)",w:!0},"2.16.840.1.101.2.1.5.10":{d:"auxiliaryVector",c:"SDN.700 INFOSEC attributes (superseded)",w:!0},"2.16.840.1.101.2.1.5.11":{d:"mlReceiptPolicy",c:"SDN.700 INFOSEC attributes"},"2.16.840.1.101.2.1.5.12":{d:"mlMembership",c:"SDN.700 INFOSEC attributes"},"2.16.840.1.101.2.1.5.13":{d:"mlAdministrators",c:"SDN.700 INFOSEC attributes"},"2.16.840.1.101.2.1.5.14":{d:"alid",c:"SDN.700 INFOSEC attributes"},"2.16.840.1.101.2.1.5.20":{d:"janUKMs",c:"SDN.700 INFOSEC attributes"},"2.16.840.1.101.2.1.5.21":{d:"febUKMs",c:"SDN.700 INFOSEC attributes"},"2.16.840.1.101.2.1.5.22":{d:"marUKMs",c:"SDN.700 INFOSEC attributes"},"2.16.840.1.101.2.1.5.23":{d:"aprUKMs",c:"SDN.700 INFOSEC attributes"},"2.16.840.1.101.2.1.5.24":{d:"mayUKMs",c:"SDN.700 INFOSEC attributes"},"2.16.840.1.101.2.1.5.25":{d:"junUKMs",c:"SDN.700 INFOSEC attributes"},"2.16.840.1.101.2.1.5.26":{d:"julUKMs",c:"SDN.700 INFOSEC attributes"},"2.16.840.1.101.2.1.5.27":{d:"augUKMs",c:"SDN.700 INFOSEC attributes"},"2.16.840.1.101.2.1.5.28":{d:"sepUKMs",c:"SDN.700 INFOSEC attributes"},"2.16.840.1.101.2.1.5.29":{d:"octUKMs",c:"SDN.700 INFOSEC attributes"},"2.16.840.1.101.2.1.5.30":{d:"novUKMs",c:"SDN.700 INFOSEC attributes"},"2.16.840.1.101.2.1.5.31":{d:"decUKMs",c:"SDN.700 INFOSEC attributes"},"2.16.840.1.101.2.1.5.40":{d:"metaSDNSckl",c:"SDN.700 INFOSEC attributes"},"2.16.840.1.101.2.1.5.41":{d:"sdnsCKL",c:"SDN.700 INFOSEC attributes"},"2.16.840.1.101.2.1.5.42":{d:"metaSDNSsignatureCKL",c:"SDN.700 INFOSEC attributes"},"2.16.840.1.101.2.1.5.43":{d:"sdnsSignatureCKL",c:"SDN.700 INFOSEC attributes"},"2.16.840.1.101.2.1.5.44":{d:"sdnsCertificateRevocationList",c:"SDN.700 INFOSEC attributes"},"2.16.840.1.101.2.1.5.45":{d:"fortezzaCertificateRevocationList",c:"SDN.700 INFOSEC attributes (superseded)",w:!0},"2.16.840.1.101.2.1.5.46":{d:"fortezzaCKL",c:"SDN.700 INFOSEC attributes"},"2.16.840.1.101.2.1.5.47":{d:"alExemptedAddressProcessor",c:"SDN.700 INFOSEC attributes"},"2.16.840.1.101.2.1.5.48":{d:"guard",c:"SDN.700 INFOSEC attributes (obsolete)",w:!0},"2.16.840.1.101.2.1.5.49":{d:"algorithmsSupported",c:"SDN.700 INFOSEC attributes (obsolete)",w:!0},"2.16.840.1.101.2.1.5.50":{d:"suiteAKeyManagementCertificate",c:"SDN.700 INFOSEC attributes (obsolete)",w:!0},"2.16.840.1.101.2.1.5.51":{d:"suiteAKMandSigCertificate",c:"SDN.700 INFOSEC attributes (obsolete)",w:!0},"2.16.840.1.101.2.1.5.52":{d:"suiteAUserSignatureCertificate",c:"SDN.700 INFOSEC attributes (obsolete)",w:!0},"2.16.840.1.101.2.1.5.53":{d:"prbacInfo",c:"SDN.700 INFOSEC attributes"},"2.16.840.1.101.2.1.5.54":{d:"prbacCAConstraints",c:"SDN.700 INFOSEC attributes"},"2.16.840.1.101.2.1.5.55":{d:"sigOrKMPrivileges",c:"SDN.700 INFOSEC attributes"},"2.16.840.1.101.2.1.5.56":{d:"commPrivileges",c:"SDN.700 INFOSEC attributes"},"2.16.840.1.101.2.1.5.57":{d:"labeledAttribute",c:"SDN.700 INFOSEC attributes"},"2.16.840.1.101.2.1.5.58":{d:"policyInformationFile",c:"SDN.700 INFOSEC attributes (obsolete)",w:!0},"2.16.840.1.101.2.1.5.59":{d:"secPolicyInformationFile",c:"SDN.700 INFOSEC attributes"},"2.16.840.1.101.2.1.5.60":{d:"cAClearanceConstraint",c:"SDN.700 INFOSEC attributes"},"2.16.840.1.101.2.1.5.65":{d:"keyPkgIdAndReceiptReq",c:"SDN.700 INFOSEC attributes and RFC 7191"},"2.16.840.1.101.2.1.5.66":{d:"contentDecryptKeyID",c:"SDN.700 INFOSEC attributes and RFC 6032"},"2.16.840.1.101.2.1.5.70":{d:"kpCrlPointers",c:"SDN.700 INFOSEC attributes and RFC 7906"},"2.16.840.1.101.2.1.5.71":{d:"kpKeyProvinceV2",c:"SDN.700 INFOSEC attributes and RFC 7906"},"2.16.840.1.101.2.1.5.72":{d:"kpManifest",c:"SDN.700 INFOSEC attributes and RFC 7906"},"2.16.840.1.101.2.1.7.1":{d:"cspExtns",c:"SDN.700 INFOSEC extensions"},"2.16.840.1.101.2.1.7.1.0":{d:"cspCsExtn",c:"SDN.700 INFOSEC extensions"},"2.16.840.1.101.2.1.8.1":{d:"mISSISecurityCategories",c:"SDN.700 INFOSEC security category"},"2.16.840.1.101.2.1.8.2":{d:"standardSecurityLabelPrivileges",c:"SDN.700 INFOSEC security category"},"2.16.840.1.101.2.1.8.3.1":{d:"enumeratedPermissiveAttrs",c:"SDN.700 INFOSEC security category from RFC 7906"},"2.16.840.1.101.2.1.8.3.3":{d:"informativeAttrs",c:"SDN.700 INFOSEC security category from RFC 7906"},"2.16.840.1.101.2.1.8.3.4":{d:"enumeratedRestrictiveAttrs",c:"SDN.700 INFOSEC security category from RFC 7906"},"2.16.840.1.101.2.1.10.1":{d:"sigPrivileges",c:"SDN.700 INFOSEC privileges"},"2.16.840.1.101.2.1.10.2":{d:"kmPrivileges",c:"SDN.700 INFOSEC privileges"},"2.16.840.1.101.2.1.10.3":{d:"namedTagSetPrivilege",c:"SDN.700 INFOSEC privileges"},"2.16.840.1.101.2.1.11.1":{d:"ukDemo",c:"SDN.700 INFOSEC certificate policy"},"2.16.840.1.101.2.1.11.2":{d:"usDODClass2",c:"SDN.700 INFOSEC certificate policy"},"2.16.840.1.101.2.1.11.3":{d:"usMediumPilot",c:"SDN.700 INFOSEC certificate policy"},"2.16.840.1.101.2.1.11.4":{d:"usDODClass4",c:"SDN.700 INFOSEC certificate policy"},"2.16.840.1.101.2.1.11.5":{d:"usDODClass3",c:"SDN.700 INFOSEC certificate policy"},"2.16.840.1.101.2.1.11.6":{d:"usDODClass5",c:"SDN.700 INFOSEC certificate policy"},"2.16.840.1.101.2.1.12.0":{d:"testSecurityPolicy",c:"SDN.700 INFOSEC test objects"},"2.16.840.1.101.2.1.12.0.1":{d:"tsp1",c:"SDN.700 INFOSEC test objects"},"2.16.840.1.101.2.1.12.0.1.0":{d:"tsp1SecurityCategories",c:"SDN.700 INFOSEC test objects"},"2.16.840.1.101.2.1.12.0.1.0.0":{d:"tsp1TagSetZero",c:"SDN.700 INFOSEC test objects"},"2.16.840.1.101.2.1.12.0.1.0.1":{d:"tsp1TagSetOne",c:"SDN.700 INFOSEC test objects"},"2.16.840.1.101.2.1.12.0.1.0.2":{d:"tsp1TagSetTwo",c:"SDN.700 INFOSEC test objects"},"2.16.840.1.101.2.1.12.0.2":{d:"tsp2",c:"SDN.700 INFOSEC test objects"},"2.16.840.1.101.2.1.12.0.2.0":{d:"tsp2SecurityCategories",c:"SDN.700 INFOSEC test objects"},"2.16.840.1.101.2.1.12.0.2.0.0":{d:"tsp2TagSetZero",c:"SDN.700 INFOSEC test objects"},"2.16.840.1.101.2.1.12.0.2.0.1":{d:"tsp2TagSetOne",c:"SDN.700 INFOSEC test objects"},"2.16.840.1.101.2.1.12.0.2.0.2":{d:"tsp2TagSetTwo",c:"SDN.700 INFOSEC test objects"},"2.16.840.1.101.2.1.12.0.3":{d:"kafka",c:"SDN.700 INFOSEC test objects"},"2.16.840.1.101.2.1.12.0.3.0":{d:"kafkaSecurityCategories",c:"SDN.700 INFOSEC test objects"},"2.16.840.1.101.2.1.12.0.3.0.1":{d:"kafkaTagSetName1",c:"SDN.700 INFOSEC test objects"},"2.16.840.1.101.2.1.12.0.3.0.2":{d:"kafkaTagSetName2",c:"SDN.700 INFOSEC test objects"},"2.16.840.1.101.2.1.12.0.3.0.3":{d:"kafkaTagSetName3",c:"SDN.700 INFOSEC test objects"},"2.16.840.1.101.2.1.12.1.1":{d:"tcp1",c:"SDN.700 INFOSEC test objects"},"2.16.840.1.101.2.1.13.1":{d:"kmaKeyAlgorithm",c:"SDN.700 INFOSEC attributes and RFC 7906"},"2.16.840.1.101.2.1.13.3":{d:"kmaTSECNomenclature",c:"SDN.700 INFOSEC attributes and RFC 7906"},"2.16.840.1.101.2.1.13.5":{d:"kmaKeyDistPeriod",c:"SDN.700 INFOSEC attributes and RFC 7906"},"2.16.840.1.101.2.1.13.6":{d:"kmaKeyValidityPeriod",c:"SDN.700 INFOSEC attributes and RFC 7906"},"2.16.840.1.101.2.1.13.7":{d:"kmaKeyDuration",c:"SDN.700 INFOSEC attributes and RFC 7906"},"2.16.840.1.101.2.1.13.11":{d:"kmaSplitID",c:"SDN.700 INFOSEC attributes and RFC 7906"},"2.16.840.1.101.2.1.13.12":{d:"kmaKeyPkgType",c:"SDN.700 INFOSEC attributes and RFC 7906"},"2.16.840.1.101.2.1.13.13":{d:"kmaKeyPurpose",c:"SDN.700 INFOSEC attributes and RFC 7906"},"2.16.840.1.101.2.1.13.14":{d:"kmaKeyUse",c:"SDN.700 INFOSEC attributes and RFC 7906"},"2.16.840.1.101.2.1.13.15":{d:"kmaTransportKey",c:"SDN.700 INFOSEC attributes and RFC 7906"},"2.16.840.1.101.2.1.13.16":{d:"kmaKeyPkgReceiversV2",c:"SDN.700 INFOSEC attributes and RFC 7906"},"2.16.840.1.101.2.1.13.19":{d:"kmaOtherCertFormats",c:"SDN.700 INFOSEC attributes and RFC 7906"},"2.16.840.1.101.2.1.13.20":{d:"kmaUsefulCerts",c:"SDN.700 INFOSEC attributes and RFC 7906"},"2.16.840.1.101.2.1.13.21":{d:"kmaKeyWrapAlgorithm",c:"SDN.700 INFOSEC attributes and RFC 7906"},"2.16.840.1.101.2.1.13.22":{d:"kmaSigUsageV3",c:"SDN.700 INFOSEC attributes and RFC 7906"},"2.16.840.1.101.2.1.16.0":{d:"dn",c:"SDN.700 INFOSEC attributes and RFC 7191"},"2.16.840.1.101.2.1.22":{d:"errorCodes",c:"RFC 7906 key attribute error codes"},"2.16.840.1.101.2.1.22.1":{d:"missingKeyType",c:"RFC 7906 key attribute error codes"},"2.16.840.1.101.2.1.22.2":{d:"privacyMarkTooLong",c:"RFC 7906 key attribute error codes"},"2.16.840.1.101.2.1.22.3":{d:"unrecognizedSecurityPolicy",c:"RFC 7906 key attribute error codes"},"2.16.840.1.101.3.1":{d:"slabel",c:"CSOR GAK",w:!0},"2.16.840.1.101.3.2":{d:"pki",c:"NIST",w:!0},"2.16.840.1.101.3.2.1":{d:"NIST policyIdentifier",c:"NIST policies",w:!0},"2.16.840.1.101.3.2.1.3.1":{d:"fbcaRudimentaryPolicy",c:"Federal Bridge CA Policy"},"2.16.840.1.101.3.2.1.3.2":{d:"fbcaBasicPolicy",c:"Federal Bridge CA Policy"},"2.16.840.1.101.3.2.1.3.3":{d:"fbcaMediumPolicy",c:"Federal Bridge CA Policy"},"2.16.840.1.101.3.2.1.3.4":{d:"fbcaHighPolicy",c:"Federal Bridge CA Policy"},"2.16.840.1.101.3.2.1.48.1":{d:"nistTestPolicy1",c:"NIST PKITS policies"},"2.16.840.1.101.3.2.1.48.2":{d:"nistTestPolicy2",c:"NIST PKITS policies"},"2.16.840.1.101.3.2.1.48.3":{d:"nistTestPolicy3",c:"NIST PKITS policies"},"2.16.840.1.101.3.2.1.48.4":{d:"nistTestPolicy4",c:"NIST PKITS policies"},"2.16.840.1.101.3.2.1.48.5":{d:"nistTestPolicy5",c:"NIST PKITS policies"},"2.16.840.1.101.3.2.1.48.6":{d:"nistTestPolicy6",c:"NIST PKITS policies"},"2.16.840.1.101.3.2.2":{d:"gak",c:"CSOR GAK extended key usage",w:!0},"2.16.840.1.101.3.2.2.1":{d:"kRAKey",c:"CSOR GAK extended key usage",w:!0},"2.16.840.1.101.3.2.3":{d:"extensions",c:"CSOR GAK extensions",w:!0},"2.16.840.1.101.3.2.3.1":{d:"kRTechnique",c:"CSOR GAK extensions",w:!0},"2.16.840.1.101.3.2.3.2":{d:"kRecoveryCapable",c:"CSOR GAK extensions",w:!0},"2.16.840.1.101.3.2.3.3":{d:"kR",c:"CSOR GAK extensions",w:!0},"2.16.840.1.101.3.2.4":{d:"keyRecoverySchemes",c:"CSOR GAK",w:!0},"2.16.840.1.101.3.2.5":{d:"krapola",c:"CSOR GAK",w:!0},"2.16.840.1.101.3.3":{d:"arpa",c:"CSOR GAK",w:!0},"2.16.840.1.101.3.4":{d:"nistAlgorithm",c:"NIST Algorithm"},"2.16.840.1.101.3.4.1":{d:"aes",c:"NIST Algorithm"},"2.16.840.1.101.3.4.1.1":{d:"aes128-ECB",c:"NIST Algorithm"},"2.16.840.1.101.3.4.1.2":{d:"aes128-CBC",c:"NIST Algorithm"},"2.16.840.1.101.3.4.1.3":{d:"aes128-OFB",c:"NIST Algorithm"},"2.16.840.1.101.3.4.1.4":{d:"aes128-CFB",c:"NIST Algorithm"},"2.16.840.1.101.3.4.1.5":{d:"aes128-wrap",c:"NIST Algorithm"},"2.16.840.1.101.3.4.1.6":{d:"aes128-GCM",c:"NIST Algorithm"},"2.16.840.1.101.3.4.1.7":{d:"aes128-CCM",c:"NIST Algorithm"},"2.16.840.1.101.3.4.1.8":{d:"aes128-wrap-pad",c:"NIST Algorithm"},"2.16.840.1.101.3.4.1.21":{d:"aes192-ECB",c:"NIST Algorithm"},"2.16.840.1.101.3.4.1.22":{d:"aes192-CBC",c:"NIST Algorithm"},"2.16.840.1.101.3.4.1.23":{d:"aes192-OFB",c:"NIST Algorithm"},"2.16.840.1.101.3.4.1.24":{d:"aes192-CFB",c:"NIST Algorithm"},"2.16.840.1.101.3.4.1.25":{d:"aes192-wrap",c:"NIST Algorithm"},"2.16.840.1.101.3.4.1.26":{d:"aes192-GCM",c:"NIST Algorithm"},"2.16.840.1.101.3.4.1.27":{d:"aes192-CCM",c:"NIST Algorithm"},"2.16.840.1.101.3.4.1.28":{d:"aes192-wrap-pad",c:"NIST Algorithm"},"2.16.840.1.101.3.4.1.41":{d:"aes256-ECB",c:"NIST Algorithm"},"2.16.840.1.101.3.4.1.42":{d:"aes256-CBC",c:"NIST Algorithm"},"2.16.840.1.101.3.4.1.43":{d:"aes256-OFB",c:"NIST Algorithm"},"2.16.840.1.101.3.4.1.44":{d:"aes256-CFB",c:"NIST Algorithm"},"2.16.840.1.101.3.4.1.45":{d:"aes256-wrap",c:"NIST Algorithm"},"2.16.840.1.101.3.4.1.46":{d:"aes256-GCM",c:"NIST Algorithm"},"2.16.840.1.101.3.4.1.47":{d:"aes256-CCM",c:"NIST Algorithm"},"2.16.840.1.101.3.4.1.48":{d:"aes256-wrap-pad",c:"NIST Algorithm"},"2.16.840.1.101.3.4.2":{d:"hashAlgos",c:"NIST Algorithm"},"2.16.840.1.101.3.4.2.1":{d:"sha-256",c:"NIST Algorithm"},"2.16.840.1.101.3.4.2.2":{d:"sha-384",c:"NIST Algorithm"},"2.16.840.1.101.3.4.2.3":{d:"sha-512",c:"NIST Algorithm"},"2.16.840.1.101.3.4.2.4":{d:"sha-224",c:"NIST Algorithm"},"2.16.840.1.101.3.4.2.11":{d:"shake128",c:"NIST Algorithm"},"2.16.840.1.101.3.4.2.12":{d:"shake256",c:"NIST Algorithm"},"2.16.840.1.101.3.4.2.17":{d:"shake128len",c:"NIST Algorithm"},"2.16.840.1.101.3.4.2.18":{d:"shake256len",c:"NIST Algorithm"},"2.16.840.1.101.3.4.2.19":{d:"kmacShake128",c:"NIST Algorithm"},"2.16.840.1.101.3.4.2.20":{d:"kmacShake256",c:"NIST Algorithm"},"2.16.840.1.101.3.4.3.1":{d:"dsaWithSha224",c:"NIST Algorithm"},"2.16.840.1.101.3.4.3.2":{d:"dsaWithSha256",c:"NIST Algorithm"},"2.16.840.1.113719.1.2.8":{d:"novellAlgorithm",c:"Novell"},"2.16.840.1.113719.1.2.8.22":{d:"desCbcIV8",c:"Novell encryption algorithm"},"2.16.840.1.113719.1.2.8.23":{d:"desCbcPadIV8",c:"Novell encryption algorithm"},"2.16.840.1.113719.1.2.8.24":{d:"desEDE2CbcIV8",c:"Novell encryption algorithm"},"2.16.840.1.113719.1.2.8.25":{d:"desEDE2CbcPadIV8",c:"Novell encryption algorithm"},"2.16.840.1.113719.1.2.8.26":{d:"desEDE3CbcIV8",c:"Novell encryption algorithm"},"2.16.840.1.113719.1.2.8.27":{d:"desEDE3CbcPadIV8",c:"Novell encryption algorithm"},"2.16.840.1.113719.1.2.8.28":{d:"rc5CbcPad",c:"Novell encryption algorithm"},"2.16.840.1.113719.1.2.8.29":{d:"md2WithRSAEncryptionBSafe1",c:"Novell signature algorithm"},"2.16.840.1.113719.1.2.8.30":{d:"md5WithRSAEncryptionBSafe1",c:"Novell signature algorithm"},"2.16.840.1.113719.1.2.8.31":{d:"sha1WithRSAEncryptionBSafe1",c:"Novell signature algorithm"},"2.16.840.1.113719.1.2.8.32":{d:"lmDigest",c:"Novell digest algorithm"},"2.16.840.1.113719.1.2.8.40":{d:"md2",c:"Novell digest algorithm"},"2.16.840.1.113719.1.2.8.50":{d:"md5",c:"Novell digest algorithm"},"2.16.840.1.113719.1.2.8.51":{d:"ikeHmacWithSHA1-RSA",c:"Novell signature algorithm"},"2.16.840.1.113719.1.2.8.52":{d:"ikeHmacWithMD5-RSA",c:"Novell signature algorithm"},"2.16.840.1.113719.1.2.8.69":{d:"rc2CbcPad",c:"Novell encryption algorithm"},"2.16.840.1.113719.1.2.8.82":{d:"sha-1",c:"Novell digest algorithm"},"2.16.840.1.113719.1.2.8.92":{d:"rc2BSafe1Cbc",c:"Novell encryption algorithm"},"2.16.840.1.113719.1.2.8.95":{d:"md4",c:"Novell digest algorithm"},"2.16.840.1.113719.1.2.8.130":{d:"md4Packet",c:"Novell keyed hash"},"2.16.840.1.113719.1.2.8.131":{d:"rsaEncryptionBsafe1",c:"Novell encryption algorithm"},"2.16.840.1.113719.1.2.8.132":{d:"nwPassword",c:"Novell encryption algorithm"},"2.16.840.1.113719.1.2.8.133":{d:"novellObfuscate-1",c:"Novell encryption algorithm"},"2.16.840.1.113719.1.9":{d:"pki",c:"Novell"},"2.16.840.1.113719.1.9.4":{d:"pkiAttributeType",c:"Novell PKI"},"2.16.840.1.113719.1.9.4.1":{d:"securityAttributes",c:"Novell PKI attribute type"},"2.16.840.1.113719.1.9.4.2":{d:"relianceLimit",c:"Novell PKI attribute type"},"2.16.840.1.113730.1":{d:"cert-extension",c:"Netscape"},"2.16.840.1.113730.1.1":{d:"netscape-cert-type",c:"Netscape certificate extension"},"2.16.840.1.113730.1.2":{d:"netscape-base-url",c:"Netscape certificate extension"},"2.16.840.1.113730.1.3":{d:"netscape-revocation-url",c:"Netscape certificate extension"},"2.16.840.1.113730.1.4":{d:"netscape-ca-revocation-url",c:"Netscape certificate extension"},"2.16.840.1.113730.1.7":{d:"netscape-cert-renewal-url",c:"Netscape certificate extension"},"2.16.840.1.113730.1.8":{d:"netscape-ca-policy-url",c:"Netscape certificate extension"},"2.16.840.1.113730.1.9":{d:"HomePage-url",c:"Netscape certificate extension"},"2.16.840.1.113730.1.10":{d:"EntityLogo",c:"Netscape certificate extension"},"2.16.840.1.113730.1.11":{d:"UserPicture",c:"Netscape certificate extension"},"2.16.840.1.113730.1.12":{d:"netscape-ssl-server-name",c:"Netscape certificate extension"},"2.16.840.1.113730.1.13":{d:"netscape-comment",c:"Netscape certificate extension"},"2.16.840.1.113730.2":{d:"data-type",c:"Netscape"},"2.16.840.1.113730.2.1":{d:"dataGIF",c:"Netscape data type"},"2.16.840.1.113730.2.2":{d:"dataJPEG",c:"Netscape data type"},"2.16.840.1.113730.2.3":{d:"dataURL",c:"Netscape data type"},"2.16.840.1.113730.2.4":{d:"dataHTML",c:"Netscape data type"},"2.16.840.1.113730.2.5":{d:"certSequence",c:"Netscape data type"},"2.16.840.1.113730.2.6":{d:"certURL",c:"Netscape certificate extension"},"2.16.840.1.113730.3":{d:"directory",c:"Netscape"},"2.16.840.1.113730.3.1":{d:"ldapDefinitions",c:"Netscape directory"},"2.16.840.1.113730.3.1.1":{d:"carLicense",c:"Netscape LDAP definitions"},"2.16.840.1.113730.3.1.2":{d:"departmentNumber",c:"Netscape LDAP definitions"},"2.16.840.1.113730.3.1.3":{d:"employeeNumber",c:"Netscape LDAP definitions"},"2.16.840.1.113730.3.1.4":{d:"employeeType",c:"Netscape LDAP definitions"},"2.16.840.1.113730.3.1.216":{d:"userPKCS12",c:"Netscape LDAP definitions"},"2.16.840.1.113730.3.2.2":{d:"inetOrgPerson",c:"Netscape LDAP definitions"},"2.16.840.1.113730.4.1":{d:"serverGatedCrypto",c:"Netscape"},"2.16.840.1.113733.1.6.3":{d:"verisignCZAG",c:"Verisign extension"},"2.16.840.1.113733.1.6.6":{d:"verisignInBox",c:"Verisign extension"},"2.16.840.1.113733.1.6.11":{d:"verisignOnsiteJurisdictionHash",c:"Verisign extension"},"2.16.840.1.113733.1.6.13":{d:"Unknown Verisign VPN extension",c:"Verisign extension"},"2.16.840.1.113733.1.6.15":{d:"verisignServerID",c:"Verisign extension"},"2.16.840.1.113733.1.7.1.1":{d:"verisignCertPolicies95Qualifier1",c:"Verisign policy"},"2.16.840.1.113733.1.7.1.1.1":{d:"verisignCPSv1notice",c:"Verisign policy (obsolete)"},"2.16.840.1.113733.1.7.1.1.2":{d:"verisignCPSv1nsi",c:"Verisign policy (obsolete)"},"2.16.840.1.113733.1.8.1":{d:"verisignISSStrongCrypto",c:"Verisign"},"2.16.840.1.113733.1":{d:"pki",c:"Verisign extension"},"2.16.840.1.113733.1.9":{d:"pkcs7Attribute",c:"Verisign PKI extension"},"2.16.840.1.113733.1.9.2":{d:"messageType",c:"Verisign PKCS #7 attribute"},"2.16.840.1.113733.1.9.3":{d:"pkiStatus",c:"Verisign PKCS #7 attribute"},"2.16.840.1.113733.1.9.4":{d:"failInfo",c:"Verisign PKCS #7 attribute"},"2.16.840.1.113733.1.9.5":{d:"senderNonce",c:"Verisign PKCS #7 attribute"},"2.16.840.1.113733.1.9.6":{d:"recipientNonce",c:"Verisign PKCS #7 attribute"},"2.16.840.1.113733.1.9.7":{d:"transID",c:"Verisign PKCS #7 attribute"},"2.16.840.1.113733.1.9.8":{d:"extensionReq",c:"Verisign PKCS #7 attribute. Use PKCS #9 extensionRequest instead",w:!0},"2.16.840.1.113741.2":{d:"intelCDSA",c:"Intel CDSA"},"2.16.840.1.114412.1":{d:"digiCertNonEVCerts",c:"Digicert CA policy"},"2.16.840.1.114412.1.1":{d:"digiCertOVCert",c:"Digicert CA policy"},"2.16.840.1.114412.1.2":{d:"digiCertDVCert",c:"Digicert CA policy"},"2.16.840.1.114412.1.11":{d:"digiCertFederatedDeviceCert",c:"Digicert CA policy"},"2.16.840.1.114412.1.3.0.1":{d:"digiCertGlobalCAPolicy",c:"Digicert CA policy"},"2.16.840.1.114412.1.3.0.2":{d:"digiCertHighAssuranceEVCAPolicy",c:"Digicert CA policy"},"2.16.840.1.114412.1.3.0.3":{d:"digiCertGlobalRootCAPolicy",c:"Digicert CA policy"},"2.16.840.1.114412.1.3.0.4":{d:"digiCertAssuredIDRootCAPolicy",c:"Digicert CA policy"},"2.16.840.1.114412.2.2":{d:"digiCertEVCert",c:"Digicert CA policy"},"2.16.840.1.114412.2.3":{d:"digiCertObjectSigningCert",c:"Digicert CA policy"},"2.16.840.1.114412.2.3.1":{d:"digiCertCodeSigningCert",c:"Digicert CA policy"},"2.16.840.1.114412.2.3.2":{d:"digiCertEVCodeSigningCert",c:"Digicert CA policy"},"2.16.840.1.114412.2.3.11":{d:"digiCertKernelCodeSigningCert",c:"Digicert CA policy"},"2.16.840.1.114412.2.3.21":{d:"digiCertDocumentSigningCert",c:"Digicert CA policy"},"2.16.840.1.114412.2.4":{d:"digiCertClientCert",c:"Digicert CA policy"},"2.16.840.1.114412.2.4.1.1":{d:"digiCertLevel1PersonalClientCert",c:"Digicert CA policy"},"2.16.840.1.114412.2.4.1.2":{d:"digiCertLevel1EnterpriseClientCert",c:"Digicert CA policy"},"2.16.840.1.114412.2.4.2":{d:"digiCertLevel2ClientCert",c:"Digicert CA policy"},"2.16.840.1.114412.2.4.3.1":{d:"digiCertLevel3USClientCert",c:"Digicert CA policy"},"2.16.840.1.114412.2.4.3.2":{d:"digiCertLevel3CBPClientCert",c:"Digicert CA policy"},"2.16.840.1.114412.2.4.4.1":{d:"digiCertLevel4USClientCert",c:"Digicert CA policy"},"2.16.840.1.114412.2.4.4.2":{d:"digiCertLevel4CBPClientCert",c:"Digicert CA policy"},"2.16.840.1.114412.2.4.5.1":{d:"digiCertPIVHardwareCert",c:"Digicert CA policy"},"2.16.840.1.114412.2.4.5.2":{d:"digiCertPIVCardAuthCert",c:"Digicert CA policy"},"2.16.840.1.114412.2.4.5.3":{d:"digiCertPIVContentSigningCert",c:"Digicert CA policy"},"2.16.840.1.114412.4.31":{d:"digiCertGridClassicCert",c:"Digicert CA policy"},"2.16.840.1.114412.4.31.5":{d:"digiCertGridIntegratedCert",c:"Digicert CA policy"},"2.16.840.1.114412.31.4.31.1":{d:"digiCertGridHostCert",c:"Digicert CA policy"},"2.23.42.0":{d:"contentType",c:"SET"},"2.23.42.0.0":{d:"panData",c:"SET contentType"},"2.23.42.0.1":{d:"panToken",c:"SET contentType"},"2.23.42.0.2":{d:"panOnly",c:"SET contentType"},"2.23.42.1":{d:"msgExt",c:"SET"},"2.23.42.2":{d:"field",c:"SET"},"2.23.42.2.0":{d:"fullName",c:"SET field"},"2.23.42.2.1":{d:"givenName",c:"SET field"},"2.23.42.2.2":{d:"familyName",c:"SET field"},"2.23.42.2.3":{d:"birthFamilyName",c:"SET field"},"2.23.42.2.4":{d:"placeName",c:"SET field"},"2.23.42.2.5":{d:"identificationNumber",c:"SET field"},"2.23.42.2.6":{d:"month",c:"SET field"},"2.23.42.2.7":{d:"date",c:"SET field"},"2.23.42.2.8":{d:"address",c:"SET field"},"2.23.42.2.9":{d:"telephone",c:"SET field"},"2.23.42.2.10":{d:"amount",c:"SET field"},"2.23.42.2.11":{d:"accountNumber",c:"SET field"},"2.23.42.2.12":{d:"passPhrase",c:"SET field"},"2.23.42.3":{d:"attribute",c:"SET"},"2.23.42.3.0":{d:"cert",c:"SET attribute"},"2.23.42.3.0.0":{d:"rootKeyThumb",c:"SET cert attribute"},"2.23.42.3.0.1":{d:"additionalPolicy",c:"SET cert attribute"},"2.23.42.4":{d:"algorithm",c:"SET"},"2.23.42.5":{d:"policy",c:"SET"},"2.23.42.5.0":{d:"root",c:"SET policy"},"2.23.42.6":{d:"module",c:"SET"},"2.23.42.7":{d:"certExt",c:"SET"},"2.23.42.7.0":{d:"hashedRootKey",c:"SET cert extension"},"2.23.42.7.1":{d:"certificateType",c:"SET cert extension"},"2.23.42.7.2":{d:"merchantData",c:"SET cert extension"},"2.23.42.7.3":{d:"cardCertRequired",c:"SET cert extension"},"2.23.42.7.4":{d:"tunneling",c:"SET cert extension"},"2.23.42.7.5":{d:"setExtensions",c:"SET cert extension"},"2.23.42.7.6":{d:"setQualifier",c:"SET cert extension"},"2.23.42.8":{d:"brand",c:"SET"},"2.23.42.8.1":{d:"IATA-ATA",c:"SET brand"},"2.23.42.8.4":{d:"VISA",c:"SET brand"},"2.23.42.8.5":{d:"MasterCard",c:"SET brand"},"2.23.42.8.30":{d:"Diners",c:"SET brand"},"2.23.42.8.34":{d:"AmericanExpress",c:"SET brand"},"2.23.42.8.6011":{d:"Novus",c:"SET brand"},"2.23.42.9":{d:"vendor",c:"SET"},"2.23.42.9.0":{d:"GlobeSet",c:"SET vendor"},"2.23.42.9.1":{d:"IBM",c:"SET vendor"},"2.23.42.9.2":{d:"CyberCash",c:"SET vendor"},"2.23.42.9.3":{d:"Terisa",c:"SET vendor"},"2.23.42.9.4":{d:"RSADSI",c:"SET vendor"},"2.23.42.9.5":{d:"VeriFone",c:"SET vendor"},"2.23.42.9.6":{d:"TrinTech",c:"SET vendor"},"2.23.42.9.7":{d:"BankGate",c:"SET vendor"},"2.23.42.9.8":{d:"GTE",c:"SET vendor"},"2.23.42.9.9":{d:"CompuSource",c:"SET vendor"},"2.23.42.9.10":{d:"Griffin",c:"SET vendor"},"2.23.42.9.11":{d:"Certicom",c:"SET vendor"},"2.23.42.9.12":{d:"OSS",c:"SET vendor"},"2.23.42.9.13":{d:"TenthMountain",c:"SET vendor"},"2.23.42.9.14":{d:"Antares",c:"SET vendor"},"2.23.42.9.15":{d:"ECC",c:"SET vendor"},"2.23.42.9.16":{d:"Maithean",c:"SET vendor"},"2.23.42.9.17":{d:"Netscape",c:"SET vendor"},"2.23.42.9.18":{d:"Verisign",c:"SET vendor"},"2.23.42.9.19":{d:"BlueMoney",c:"SET vendor"},"2.23.42.9.20":{d:"Lacerte",c:"SET vendor"},"2.23.42.9.21":{d:"Fujitsu",c:"SET vendor"},"2.23.42.9.22":{d:"eLab",c:"SET vendor"},"2.23.42.9.23":{d:"Entrust",c:"SET vendor"},"2.23.42.9.24":{d:"VIAnet",c:"SET vendor"},"2.23.42.9.25":{d:"III",c:"SET vendor"},"2.23.42.9.26":{d:"OpenMarket",c:"SET vendor"},"2.23.42.9.27":{d:"Lexem",c:"SET vendor"},"2.23.42.9.28":{d:"Intertrader",c:"SET vendor"},"2.23.42.9.29":{d:"Persimmon",c:"SET vendor"},"2.23.42.9.30":{d:"NABLE",c:"SET vendor"},"2.23.42.9.31":{d:"espace-net",c:"SET vendor"},"2.23.42.9.32":{d:"Hitachi",c:"SET vendor"},"2.23.42.9.33":{d:"Microsoft",c:"SET vendor"},"2.23.42.9.34":{d:"NEC",c:"SET vendor"},"2.23.42.9.35":{d:"Mitsubishi",c:"SET vendor"},"2.23.42.9.36":{d:"NCR",c:"SET vendor"},"2.23.42.9.37":{d:"e-COMM",c:"SET vendor"},"2.23.42.9.38":{d:"Gemplus",c:"SET vendor"},"2.23.42.10":{d:"national",c:"SET"},"2.23.42.10.392":{d:"Japan",c:"SET national"},"2.23.43.1.4":{d:"wTLS-ECC",c:"WAP WTLS"},"2.23.43.1.4.1":{d:"wTLS-ECC-curve1",c:"WAP WTLS"},"2.23.43.1.4.6":{d:"wTLS-ECC-curve6",c:"WAP WTLS"},"2.23.43.1.4.8":{d:"wTLS-ECC-curve8",c:"WAP WTLS"},"2.23.43.1.4.9":{d:"wTLS-ECC-curve9",c:"WAP WTLS"},"2.23.133":{d:"tCPA",c:"TCPA"},"2.23.133.1":{d:"tcpaSpecVersion",c:"TCPA"},"2.23.133.2":{d:"tcpaAttribute",c:"TCPA"},"2.23.133.2.1":{d:"tcpaTpmManufacturer",c:"TCPA Attribute"},"2.23.133.2.2":{d:"tcpaTpmModel",c:"TCPA Attribute"},"2.23.133.2.3":{d:"tcpaTpmVersion",c:"TCPA Attribute"},"2.23.133.2.4":{d:"tcpaPlatformManufacturer",c:"TCPA Attribute"},"2.23.133.2.5":{d:"tcpaPlatformModel",c:"TCPA Attribute"},"2.23.133.2.6":{d:"tcpaPlatformVersion",c:"TCPA Attribute"},"2.23.133.2.7":{d:"tcpaComponentManufacturer",c:"TCPA Attribute"},"2.23.133.2.8":{d:"tcpaComponentModel",c:"TCPA Attribute"},"2.23.133.2.9":{d:"tcpaComponentVersion",c:"TCPA Attribute"},"2.23.133.2.10":{d:"tcpaSecurityQualities",c:"TCPA Attribute"},"2.23.133.2.11":{d:"tcpaTpmProtectionProfile",c:"TCPA Attribute"},"2.23.133.2.12":{d:"tcpaTpmSecurityTarget",c:"TCPA Attribute"},"2.23.133.2.13":{d:"tcpaFoundationProtectionProfile",c:"TCPA Attribute"},"2.23.133.2.14":{d:"tcpaFoundationSecurityTarget",c:"TCPA Attribute"},"2.23.133.2.15":{d:"tcpaTpmIdLabel",c:"TCPA Attribute"},"2.23.133.3":{d:"tcpaProtocol",c:"TCPA"},"2.23.133.3.1":{d:"tcpaPrttTpmIdProtocol",c:"TCPA Protocol"},"2.23.134.1.4.2.1":{d:"postSignumRootQCA",c:"PostSignum CA"},"2.23.134.1.2.2.3":{d:"postSignumPublicCA",c:"PostSignum CA"},"2.23.134.1.2.1.8.210":{d:"postSignumCommercialServerPolicy",c:"PostSignum CA"},"2.23.136.1.1.1":{d:"mRTDSignatureData",c:"ICAO MRTD"},"2.54.1775.2":{d:"hashedRootKey",c:"SET. Deprecated, use (2 23 42 7 0) instead",w:!0},"2.54.1775.3":{d:"certificateType",c:"SET. Deprecated, use (2 23 42 7 0) instead",w:!0},"2.54.1775.4":{d:"merchantData",c:"SET. Deprecated, use (2 23 42 7 0) instead",w:!0},"2.54.1775.5":{d:"cardCertRequired",c:"SET. Deprecated, use (2 23 42 7 0) instead",w:!0},"2.54.1775.6":{d:"tunneling",c:"SET. Deprecated, use (2 23 42 7 0) instead",w:!0},"2.54.1775.7":{d:"setQualifier",c:"SET. Deprecated, use (2 23 42 7 0) instead",w:!0},"2.54.1775.99":{d:"setData",c:"SET. Deprecated, use (2 23 42 7 0) instead",w:!0},"1.2.40.0.17.1.22":{d:"A-Trust EV policy",c:"A-Trust CA Root"},"1.3.6.1.4.1.34697.2.1":{d:"AffirmTrust EV policy",c:"AffirmTrust Commercial"},"1.3.6.1.4.1.34697.2.2":{d:"AffirmTrust EV policy",c:"AffirmTrust Networking"},"1.3.6.1.4.1.34697.2.3":{d:"AffirmTrust EV policy",c:"AffirmTrust Premium"},"1.3.6.1.4.1.34697.2.4":{d:"AffirmTrust EV policy",c:"AffirmTrust Premium ECC"},"2.16.578.1.26.1.3.3":{d:"BuyPass EV policy",c:"BuyPass Class 3 EV"},"1.3.6.1.4.1.17326.10.14.2.1.2":{d:"Camerfirma EV policy",c:"Camerfirma CA Root"},"1.3.6.1.4.1.17326.10.8.12.1.2":{d:"Camerfirma EV policy",c:"Camerfirma CA Root"},"1.3.6.1.4.1.22234.2.5.2.3.1":{d:"CertPlus EV policy",c:"CertPlus Class 2 Primary CA (formerly Keynectis)"},"1.3.6.1.4.1.6449.1.2.1.5.1":{d:"Comodo EV policy",c:"COMODO Certification Authority"},"1.3.6.1.4.1.6334.1.100.1":{d:"Cybertrust EV policy",c:"Cybertrust Global Root (now Verizon Business)"},"1.3.6.1.4.1.4788.2.202.1":{d:"D-TRUST EV policy",c:"D-TRUST Root Class 3 CA 2 EV 2009"},"2.16.840.1.114412.2.1":{d:"DigiCert EV policy",c:"DigiCert High Assurance EV Root CA"},"2.16.528.1.1001.1.1.1.12.6.1.1.1":{d:"DigiNotar EV policy",c:"DigiNotar Root CA"},"2.16.840.1.114028.10.1.2":{d:"Entrust EV policy",c:"Entrust Root Certification Authority"},"1.3.6.1.4.1.14370.1.6":{d:"GeoTrust EV policy",c:"GeoTrust Primary Certification Authority (formerly Equifax)"},"1.3.6.1.4.1.4146.1.1":{d:"GlobalSign EV policy",c:"GlobalSign"},"2.16.840.1.114413.1.7.23.3":{d:"GoDaddy EV policy",c:"GoDaddy Class 2 Certification Authority (formerly ValiCert)"},"1.3.6.1.4.1.14777.6.1.1":{d:"Izenpe EV policy",c:"Certificado de Servidor Seguro SSL EV"},"1.3.6.1.4.1.14777.6.1.2":{d:"Izenpe EV policy",c:"Certificado de Sede Electronica EV"},"1.3.6.1.4.1.782.1.2.1.8.1":{d:"Network Solutions EV policy",c:"Network Solutions Certificate Authority"},"1.3.6.1.4.1.8024.0.2.100.1.2":{d:"QuoVadis EV policy",c:"QuoVadis Root CA 2"},"1.2.392.200091.100.721.1":{d:"Security Communication (SECOM) EV policy",c:"Security Communication RootCA1"},"2.16.840.1.114414.1.7.23.3":{d:"Starfield EV policy",c:"Starfield Class 2 Certification Authority"},"1.3.6.1.4.1.23223.1.1.1":{d:"StartCom EV policy",c:"StartCom Certification Authority"},"2.16.756.1.89.1.2.1.1":{d:"SwissSign EV policy",c:"SwissSign Gold CA - G2"},"1.3.6.1.4.1.7879.13.24.1":{d:"T-TeleSec EV policy",c:"T-TeleSec GlobalRoot Class 3"},"2.16.840.1.113733.1.7.48.1":{d:"Thawte EV policy",c:"Thawte Premium Server CA"},"2.16.840.1.114404.1.1.2.4.1":{d:"TrustWave EV policy",c:"TrustWave CA, formerly SecureTrust, before that XRamp"},"1.3.6.1.4.1.40869.1.1.22.3":{d:"TWCA EV policy",c:"TWCA Root Certification Authority"},"2.16.840.1.113733.1.7.23.6":{d:"VeriSign EV policy",c:"VeriSign Class 3 Public Primary Certification Authority"},"2.16.840.1.114171.500.9":{d:"Wells Fargo EV policy",c:"Wells Fargo WellsSecure Public Root Certificate Authority"},END:""}}.call(t,r,t,e))||(e.exports=i)},85:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.fromBER=le,t.compareSchema=ue,t.verifySchema=function(e,t){if(t instanceof Object==0)return{verified:!1,result:{error:"Wrong ASN.1 schema type"}};const r=le(e);return-1===r.offset?{verified:!1,result:r.result}:ue(r.result,r.result,t)},t.fromJSON=function(e){},t.RawData=t.Repeated=t.Any=t.Choice=t.TIME=t.Duration=t.DateTime=t.TimeOfDay=t.DATE=t.GeneralizedTime=t.UTCTime=t.CharacterString=t.GeneralString=t.VisibleString=t.GraphicString=t.IA5String=t.VideotexString=t.TeletexString=t.PrintableString=t.NumericString=t.UniversalString=t.BmpString=t.RelativeObjectIdentifier=t.Utf8String=t.ObjectIdentifier=t.Enumerated=t.Integer=t.BitString=t.OctetString=t.Null=t.Set=t.Sequence=t.Boolean=t.EndOfContent=t.Constructed=t.Primitive=t.BaseBlock=t.ValueBlock=t.HexBlock=void 0;var i=r(595);const n=[new Uint8Array([1])],s="0123456789";class a{constructor(e={}){this.blockLength=(0,i.getParametersValue)(e,"blockLength",0),this.error=(0,i.getParametersValue)(e,"error",""),this.warnings=(0,i.getParametersValue)(e,"warnings",[]),this.valueBeforeDecode="valueBeforeDecode"in e?e.valueBeforeDecode.slice(0):new ArrayBuffer(0)}static blockName(){return"baseBlock"}toJSON(){return{blockName:this.constructor.blockName(),blockLength:this.blockLength,error:this.error,warnings:this.warnings,valueBeforeDecode:(0,i.bufferToHexCodes)(this.valueBeforeDecode,0,this.valueBeforeDecode.byteLength)}}}const c=e=>class extends e{constructor(e={}){super(e),this.isHexOnly=(0,i.getParametersValue)(e,"isHexOnly",!1),this.valueHex="valueHex"in e?e.valueHex.slice(0):new ArrayBuffer(0)}static blockName(){return"hexBlock"}fromBER(e,t,r){return!1===(0,i.checkBufferParams)(this,e,t,r)?-1:0===new Uint8Array(e,t,r).length?(this.warnings.push("Zero buffer length"),t):(this.valueHex=e.slice(t,t+r),this.blockLength=r,t+r)}toBER(e=!1){return!0!==this.isHexOnly?(this.error='Flag "isHexOnly" is not set, abort',new ArrayBuffer(0)):!0===e?new ArrayBuffer(this.valueHex.byteLength):this.valueHex.slice(0)}toJSON(){let e={};try{e=super.toJSON()}catch(e){}return e.blockName=this.constructor.blockName(),e.isHexOnly=this.isHexOnly,e.valueHex=(0,i.bufferToHexCodes)(this.valueHex,0,this.valueHex.byteLength),e}};t.HexBlock=c;class o extends(c(a)){constructor(e={}){super(),"idBlock"in e?(this.isHexOnly=(0,i.getParametersValue)(e.idBlock,"isHexOnly",!1),this.valueHex=(0,i.getParametersValue)(e.idBlock,"valueHex",new ArrayBuffer(0)),this.tagClass=(0,i.getParametersValue)(e.idBlock,"tagClass",-1),this.tagNumber=(0,i.getParametersValue)(e.idBlock,"tagNumber",-1),this.isConstructed=(0,i.getParametersValue)(e.idBlock,"isConstructed",!1)):(this.tagClass=-1,this.tagNumber=-1,this.isConstructed=!1)}static blockName(){return"identificationBlock"}toBER(e=!1){let t,r,n=0;switch(this.tagClass){case 1:n|=0;break;case 2:n|=64;break;case 3:n|=128;break;case 4:n|=192;break;default:return this.error="Unknown tag class",new ArrayBuffer(0)}if(this.isConstructed&&(n|=32),this.tagNumber<31&&!this.isHexOnly){if(t=new ArrayBuffer(1),r=new Uint8Array(t),!e){let e=this.tagNumber;e&=31,n|=e,r[0]=n}return t}if(!1===this.isHexOnly){const s=(0,i.utilToBase)(this.tagNumber,7),a=new Uint8Array(s),c=s.byteLength;if(t=new ArrayBuffer(c+1),r=new Uint8Array(t),r[0]=31|n,!e){for(let e=0;e=n.length)return this.error="End of input reached before message was fully decoded",-1;if(e===t){t+=255;const e=new ArrayBuffer(t),i=new Uint8Array(e);for(let e=0;e8)return this.error="Too big integer",-1;if(s+1>n.length)return this.error="End of input reached before message was fully decoded",-1;const a=new Uint8Array(s);for(let e=0;e127&&(this.longFormUsed=!0),this.isIndefiniteForm)return t=new ArrayBuffer(1),!1===e&&(r=new Uint8Array(t),r[0]=128),t;if(!0===this.longFormUsed){const n=(0,i.utilToBase)(this.length,8);if(n.byteLength>127)return this.error="Too big length",new ArrayBuffer(0);if(t=new ArrayBuffer(n.byteLength+1),!0===e)return t;const s=new Uint8Array(n);r=new Uint8Array(t),r[0]=128|n.byteLength;for(let e=0;e0;){const t=de(e,a,r);if(-1===t.offset)return this.error=t.result.error,this.warnings.concat(t.result.warnings),-1;if(a=t.offset,this.blockLength+=t.result.blockLength,r-=t.result.blockLength,this.value.push(t.result),!0===this.isIndefiniteForm&&t.result.constructor.blockName()===g.blockName())break}return!0===this.isIndefiniteForm&&(this.value[this.value.length-1].constructor.blockName()===g.blockName()?this.value.pop():this.warnings.push("No EndOfContent block encoded")),this.valueBeforeDecode=e.slice(n,n+s),a}toBER(e=!1){let t=new ArrayBuffer(0);for(let r=0;r1&&this.warnings.push("Boolean value encoded in more then 1 octet"),this.isHexOnly=!0,this.valueHex=new ArrayBuffer(n.length);const s=new Uint8Array(this.valueHex);for(let e=0;e0&&this.warnings.push("Non-zero length of value block for Null type"),0===this.idBlock.error.length&&(this.blockLength+=this.idBlock.blockLength),0===this.lenBlock.error.length&&(this.blockLength+=this.lenBlock.blockLength),this.blockLength+=r,t+r>e.byteLength?(this.error="End of input reached before message was fully decoded (inconsistent offset and length values)",-1):t+r}toBER(e=!1){const t=new ArrayBuffer(2);if(!0===e)return t;const r=new Uint8Array(t);return r[0]=5,r[1]=0,t}}t.Null=C;class I extends(c(p)){constructor(e={}){super(e),this.isConstructed=(0,i.getParametersValue)(e,"isConstructed",!1)}fromBER(e,t,r){let i=0;if(!0===this.isConstructed){if(this.isHexOnly=!1,i=p.prototype.fromBER.call(this,e,t,r),-1===i)return i;for(let e=0;e0&&this.value[e].valueBlock.unusedBits>0)return this.error='Usign of "unused bits" inside constructive BIT STRING allowed for least one only',-1;if(this.unusedBits=this.value[e].valueBlock.unusedBits,this.unusedBits>7)return this.error="Unused bits for BitString must be in range 0-7",-1}return n}if(!1===(0,i.checkBufferParams)(this,e,t,r))return-1;const s=new Uint8Array(e,t,r);if(this.unusedBits=s[0],this.unusedBits>7)return this.error="Unused bits for BitString must be in range 0-7",-1;this.valueHex=new ArrayBuffer(s.length-1);const a=new Uint8Array(this.valueHex);for(let e=0;e=4?(this.warnings.push("Too big Integer for decoding, hex only"),this.isHexOnly=!0,this._valueDec=0):(this.isHexOnly=!1,e.byteLength>0&&(this._valueDec=i.utilDecodeTC.call(this)))}get valueHex(){return this._valueHex}set valueDec(e){this._valueDec=e,this.isHexOnly=!1,this._valueHex=(0,i.utilEncodeTC)(e)}get valueDec(){return this._valueDec}fromDER(e,t,r,i=0){const n=this.fromBER(e,t,r);if(-1===n)return n;const s=new Uint8Array(this._valueHex);if(0===s[0]&&0!=(128&s[1])){const e=new ArrayBuffer(this._valueHex.byteLength-1);new Uint8Array(e).set(new Uint8Array(this._valueHex,1,this._valueHex.byteLength-1)),this._valueHex=e.slice(0)}else if(0!==i&&this._valueHex.byteLength1&&(i=this._valueHex.byteLength+1);const e=new ArrayBuffer(i);new Uint8Array(e).set(s,i-this._valueHex.byteLength),this._valueHex=e.slice(0)}return n}toDER(e=!1){const t=new Uint8Array(this._valueHex);switch(!0){case 0!=(128&t[0]):{const e=new ArrayBuffer(this._valueHex.byteLength+1),r=new Uint8Array(e);r[0]=0,r.set(t,1),this._valueHex=e.slice(0)}break;case 0===t[0]&&0==(128&t[1]):{const e=new ArrayBuffer(this._valueHex.byteLength-1);new Uint8Array(e).set(new Uint8Array(this._valueHex,1,this._valueHex.byteLength-1)),this._valueHex=e.slice(0)}}return this.toBER(e)}fromBER(e,t,r){const i=super.fromBER(e,t,r);return-1===i?i:(this.blockLength=r,t+r)}toBER(e=!1){return this.valueHex.slice(0)}static blockName(){return"IntegerValueBlock"}toJSON(){let e={};try{e=super.toJSON()}catch(e){}return e.valueDec=this.valueDec,e}toString(){function e(e,t){const r=new Uint8Array([0]);let n=new Uint8Array(e),s=new Uint8Array(t),a=n.slice(0);const c=a.length-1;let o=s.slice(0);const d=o.length-1;let l=0,u=0;for(let e=d=0;e--,u++){switch(!0){case u=a.length:a=(0,i.utilConcatView)(new Uint8Array([l%10]),a);break;default:a[c-u]=l%10}}return r[0]>0&&(a=(0,i.utilConcatView)(r,a)),a.slice(0)}function t(e){if(e>=n.length)for(let t=n.length;t<=e;t++){const e=new Uint8Array([0]);let r=n[t-1].slice(0);for(let t=r.length-1;t>=0;t--){const i=new Uint8Array([(r[t]<<1)+e[0]]);e[0]=i[0]/10,r[t]=i[0]%10}e[0]>0&&(r=(0,i.utilConcatView)(e,r)),n.push(r)}return n[e]}function r(e,t){let r=0,i=new Uint8Array(e),n=new Uint8Array(t),s=i.slice(0);const a=s.length-1;let c=n.slice(0);const o=c.length-1;let d,l=0;for(let e=o;e>=0;e--,l++)switch(d=s[a-l]-c[o-l]-r,!0){case d<0:r=1,s[a-l]=d+10;break;default:r=0,s[a-l]=d}if(r>0)for(let e=a-o+1;e>=0;e--,l++){if(d=s[a-l]-r,!(d<0)){r=0,s[a-l]=d;break}r=1,s[a-l]=d+10}return s.slice()}const a=8*this._valueHex.byteLength-1;let c,o=new Uint8Array(8*this._valueHex.byteLength/3),d=0;const l=new Uint8Array(this._valueHex);let u="",h=!1;for(let i=this._valueHex.byteLength-1;i>=0;i--){c=l[i];for(let i=0;i<8;i++){if(1==(1&c))switch(d){case a:o=r(t(d),o),u="-";break;default:o=e(o,t(d))}d++,c>>=1}}for(let e=0;e0;){const t=new N;if(i=t.fromBER(e,i,r),-1===i)return this.blockLength=0,this.error=t.error,i;0===this.value.length&&(t.isFirstSid=!0),this.blockLength+=t.blockLength,r-=t.blockLength,this.value.push(t)}return i}toBER(e=!1){let t=new ArrayBuffer(0);for(let r=0;r0;){const t=new R;if(i=t.fromBER(e,i,r),-1===i)return this.blockLength=0,this.error=t.error,i;this.blockLength+=t.blockLength,r-=t.blockLength,this.value.push(t)}return i}toBER(e=!1){let t=new ArrayBuffer(0);for(let r=0;r2)continue;const a=2-s.length;for(let e=s.length-1;e>=0;e--)r[2*n+e+a]=s[e]}this.valueBlock.value=e}}t.BmpString=_;class L extends(c(a)){constructor(e={}){super(e),this.isHexOnly=!0,this.value=""}static blockName(){return"UniversalStringValueBlock"}toJSON(){let e={};try{e=super.toJSON()}catch(e){}return e.value=this.value,e}}class U extends u{constructor(e={}){super(e,L),"value"in e&&this.fromString(e.value),this.idBlock.tagClass=1,this.idBlock.tagNumber=28}static blockName(){return"UniversalString"}fromBER(e,t,r){const i=this.valueBlock.fromBER(e,t,!0===this.lenBlock.isIndefiniteForm?r:this.lenBlock.length);return-1===i?(this.error=this.valueBlock.error,i):(this.fromBuffer(this.valueBlock.valueHex),0===this.idBlock.error.length&&(this.blockLength+=this.idBlock.blockLength),0===this.lenBlock.error.length&&(this.blockLength+=this.lenBlock.blockLength),0===this.valueBlock.error.length&&(this.blockLength+=this.valueBlock.blockLength),i)}fromBuffer(e){const t=e.slice(0),r=new Uint8Array(t);for(let e=0;e4)continue;const a=4-s.length;for(let e=s.length-1;e>=0;e--)r[4*n+e+a]=s[e]}this.valueBlock.value=e}}t.UniversalString=U;class X extends(c(a)){constructor(e={}){super(e),this.value="",this.isHexOnly=!0}static blockName(){return"SimpleStringValueBlock"}toJSON(){let e={};try{e=super.toJSON()}catch(e){}return e.value=this.value,e}}class G extends u{constructor(e={}){super(e,X),"value"in e&&this.fromString(e.value)}static blockName(){return"SIMPLESTRING"}fromBER(e,t,r){const i=this.valueBlock.fromBER(e,t,!0===this.lenBlock.isIndefiniteForm?r:this.lenBlock.length);return-1===i?(this.error=this.valueBlock.error,i):(this.fromBuffer(this.valueBlock.valueHex),0===this.idBlock.error.length&&(this.blockLength+=this.idBlock.blockLength),0===this.lenBlock.error.length&&(this.blockLength+=this.lenBlock.blockLength),0===this.valueBlock.error.length&&(this.blockLength+=this.valueBlock.blockLength),i)}fromBuffer(e){this.valueBlock.value=String.fromCharCode.apply(null,new Uint8Array(e))}fromString(e){const t=e.length;this.valueBlock.valueHex=new ArrayBuffer(t);const r=new Uint8Array(this.valueBlock.valueHex);for(let i=0;i=50?1900+r:2e3+r,this.month=parseInt(t[2],10),this.day=parseInt(t[3],10),this.hour=parseInt(t[4],10),this.minute=parseInt(t[5],10),this.second=parseInt(t[6],10)}toString(){const e=new Array(7);return e[0]=(0,i.padNumber)(this.year<2e3?this.year-1900:this.year-2e3,2),e[1]=(0,i.padNumber)(this.month,2),e[2]=(0,i.padNumber)(this.day,2),e[3]=(0,i.padNumber)(this.hour,2),e[4]=(0,i.padNumber)(this.minute,2),e[5]=(0,i.padNumber)(this.second,2),e[6]="Z",e.join("")}static blockName(){return"UTCTime"}toJSON(){let e={};try{e=super.toJSON()}catch(e){}return e.year=this.year,e.month=this.month,e.day=this.day,e.hour=this.hour,e.minute=this.minute,e.second=this.second,e}}t.UTCTime=Y;class ee extends Q{constructor(e={}){if(super(e),this.year=0,this.month=0,this.day=0,this.hour=0,this.minute=0,this.second=0,this.millisecond=0,"value"in e){this.fromString(e.value),this.valueBlock.valueHex=new ArrayBuffer(e.value.length);const t=new Uint8Array(this.valueBlock.valueHex);for(let r=0;r=37&&!1===s.idBlock.isHexOnly)return s.error="UNIVERSAL 37 and upper tags are reserved by ASN.1 standard",{offset:-1,result:s};switch(s.idBlock.tagNumber){case 0:if(!0===s.idBlock.isConstructed&&s.lenBlock.length>0)return s.error="Type [UNIVERSAL 0] is reserved",{offset:-1,result:s};d=g;break;case 1:d=S;break;case 2:d=M;break;case 3:d=w;break;case 4:d=k;break;case 5:d=C;break;case 6:d=D;break;case 10:d=T;break;case 12:d=O;break;case 13:d=K;break;case 14:d=se;break;case 15:return s.error="[UNIVERSAL 15] is reserved by ASN.1 standard",{offset:-1,result:s};case 16:d=v;break;case 17:d=A;break;case 18:d=V;break;case 19:d=q;break;case 20:d=W;break;case 21:d=z;break;case 22:d=j;break;case 23:d=Y;break;case 24:d=ee;break;case 25:d=J;break;case 26:d=Q;break;case 27:d=Z;break;case 28:d=U;break;case 29:d=$;break;case 30:d=_;break;case 31:d=te;break;case 32:d=re;break;case 33:d=ie;break;case 34:d=ne;break;default:{let i;i=!0===s.idBlock.isConstructed?new m:new f,i.idBlock=s.idBlock,i.lenBlock=s.lenBlock,i.warnings=s.warnings,s=i,o=s.fromBER(e,t,r)}}break;case 2:case 3:case 4:default:d=!0===s.idBlock.isConstructed?m:f}return s=function(e,t){if(e instanceof t)return e;const r=new t;return r.idBlock=e.idBlock,r.lenBlock=e.lenBlock,r.warnings=e.warnings,r.valueBeforeDecode=e.valueBeforeDecode.slice(0),r}(s,d),o=s.fromBER(e,t,!0===s.lenBlock.isIndefiniteForm?r:s.lenBlock.length),s.valueBeforeDecode=e.slice(n,n+s.blockLength),{offset:o,result:s}}function le(e){if(0===e.byteLength){const e=new u({},Object);return e.error="Input buffer has zero length",{offset:-1,result:e}}return de(e,0,e.byteLength)}function ue(e,t,r){if(r instanceof ae){const i=!1;for(let i=0;i0&&r.valueBlock.value[0]instanceof oe&&(s=t.valueBlock.value.length),0===s)return{verified:!0,result:e};if(0===t.valueBlock.value.length&&0!==r.valueBlock.value.length){let t=!0;for(let e=0;e=t.valueBlock.value.length){if(!1===r.valueBlock.value[a].optional){const t={verified:!1,result:e};return e.error="Inconsistent length between ASN.1 data and schema",r.hasOwnProperty("name")&&(r.name=r.name.replace(/^\s+|\s+$/g,""),""!==r.name&&(delete e[r.name],t.name=r.name)),t}}else if(r.valueBlock.value[0]instanceof oe){if(n=ue(e,t.valueBlock.value[a],r.valueBlock.value[0].value),!1===n.verified){if(!0!==r.valueBlock.value[0].optional)return r.hasOwnProperty("name")&&(r.name=r.name.replace(/^\s+|\s+$/g,""),""!==r.name&&delete e[r.name]),n;i++}if("name"in r.valueBlock.value[0]&&r.valueBlock.value[0].name.length>0){let i={};i="local"in r.valueBlock.value[0]&&!0===r.valueBlock.value[0].local?t:e,void 0===i[r.valueBlock.value[0].name]&&(i[r.valueBlock.value[0].name]=[]),i[r.valueBlock.value[0].name].push(t.valueBlock.value[a])}}else if(n=ue(e,t.valueBlock.value[a-i],r.valueBlock.value[a]),!1===n.verified){if(!0!==r.valueBlock.value[a].optional)return r.hasOwnProperty("name")&&(r.name=r.name.replace(/^\s+|\s+$/g,""),""!==r.name&&delete e[r.name]),n;i++}if(!1===n.verified){const t={verified:!1,result:e};return r.hasOwnProperty("name")&&(r.name=r.name.replace(/^\s+|\s+$/g,""),""!==r.name&&(delete e[r.name],t.name=r.name)),t}return{verified:!0,result:e}}if("primitiveSchema"in r&&"valueHex"in t.valueBlock){const i=le(t.valueBlock.valueHex);if(-1===i.offset){const t={verified:!1,result:i.result};return r.hasOwnProperty("name")&&(r.name=r.name.replace(/^\s+|\s+$/g,""),""!==r.name&&(delete e[r.name],t.name=r.name)),t}return ue(e,i.result,r.primitiveSchema)}return{verified:!0,result:e}}t.Repeated=oe,t.RawData=class{constructor(e={}){this.data=(0,i.getParametersValue)(e,"data",new ArrayBuffer(0))}fromBER(e,t,r){return this.data=e.slice(t,r),t+r}toBER(e=!1){return this.data}}},550:function(e,t,r){!function(e,t){"use strict";function i(e,t){if(!e)throw new Error(t||"Assertion failed")}function n(e,t){e.super_=t;var r=function(){};r.prototype=t.prototype,e.prototype=new r,e.prototype.constructor=e}function s(e,t,r){if(s.isBN(e))return e;this.negative=0,this.words=null,this.length=0,this.red=null,null!==e&&("le"!==t&&"be"!==t||(r=t,t=10),this._init(e||0,t||10,r||"be"))}var a;"object"==typeof e?e.exports=s:t.BN=s,s.BN=s,s.wordSize=26;try{a=r(574).Buffer}catch(e){}function c(e,t,r){for(var i=0,n=Math.min(e.length,r),s=t;s=49&&a<=54?a-49+10:a>=17&&a<=22?a-17+10:15&a}return i}function o(e,t,r,i){for(var n=0,s=Math.min(e.length,r),a=t;a=49?c-49+10:c>=17?c-17+10:c}return n}s.isBN=function(e){return e instanceof s||null!==e&&"object"==typeof e&&e.constructor.wordSize===s.wordSize&&Array.isArray(e.words)},s.max=function(e,t){return e.cmp(t)>0?e:t},s.min=function(e,t){return e.cmp(t)<0?e:t},s.prototype._init=function(e,t,r){if("number"==typeof e)return this._initNumber(e,t,r);if("object"==typeof e)return this._initArray(e,t,r);"hex"===t&&(t=16),i(t===(0|t)&&t>=2&&t<=36);var n=0;"-"===(e=e.toString().replace(/\s+/g,""))[0]&&n++,16===t?this._parseHex(e,n):this._parseBase(e,t,n),"-"===e[0]&&(this.negative=1),this.strip(),"le"===r&&this._initArray(this.toArray(),t,r)},s.prototype._initNumber=function(e,t,r){e<0&&(this.negative=1,e=-e),e<67108864?(this.words=[67108863&e],this.length=1):e<4503599627370496?(this.words=[67108863&e,e/67108864&67108863],this.length=2):(i(e<9007199254740992),this.words=[67108863&e,e/67108864&67108863,1],this.length=3),"le"===r&&this._initArray(this.toArray(),t,r)},s.prototype._initArray=function(e,t,r){if(i("number"==typeof e.length),e.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(e.length/3),this.words=new Array(this.length);for(var n=0;n=0;n-=3)a=e[n]|e[n-1]<<8|e[n-2]<<16,this.words[s]|=a<>>26-c&67108863,(c+=24)>=26&&(c-=26,s++);else if("le"===r)for(n=0,s=0;n>>26-c&67108863,(c+=24)>=26&&(c-=26,s++);return this.strip()},s.prototype._parseHex=function(e,t){this.length=Math.ceil((e.length-t)/6),this.words=new Array(this.length);for(var r=0;r=t;r-=6)n=c(e,r,r+6),this.words[i]|=n<>>26-s&4194303,(s+=24)>=26&&(s-=26,i++);r+6!==t&&(n=c(e,t,r+6),this.words[i]|=n<>>26-s&4194303),this.strip()},s.prototype._parseBase=function(e,t,r){this.words=[0],this.length=1;for(var i=0,n=1;n<=67108863;n*=t)i++;i--,n=n/t|0;for(var s=e.length-r,a=s%i,c=Math.min(s,s-a)+r,d=0,l=r;l1&&0===this.words[this.length-1];)this.length--;return this._normSign()},s.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},s.prototype.inspect=function(){return(this.red?""};var d=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],l=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],u=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function h(e,t,r){r.negative=t.negative^e.negative;var i=e.length+t.length|0;r.length=i,i=i-1|0;var n=0|e.words[0],s=0|t.words[0],a=n*s,c=67108863&a,o=a/67108864|0;r.words[0]=c;for(var d=1;d>>26,u=67108863&o,h=Math.min(d,t.length-1),f=Math.max(0,d-e.length+1);f<=h;f++){var p=d-f|0;l+=(a=(n=0|e.words[p])*(s=0|t.words[f])+u)/67108864|0,u=67108863&a}r.words[d]=0|u,o=0|l}return 0!==o?r.words[d]=0|o:r.length--,r.strip()}s.prototype.toString=function(e,t){var r;if(t=0|t||1,16===(e=e||10)||"hex"===e){r="";for(var n=0,s=0,a=0;a>>24-n&16777215)||a!==this.length-1?d[6-o.length]+o+r:o+r,(n+=2)>=26&&(n-=26,a--)}for(0!==s&&(r=s.toString(16)+r);r.length%t!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(e===(0|e)&&e>=2&&e<=36){var h=l[e],f=u[e];r="";var p=this.clone();for(p.negative=0;!p.isZero();){var m=p.modn(f).toString(e);r=(p=p.idivn(f)).isZero()?m+r:d[h-m.length]+m+r}for(this.isZero()&&(r="0"+r);r.length%t!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}i(!1,"Base should be between 2 and 36")},s.prototype.toNumber=function(){var e=this.words[0];return 2===this.length?e+=67108864*this.words[1]:3===this.length&&1===this.words[2]?e+=4503599627370496+67108864*this.words[1]:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-e:e},s.prototype.toJSON=function(){return this.toString(16)},s.prototype.toBuffer=function(e,t){return i(void 0!==a),this.toArrayLike(a,e,t)},s.prototype.toArray=function(e,t){return this.toArrayLike(Array,e,t)},s.prototype.toArrayLike=function(e,t,r){var n=this.byteLength(),s=r||Math.max(1,n);i(n<=s,"byte array longer than desired length"),i(s>0,"Requested array length <= 0"),this.strip();var a,c,o="le"===t,d=new e(s),l=this.clone();if(o){for(c=0;!l.isZero();c++)a=l.andln(255),l.iushrn(8),d[c]=a;for(;c=4096&&(r+=13,t>>>=13),t>=64&&(r+=7,t>>>=7),t>=8&&(r+=4,t>>>=4),t>=2&&(r+=2,t>>>=2),r+t},s.prototype._zeroBits=function(e){if(0===e)return 26;var t=e,r=0;return 0==(8191&t)&&(r+=13,t>>>=13),0==(127&t)&&(r+=7,t>>>=7),0==(15&t)&&(r+=4,t>>>=4),0==(3&t)&&(r+=2,t>>>=2),0==(1&t)&&r++,r},s.prototype.bitLength=function(){var e=this.words[this.length-1],t=this._countBits(e);return 26*(this.length-1)+t},s.prototype.zeroBits=function(){if(this.isZero())return 0;for(var e=0,t=0;te.length?this.clone().ior(e):e.clone().ior(this)},s.prototype.uor=function(e){return this.length>e.length?this.clone().iuor(e):e.clone().iuor(this)},s.prototype.iuand=function(e){var t;t=this.length>e.length?e:this;for(var r=0;re.length?this.clone().iand(e):e.clone().iand(this)},s.prototype.uand=function(e){return this.length>e.length?this.clone().iuand(e):e.clone().iuand(this)},s.prototype.iuxor=function(e){var t,r;this.length>e.length?(t=this,r=e):(t=e,r=this);for(var i=0;ie.length?this.clone().ixor(e):e.clone().ixor(this)},s.prototype.uxor=function(e){return this.length>e.length?this.clone().iuxor(e):e.clone().iuxor(this)},s.prototype.inotn=function(e){i("number"==typeof e&&e>=0);var t=0|Math.ceil(e/26),r=e%26;this._expand(t),r>0&&t--;for(var n=0;n0&&(this.words[n]=~this.words[n]&67108863>>26-r),this.strip()},s.prototype.notn=function(e){return this.clone().inotn(e)},s.prototype.setn=function(e,t){i("number"==typeof e&&e>=0);var r=e/26|0,n=e%26;return this._expand(r+1),this.words[r]=t?this.words[r]|1<e.length?(r=this,i=e):(r=e,i=this);for(var n=0,s=0;s>>26;for(;0!==n&&s>>26;if(this.length=r.length,0!==n)this.words[this.length]=n,this.length++;else if(r!==this)for(;se.length?this.clone().iadd(e):e.clone().iadd(this)},s.prototype.isub=function(e){if(0!==e.negative){e.negative=0;var t=this.iadd(e);return e.negative=1,t._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(e),this.negative=1,this._normSign();var r,i,n=this.cmp(e);if(0===n)return this.negative=0,this.length=1,this.words[0]=0,this;n>0?(r=this,i=e):(r=e,i=this);for(var s=0,a=0;a>26,this.words[a]=67108863&t;for(;0!==s&&a>26,this.words[a]=67108863&t;if(0===s&&a>>13,f=0|a[1],p=8191&f,m=f>>>13,b=0|a[2],g=8191&b,y=b>>>13,S=0|a[3],v=8191&S,A=S>>>13,C=0|a[4],I=8191&C,k=C>>>13,B=0|a[5],w=8191&B,E=B>>>13,M=0|a[6],T=8191&M,N=M>>>13,P=0|a[7],D=8191&P,x=P>>>13,O=0|a[8],R=8191&O,F=O>>>13,K=0|a[9],H=8191&K,_=K>>>13,L=0|c[0],U=8191&L,X=L>>>13,G=0|c[1],V=8191&G,q=G>>>13,W=0|c[2],z=8191&W,j=W>>>13,J=0|c[3],Q=8191&J,Z=J>>>13,$=0|c[4],Y=8191&$,ee=$>>>13,te=0|c[5],re=8191&te,ie=te>>>13,ne=0|c[6],se=8191&ne,ae=ne>>>13,ce=0|c[7],oe=8191&ce,de=ce>>>13,le=0|c[8],ue=8191&le,he=le>>>13,fe=0|c[9],pe=8191&fe,me=fe>>>13;r.negative=e.negative^t.negative,r.length=19;var be=(d+(i=Math.imul(u,U))|0)+((8191&(n=(n=Math.imul(u,X))+Math.imul(h,U)|0))<<13)|0;d=((s=Math.imul(h,X))+(n>>>13)|0)+(be>>>26)|0,be&=67108863,i=Math.imul(p,U),n=(n=Math.imul(p,X))+Math.imul(m,U)|0,s=Math.imul(m,X);var ge=(d+(i=i+Math.imul(u,V)|0)|0)+((8191&(n=(n=n+Math.imul(u,q)|0)+Math.imul(h,V)|0))<<13)|0;d=((s=s+Math.imul(h,q)|0)+(n>>>13)|0)+(ge>>>26)|0,ge&=67108863,i=Math.imul(g,U),n=(n=Math.imul(g,X))+Math.imul(y,U)|0,s=Math.imul(y,X),i=i+Math.imul(p,V)|0,n=(n=n+Math.imul(p,q)|0)+Math.imul(m,V)|0,s=s+Math.imul(m,q)|0;var ye=(d+(i=i+Math.imul(u,z)|0)|0)+((8191&(n=(n=n+Math.imul(u,j)|0)+Math.imul(h,z)|0))<<13)|0;d=((s=s+Math.imul(h,j)|0)+(n>>>13)|0)+(ye>>>26)|0,ye&=67108863,i=Math.imul(v,U),n=(n=Math.imul(v,X))+Math.imul(A,U)|0,s=Math.imul(A,X),i=i+Math.imul(g,V)|0,n=(n=n+Math.imul(g,q)|0)+Math.imul(y,V)|0,s=s+Math.imul(y,q)|0,i=i+Math.imul(p,z)|0,n=(n=n+Math.imul(p,j)|0)+Math.imul(m,z)|0,s=s+Math.imul(m,j)|0;var Se=(d+(i=i+Math.imul(u,Q)|0)|0)+((8191&(n=(n=n+Math.imul(u,Z)|0)+Math.imul(h,Q)|0))<<13)|0;d=((s=s+Math.imul(h,Z)|0)+(n>>>13)|0)+(Se>>>26)|0,Se&=67108863,i=Math.imul(I,U),n=(n=Math.imul(I,X))+Math.imul(k,U)|0,s=Math.imul(k,X),i=i+Math.imul(v,V)|0,n=(n=n+Math.imul(v,q)|0)+Math.imul(A,V)|0,s=s+Math.imul(A,q)|0,i=i+Math.imul(g,z)|0,n=(n=n+Math.imul(g,j)|0)+Math.imul(y,z)|0,s=s+Math.imul(y,j)|0,i=i+Math.imul(p,Q)|0,n=(n=n+Math.imul(p,Z)|0)+Math.imul(m,Q)|0,s=s+Math.imul(m,Z)|0;var ve=(d+(i=i+Math.imul(u,Y)|0)|0)+((8191&(n=(n=n+Math.imul(u,ee)|0)+Math.imul(h,Y)|0))<<13)|0;d=((s=s+Math.imul(h,ee)|0)+(n>>>13)|0)+(ve>>>26)|0,ve&=67108863,i=Math.imul(w,U),n=(n=Math.imul(w,X))+Math.imul(E,U)|0,s=Math.imul(E,X),i=i+Math.imul(I,V)|0,n=(n=n+Math.imul(I,q)|0)+Math.imul(k,V)|0,s=s+Math.imul(k,q)|0,i=i+Math.imul(v,z)|0,n=(n=n+Math.imul(v,j)|0)+Math.imul(A,z)|0,s=s+Math.imul(A,j)|0,i=i+Math.imul(g,Q)|0,n=(n=n+Math.imul(g,Z)|0)+Math.imul(y,Q)|0,s=s+Math.imul(y,Z)|0,i=i+Math.imul(p,Y)|0,n=(n=n+Math.imul(p,ee)|0)+Math.imul(m,Y)|0,s=s+Math.imul(m,ee)|0;var Ae=(d+(i=i+Math.imul(u,re)|0)|0)+((8191&(n=(n=n+Math.imul(u,ie)|0)+Math.imul(h,re)|0))<<13)|0;d=((s=s+Math.imul(h,ie)|0)+(n>>>13)|0)+(Ae>>>26)|0,Ae&=67108863,i=Math.imul(T,U),n=(n=Math.imul(T,X))+Math.imul(N,U)|0,s=Math.imul(N,X),i=i+Math.imul(w,V)|0,n=(n=n+Math.imul(w,q)|0)+Math.imul(E,V)|0,s=s+Math.imul(E,q)|0,i=i+Math.imul(I,z)|0,n=(n=n+Math.imul(I,j)|0)+Math.imul(k,z)|0,s=s+Math.imul(k,j)|0,i=i+Math.imul(v,Q)|0,n=(n=n+Math.imul(v,Z)|0)+Math.imul(A,Q)|0,s=s+Math.imul(A,Z)|0,i=i+Math.imul(g,Y)|0,n=(n=n+Math.imul(g,ee)|0)+Math.imul(y,Y)|0,s=s+Math.imul(y,ee)|0,i=i+Math.imul(p,re)|0,n=(n=n+Math.imul(p,ie)|0)+Math.imul(m,re)|0,s=s+Math.imul(m,ie)|0;var Ce=(d+(i=i+Math.imul(u,se)|0)|0)+((8191&(n=(n=n+Math.imul(u,ae)|0)+Math.imul(h,se)|0))<<13)|0;d=((s=s+Math.imul(h,ae)|0)+(n>>>13)|0)+(Ce>>>26)|0,Ce&=67108863,i=Math.imul(D,U),n=(n=Math.imul(D,X))+Math.imul(x,U)|0,s=Math.imul(x,X),i=i+Math.imul(T,V)|0,n=(n=n+Math.imul(T,q)|0)+Math.imul(N,V)|0,s=s+Math.imul(N,q)|0,i=i+Math.imul(w,z)|0,n=(n=n+Math.imul(w,j)|0)+Math.imul(E,z)|0,s=s+Math.imul(E,j)|0,i=i+Math.imul(I,Q)|0,n=(n=n+Math.imul(I,Z)|0)+Math.imul(k,Q)|0,s=s+Math.imul(k,Z)|0,i=i+Math.imul(v,Y)|0,n=(n=n+Math.imul(v,ee)|0)+Math.imul(A,Y)|0,s=s+Math.imul(A,ee)|0,i=i+Math.imul(g,re)|0,n=(n=n+Math.imul(g,ie)|0)+Math.imul(y,re)|0,s=s+Math.imul(y,ie)|0,i=i+Math.imul(p,se)|0,n=(n=n+Math.imul(p,ae)|0)+Math.imul(m,se)|0,s=s+Math.imul(m,ae)|0;var Ie=(d+(i=i+Math.imul(u,oe)|0)|0)+((8191&(n=(n=n+Math.imul(u,de)|0)+Math.imul(h,oe)|0))<<13)|0;d=((s=s+Math.imul(h,de)|0)+(n>>>13)|0)+(Ie>>>26)|0,Ie&=67108863,i=Math.imul(R,U),n=(n=Math.imul(R,X))+Math.imul(F,U)|0,s=Math.imul(F,X),i=i+Math.imul(D,V)|0,n=(n=n+Math.imul(D,q)|0)+Math.imul(x,V)|0,s=s+Math.imul(x,q)|0,i=i+Math.imul(T,z)|0,n=(n=n+Math.imul(T,j)|0)+Math.imul(N,z)|0,s=s+Math.imul(N,j)|0,i=i+Math.imul(w,Q)|0,n=(n=n+Math.imul(w,Z)|0)+Math.imul(E,Q)|0,s=s+Math.imul(E,Z)|0,i=i+Math.imul(I,Y)|0,n=(n=n+Math.imul(I,ee)|0)+Math.imul(k,Y)|0,s=s+Math.imul(k,ee)|0,i=i+Math.imul(v,re)|0,n=(n=n+Math.imul(v,ie)|0)+Math.imul(A,re)|0,s=s+Math.imul(A,ie)|0,i=i+Math.imul(g,se)|0,n=(n=n+Math.imul(g,ae)|0)+Math.imul(y,se)|0,s=s+Math.imul(y,ae)|0,i=i+Math.imul(p,oe)|0,n=(n=n+Math.imul(p,de)|0)+Math.imul(m,oe)|0,s=s+Math.imul(m,de)|0;var ke=(d+(i=i+Math.imul(u,ue)|0)|0)+((8191&(n=(n=n+Math.imul(u,he)|0)+Math.imul(h,ue)|0))<<13)|0;d=((s=s+Math.imul(h,he)|0)+(n>>>13)|0)+(ke>>>26)|0,ke&=67108863,i=Math.imul(H,U),n=(n=Math.imul(H,X))+Math.imul(_,U)|0,s=Math.imul(_,X),i=i+Math.imul(R,V)|0,n=(n=n+Math.imul(R,q)|0)+Math.imul(F,V)|0,s=s+Math.imul(F,q)|0,i=i+Math.imul(D,z)|0,n=(n=n+Math.imul(D,j)|0)+Math.imul(x,z)|0,s=s+Math.imul(x,j)|0,i=i+Math.imul(T,Q)|0,n=(n=n+Math.imul(T,Z)|0)+Math.imul(N,Q)|0,s=s+Math.imul(N,Z)|0,i=i+Math.imul(w,Y)|0,n=(n=n+Math.imul(w,ee)|0)+Math.imul(E,Y)|0,s=s+Math.imul(E,ee)|0,i=i+Math.imul(I,re)|0,n=(n=n+Math.imul(I,ie)|0)+Math.imul(k,re)|0,s=s+Math.imul(k,ie)|0,i=i+Math.imul(v,se)|0,n=(n=n+Math.imul(v,ae)|0)+Math.imul(A,se)|0,s=s+Math.imul(A,ae)|0,i=i+Math.imul(g,oe)|0,n=(n=n+Math.imul(g,de)|0)+Math.imul(y,oe)|0,s=s+Math.imul(y,de)|0,i=i+Math.imul(p,ue)|0,n=(n=n+Math.imul(p,he)|0)+Math.imul(m,ue)|0,s=s+Math.imul(m,he)|0;var Be=(d+(i=i+Math.imul(u,pe)|0)|0)+((8191&(n=(n=n+Math.imul(u,me)|0)+Math.imul(h,pe)|0))<<13)|0;d=((s=s+Math.imul(h,me)|0)+(n>>>13)|0)+(Be>>>26)|0,Be&=67108863,i=Math.imul(H,V),n=(n=Math.imul(H,q))+Math.imul(_,V)|0,s=Math.imul(_,q),i=i+Math.imul(R,z)|0,n=(n=n+Math.imul(R,j)|0)+Math.imul(F,z)|0,s=s+Math.imul(F,j)|0,i=i+Math.imul(D,Q)|0,n=(n=n+Math.imul(D,Z)|0)+Math.imul(x,Q)|0,s=s+Math.imul(x,Z)|0,i=i+Math.imul(T,Y)|0,n=(n=n+Math.imul(T,ee)|0)+Math.imul(N,Y)|0,s=s+Math.imul(N,ee)|0,i=i+Math.imul(w,re)|0,n=(n=n+Math.imul(w,ie)|0)+Math.imul(E,re)|0,s=s+Math.imul(E,ie)|0,i=i+Math.imul(I,se)|0,n=(n=n+Math.imul(I,ae)|0)+Math.imul(k,se)|0,s=s+Math.imul(k,ae)|0,i=i+Math.imul(v,oe)|0,n=(n=n+Math.imul(v,de)|0)+Math.imul(A,oe)|0,s=s+Math.imul(A,de)|0,i=i+Math.imul(g,ue)|0,n=(n=n+Math.imul(g,he)|0)+Math.imul(y,ue)|0,s=s+Math.imul(y,he)|0;var we=(d+(i=i+Math.imul(p,pe)|0)|0)+((8191&(n=(n=n+Math.imul(p,me)|0)+Math.imul(m,pe)|0))<<13)|0;d=((s=s+Math.imul(m,me)|0)+(n>>>13)|0)+(we>>>26)|0,we&=67108863,i=Math.imul(H,z),n=(n=Math.imul(H,j))+Math.imul(_,z)|0,s=Math.imul(_,j),i=i+Math.imul(R,Q)|0,n=(n=n+Math.imul(R,Z)|0)+Math.imul(F,Q)|0,s=s+Math.imul(F,Z)|0,i=i+Math.imul(D,Y)|0,n=(n=n+Math.imul(D,ee)|0)+Math.imul(x,Y)|0,s=s+Math.imul(x,ee)|0,i=i+Math.imul(T,re)|0,n=(n=n+Math.imul(T,ie)|0)+Math.imul(N,re)|0,s=s+Math.imul(N,ie)|0,i=i+Math.imul(w,se)|0,n=(n=n+Math.imul(w,ae)|0)+Math.imul(E,se)|0,s=s+Math.imul(E,ae)|0,i=i+Math.imul(I,oe)|0,n=(n=n+Math.imul(I,de)|0)+Math.imul(k,oe)|0,s=s+Math.imul(k,de)|0,i=i+Math.imul(v,ue)|0,n=(n=n+Math.imul(v,he)|0)+Math.imul(A,ue)|0,s=s+Math.imul(A,he)|0;var Ee=(d+(i=i+Math.imul(g,pe)|0)|0)+((8191&(n=(n=n+Math.imul(g,me)|0)+Math.imul(y,pe)|0))<<13)|0;d=((s=s+Math.imul(y,me)|0)+(n>>>13)|0)+(Ee>>>26)|0,Ee&=67108863,i=Math.imul(H,Q),n=(n=Math.imul(H,Z))+Math.imul(_,Q)|0,s=Math.imul(_,Z),i=i+Math.imul(R,Y)|0,n=(n=n+Math.imul(R,ee)|0)+Math.imul(F,Y)|0,s=s+Math.imul(F,ee)|0,i=i+Math.imul(D,re)|0,n=(n=n+Math.imul(D,ie)|0)+Math.imul(x,re)|0,s=s+Math.imul(x,ie)|0,i=i+Math.imul(T,se)|0,n=(n=n+Math.imul(T,ae)|0)+Math.imul(N,se)|0,s=s+Math.imul(N,ae)|0,i=i+Math.imul(w,oe)|0,n=(n=n+Math.imul(w,de)|0)+Math.imul(E,oe)|0,s=s+Math.imul(E,de)|0,i=i+Math.imul(I,ue)|0,n=(n=n+Math.imul(I,he)|0)+Math.imul(k,ue)|0,s=s+Math.imul(k,he)|0;var Me=(d+(i=i+Math.imul(v,pe)|0)|0)+((8191&(n=(n=n+Math.imul(v,me)|0)+Math.imul(A,pe)|0))<<13)|0;d=((s=s+Math.imul(A,me)|0)+(n>>>13)|0)+(Me>>>26)|0,Me&=67108863,i=Math.imul(H,Y),n=(n=Math.imul(H,ee))+Math.imul(_,Y)|0,s=Math.imul(_,ee),i=i+Math.imul(R,re)|0,n=(n=n+Math.imul(R,ie)|0)+Math.imul(F,re)|0,s=s+Math.imul(F,ie)|0,i=i+Math.imul(D,se)|0,n=(n=n+Math.imul(D,ae)|0)+Math.imul(x,se)|0,s=s+Math.imul(x,ae)|0,i=i+Math.imul(T,oe)|0,n=(n=n+Math.imul(T,de)|0)+Math.imul(N,oe)|0,s=s+Math.imul(N,de)|0,i=i+Math.imul(w,ue)|0,n=(n=n+Math.imul(w,he)|0)+Math.imul(E,ue)|0,s=s+Math.imul(E,he)|0;var Te=(d+(i=i+Math.imul(I,pe)|0)|0)+((8191&(n=(n=n+Math.imul(I,me)|0)+Math.imul(k,pe)|0))<<13)|0;d=((s=s+Math.imul(k,me)|0)+(n>>>13)|0)+(Te>>>26)|0,Te&=67108863,i=Math.imul(H,re),n=(n=Math.imul(H,ie))+Math.imul(_,re)|0,s=Math.imul(_,ie),i=i+Math.imul(R,se)|0,n=(n=n+Math.imul(R,ae)|0)+Math.imul(F,se)|0,s=s+Math.imul(F,ae)|0,i=i+Math.imul(D,oe)|0,n=(n=n+Math.imul(D,de)|0)+Math.imul(x,oe)|0,s=s+Math.imul(x,de)|0,i=i+Math.imul(T,ue)|0,n=(n=n+Math.imul(T,he)|0)+Math.imul(N,ue)|0,s=s+Math.imul(N,he)|0;var Ne=(d+(i=i+Math.imul(w,pe)|0)|0)+((8191&(n=(n=n+Math.imul(w,me)|0)+Math.imul(E,pe)|0))<<13)|0;d=((s=s+Math.imul(E,me)|0)+(n>>>13)|0)+(Ne>>>26)|0,Ne&=67108863,i=Math.imul(H,se),n=(n=Math.imul(H,ae))+Math.imul(_,se)|0,s=Math.imul(_,ae),i=i+Math.imul(R,oe)|0,n=(n=n+Math.imul(R,de)|0)+Math.imul(F,oe)|0,s=s+Math.imul(F,de)|0,i=i+Math.imul(D,ue)|0,n=(n=n+Math.imul(D,he)|0)+Math.imul(x,ue)|0,s=s+Math.imul(x,he)|0;var Pe=(d+(i=i+Math.imul(T,pe)|0)|0)+((8191&(n=(n=n+Math.imul(T,me)|0)+Math.imul(N,pe)|0))<<13)|0;d=((s=s+Math.imul(N,me)|0)+(n>>>13)|0)+(Pe>>>26)|0,Pe&=67108863,i=Math.imul(H,oe),n=(n=Math.imul(H,de))+Math.imul(_,oe)|0,s=Math.imul(_,de),i=i+Math.imul(R,ue)|0,n=(n=n+Math.imul(R,he)|0)+Math.imul(F,ue)|0,s=s+Math.imul(F,he)|0;var De=(d+(i=i+Math.imul(D,pe)|0)|0)+((8191&(n=(n=n+Math.imul(D,me)|0)+Math.imul(x,pe)|0))<<13)|0;d=((s=s+Math.imul(x,me)|0)+(n>>>13)|0)+(De>>>26)|0,De&=67108863,i=Math.imul(H,ue),n=(n=Math.imul(H,he))+Math.imul(_,ue)|0,s=Math.imul(_,he);var xe=(d+(i=i+Math.imul(R,pe)|0)|0)+((8191&(n=(n=n+Math.imul(R,me)|0)+Math.imul(F,pe)|0))<<13)|0;d=((s=s+Math.imul(F,me)|0)+(n>>>13)|0)+(xe>>>26)|0,xe&=67108863;var Oe=(d+(i=Math.imul(H,pe))|0)+((8191&(n=(n=Math.imul(H,me))+Math.imul(_,pe)|0))<<13)|0;return d=((s=Math.imul(_,me))+(n>>>13)|0)+(Oe>>>26)|0,Oe&=67108863,o[0]=be,o[1]=ge,o[2]=ye,o[3]=Se,o[4]=ve,o[5]=Ae,o[6]=Ce,o[7]=Ie,o[8]=ke,o[9]=Be,o[10]=we,o[11]=Ee,o[12]=Me,o[13]=Te,o[14]=Ne,o[15]=Pe,o[16]=De,o[17]=xe,o[18]=Oe,0!==d&&(o[19]=d,r.length++),r};function p(e,t,r){return(new m).mulp(e,t,r)}function m(e,t){this.x=e,this.y=t}Math.imul||(f=h),s.prototype.mulTo=function(e,t){var r=this.length+e.length;return 10===this.length&&10===e.length?f(this,e,t):r<63?h(this,e,t):r<1024?function(e,t,r){r.negative=t.negative^e.negative,r.length=e.length+t.length;for(var i=0,n=0,s=0;s>>26)|0)>>>26,a&=67108863}r.words[s]=c,i=a,a=n}return 0!==i?r.words[s]=i:r.length--,r.strip()}(this,e,t):p(this,e,t)},m.prototype.makeRBT=function(e){for(var t=new Array(e),r=s.prototype._countBits(e)-1,i=0;i>=1;return i},m.prototype.permute=function(e,t,r,i,n,s){for(var a=0;a>>=1)n++;return 1<>>=13,r[2*a+1]=8191&s,s>>>=13;for(a=2*t;a>=26,t+=n/67108864|0,t+=s>>>26,this.words[r]=67108863&s}return 0!==t&&(this.words[r]=t,this.length++),this},s.prototype.muln=function(e){return this.clone().imuln(e)},s.prototype.sqr=function(){return this.mul(this)},s.prototype.isqr=function(){return this.imul(this.clone())},s.prototype.pow=function(e){var t=function(e){for(var t=new Array(e.bitLength()),r=0;r>>n}return t}(e);if(0===t.length)return new s(1);for(var r=this,i=0;i=0);var t,r=e%26,n=(e-r)/26,s=67108863>>>26-r<<26-r;if(0!==r){var a=0;for(t=0;t>>26-r}a&&(this.words[t]=a,this.length++)}if(0!==n){for(t=this.length-1;t>=0;t--)this.words[t+n]=this.words[t];for(t=0;t=0),n=t?(t-t%26)/26:0;var s=e%26,a=Math.min((e-s)/26,this.length),c=67108863^67108863>>>s<a)for(this.length-=a,d=0;d=0&&(0!==l||d>=n);d--){var u=0|this.words[d];this.words[d]=l<<26-s|u>>>s,l=u&c}return o&&0!==l&&(o.words[o.length++]=l),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},s.prototype.ishrn=function(e,t,r){return i(0===this.negative),this.iushrn(e,t,r)},s.prototype.shln=function(e){return this.clone().ishln(e)},s.prototype.ushln=function(e){return this.clone().iushln(e)},s.prototype.shrn=function(e){return this.clone().ishrn(e)},s.prototype.ushrn=function(e){return this.clone().iushrn(e)},s.prototype.testn=function(e){i("number"==typeof e&&e>=0);var t=e%26,r=(e-t)/26,n=1<=0);var t=e%26,r=(e-t)/26;if(i(0===this.negative,"imaskn works only with positive numbers"),this.length<=r)return this;if(0!==t&&r++,this.length=Math.min(r,this.length),0!==t){var n=67108863^67108863>>>t<=67108864;t++)this.words[t]-=67108864,t===this.length-1?this.words[t+1]=1:this.words[t+1]++;return this.length=Math.max(this.length,t+1),this},s.prototype.isubn=function(e){if(i("number"==typeof e),i(e<67108864),e<0)return this.iaddn(-e);if(0!==this.negative)return this.negative=0,this.iaddn(e),this.negative=1,this;if(this.words[0]-=e,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var t=0;t>26)-(o/67108864|0),this.words[n+r]=67108863&s}for(;n>26,this.words[n+r]=67108863&s;if(0===c)return this.strip();for(i(-1===c),c=0,n=0;n>26,this.words[n]=67108863&s;return this.negative=1,this.strip()},s.prototype._wordDiv=function(e,t){var r=(this.length,e.length),i=this.clone(),n=e,a=0|n.words[n.length-1];0!=(r=26-this._countBits(a))&&(n=n.ushln(r),i.iushln(r),a=0|n.words[n.length-1]);var c,o=i.length-n.length;if("mod"!==t){(c=new s(null)).length=o+1,c.words=new Array(c.length);for(var d=0;d=0;u--){var h=67108864*(0|i.words[n.length+u])+(0|i.words[n.length+u-1]);for(h=Math.min(h/a|0,67108863),i._ishlnsubmul(n,h,u);0!==i.negative;)h--,i.negative=0,i._ishlnsubmul(n,1,u),i.isZero()||(i.negative^=1);c&&(c.words[u]=h)}return c&&c.strip(),i.strip(),"div"!==t&&0!==r&&i.iushrn(r),{div:c||null,mod:i}},s.prototype.divmod=function(e,t,r){return i(!e.isZero()),this.isZero()?{div:new s(0),mod:new s(0)}:0!==this.negative&&0===e.negative?(c=this.neg().divmod(e,t),"mod"!==t&&(n=c.div.neg()),"div"!==t&&(a=c.mod.neg(),r&&0!==a.negative&&a.iadd(e)),{div:n,mod:a}):0===this.negative&&0!==e.negative?(c=this.divmod(e.neg(),t),"mod"!==t&&(n=c.div.neg()),{div:n,mod:c.mod}):0!=(this.negative&e.negative)?(c=this.neg().divmod(e.neg(),t),"div"!==t&&(a=c.mod.neg(),r&&0!==a.negative&&a.isub(e)),{div:c.div,mod:a}):e.length>this.length||this.cmp(e)<0?{div:new s(0),mod:this}:1===e.length?"div"===t?{div:this.divn(e.words[0]),mod:null}:"mod"===t?{div:null,mod:new s(this.modn(e.words[0]))}:{div:this.divn(e.words[0]),mod:new s(this.modn(e.words[0]))}:this._wordDiv(e,t);var n,a,c},s.prototype.div=function(e){return this.divmod(e,"div",!1).div},s.prototype.mod=function(e){return this.divmod(e,"mod",!1).mod},s.prototype.umod=function(e){return this.divmod(e,"mod",!0).mod},s.prototype.divRound=function(e){var t=this.divmod(e);if(t.mod.isZero())return t.div;var r=0!==t.div.negative?t.mod.isub(e):t.mod,i=e.ushrn(1),n=e.andln(1),s=r.cmp(i);return s<0||1===n&&0===s?t.div:0!==t.div.negative?t.div.isubn(1):t.div.iaddn(1)},s.prototype.modn=function(e){i(e<=67108863);for(var t=(1<<26)%e,r=0,n=this.length-1;n>=0;n--)r=(t*r+(0|this.words[n]))%e;return r},s.prototype.idivn=function(e){i(e<=67108863);for(var t=0,r=this.length-1;r>=0;r--){var n=(0|this.words[r])+67108864*t;this.words[r]=n/e|0,t=n%e}return this.strip()},s.prototype.divn=function(e){return this.clone().idivn(e)},s.prototype.egcd=function(e){i(0===e.negative),i(!e.isZero());var t=this,r=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var n=new s(1),a=new s(0),c=new s(0),o=new s(1),d=0;t.isEven()&&r.isEven();)t.iushrn(1),r.iushrn(1),++d;for(var l=r.clone(),u=t.clone();!t.isZero();){for(var h=0,f=1;0==(t.words[0]&f)&&h<26;++h,f<<=1);if(h>0)for(t.iushrn(h);h-- >0;)(n.isOdd()||a.isOdd())&&(n.iadd(l),a.isub(u)),n.iushrn(1),a.iushrn(1);for(var p=0,m=1;0==(r.words[0]&m)&&p<26;++p,m<<=1);if(p>0)for(r.iushrn(p);p-- >0;)(c.isOdd()||o.isOdd())&&(c.iadd(l),o.isub(u)),c.iushrn(1),o.iushrn(1);t.cmp(r)>=0?(t.isub(r),n.isub(c),a.isub(o)):(r.isub(t),c.isub(n),o.isub(a))}return{a:c,b:o,gcd:r.iushln(d)}},s.prototype._invmp=function(e){i(0===e.negative),i(!e.isZero());var t=this,r=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var n,a=new s(1),c=new s(0),o=r.clone();t.cmpn(1)>0&&r.cmpn(1)>0;){for(var d=0,l=1;0==(t.words[0]&l)&&d<26;++d,l<<=1);if(d>0)for(t.iushrn(d);d-- >0;)a.isOdd()&&a.iadd(o),a.iushrn(1);for(var u=0,h=1;0==(r.words[0]&h)&&u<26;++u,h<<=1);if(u>0)for(r.iushrn(u);u-- >0;)c.isOdd()&&c.iadd(o),c.iushrn(1);t.cmp(r)>=0?(t.isub(r),a.isub(c)):(r.isub(t),c.isub(a))}return(n=0===t.cmpn(1)?a:c).cmpn(0)<0&&n.iadd(e),n},s.prototype.gcd=function(e){if(this.isZero())return e.abs();if(e.isZero())return this.abs();var t=this.clone(),r=e.clone();t.negative=0,r.negative=0;for(var i=0;t.isEven()&&r.isEven();i++)t.iushrn(1),r.iushrn(1);for(;;){for(;t.isEven();)t.iushrn(1);for(;r.isEven();)r.iushrn(1);var n=t.cmp(r);if(n<0){var s=t;t=r,r=s}else if(0===n||0===r.cmpn(1))break;t.isub(r)}return r.iushln(i)},s.prototype.invm=function(e){return this.egcd(e).a.umod(e)},s.prototype.isEven=function(){return 0==(1&this.words[0])},s.prototype.isOdd=function(){return 1==(1&this.words[0])},s.prototype.andln=function(e){return this.words[0]&e},s.prototype.bincn=function(e){i("number"==typeof e);var t=e%26,r=(e-t)/26,n=1<>>26,c&=67108863,this.words[a]=c}return 0!==s&&(this.words[a]=s,this.length++),this},s.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},s.prototype.cmpn=function(e){var t,r=e<0;if(0!==this.negative&&!r)return-1;if(0===this.negative&&r)return 1;if(this.strip(),this.length>1)t=1;else{r&&(e=-e),i(e<=67108863,"Number is too big");var n=0|this.words[0];t=n===e?0:ne.length)return 1;if(this.length=0;r--){var i=0|this.words[r],n=0|e.words[r];if(i!==n){in&&(t=1);break}}return t},s.prototype.gtn=function(e){return 1===this.cmpn(e)},s.prototype.gt=function(e){return 1===this.cmp(e)},s.prototype.gten=function(e){return this.cmpn(e)>=0},s.prototype.gte=function(e){return this.cmp(e)>=0},s.prototype.ltn=function(e){return-1===this.cmpn(e)},s.prototype.lt=function(e){return-1===this.cmp(e)},s.prototype.lten=function(e){return this.cmpn(e)<=0},s.prototype.lte=function(e){return this.cmp(e)<=0},s.prototype.eqn=function(e){return 0===this.cmpn(e)},s.prototype.eq=function(e){return 0===this.cmp(e)},s.red=function(e){return new C(e)},s.prototype.toRed=function(e){return i(!this.red,"Already a number in reduction context"),i(0===this.negative,"red works only with positives"),e.convertTo(this)._forceRed(e)},s.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},s.prototype._forceRed=function(e){return this.red=e,this},s.prototype.forceRed=function(e){return i(!this.red,"Already a number in reduction context"),this._forceRed(e)},s.prototype.redAdd=function(e){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,e)},s.prototype.redIAdd=function(e){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,e)},s.prototype.redSub=function(e){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,e)},s.prototype.redISub=function(e){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,e)},s.prototype.redShl=function(e){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,e)},s.prototype.redMul=function(e){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.mul(this,e)},s.prototype.redIMul=function(e){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.imul(this,e)},s.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},s.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},s.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},s.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},s.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},s.prototype.redPow=function(e){return i(this.red&&!e.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,e)};var b={k256:null,p224:null,p192:null,p25519:null};function g(e,t){this.name=e,this.p=new s(t,16),this.n=this.p.bitLength(),this.k=new s(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function y(){g.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function S(){g.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function v(){g.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function A(){g.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function C(e){if("string"==typeof e){var t=s._prime(e);this.m=t.p,this.prime=t}else i(e.gtn(1),"modulus must be greater than 1"),this.m=e,this.prime=null}function I(e){C.call(this,e),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new s(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}g.prototype._tmp=function(){var e=new s(null);return e.words=new Array(Math.ceil(this.n/13)),e},g.prototype.ireduce=function(e){var t,r=e;do{this.split(r,this.tmp),t=(r=(r=this.imulK(r)).iadd(this.tmp)).bitLength()}while(t>this.n);var i=t0?r.isub(this.p):void 0!==r.strip?r.strip():r._strip(),r},g.prototype.split=function(e,t){e.iushrn(this.n,0,t)},g.prototype.imulK=function(e){return e.imul(this.k)},n(y,g),y.prototype.split=function(e,t){for(var r=4194303,i=Math.min(e.length,9),n=0;n>>22,s=a}s>>>=22,e.words[n-10]=s,0===s&&e.length>10?e.length-=10:e.length-=9},y.prototype.imulK=function(e){e.words[e.length]=0,e.words[e.length+1]=0,e.length+=2;for(var t=0,r=0;r>>=26,e.words[r]=n,t=i}return 0!==t&&(e.words[e.length++]=t),e},s._prime=function(e){if(b[e])return b[e];var t;if("k256"===e)t=new y;else if("p224"===e)t=new S;else if("p192"===e)t=new v;else{if("p25519"!==e)throw new Error("Unknown prime "+e);t=new A}return b[e]=t,t},C.prototype._verify1=function(e){i(0===e.negative,"red works only with positives"),i(e.red,"red works only with red numbers")},C.prototype._verify2=function(e,t){i(0==(e.negative|t.negative),"red works only with positives"),i(e.red&&e.red===t.red,"red works only with red numbers")},C.prototype.imod=function(e){return this.prime?this.prime.ireduce(e)._forceRed(this):e.umod(this.m)._forceRed(this)},C.prototype.neg=function(e){return e.isZero()?e.clone():this.m.sub(e)._forceRed(this)},C.prototype.add=function(e,t){this._verify2(e,t);var r=e.add(t);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},C.prototype.iadd=function(e,t){this._verify2(e,t);var r=e.iadd(t);return r.cmp(this.m)>=0&&r.isub(this.m),r},C.prototype.sub=function(e,t){this._verify2(e,t);var r=e.sub(t);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},C.prototype.isub=function(e,t){this._verify2(e,t);var r=e.isub(t);return r.cmpn(0)<0&&r.iadd(this.m),r},C.prototype.shl=function(e,t){return this._verify1(e),this.imod(e.ushln(t))},C.prototype.imul=function(e,t){return this._verify2(e,t),this.imod(e.imul(t))},C.prototype.mul=function(e,t){return this._verify2(e,t),this.imod(e.mul(t))},C.prototype.isqr=function(e){return this.imul(e,e.clone())},C.prototype.sqr=function(e){return this.mul(e,e)},C.prototype.sqrt=function(e){if(e.isZero())return e.clone();var t=this.m.andln(3);if(i(t%2==1),3===t){var r=this.m.add(new s(1)).iushrn(2);return this.pow(e,r)}for(var n=this.m.subn(1),a=0;!n.isZero()&&0===n.andln(1);)a++,n.iushrn(1);i(!n.isZero());var c=new s(1).toRed(this),o=c.redNeg(),d=this.m.subn(1).iushrn(1),l=this.m.bitLength();for(l=new s(2*l*l).toRed(this);0!==this.pow(l,d).cmp(o);)l.redIAdd(o);for(var u=this.pow(l,n),h=this.pow(e,n.addn(1).iushrn(1)),f=this.pow(e,n),p=a;0!==f.cmp(c);){for(var m=f,b=0;0!==m.cmp(c);b++)m=m.redSqr();i(b=0;i--){for(var d=t.words[i],l=o-1;l>=0;l--){var u=d>>l&1;n!==r[0]&&(n=this.sqr(n)),0!==u||0!==a?(a<<=1,a|=u,(4==++c||0===i&&0===l)&&(n=this.mul(n,r[a]),c=0,a=0)):c=0}o=26}return n},C.prototype.convertTo=function(e){var t=e.umod(this.m);return t===e?t.clone():t},C.prototype.convertFrom=function(e){var t=e.clone();return t.red=null,t},s.mont=function(e){return new I(e)},n(I,C),I.prototype.convertTo=function(e){return this.imod(e.ushln(this.shift))},I.prototype.convertFrom=function(e){var t=this.imod(e.mul(this.rinv));return t.red=null,t},I.prototype.imul=function(e,t){if(e.isZero()||t.isZero())return e.words[0]=0,e.length=1,e;var r=e.imul(t),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),s=n;return n.cmp(this.m)>=0?s=n.isub(this.m):n.cmpn(0)<0&&(s=n.iadd(this.m)),s._forceRed(this)},I.prototype.mul=function(e,t){if(e.isZero()||t.isZero())return new s(0)._forceRed(this);var r=e.mul(t),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),a=n;return n.cmp(this.m)>=0?a=n.isub(this.m):n.cmpn(0)<0&&(a=n.iadd(this.m)),a._forceRed(this)},I.prototype.invm=function(e){return this.imod(e._invmp(this.m).mul(this.r2))._forceRed(this)}}(e=r.nmd(e),this)},931:(e,t,r)=>{var i;function n(e){this.rand=e}if(e.exports=function(e){return i||(i=new n(null)),i.generate(e)},e.exports.Rand=n,n.prototype.generate=function(e){return this._rand(e)},n.prototype._rand=function(e){if(this.rand.getBytes)return this.rand.getBytes(e);for(var t=new Uint8Array(e),r=0;r{"use strict";var i=t;i.version=r(519).i8,i.utils=r(953),i.rand=r(931),i.curve=r(254),i.curves=r(427),i.ec=r(954),i.eddsa=r(980)},918:(e,t,r)=>{"use strict";var i=r(550),n=r(953),s=n.getNAF,a=n.getJSF,c=n.assert;function o(e,t){this.type=e,this.p=new i(t.p,16),this.red=t.prime?i.red(t.prime):i.mont(this.p),this.zero=new i(0).toRed(this.red),this.one=new i(1).toRed(this.red),this.two=new i(2).toRed(this.red),this.n=t.n&&new i(t.n,16),this.g=t.g&&this.pointFromJSON(t.g,t.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4),this._bitLength=this.n?this.n.bitLength():0;var r=this.n&&this.p.div(this.n);!r||r.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}function d(e,t){this.curve=e,this.type=t,this.precomputed=null}e.exports=o,o.prototype.point=function(){throw new Error("Not implemented")},o.prototype.validate=function(){throw new Error("Not implemented")},o.prototype._fixedNafMul=function(e,t){c(e.precomputed);var r=e._getDoubles(),i=s(t,1,this._bitLength),n=(1<=o;t--)d=(d<<1)+i[t];a.push(d)}for(var l=this.jpoint(null,null,null),u=this.jpoint(null,null,null),h=n;h>0;h--){for(o=0;o=0;d--){for(t=0;d>=0&&0===a[d];d--)t++;if(d>=0&&t++,o=o.dblp(t),d<0)break;var l=a[d];c(0!==l),o="affine"===e.type?l>0?o.mixedAdd(n[l-1>>1]):o.mixedAdd(n[-l-1>>1].neg()):l>0?o.add(n[l-1>>1]):o.add(n[-l-1>>1].neg())}return"affine"===e.type?o.toP():o},o.prototype._wnafMulAdd=function(e,t,r,i,n){for(var c=this._wnafT1,o=this._wnafT2,d=this._wnafT3,l=0,u=0;u=1;u-=2){var f=u-1,p=u;if(1===c[f]&&1===c[p]){var m=[t[f],null,null,t[p]];0===t[f].y.cmp(t[p].y)?(m[1]=t[f].add(t[p]),m[2]=t[f].toJ().mixedAdd(t[p].neg())):0===t[f].y.cmp(t[p].y.redNeg())?(m[1]=t[f].toJ().mixedAdd(t[p]),m[2]=t[f].add(t[p].neg())):(m[1]=t[f].toJ().mixedAdd(t[p]),m[2]=t[f].toJ().mixedAdd(t[p].neg()));var b=[-3,-1,-5,-7,0,7,5,1,3],g=a(r[f],r[p]);l=Math.max(g[0].length,l),d[f]=new Array(l),d[p]=new Array(l);for(var y=0;y=0;u--){for(var I=0;u>=0;){var k=!0;for(y=0;y=0&&I++,A=A.dblp(I),u<0)break;for(y=0;y0?B=o[y][w-1>>1]:w<0&&(B=o[y][-w-1>>1].neg()),A="affine"===B.type?A.mixedAdd(B):A.add(B))}}for(u=0;u=Math.ceil((e.bitLength()+1)/t.step)},d.prototype._getDoubles=function(e,t){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var r=[this],i=this,n=0;n{"use strict";var i=r(953),n=r(550),s=r(717),a=r(918),c=i.assert;function o(e){this.twisted=1!=(0|e.a),this.mOneA=this.twisted&&-1==(0|e.a),this.extended=this.mOneA,a.call(this,"edwards",e),this.a=new n(e.a,16).umod(this.red.m),this.a=this.a.toRed(this.red),this.c=new n(e.c,16).toRed(this.red),this.c2=this.c.redSqr(),this.d=new n(e.d,16).toRed(this.red),this.dd=this.d.redAdd(this.d),c(!this.twisted||0===this.c.fromRed().cmpn(1)),this.oneC=1==(0|e.c)}function d(e,t,r,i,s){a.BasePoint.call(this,e,"projective"),null===t&&null===r&&null===i?(this.x=this.curve.zero,this.y=this.curve.one,this.z=this.curve.one,this.t=this.curve.zero,this.zOne=!0):(this.x=new n(t,16),this.y=new n(r,16),this.z=i?new n(i,16):this.curve.one,this.t=s&&new n(s,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.t&&!this.t.red&&(this.t=this.t.toRed(this.curve.red)),this.zOne=this.z===this.curve.one,this.curve.extended&&!this.t&&(this.t=this.x.redMul(this.y),this.zOne||(this.t=this.t.redMul(this.z.redInvm()))))}s(o,a),e.exports=o,o.prototype._mulA=function(e){return this.mOneA?e.redNeg():this.a.redMul(e)},o.prototype._mulC=function(e){return this.oneC?e:this.c.redMul(e)},o.prototype.jpoint=function(e,t,r,i){return this.point(e,t,r,i)},o.prototype.pointFromX=function(e,t){(e=new n(e,16)).red||(e=e.toRed(this.red));var r=e.redSqr(),i=this.c2.redSub(this.a.redMul(r)),s=this.one.redSub(this.c2.redMul(this.d).redMul(r)),a=i.redMul(s.redInvm()),c=a.redSqrt();if(0!==c.redSqr().redSub(a).cmp(this.zero))throw new Error("invalid point");var o=c.fromRed().isOdd();return(t&&!o||!t&&o)&&(c=c.redNeg()),this.point(e,c)},o.prototype.pointFromY=function(e,t){(e=new n(e,16)).red||(e=e.toRed(this.red));var r=e.redSqr(),i=r.redSub(this.c2),s=r.redMul(this.d).redMul(this.c2).redSub(this.a),a=i.redMul(s.redInvm());if(0===a.cmp(this.zero)){if(t)throw new Error("invalid point");return this.point(this.zero,e)}var c=a.redSqrt();if(0!==c.redSqr().redSub(a).cmp(this.zero))throw new Error("invalid point");return c.fromRed().isOdd()!==t&&(c=c.redNeg()),this.point(c,e)},o.prototype.validate=function(e){if(e.isInfinity())return!0;e.normalize();var t=e.x.redSqr(),r=e.y.redSqr(),i=t.redMul(this.a).redAdd(r),n=this.c2.redMul(this.one.redAdd(this.d.redMul(t).redMul(r)));return 0===i.cmp(n)},s(d,a.BasePoint),o.prototype.pointFromJSON=function(e){return d.fromJSON(this,e)},o.prototype.point=function(e,t,r,i){return new d(this,e,t,r,i)},d.fromJSON=function(e,t){return new d(e,t[0],t[1],t[2])},d.prototype.inspect=function(){return this.isInfinity()?"":""},d.prototype.isInfinity=function(){return 0===this.x.cmpn(0)&&(0===this.y.cmp(this.z)||this.zOne&&0===this.y.cmp(this.curve.c))},d.prototype._extDbl=function(){var e=this.x.redSqr(),t=this.y.redSqr(),r=this.z.redSqr();r=r.redIAdd(r);var i=this.curve._mulA(e),n=this.x.redAdd(this.y).redSqr().redISub(e).redISub(t),s=i.redAdd(t),a=s.redSub(r),c=i.redSub(t),o=n.redMul(a),d=s.redMul(c),l=n.redMul(c),u=a.redMul(s);return this.curve.point(o,d,u,l)},d.prototype._projDbl=function(){var e,t,r,i=this.x.redAdd(this.y).redSqr(),n=this.x.redSqr(),s=this.y.redSqr();if(this.curve.twisted){var a=(d=this.curve._mulA(n)).redAdd(s);if(this.zOne)e=i.redSub(n).redSub(s).redMul(a.redSub(this.curve.two)),t=a.redMul(d.redSub(s)),r=a.redSqr().redSub(a).redSub(a);else{var c=this.z.redSqr(),o=a.redSub(c).redISub(c);e=i.redSub(n).redISub(s).redMul(o),t=a.redMul(d.redSub(s)),r=a.redMul(o)}}else{var d=n.redAdd(s);c=this.curve._mulC(this.z).redSqr(),o=d.redSub(c).redSub(c),e=this.curve._mulC(i.redISub(d)).redMul(o),t=this.curve._mulC(d).redMul(n.redISub(s)),r=d.redMul(o)}return this.curve.point(e,t,r)},d.prototype.dbl=function(){return this.isInfinity()?this:this.curve.extended?this._extDbl():this._projDbl()},d.prototype._extAdd=function(e){var t=this.y.redSub(this.x).redMul(e.y.redSub(e.x)),r=this.y.redAdd(this.x).redMul(e.y.redAdd(e.x)),i=this.t.redMul(this.curve.dd).redMul(e.t),n=this.z.redMul(e.z.redAdd(e.z)),s=r.redSub(t),a=n.redSub(i),c=n.redAdd(i),o=r.redAdd(t),d=s.redMul(a),l=c.redMul(o),u=s.redMul(o),h=a.redMul(c);return this.curve.point(d,l,h,u)},d.prototype._projAdd=function(e){var t,r,i=this.z.redMul(e.z),n=i.redSqr(),s=this.x.redMul(e.x),a=this.y.redMul(e.y),c=this.curve.d.redMul(s).redMul(a),o=n.redSub(c),d=n.redAdd(c),l=this.x.redAdd(this.y).redMul(e.x.redAdd(e.y)).redISub(s).redISub(a),u=i.redMul(o).redMul(l);return this.curve.twisted?(t=i.redMul(d).redMul(a.redSub(this.curve._mulA(s))),r=o.redMul(d)):(t=i.redMul(d).redMul(a.redSub(s)),r=this.curve._mulC(o).redMul(d)),this.curve.point(u,t,r)},d.prototype.add=function(e){return this.isInfinity()?e:e.isInfinity()?this:this.curve.extended?this._extAdd(e):this._projAdd(e)},d.prototype.mul=function(e){return this._hasDoubles(e)?this.curve._fixedNafMul(this,e):this.curve._wnafMul(this,e)},d.prototype.mulAdd=function(e,t,r){return this.curve._wnafMulAdd(1,[this,t],[e,r],2,!1)},d.prototype.jmulAdd=function(e,t,r){return this.curve._wnafMulAdd(1,[this,t],[e,r],2,!0)},d.prototype.normalize=function(){if(this.zOne)return this;var e=this.z.redInvm();return this.x=this.x.redMul(e),this.y=this.y.redMul(e),this.t&&(this.t=this.t.redMul(e)),this.z=this.curve.one,this.zOne=!0,this},d.prototype.neg=function(){return this.curve.point(this.x.redNeg(),this.y,this.z,this.t&&this.t.redNeg())},d.prototype.getX=function(){return this.normalize(),this.x.fromRed()},d.prototype.getY=function(){return this.normalize(),this.y.fromRed()},d.prototype.eq=function(e){return this===e||0===this.getX().cmp(e.getX())&&0===this.getY().cmp(e.getY())},d.prototype.eqXToP=function(e){var t=e.toRed(this.curve.red).redMul(this.z);if(0===this.x.cmp(t))return!0;for(var r=e.clone(),i=this.curve.redN.redMul(this.z);;){if(r.iadd(this.curve.n),r.cmp(this.curve.p)>=0)return!1;if(t.redIAdd(i),0===this.x.cmp(t))return!0}},d.prototype.toP=d.prototype.normalize,d.prototype.mixedAdd=d.prototype.add},254:(e,t,r)=>{"use strict";var i=t;i.base=r(918),i.short=r(673),i.mont=r(881),i.edwards=r(138)},881:(e,t,r)=>{"use strict";var i=r(550),n=r(717),s=r(918),a=r(953);function c(e){s.call(this,"mont",e),this.a=new i(e.a,16).toRed(this.red),this.b=new i(e.b,16).toRed(this.red),this.i4=new i(4).toRed(this.red).redInvm(),this.two=new i(2).toRed(this.red),this.a24=this.i4.redMul(this.a.redAdd(this.two))}function o(e,t,r){s.BasePoint.call(this,e,"projective"),null===t&&null===r?(this.x=this.curve.one,this.z=this.curve.zero):(this.x=new i(t,16),this.z=new i(r,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)))}n(c,s),e.exports=c,c.prototype.validate=function(e){var t=e.normalize().x,r=t.redSqr(),i=r.redMul(t).redAdd(r.redMul(this.a)).redAdd(t);return 0===i.redSqrt().redSqr().cmp(i)},n(o,s.BasePoint),c.prototype.decodePoint=function(e,t){return this.point(a.toArray(e,t),1)},c.prototype.point=function(e,t){return new o(this,e,t)},c.prototype.pointFromJSON=function(e){return o.fromJSON(this,e)},o.prototype.precompute=function(){},o.prototype._encode=function(){return this.getX().toArray("be",this.curve.p.byteLength())},o.fromJSON=function(e,t){return new o(e,t[0],t[1]||e.one)},o.prototype.inspect=function(){return this.isInfinity()?"":""},o.prototype.isInfinity=function(){return 0===this.z.cmpn(0)},o.prototype.dbl=function(){var e=this.x.redAdd(this.z).redSqr(),t=this.x.redSub(this.z).redSqr(),r=e.redSub(t),i=e.redMul(t),n=r.redMul(t.redAdd(this.curve.a24.redMul(r)));return this.curve.point(i,n)},o.prototype.add=function(){throw new Error("Not supported on Montgomery curve")},o.prototype.diffAdd=function(e,t){var r=this.x.redAdd(this.z),i=this.x.redSub(this.z),n=e.x.redAdd(e.z),s=e.x.redSub(e.z).redMul(r),a=n.redMul(i),c=t.z.redMul(s.redAdd(a).redSqr()),o=t.x.redMul(s.redISub(a).redSqr());return this.curve.point(c,o)},o.prototype.mul=function(e){for(var t=e.clone(),r=this,i=this.curve.point(null,null),n=[];0!==t.cmpn(0);t.iushrn(1))n.push(t.andln(1));for(var s=n.length-1;s>=0;s--)0===n[s]?(r=r.diffAdd(i,this),i=i.dbl()):(i=r.diffAdd(i,this),r=r.dbl());return i},o.prototype.mulAdd=function(){throw new Error("Not supported on Montgomery curve")},o.prototype.jumlAdd=function(){throw new Error("Not supported on Montgomery curve")},o.prototype.eq=function(e){return 0===this.getX().cmp(e.getX())},o.prototype.normalize=function(){return this.x=this.x.redMul(this.z.redInvm()),this.z=this.curve.one,this},o.prototype.getX=function(){return this.normalize(),this.x.fromRed()}},673:(e,t,r)=>{"use strict";var i=r(953),n=r(550),s=r(717),a=r(918),c=i.assert;function o(e){a.call(this,"short",e),this.a=new n(e.a,16).toRed(this.red),this.b=new n(e.b,16).toRed(this.red),this.tinv=this.two.redInvm(),this.zeroA=0===this.a.fromRed().cmpn(0),this.threeA=0===this.a.fromRed().sub(this.p).cmpn(-3),this.endo=this._getEndomorphism(e),this._endoWnafT1=new Array(4),this._endoWnafT2=new Array(4)}function d(e,t,r,i){a.BasePoint.call(this,e,"affine"),null===t&&null===r?(this.x=null,this.y=null,this.inf=!0):(this.x=new n(t,16),this.y=new n(r,16),i&&(this.x.forceRed(this.curve.red),this.y.forceRed(this.curve.red)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.inf=!1)}function l(e,t,r,i){a.BasePoint.call(this,e,"jacobian"),null===t&&null===r&&null===i?(this.x=this.curve.one,this.y=this.curve.one,this.z=new n(0)):(this.x=new n(t,16),this.y=new n(r,16),this.z=new n(i,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}s(o,a),e.exports=o,o.prototype._getEndomorphism=function(e){if(this.zeroA&&this.g&&this.n&&1===this.p.modn(3)){var t,r;if(e.beta)t=new n(e.beta,16).toRed(this.red);else{var i=this._getEndoRoots(this.p);t=(t=i[0].cmp(i[1])<0?i[0]:i[1]).toRed(this.red)}if(e.lambda)r=new n(e.lambda,16);else{var s=this._getEndoRoots(this.n);0===this.g.mul(s[0]).x.cmp(this.g.x.redMul(t))?r=s[0]:(r=s[1],c(0===this.g.mul(r).x.cmp(this.g.x.redMul(t))))}return{beta:t,lambda:r,basis:e.basis?e.basis.map((function(e){return{a:new n(e.a,16),b:new n(e.b,16)}})):this._getEndoBasis(r)}}},o.prototype._getEndoRoots=function(e){var t=e===this.p?this.red:n.mont(e),r=new n(2).toRed(t).redInvm(),i=r.redNeg(),s=new n(3).toRed(t).redNeg().redSqrt().redMul(r);return[i.redAdd(s).fromRed(),i.redSub(s).fromRed()]},o.prototype._getEndoBasis=function(e){for(var t,r,i,s,a,c,o,d,l,u=this.n.ushrn(Math.floor(this.n.bitLength()/2)),h=e,f=this.n.clone(),p=new n(1),m=new n(0),b=new n(0),g=new n(1),y=0;0!==h.cmpn(0);){var S=f.div(h);d=f.sub(S.mul(h)),l=b.sub(S.mul(p));var v=g.sub(S.mul(m));if(!i&&d.cmp(u)<0)t=o.neg(),r=p,i=d.neg(),s=l;else if(i&&2==++y)break;o=d,f=h,h=d,b=p,p=l,g=m,m=v}a=d.neg(),c=l;var A=i.sqr().add(s.sqr());return a.sqr().add(c.sqr()).cmp(A)>=0&&(a=t,c=r),i.negative&&(i=i.neg(),s=s.neg()),a.negative&&(a=a.neg(),c=c.neg()),[{a:i,b:s},{a,b:c}]},o.prototype._endoSplit=function(e){var t=this.endo.basis,r=t[0],i=t[1],n=i.b.mul(e).divRound(this.n),s=r.b.neg().mul(e).divRound(this.n),a=n.mul(r.a),c=s.mul(i.a),o=n.mul(r.b),d=s.mul(i.b);return{k1:e.sub(a).sub(c),k2:o.add(d).neg()}},o.prototype.pointFromX=function(e,t){(e=new n(e,16)).red||(e=e.toRed(this.red));var r=e.redSqr().redMul(e).redIAdd(e.redMul(this.a)).redIAdd(this.b),i=r.redSqrt();if(0!==i.redSqr().redSub(r).cmp(this.zero))throw new Error("invalid point");var s=i.fromRed().isOdd();return(t&&!s||!t&&s)&&(i=i.redNeg()),this.point(e,i)},o.prototype.validate=function(e){if(e.inf)return!0;var t=e.x,r=e.y,i=this.a.redMul(t),n=t.redSqr().redMul(t).redIAdd(i).redIAdd(this.b);return 0===r.redSqr().redISub(n).cmpn(0)},o.prototype._endoWnafMulAdd=function(e,t,r){for(var i=this._endoWnafT1,n=this._endoWnafT2,s=0;s":""},d.prototype.isInfinity=function(){return this.inf},d.prototype.add=function(e){if(this.inf)return e;if(e.inf)return this;if(this.eq(e))return this.dbl();if(this.neg().eq(e))return this.curve.point(null,null);if(0===this.x.cmp(e.x))return this.curve.point(null,null);var t=this.y.redSub(e.y);0!==t.cmpn(0)&&(t=t.redMul(this.x.redSub(e.x).redInvm()));var r=t.redSqr().redISub(this.x).redISub(e.x),i=t.redMul(this.x.redSub(r)).redISub(this.y);return this.curve.point(r,i)},d.prototype.dbl=function(){if(this.inf)return this;var e=this.y.redAdd(this.y);if(0===e.cmpn(0))return this.curve.point(null,null);var t=this.curve.a,r=this.x.redSqr(),i=e.redInvm(),n=r.redAdd(r).redIAdd(r).redIAdd(t).redMul(i),s=n.redSqr().redISub(this.x.redAdd(this.x)),a=n.redMul(this.x.redSub(s)).redISub(this.y);return this.curve.point(s,a)},d.prototype.getX=function(){return this.x.fromRed()},d.prototype.getY=function(){return this.y.fromRed()},d.prototype.mul=function(e){return e=new n(e,16),this.isInfinity()?this:this._hasDoubles(e)?this.curve._fixedNafMul(this,e):this.curve.endo?this.curve._endoWnafMulAdd([this],[e]):this.curve._wnafMul(this,e)},d.prototype.mulAdd=function(e,t,r){var i=[this,t],n=[e,r];return this.curve.endo?this.curve._endoWnafMulAdd(i,n):this.curve._wnafMulAdd(1,i,n,2)},d.prototype.jmulAdd=function(e,t,r){var i=[this,t],n=[e,r];return this.curve.endo?this.curve._endoWnafMulAdd(i,n,!0):this.curve._wnafMulAdd(1,i,n,2,!0)},d.prototype.eq=function(e){return this===e||this.inf===e.inf&&(this.inf||0===this.x.cmp(e.x)&&0===this.y.cmp(e.y))},d.prototype.neg=function(e){if(this.inf)return this;var t=this.curve.point(this.x,this.y.redNeg());if(e&&this.precomputed){var r=this.precomputed,i=function(e){return e.neg()};t.precomputed={naf:r.naf&&{wnd:r.naf.wnd,points:r.naf.points.map(i)},doubles:r.doubles&&{step:r.doubles.step,points:r.doubles.points.map(i)}}}return t},d.prototype.toJ=function(){return this.inf?this.curve.jpoint(null,null,null):this.curve.jpoint(this.x,this.y,this.curve.one)},s(l,a.BasePoint),o.prototype.jpoint=function(e,t,r){return new l(this,e,t,r)},l.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var e=this.z.redInvm(),t=e.redSqr(),r=this.x.redMul(t),i=this.y.redMul(t).redMul(e);return this.curve.point(r,i)},l.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},l.prototype.add=function(e){if(this.isInfinity())return e;if(e.isInfinity())return this;var t=e.z.redSqr(),r=this.z.redSqr(),i=this.x.redMul(t),n=e.x.redMul(r),s=this.y.redMul(t.redMul(e.z)),a=e.y.redMul(r.redMul(this.z)),c=i.redSub(n),o=s.redSub(a);if(0===c.cmpn(0))return 0!==o.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var d=c.redSqr(),l=d.redMul(c),u=i.redMul(d),h=o.redSqr().redIAdd(l).redISub(u).redISub(u),f=o.redMul(u.redISub(h)).redISub(s.redMul(l)),p=this.z.redMul(e.z).redMul(c);return this.curve.jpoint(h,f,p)},l.prototype.mixedAdd=function(e){if(this.isInfinity())return e.toJ();if(e.isInfinity())return this;var t=this.z.redSqr(),r=this.x,i=e.x.redMul(t),n=this.y,s=e.y.redMul(t).redMul(this.z),a=r.redSub(i),c=n.redSub(s);if(0===a.cmpn(0))return 0!==c.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var o=a.redSqr(),d=o.redMul(a),l=r.redMul(o),u=c.redSqr().redIAdd(d).redISub(l).redISub(l),h=c.redMul(l.redISub(u)).redISub(n.redMul(d)),f=this.z.redMul(a);return this.curve.jpoint(u,h,f)},l.prototype.dblp=function(e){if(0===e)return this;if(this.isInfinity())return this;if(!e)return this.dbl();if(this.curve.zeroA||this.curve.threeA){for(var t=this,r=0;r=0)return!1;if(r.redIAdd(n),0===this.x.cmp(r))return!0}},l.prototype.inspect=function(){return this.isInfinity()?"":""},l.prototype.isInfinity=function(){return 0===this.z.cmpn(0)}},427:(e,t,r)=>{"use strict";var i,n=t,s=r(715),a=r(254),c=r(953).assert;function o(e){"short"===e.type?this.curve=new a.short(e):"edwards"===e.type?this.curve=new a.edwards(e):this.curve=new a.mont(e),this.g=this.curve.g,this.n=this.curve.n,this.hash=e.hash,c(this.g.validate(),"Invalid curve"),c(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}function d(e,t){Object.defineProperty(n,e,{configurable:!0,enumerable:!0,get:function(){var r=new o(t);return Object.defineProperty(n,e,{configurable:!0,enumerable:!0,value:r}),r}})}n.PresetCurve=o,d("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:s.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]}),d("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:s.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]}),d("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:s.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]}),d("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:s.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]}),d("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:s.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]}),d("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:s.sha256,gRed:!1,g:["9"]}),d("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:s.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});try{i=r(37)}catch(e){i=void 0}d("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:s.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",i]})},954:(e,t,r)=>{"use strict";var i=r(550),n=r(156),s=r(953),a=r(427),c=r(931),o=s.assert,d=r(251),l=r(611);function u(e){if(!(this instanceof u))return new u(e);"string"==typeof e&&(o(a.hasOwnProperty(e),"Unknown curve "+e),e=a[e]),e instanceof a.PresetCurve&&(e={curve:e}),this.curve=e.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=e.curve.g,this.g.precompute(e.curve.n.bitLength()+1),this.hash=e.hash||e.curve.hash}e.exports=u,u.prototype.keyPair=function(e){return new d(this,e)},u.prototype.keyFromPrivate=function(e,t){return d.fromPrivate(this,e,t)},u.prototype.keyFromPublic=function(e,t){return d.fromPublic(this,e,t)},u.prototype.genKeyPair=function(e){e||(e={});for(var t=new n({hash:this.hash,pers:e.pers,persEnc:e.persEnc||"utf8",entropy:e.entropy||c(this.hash.hmacStrength),entropyEnc:e.entropy&&e.entropyEnc||"utf8",nonce:this.n.toArray()}),r=this.n.byteLength(),s=this.n.sub(new i(2));;){var a=new i(t.generate(r));if(!(a.cmp(s)>0))return a.iaddn(1),this.keyFromPrivate(a)}},u.prototype._truncateToN=function(e,t){var r=8*e.byteLength()-this.n.bitLength();return r>0&&(e=e.ushrn(r)),!t&&e.cmp(this.n)>=0?e.sub(this.n):e},u.prototype.sign=function(e,t,r,s){"object"==typeof r&&(s=r,r=null),s||(s={}),t=this.keyFromPrivate(t,r),e=this._truncateToN(new i(e,16));for(var a=this.n.byteLength(),c=t.getPrivate().toArray("be",a),o=e.toArray("be",a),d=new n({hash:this.hash,entropy:c,nonce:o,pers:s.pers,persEnc:s.persEnc||"utf8"}),u=this.n.sub(new i(1)),h=0;;h++){var f=s.k?s.k(h):new i(d.generate(this.n.byteLength()));if(!((f=this._truncateToN(f,!0)).cmpn(1)<=0||f.cmp(u)>=0)){var p=this.g.mul(f);if(!p.isInfinity()){var m=p.getX(),b=m.umod(this.n);if(0!==b.cmpn(0)){var g=f.invm(this.n).mul(b.mul(t.getPrivate()).iadd(e));if(0!==(g=g.umod(this.n)).cmpn(0)){var y=(p.getY().isOdd()?1:0)|(0!==m.cmp(b)?2:0);return s.canonical&&g.cmp(this.nh)>0&&(g=this.n.sub(g),y^=1),new l({r:b,s:g,recoveryParam:y})}}}}}},u.prototype.verify=function(e,t,r,n){e=this._truncateToN(new i(e,16)),r=this.keyFromPublic(r,n);var s=(t=new l(t,"hex")).r,a=t.s;if(s.cmpn(1)<0||s.cmp(this.n)>=0)return!1;if(a.cmpn(1)<0||a.cmp(this.n)>=0)return!1;var c,o=a.invm(this.n),d=o.mul(e).umod(this.n),u=o.mul(s).umod(this.n);return this.curve._maxwellTrick?!(c=this.g.jmulAdd(d,r.getPublic(),u)).isInfinity()&&c.eqXToP(s):!(c=this.g.mulAdd(d,r.getPublic(),u)).isInfinity()&&0===c.getX().umod(this.n).cmp(s)},u.prototype.recoverPubKey=function(e,t,r,n){o((3&r)===r,"The recovery param is more than two bits"),t=new l(t,n);var s=this.n,a=new i(e),c=t.r,d=t.s,u=1&r,h=r>>1;if(c.cmp(this.curve.p.umod(this.curve.n))>=0&&h)throw new Error("Unable to find sencond key candinate");c=h?this.curve.pointFromX(c.add(this.curve.n),u):this.curve.pointFromX(c,u);var f=t.r.invm(s),p=s.sub(a).mul(f).umod(s),m=d.mul(f).umod(s);return this.g.mulAdd(p,c,m)},u.prototype.getKeyRecoveryParam=function(e,t,r,i){if(null!==(t=new l(t,i)).recoveryParam)return t.recoveryParam;for(var n=0;n<4;n++){var s;try{s=this.recoverPubKey(e,t,n)}catch(e){continue}if(s.eq(r))return n}throw new Error("Unable to find valid recovery factor")}},251:(e,t,r)=>{"use strict";var i=r(550),n=r(953).assert;function s(e,t){this.ec=e,this.priv=null,this.pub=null,t.priv&&this._importPrivate(t.priv,t.privEnc),t.pub&&this._importPublic(t.pub,t.pubEnc)}e.exports=s,s.fromPublic=function(e,t,r){return t instanceof s?t:new s(e,{pub:t,pubEnc:r})},s.fromPrivate=function(e,t,r){return t instanceof s?t:new s(e,{priv:t,privEnc:r})},s.prototype.validate=function(){var e=this.getPublic();return e.isInfinity()?{result:!1,reason:"Invalid public key"}:e.validate()?e.mul(this.ec.curve.n).isInfinity()?{result:!0,reason:null}:{result:!1,reason:"Public key * N != O"}:{result:!1,reason:"Public key is not a point"}},s.prototype.getPublic=function(e,t){return"string"==typeof e&&(t=e,e=null),this.pub||(this.pub=this.ec.g.mul(this.priv)),t?this.pub.encode(t,e):this.pub},s.prototype.getPrivate=function(e){return"hex"===e?this.priv.toString(16,2):this.priv},s.prototype._importPrivate=function(e,t){this.priv=new i(e,t||16),this.priv=this.priv.umod(this.ec.curve.n)},s.prototype._importPublic=function(e,t){if(e.x||e.y)return"mont"===this.ec.curve.type?n(e.x,"Need x coordinate"):"short"!==this.ec.curve.type&&"edwards"!==this.ec.curve.type||n(e.x&&e.y,"Need both x and y coordinate"),void(this.pub=this.ec.curve.point(e.x,e.y));this.pub=this.ec.curve.decodePoint(e,t)},s.prototype.derive=function(e){return e.mul(this.priv).getX()},s.prototype.sign=function(e,t,r){return this.ec.sign(e,this,t,r)},s.prototype.verify=function(e,t){return this.ec.verify(e,t,this)},s.prototype.inspect=function(){return""}},611:(e,t,r)=>{"use strict";var i=r(550),n=r(953),s=n.assert;function a(e,t){if(e instanceof a)return e;this._importDER(e,t)||(s(e.r&&e.s,"Signature without r or s"),this.r=new i(e.r,16),this.s=new i(e.s,16),void 0===e.recoveryParam?this.recoveryParam=null:this.recoveryParam=e.recoveryParam)}function c(){this.place=0}function o(e,t){var r=e[t.place++];if(!(128&r))return r;var i=15&r;if(0===i||i>4)return!1;for(var n=0,s=0,a=t.place;s>>=0;return!(n<=127)&&(t.place=a,n)}function d(e){for(var t=0,r=e.length-1;!e[t]&&!(128&e[t+1])&&t>>3);for(e.push(128|r);--r;)e.push(t>>>(r<<3)&255);e.push(t)}}e.exports=a,a.prototype._importDER=function(e,t){e=n.toArray(e,t);var r=new c;if(48!==e[r.place++])return!1;var s=o(e,r);if(!1===s)return!1;if(s+r.place!==e.length)return!1;if(2!==e[r.place++])return!1;var a=o(e,r);if(!1===a)return!1;var d=e.slice(r.place,a+r.place);if(r.place+=a,2!==e[r.place++])return!1;var l=o(e,r);if(!1===l)return!1;if(e.length!==l+r.place)return!1;var u=e.slice(r.place,l+r.place);if(0===d[0]){if(!(128&d[1]))return!1;d=d.slice(1)}if(0===u[0]){if(!(128&u[1]))return!1;u=u.slice(1)}return this.r=new i(d),this.s=new i(u),this.recoveryParam=null,!0},a.prototype.toDER=function(e){var t=this.r.toArray(),r=this.s.toArray();for(128&t[0]&&(t=[0].concat(t)),128&r[0]&&(r=[0].concat(r)),t=d(t),r=d(r);!(r[0]||128&r[1]);)r=r.slice(1);var i=[2];l(i,t.length),(i=i.concat(t)).push(2),l(i,r.length);var s=i.concat(r),a=[48];return l(a,s.length),a=a.concat(s),n.encode(a,e)}},980:(e,t,r)=>{"use strict";var i=r(715),n=r(427),s=r(953),a=s.assert,c=s.parseBytes,o=r(87),d=r(622);function l(e){if(a("ed25519"===e,"only tested with ed25519 so far"),!(this instanceof l))return new l(e);e=n[e].curve,this.curve=e,this.g=e.g,this.g.precompute(e.n.bitLength()+1),this.pointClass=e.point().constructor,this.encodingLength=Math.ceil(e.n.bitLength()/8),this.hash=i.sha512}e.exports=l,l.prototype.sign=function(e,t){e=c(e);var r=this.keyFromSecret(t),i=this.hashInt(r.messagePrefix(),e),n=this.g.mul(i),s=this.encodePoint(n),a=this.hashInt(s,r.pubBytes(),e).mul(r.priv()),o=i.add(a).umod(this.curve.n);return this.makeSignature({R:n,S:o,Rencoded:s})},l.prototype.verify=function(e,t,r){e=c(e),t=this.makeSignature(t);var i=this.keyFromPublic(r),n=this.hashInt(t.Rencoded(),i.pubBytes(),e),s=this.g.mul(t.S());return t.R().add(i.pub().mul(n)).eq(s)},l.prototype.hashInt=function(){for(var e=this.hash(),t=0;t{"use strict";var i=r(953),n=i.assert,s=i.parseBytes,a=i.cachedProperty;function c(e,t){this.eddsa=e,this._secret=s(t.secret),e.isPoint(t.pub)?this._pub=t.pub:this._pubBytes=s(t.pub)}c.fromPublic=function(e,t){return t instanceof c?t:new c(e,{pub:t})},c.fromSecret=function(e,t){return t instanceof c?t:new c(e,{secret:t})},c.prototype.secret=function(){return this._secret},a(c,"pubBytes",(function(){return this.eddsa.encodePoint(this.pub())})),a(c,"pub",(function(){return this._pubBytes?this.eddsa.decodePoint(this._pubBytes):this.eddsa.g.mul(this.priv())})),a(c,"privBytes",(function(){var e=this.eddsa,t=this.hash(),r=e.encodingLength-1,i=t.slice(0,e.encodingLength);return i[0]&=248,i[r]&=127,i[r]|=64,i})),a(c,"priv",(function(){return this.eddsa.decodeInt(this.privBytes())})),a(c,"hash",(function(){return this.eddsa.hash().update(this.secret()).digest()})),a(c,"messagePrefix",(function(){return this.hash().slice(this.eddsa.encodingLength)})),c.prototype.sign=function(e){return n(this._secret,"KeyPair can only verify"),this.eddsa.sign(e,this)},c.prototype.verify=function(e,t){return this.eddsa.verify(e,t,this)},c.prototype.getSecret=function(e){return n(this._secret,"KeyPair is public only"),i.encode(this.secret(),e)},c.prototype.getPublic=function(e){return i.encode(this.pubBytes(),e)},e.exports=c},622:(e,t,r)=>{"use strict";var i=r(550),n=r(953),s=n.assert,a=n.cachedProperty,c=n.parseBytes;function o(e,t){this.eddsa=e,"object"!=typeof t&&(t=c(t)),Array.isArray(t)&&(t={R:t.slice(0,e.encodingLength),S:t.slice(e.encodingLength)}),s(t.R&&t.S,"Signature without R or S"),e.isPoint(t.R)&&(this._R=t.R),t.S instanceof i&&(this._S=t.S),this._Rencoded=Array.isArray(t.R)?t.R:t.Rencoded,this._Sencoded=Array.isArray(t.S)?t.S:t.Sencoded}a(o,"S",(function(){return this.eddsa.decodeInt(this.Sencoded())})),a(o,"R",(function(){return this.eddsa.decodePoint(this.Rencoded())})),a(o,"Rencoded",(function(){return this.eddsa.encodePoint(this.R())})),a(o,"Sencoded",(function(){return this.eddsa.encodeInt(this.S())})),o.prototype.toBytes=function(){return this.Rencoded().concat(this.Sencoded())},o.prototype.toHex=function(){return n.encode(this.toBytes(),"hex").toUpperCase()},e.exports=o},37:e=>{e.exports={doubles:{step:4,points:[["e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a","f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821"],["8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508","11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf"],["175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739","d3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695"],["363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640","4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9"],["8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c","4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36"],["723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda","96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f"],["eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa","5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999"],["100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0","cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09"],["e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d","9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d"],["feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d","e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088"],["da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1","9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d"],["53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0","5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8"],["8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047","10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a"],["385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862","283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453"],["6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7","7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160"],["3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd","56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0"],["85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83","7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6"],["948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a","53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589"],["6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8","bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17"],["e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d","4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda"],["e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725","7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd"],["213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754","4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2"],["4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c","17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6"],["fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6","6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f"],["76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39","c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01"],["c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891","893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3"],["d895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b","febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f"],["b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03","2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7"],["e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d","eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78"],["a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070","7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1"],["90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4","e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150"],["8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da","662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82"],["e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11","1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc"],["8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e","efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b"],["e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41","2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51"],["b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef","67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45"],["d68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8","db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120"],["324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d","648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84"],["4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96","35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d"],["9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd","ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d"],["6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5","9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8"],["a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266","40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8"],["7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71","34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac"],["928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac","c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f"],["85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751","1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962"],["ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e","493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907"],["827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241","c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec"],["eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3","be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d"],["e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f","4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414"],["1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19","aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd"],["146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be","b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0"],["fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9","6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811"],["da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2","8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1"],["a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13","7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c"],["174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c","ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73"],["959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba","2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd"],["d2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151","e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405"],["64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073","d99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589"],["8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458","38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e"],["13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b","69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27"],["bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366","d3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1"],["8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa","40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482"],["8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0","620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945"],["dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787","7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573"],["f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e","ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82"]]},naf:{wnd:7,points:[["f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9","388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672"],["2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4","d8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6"],["5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc","6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da"],["acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe","cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37"],["774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb","d984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b"],["f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8","ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81"],["d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e","581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58"],["defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34","4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77"],["2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c","85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a"],["352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5","321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c"],["2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f","2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67"],["9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714","73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402"],["daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729","a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55"],["c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db","2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482"],["6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4","e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82"],["1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5","b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396"],["605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479","2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49"],["62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d","80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf"],["80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f","1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a"],["7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb","d0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7"],["d528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9","eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933"],["49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963","758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a"],["77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74","958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6"],["f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530","e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37"],["463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b","5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e"],["f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247","cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6"],["caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1","cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476"],["2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120","4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40"],["7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435","91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61"],["754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18","673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683"],["e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8","59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5"],["186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb","3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b"],["df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f","55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417"],["5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143","efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868"],["290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba","e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a"],["af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45","f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6"],["766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a","744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996"],["59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e","c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e"],["f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8","e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d"],["7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c","30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2"],["948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519","e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e"],["7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab","100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437"],["3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca","ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311"],["d3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf","8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4"],["1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610","68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575"],["733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4","f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d"],["15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c","d56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d"],["a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940","edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629"],["e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980","a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06"],["311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3","66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374"],["34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf","9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee"],["f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63","4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1"],["d7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448","fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b"],["32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf","5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661"],["7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5","8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6"],["ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6","8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e"],["16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5","5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d"],["eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99","f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc"],["78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51","f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4"],["494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5","42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c"],["a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5","204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b"],["c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997","4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913"],["841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881","73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154"],["5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5","39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865"],["36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66","d2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc"],["336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726","ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224"],["8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede","6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e"],["1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94","60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6"],["85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31","3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511"],["29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51","b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b"],["a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252","ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2"],["4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5","cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c"],["d24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b","6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3"],["ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4","322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d"],["af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f","6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700"],["e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889","2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4"],["591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246","b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196"],["11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984","998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4"],["3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a","b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257"],["cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030","bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13"],["c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197","6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096"],["c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593","c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38"],["a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef","21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f"],["347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38","60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448"],["da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a","49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a"],["c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111","5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4"],["4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502","7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437"],["3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea","be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7"],["cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26","8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d"],["b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986","39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a"],["d4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e","62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54"],["48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4","25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77"],["dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda","ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517"],["6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859","cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10"],["e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f","f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125"],["eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c","6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e"],["13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942","fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1"],["ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a","1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2"],["b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80","5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423"],["ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d","438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8"],["8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1","cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758"],["52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63","c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375"],["e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352","6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d"],["7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193","ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec"],["5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00","9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0"],["32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58","ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c"],["e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7","d3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4"],["8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8","c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f"],["4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e","67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649"],["3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d","cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826"],["674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b","299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5"],["d32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f","f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87"],["30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6","462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b"],["be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297","62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc"],["93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a","7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c"],["b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c","ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f"],["d5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52","4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a"],["d3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb","bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46"],["463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065","bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f"],["7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917","603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03"],["74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9","cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08"],["30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3","553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8"],["9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57","712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373"],["176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66","ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3"],["75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8","9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8"],["809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721","9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1"],["1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180","4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9"]]}}},953:(e,t,r)=>{"use strict";var i=t,n=r(550),s=r(746),a=r(504);i.assert=s,i.toArray=a.toArray,i.zero2=a.zero2,i.toHex=a.toHex,i.encode=a.encode,i.getNAF=function(e,t,r){var i=new Array(Math.max(e.bitLength(),r)+1);i.fill(0);for(var n=1<(n>>1)-1?(n>>1)-o:o,s.isubn(c)):c=0,i[a]=c,s.iushrn(1)}return i},i.getJSF=function(e,t){var r=[[],[]];e=e.clone(),t=t.clone();for(var i=0,n=0;e.cmpn(-i)>0||t.cmpn(-n)>0;){var s,a,c,o=e.andln(3)+i&3,d=t.andln(3)+n&3;3===o&&(o=-1),3===d&&(d=-1),s=0==(1&o)?0:3!=(c=e.andln(7)+i&7)&&5!==c||2!==d?o:-o,r[0].push(s),a=0==(1&d)?0:3!=(c=t.andln(7)+n&7)&&5!==c||2!==o?d:-d,r[1].push(a),2*i===s+1&&(i=1-i),2*n===a+1&&(n=1-n),e.iushrn(1),t.iushrn(1)}return r},i.cachedProperty=function(e,t,r){var i="_"+t;e.prototype[t]=function(){return void 0!==this[i]?this[i]:this[i]=r.call(this)}},i.parseBytes=function(e){return"string"==typeof e?i.toArray(e,"hex"):e},i.intFromLE=function(e){return new n(e,"hex","le")}},519:e=>{"use strict";e.exports={i8:"6.5.3"}},715:(e,t,r)=>{var i=t;i.utils=r(436),i.common=r(772),i.sha=r(41),i.ripemd=r(949),i.hmac=r(326),i.sha1=i.sha.sha1,i.sha256=i.sha.sha256,i.sha224=i.sha.sha224,i.sha384=i.sha.sha384,i.sha512=i.sha.sha512,i.ripemd160=i.ripemd.ripemd160},772:(e,t,r)=>{"use strict";var i=r(436),n=r(746);function s(){this.pending=null,this.pendingTotal=0,this.blockSize=this.constructor.blockSize,this.outSize=this.constructor.outSize,this.hmacStrength=this.constructor.hmacStrength,this.padLength=this.constructor.padLength/8,this.endian="big",this._delta8=this.blockSize/8,this._delta32=this.blockSize/32}t.BlockHash=s,s.prototype.update=function(e,t){if(e=i.toArray(e,t),this.pending?this.pending=this.pending.concat(e):this.pending=e,this.pendingTotal+=e.length,this.pending.length>=this._delta8){var r=(e=this.pending).length%this._delta8;this.pending=e.slice(e.length-r,e.length),0===this.pending.length&&(this.pending=null),e=i.join32(e,0,e.length-r,this.endian);for(var n=0;n>>24&255,i[n++]=e>>>16&255,i[n++]=e>>>8&255,i[n++]=255&e}else for(i[n++]=255&e,i[n++]=e>>>8&255,i[n++]=e>>>16&255,i[n++]=e>>>24&255,i[n++]=0,i[n++]=0,i[n++]=0,i[n++]=0,s=8;s{"use strict";var i=r(436),n=r(746);function s(e,t,r){if(!(this instanceof s))return new s(e,t,r);this.Hash=e,this.blockSize=e.blockSize/8,this.outSize=e.outSize/8,this.inner=null,this.outer=null,this._init(i.toArray(t,r))}e.exports=s,s.prototype._init=function(e){e.length>this.blockSize&&(e=(new this.Hash).update(e).digest()),n(e.length<=this.blockSize);for(var t=e.length;t{"use strict";var i=r(436),n=r(772),s=i.rotl32,a=i.sum32,c=i.sum32_3,o=i.sum32_4,d=n.BlockHash;function l(){if(!(this instanceof l))return new l;d.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.endian="little"}function u(e,t,r,i){return e<=15?t^r^i:e<=31?t&r|~t&i:e<=47?(t|~r)^i:e<=63?t&i|r&~i:t^(r|~i)}function h(e){return e<=15?0:e<=31?1518500249:e<=47?1859775393:e<=63?2400959708:2840853838}function f(e){return e<=15?1352829926:e<=31?1548603684:e<=47?1836072691:e<=63?2053994217:0}i.inherits(l,d),t.ripemd160=l,l.blockSize=512,l.outSize=160,l.hmacStrength=192,l.padLength=64,l.prototype._update=function(e,t){for(var r=this.h[0],i=this.h[1],n=this.h[2],d=this.h[3],l=this.h[4],y=r,S=i,v=n,A=d,C=l,I=0;I<80;I++){var k=a(s(o(r,u(I,i,n,d),e[p[I]+t],h(I)),b[I]),l);r=l,l=d,d=s(n,10),n=i,i=k,k=a(s(o(y,u(79-I,S,v,A),e[m[I]+t],f(I)),g[I]),C),y=C,C=A,A=s(v,10),v=S,S=k}k=c(this.h[1],n,A),this.h[1]=c(this.h[2],d,C),this.h[2]=c(this.h[3],l,y),this.h[3]=c(this.h[4],r,S),this.h[4]=c(this.h[0],i,v),this.h[0]=k},l.prototype._digest=function(e){return"hex"===e?i.toHex32(this.h,"little"):i.split32(this.h,"little")};var p=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],m=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],b=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],g=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]},41:(e,t,r)=>{"use strict";t.sha1=r(761),t.sha224=r(799),t.sha256=r(344),t.sha384=r(978),t.sha512=r(900)},761:(e,t,r)=>{"use strict";var i=r(436),n=r(772),s=r(38),a=i.rotl32,c=i.sum32,o=i.sum32_5,d=s.ft_1,l=n.BlockHash,u=[1518500249,1859775393,2400959708,3395469782];function h(){if(!(this instanceof h))return new h;l.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.W=new Array(80)}i.inherits(h,l),e.exports=h,h.blockSize=512,h.outSize=160,h.hmacStrength=80,h.padLength=64,h.prototype._update=function(e,t){for(var r=this.W,i=0;i<16;i++)r[i]=e[t+i];for(;i{"use strict";var i=r(436),n=r(344);function s(){if(!(this instanceof s))return new s;n.call(this),this.h=[3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428]}i.inherits(s,n),e.exports=s,s.blockSize=512,s.outSize=224,s.hmacStrength=192,s.padLength=64,s.prototype._digest=function(e){return"hex"===e?i.toHex32(this.h.slice(0,7),"big"):i.split32(this.h.slice(0,7),"big")}},344:(e,t,r)=>{"use strict";var i=r(436),n=r(772),s=r(38),a=r(746),c=i.sum32,o=i.sum32_4,d=i.sum32_5,l=s.ch32,u=s.maj32,h=s.s0_256,f=s.s1_256,p=s.g0_256,m=s.g1_256,b=n.BlockHash,g=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];function y(){if(!(this instanceof y))return new y;b.call(this),this.h=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],this.k=g,this.W=new Array(64)}i.inherits(y,b),e.exports=y,y.blockSize=512,y.outSize=256,y.hmacStrength=192,y.padLength=64,y.prototype._update=function(e,t){for(var r=this.W,i=0;i<16;i++)r[i]=e[t+i];for(;i{"use strict";var i=r(436),n=r(900);function s(){if(!(this instanceof s))return new s;n.call(this),this.h=[3418070365,3238371032,1654270250,914150663,2438529370,812702999,355462360,4144912697,1731405415,4290775857,2394180231,1750603025,3675008525,1694076839,1203062813,3204075428]}i.inherits(s,n),e.exports=s,s.blockSize=1024,s.outSize=384,s.hmacStrength=192,s.padLength=128,s.prototype._digest=function(e){return"hex"===e?i.toHex32(this.h.slice(0,12),"big"):i.split32(this.h.slice(0,12),"big")}},900:(e,t,r)=>{"use strict";var i=r(436),n=r(772),s=r(746),a=i.rotr64_hi,c=i.rotr64_lo,o=i.shr64_hi,d=i.shr64_lo,l=i.sum64,u=i.sum64_hi,h=i.sum64_lo,f=i.sum64_4_hi,p=i.sum64_4_lo,m=i.sum64_5_hi,b=i.sum64_5_lo,g=n.BlockHash,y=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function S(){if(!(this instanceof S))return new S;g.call(this),this.h=[1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209],this.k=y,this.W=new Array(160)}function v(e,t,r,i,n){var s=e&r^~e&n;return s<0&&(s+=4294967296),s}function A(e,t,r,i,n,s){var a=t&i^~t&s;return a<0&&(a+=4294967296),a}function C(e,t,r,i,n){var s=e&r^e&n^r&n;return s<0&&(s+=4294967296),s}function I(e,t,r,i,n,s){var a=t&i^t&s^i&s;return a<0&&(a+=4294967296),a}function k(e,t){var r=a(e,t,28)^a(t,e,2)^a(t,e,7);return r<0&&(r+=4294967296),r}function B(e,t){var r=c(e,t,28)^c(t,e,2)^c(t,e,7);return r<0&&(r+=4294967296),r}function w(e,t){var r=c(e,t,14)^c(e,t,18)^c(t,e,9);return r<0&&(r+=4294967296),r}function E(e,t){var r=a(e,t,1)^a(e,t,8)^o(e,t,7);return r<0&&(r+=4294967296),r}function M(e,t){var r=c(e,t,1)^c(e,t,8)^d(e,t,7);return r<0&&(r+=4294967296),r}function T(e,t){var r=c(e,t,19)^c(t,e,29)^d(e,t,6);return r<0&&(r+=4294967296),r}i.inherits(S,g),e.exports=S,S.blockSize=1024,S.outSize=512,S.hmacStrength=192,S.padLength=128,S.prototype._prepareBlock=function(e,t){for(var r=this.W,i=0;i<32;i++)r[i]=e[t+i];for(;i{"use strict";var i=r(436).rotr32;function n(e,t,r){return e&t^~e&r}function s(e,t,r){return e&t^e&r^t&r}function a(e,t,r){return e^t^r}t.ft_1=function(e,t,r,i){return 0===e?n(t,r,i):1===e||3===e?a(t,r,i):2===e?s(t,r,i):void 0},t.ch32=n,t.maj32=s,t.p32=a,t.s0_256=function(e){return i(e,2)^i(e,13)^i(e,22)},t.s1_256=function(e){return i(e,6)^i(e,11)^i(e,25)},t.g0_256=function(e){return i(e,7)^i(e,18)^e>>>3},t.g1_256=function(e){return i(e,17)^i(e,19)^e>>>10}},436:(e,t,r)=>{"use strict";var i=r(746),n=r(717);function s(e,t){return 55296==(64512&e.charCodeAt(t))&&!(t<0||t+1>=e.length)&&56320==(64512&e.charCodeAt(t+1))}function a(e){return(e>>>24|e>>>8&65280|e<<8&16711680|(255&e)<<24)>>>0}function c(e){return 1===e.length?"0"+e:e}function o(e){return 7===e.length?"0"+e:6===e.length?"00"+e:5===e.length?"000"+e:4===e.length?"0000"+e:3===e.length?"00000"+e:2===e.length?"000000"+e:1===e.length?"0000000"+e:e}t.inherits=n,t.toArray=function(e,t){if(Array.isArray(e))return e.slice();if(!e)return[];var r=[];if("string"==typeof e)if(t){if("hex"===t)for((e=e.replace(/[^a-z0-9]+/gi,"")).length%2!=0&&(e="0"+e),n=0;n>6|192,r[i++]=63&a|128):s(e,n)?(a=65536+((1023&a)<<10)+(1023&e.charCodeAt(++n)),r[i++]=a>>18|240,r[i++]=a>>12&63|128,r[i++]=a>>6&63|128,r[i++]=63&a|128):(r[i++]=a>>12|224,r[i++]=a>>6&63|128,r[i++]=63&a|128)}else for(n=0;n>>0}return a},t.split32=function(e,t){for(var r=new Array(4*e.length),i=0,n=0;i>>24,r[n+1]=s>>>16&255,r[n+2]=s>>>8&255,r[n+3]=255&s):(r[n+3]=s>>>24,r[n+2]=s>>>16&255,r[n+1]=s>>>8&255,r[n]=255&s)}return r},t.rotr32=function(e,t){return e>>>t|e<<32-t},t.rotl32=function(e,t){return e<>>32-t},t.sum32=function(e,t){return e+t>>>0},t.sum32_3=function(e,t,r){return e+t+r>>>0},t.sum32_4=function(e,t,r,i){return e+t+r+i>>>0},t.sum32_5=function(e,t,r,i,n){return e+t+r+i+n>>>0},t.sum64=function(e,t,r,i){var n=e[t],s=i+e[t+1]>>>0,a=(s>>0,e[t+1]=s},t.sum64_hi=function(e,t,r,i){return(t+i>>>0>>0},t.sum64_lo=function(e,t,r,i){return t+i>>>0},t.sum64_4_hi=function(e,t,r,i,n,s,a,c){var o=0,d=t;return o+=(d=d+i>>>0)>>0)>>0)>>0},t.sum64_4_lo=function(e,t,r,i,n,s,a,c){return t+i+s+c>>>0},t.sum64_5_hi=function(e,t,r,i,n,s,a,c,o,d){var l=0,u=t;return l+=(u=u+i>>>0)>>0)>>0)>>0)>>0},t.sum64_5_lo=function(e,t,r,i,n,s,a,c,o,d){return t+i+s+c+d>>>0},t.rotr64_hi=function(e,t,r){return(t<<32-r|e>>>r)>>>0},t.rotr64_lo=function(e,t,r){return(e<<32-r|t>>>r)>>>0},t.shr64_hi=function(e,t,r){return e>>>r},t.shr64_lo=function(e,t,r){return(e<<32-r|t>>>r)>>>0}},156:(e,t,r)=>{"use strict";var i=r(715),n=r(504),s=r(746);function a(e){if(!(this instanceof a))return new a(e);this.hash=e.hash,this.predResist=!!e.predResist,this.outLen=this.hash.outSize,this.minEntropy=e.minEntropy||this.hash.hmacStrength,this._reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var t=n.toArray(e.entropy,e.entropyEnc||"hex"),r=n.toArray(e.nonce,e.nonceEnc||"hex"),i=n.toArray(e.pers,e.persEnc||"hex");s(t.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(t,r,i)}e.exports=a,a.prototype._init=function(e,t,r){var i=e.concat(t).concat(r);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var n=0;n=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(e.concat(r||[])),this._reseed=1},a.prototype.generate=function(e,t,r,i){if(this._reseed>this.reseedInterval)throw new Error("Reseed is required");"string"!=typeof t&&(i=r,r=t,t=null),r&&(r=n.toArray(r,i||"hex"),this._update(r));for(var s=[];s.length{"function"==typeof Object.create?e.exports=function(e,t){t&&(e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:e.exports=function(e,t){if(t){e.super_=t;var r=function(){};r.prototype=t.prototype,e.prototype=new r,e.prototype.constructor=e}}},94:(e,t,r)=>{var i;!function(){"use strict";var n="input is invalid type",s="object"==typeof window,a=s?window:{};a.JS_SHA3_NO_WINDOW&&(s=!1);var c=!s&&"object"==typeof self;!a.JS_SHA3_NO_NODE_JS&&"object"==typeof process&&process.versions&&process.versions.node?a=r.g:c&&(a=self);var o=!a.JS_SHA3_NO_COMMON_JS&&e.exports,d=r.amdO,l=!a.JS_SHA3_NO_ARRAY_BUFFER&&"undefined"!=typeof ArrayBuffer,u="0123456789abcdef".split(""),h=[4,1024,262144,67108864],f=[0,8,16,24],p=[1,0,32898,0,32906,2147483648,2147516416,2147483648,32907,0,2147483649,0,2147516545,2147483648,32777,2147483648,138,0,136,0,2147516425,0,2147483658,0,2147516555,0,139,2147483648,32905,2147483648,32771,2147483648,32770,2147483648,128,2147483648,32778,0,2147483658,2147483648,2147516545,2147483648,32896,2147483648,2147483649,0,2147516424,2147483648],m=[224,256,384,512],b=[128,256],g=["hex","buffer","arrayBuffer","array","digest"],y={128:168,256:136};!a.JS_SHA3_NO_NODE_JS&&Array.isArray||(Array.isArray=function(e){return"[object Array]"===Object.prototype.toString.call(e)}),!l||!a.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW&&ArrayBuffer.isView||(ArrayBuffer.isView=function(e){return"object"==typeof e&&e.buffer&&e.buffer.constructor===ArrayBuffer});for(var S=function(e,t,r){return function(i){return new O(e,t,e).update(i)[r]()}},v=function(e,t,r){return function(i,n){return new O(e,t,n).update(i)[r]()}},A=function(e,t,r){return function(t,i,n,s){return w["cshake"+e].update(t,i,n,s)[r]()}},C=function(e,t,r){return function(t,i,n,s){return w["kmac"+e].update(t,i,n,s)[r]()}},I=function(e,t,r,i){for(var n=0;n>5,this.byteCount=this.blockCount<<2,this.outputBlocks=r>>5,this.extraBytes=(31&r)>>3;for(var i=0;i<50;++i)this.s[i]=0}function R(e,t,r){O.call(this,e,t,r)}O.prototype.update=function(e){if(this.finalized)throw new Error("finalize already called");var t,r=typeof e;if("string"!==r){if("object"!==r)throw new Error(n);if(null===e)throw new Error(n);if(l&&e.constructor===ArrayBuffer)e=new Uint8Array(e);else if(!(Array.isArray(e)||l&&ArrayBuffer.isView(e)))throw new Error(n);t=!0}for(var i,s,a=this.blocks,c=this.byteCount,o=e.length,d=this.blockCount,u=0,h=this.s;u>2]|=e[u]<>2]|=s<>2]|=(192|s>>6)<>2]|=(128|63&s)<=57344?(a[i>>2]|=(224|s>>12)<>2]|=(128|s>>6&63)<>2]|=(128|63&s)<>2]|=(240|s>>18)<>2]|=(128|s>>12&63)<>2]|=(128|s>>6&63)<>2]|=(128|63&s)<=c){for(this.start=i-c,this.block=a[d],i=0;i>=8);r>0;)n.unshift(r),r=255&(e>>=8),++i;return t?n.push(i):n.unshift(i),this.update(n),n.length},O.prototype.encodeString=function(e){var t,r=typeof e;if("string"!==r){if("object"!==r)throw new Error(n);if(null===e)throw new Error(n);if(l&&e.constructor===ArrayBuffer)e=new Uint8Array(e);else if(!(Array.isArray(e)||l&&ArrayBuffer.isView(e)))throw new Error(n);t=!0}var i=0,s=e.length;if(t)i=s;else for(var a=0;a=57344?i+=3:(c=65536+((1023&c)<<10|1023&e.charCodeAt(++a)),i+=4)}return i+=this.encode(8*i),this.update(e),i},O.prototype.bytepad=function(e,t){for(var r=this.encode(t),i=0;i>2]|=this.padding[3&t],this.lastByteIndex===this.byteCount)for(e[0]=e[r],t=1;t>4&15]+u[15&e]+u[e>>12&15]+u[e>>8&15]+u[e>>20&15]+u[e>>16&15]+u[e>>28&15]+u[e>>24&15];a%t==0&&(F(r),s=0)}return n&&(e=r[s],c+=u[e>>4&15]+u[15&e],n>1&&(c+=u[e>>12&15]+u[e>>8&15]),n>2&&(c+=u[e>>20&15]+u[e>>16&15])),c},O.prototype.arrayBuffer=function(){this.finalize();var e,t=this.blockCount,r=this.s,i=this.outputBlocks,n=this.extraBytes,s=0,a=0,c=this.outputBits>>3;e=n?new ArrayBuffer(i+1<<2):new ArrayBuffer(c);for(var o=new Uint32Array(e);a>8&255,o[e+2]=t>>16&255,o[e+3]=t>>24&255;c%r==0&&F(i)}return s&&(e=c<<2,t=i[a],o[e]=255&t,s>1&&(o[e+1]=t>>8&255),s>2&&(o[e+2]=t>>16&255)),o},R.prototype=new O,R.prototype.finalize=function(){return this.encode(this.outputBits,!0),O.prototype.finalize.call(this)};var F=function(e){var t,r,i,n,s,a,c,o,d,l,u,h,f,m,b,g,y,S,v,A,C,I,k,B,w,E,M,T,N,P,D,x,O,R,F,K,H,_,L,U,X,G,V,q,W,z,j,J,Q,Z,$,Y,ee,te,re,ie,ne,se,ae,ce,oe,de,le;for(i=0;i<48;i+=2)n=e[0]^e[10]^e[20]^e[30]^e[40],s=e[1]^e[11]^e[21]^e[31]^e[41],a=e[2]^e[12]^e[22]^e[32]^e[42],c=e[3]^e[13]^e[23]^e[33]^e[43],o=e[4]^e[14]^e[24]^e[34]^e[44],d=e[5]^e[15]^e[25]^e[35]^e[45],l=e[6]^e[16]^e[26]^e[36]^e[46],u=e[7]^e[17]^e[27]^e[37]^e[47],t=(h=e[8]^e[18]^e[28]^e[38]^e[48])^(a<<1|c>>>31),r=(f=e[9]^e[19]^e[29]^e[39]^e[49])^(c<<1|a>>>31),e[0]^=t,e[1]^=r,e[10]^=t,e[11]^=r,e[20]^=t,e[21]^=r,e[30]^=t,e[31]^=r,e[40]^=t,e[41]^=r,t=n^(o<<1|d>>>31),r=s^(d<<1|o>>>31),e[2]^=t,e[3]^=r,e[12]^=t,e[13]^=r,e[22]^=t,e[23]^=r,e[32]^=t,e[33]^=r,e[42]^=t,e[43]^=r,t=a^(l<<1|u>>>31),r=c^(u<<1|l>>>31),e[4]^=t,e[5]^=r,e[14]^=t,e[15]^=r,e[24]^=t,e[25]^=r,e[34]^=t,e[35]^=r,e[44]^=t,e[45]^=r,t=o^(h<<1|f>>>31),r=d^(f<<1|h>>>31),e[6]^=t,e[7]^=r,e[16]^=t,e[17]^=r,e[26]^=t,e[27]^=r,e[36]^=t,e[37]^=r,e[46]^=t,e[47]^=r,t=l^(n<<1|s>>>31),r=u^(s<<1|n>>>31),e[8]^=t,e[9]^=r,e[18]^=t,e[19]^=r,e[28]^=t,e[29]^=r,e[38]^=t,e[39]^=r,e[48]^=t,e[49]^=r,m=e[0],b=e[1],z=e[11]<<4|e[10]>>>28,j=e[10]<<4|e[11]>>>28,T=e[20]<<3|e[21]>>>29,N=e[21]<<3|e[20]>>>29,ce=e[31]<<9|e[30]>>>23,oe=e[30]<<9|e[31]>>>23,G=e[40]<<18|e[41]>>>14,V=e[41]<<18|e[40]>>>14,R=e[2]<<1|e[3]>>>31,F=e[3]<<1|e[2]>>>31,g=e[13]<<12|e[12]>>>20,y=e[12]<<12|e[13]>>>20,J=e[22]<<10|e[23]>>>22,Q=e[23]<<10|e[22]>>>22,P=e[33]<<13|e[32]>>>19,D=e[32]<<13|e[33]>>>19,de=e[42]<<2|e[43]>>>30,le=e[43]<<2|e[42]>>>30,te=e[5]<<30|e[4]>>>2,re=e[4]<<30|e[5]>>>2,K=e[14]<<6|e[15]>>>26,H=e[15]<<6|e[14]>>>26,S=e[25]<<11|e[24]>>>21,v=e[24]<<11|e[25]>>>21,Z=e[34]<<15|e[35]>>>17,$=e[35]<<15|e[34]>>>17,x=e[45]<<29|e[44]>>>3,O=e[44]<<29|e[45]>>>3,B=e[6]<<28|e[7]>>>4,w=e[7]<<28|e[6]>>>4,ie=e[17]<<23|e[16]>>>9,ne=e[16]<<23|e[17]>>>9,_=e[26]<<25|e[27]>>>7,L=e[27]<<25|e[26]>>>7,A=e[36]<<21|e[37]>>>11,C=e[37]<<21|e[36]>>>11,Y=e[47]<<24|e[46]>>>8,ee=e[46]<<24|e[47]>>>8,q=e[8]<<27|e[9]>>>5,W=e[9]<<27|e[8]>>>5,E=e[18]<<20|e[19]>>>12,M=e[19]<<20|e[18]>>>12,se=e[29]<<7|e[28]>>>25,ae=e[28]<<7|e[29]>>>25,U=e[38]<<8|e[39]>>>24,X=e[39]<<8|e[38]>>>24,I=e[48]<<14|e[49]>>>18,k=e[49]<<14|e[48]>>>18,e[0]=m^~g&S,e[1]=b^~y&v,e[10]=B^~E&T,e[11]=w^~M&N,e[20]=R^~K&_,e[21]=F^~H&L,e[30]=q^~z&J,e[31]=W^~j&Q,e[40]=te^~ie&se,e[41]=re^~ne&ae,e[2]=g^~S&A,e[3]=y^~v&C,e[12]=E^~T&P,e[13]=M^~N&D,e[22]=K^~_&U,e[23]=H^~L&X,e[32]=z^~J&Z,e[33]=j^~Q&$,e[42]=ie^~se&ce,e[43]=ne^~ae&oe,e[4]=S^~A&I,e[5]=v^~C&k,e[14]=T^~P&x,e[15]=N^~D&O,e[24]=_^~U&G,e[25]=L^~X&V,e[34]=J^~Z&Y,e[35]=Q^~$&ee,e[44]=se^~ce&de,e[45]=ae^~oe&le,e[6]=A^~I&m,e[7]=C^~k&b,e[16]=P^~x&B,e[17]=D^~O&w,e[26]=U^~G&R,e[27]=X^~V&F,e[36]=Z^~Y&q,e[37]=$^~ee&W,e[46]=ce^~de&te,e[47]=oe^~le&re,e[8]=I^~m&g,e[9]=k^~b&y,e[18]=x^~B&E,e[19]=O^~w&M,e[28]=G^~R&K,e[29]=V^~F&H,e[38]=Y^~q&z,e[39]=ee^~W&j,e[48]=de^~te&ie,e[49]=le^~re&ne,e[0]^=p[i],e[1]^=p[i+1]};if(o)e.exports=w;else{for(M=0;M{function t(e,t){if(!e)throw new Error(t||"Assertion failed")}e.exports=t,t.equal=function(e,t,r){if(e!=t)throw new Error(r||"Assertion failed: "+e+" != "+t)}},504:(e,t)=>{"use strict";var r=t;function i(e){return 1===e.length?"0"+e:e}function n(e){for(var t="",r=0;r>8,a=255&n;s?r.push(s,a):r.push(a)}return r},r.zero2=i,r.toHex=n,r.encode=function(e,t){return"hex"===t?n(e):e}},43:function(e,t){!function(e){"use strict";class t{static toArrayBuffer(e){const t=this.toUint8Array(e);return t.byteOffset||t.length?t.buffer.slice(t.byteOffset,t.byteOffset+t.length):t.buffer}static toUint8Array(e){if("undefined"!=typeof Buffer&&Buffer.isBuffer(e))return new Uint8Array(e);if(ArrayBuffer.isView(e))return new Uint8Array(e.buffer,e.byteOffset,e.byteLength);if(e instanceof ArrayBuffer)return new Uint8Array(e);throw new TypeError("The provided value is not of type '(ArrayBuffer or ArrayBufferView)'")}static isBufferSource(e){return this.isArrayBufferView(e)||e instanceof ArrayBuffer}static isArrayBufferView(e){return ArrayBuffer.isView(e)||e&&e.buffer instanceof ArrayBuffer}}function r(e){return"undefined"!=typeof Buffer&&Buffer.isBuffer(e)?new Uint8Array(e):t.isArrayBufferView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength):new Uint8Array(e)}class i{static isHex(e){return"string"==typeof e&&/^[a-z0-9]+$/i.test(e)}static isBase64(e){return"string"==typeof e&&/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(e)}static isBase64Url(e){return"string"==typeof e&&/^[a-zA-Z0-9-_]+$/i.test(e)}static ToString(e,t="utf8"){const i=r(e);switch(t.toLowerCase()){case"utf8":return this.ToUtf8String(i);case"binary":return this.ToBinary(i);case"hex":return this.ToHex(i);case"base64":return this.ToBase64(i);case"base64url":return this.ToBase64Url(i);default:throw new Error(`Unknown type of encoding '${t}'`)}}static FromString(e,t="utf8"){if(!e)return new ArrayBuffer(0);switch(t.toLowerCase()){case"utf8":return this.FromUtf8String(e);case"binary":return this.FromBinary(e);case"hex":return this.FromHex(e);case"base64":return this.FromBase64(e);case"base64url":return this.FromBase64Url(e);default:throw new Error(`Unknown type of encoding '${t}'`)}}static ToBase64(e){const t=r(e);if("undefined"!=typeof btoa){const e=this.ToString(t,"binary");return btoa(e)}return Buffer.from(t).toString("base64")}static FromBase64(e){const t=this.formatString(e);if(!t)return new ArrayBuffer(0);if(!i.isBase64(t))throw new TypeError("Argument 'base64Text' is not Base64 encoded");return"undefined"!=typeof atob?this.FromBinary(atob(t)):new Uint8Array(Buffer.from(t,"base64")).buffer}static FromBase64Url(e){const t=this.formatString(e);if(!t)return new ArrayBuffer(0);if(!i.isBase64Url(t))throw new TypeError("Argument 'base64url' is not Base64Url encoded");return this.FromBase64(this.Base64Padding(t.replace(/\-/g,"+").replace(/\_/g,"/")))}static ToBase64Url(e){return this.ToBase64(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/\=/g,"")}static FromUtf8String(e){const t=unescape(encodeURIComponent(e)),r=new Uint8Array(t.length);for(let e=0;ee.byteLength)).reduce(((e,t)=>e+t)),r=new Uint8Array(t);let i=0;return e.map((e=>new Uint8Array(e))).forEach((e=>{for(const t of e)r[i++]=t})),r.buffer},e.isEqual=function(e,t){if(!e||!t)return!1;if(e.byteLength!==t.byteLength)return!1;const r=new Uint8Array(e),i=new Uint8Array(t);for(let t=0;t{"use strict";function i(e){return new Date(e.getTime()+6e4*e.getTimezoneOffset())}function n(e,t,r){return e instanceof Object==0?r:t in e?e[t]:r}function s(e,t=0,r=e.byteLength-t,i=!1){let n="";for(const s of new Uint8Array(e,t,r)){const e=s.toString(16).toUpperCase();1===e.length&&(n+="0"),n+=e,i&&(n+=" ")}return n.trim()}function a(e,t,r,i){return t instanceof ArrayBuffer==0?(e.error='Wrong parameter: inputBuffer must be "ArrayBuffer"',!1):0===t.byteLength?(e.error="Wrong parameter: inputBuffer has zero length",!1):r<0?(e.error="Wrong parameter: inputOffset less than zero",!1):i<0?(e.error="Wrong parameter: inputLength less than zero",!1):!(t.byteLength-r-i<0&&(e.error="End of input reached before message was fully decoded (inconsistent offset and length values)",1))}function c(e,t){let r=0;if(1===e.length)return e[0];for(let i=e.length-1;i>=0;i--)r+=e[e.length-1-i]*Math.pow(2,t*i);return r}function o(e,t,r=-1){const i=r;let n=e,s=0,a=Math.pow(2,t);for(let r=1;r<8;r++){if(e=0;e--){const r=Math.pow(2,e*t);a[s-e-1]=Math.floor(n/r),n-=a[s-e-1]*r}return e}a*=Math.pow(2,t)}return new ArrayBuffer(0)}function d(...e){let t=0,r=0;for(const r of e)t+=r.byteLength;const i=new ArrayBuffer(t),n=new Uint8Array(i);for(const t of e)n.set(new Uint8Array(t),r),r+=t.byteLength;return i}function l(...e){let t=0,r=0;for(const r of e)t+=r.length;const i=new ArrayBuffer(t),n=new Uint8Array(i);for(const t of e)n.set(t,r),r+=t.length;return n}function u(){const e=new Uint8Array(this.valueHex);if(this.valueHex.byteLength>=2){const t=255===e[0]&&128&e[1],r=0===e[0]&&0==(128&e[1]);(t||r)&&this.warnings.push("Needlessly long format")}const t=new ArrayBuffer(this.valueHex.byteLength),r=new Uint8Array(t);for(let e=0;ei,getParametersValue:()=>n,bufferToHexCodes:()=>s,checkBufferParams:()=>a,utilFromBase:()=>c,utilToBase:()=>o,utilConcatBuf:()=>d,utilConcatView:()=>l,utilDecodeTC:()=>u,utilEncodeTC:()=>h,isEqualBuffer:()=>f,padNumber:()=>p,toBase64:()=>g,fromBase64:()=>y,arrayBufferToString:()=>S,stringToArrayBuffer:()=>v,nearestPowerOf2:()=>C,clearProps:()=>I});const m="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",b="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=";function g(e,t=!1,r=!1,i=!1){let n=0,s=0,a=0,c="";const o=t?b:m;if(i){let t=0;for(let r=0;r=e.length&&(s=1);const i=e.charCodeAt(n++);n>=e.length&&(a=1);const d=e.charCodeAt(n++),l=t>>2,u=(3&t)<<4|i>>4;let h=(15&i)<<2|d>>6,f=63&d;1===s?h=f=64:1===a&&(f=64),c+=r?64===h?`${o.charAt(l)}${o.charAt(u)}`:64===f?`${o.charAt(l)}${o.charAt(u)}${o.charAt(h)}`:`${o.charAt(l)}${o.charAt(u)}${o.charAt(h)}${o.charAt(f)}`:`${o.charAt(l)}${o.charAt(u)}${o.charAt(h)}${o.charAt(f)}`}return c}function y(e,t=!1,r=!1){const i=t?b:m;function n(e){for(let t=0;t<64;t++)if(i.charAt(t)===e)return t;return 64}function s(e){return 64===e?0:e}let a=0,c="";for(;a=e.length?0:n(e.charAt(a++)),i=a>=e.length?0:n(e.charAt(a++)),o=a>=e.length?0:n(e.charAt(a++)),d=s(t)<<2|s(r)>>4,l=(15&s(r))<<4|s(i)>>2,u=(3&s(i))<<6|s(o);c+=String.fromCharCode(d),64!==i&&(c+=String.fromCharCode(l)),64!==o&&(c+=String.fromCharCode(u))}if(r){let e=-1;for(let t=c.length-1;t>=0;t--)if(0!==c.charCodeAt(t)){e=t;break}c=-1!==e?c.slice(0,e+1):""}return c}function S(e){let t="";const r=new Uint8Array(e);for(const e of r)t+=String.fromCharCode(e);return t}function v(e){const t=e.length,r=new ArrayBuffer(t),i=new Uint8Array(r);for(let r=0;r{"use strict";r.d(t,{D:()=>rt});let i={P:2n**256n-2n**32n-977n,n:2n**256n-432420386565659656852420866394968145599n,magicExp:(2n**256n-2n**32n-977n+1n)/4n,A:0n,B:7n},n={P:21888242871839275222246405745257275088696311157297823662689037894645226208583n,n:21888242871839275222246405745257275088548364400416034343698204186575808495617n,A:0n,B:3n,h:1n};class s{constructor(e,t,r=i){this.x=e,this.y=t,this.useCurve=r}double(){const e=this.x,t=this.y,r=c(3n*e**2n*o(2n*t,this.useCurve.P),this.useCurve.P),i=c(r*r-2n*e,this.useCurve.P),n=c(r*(e-i)-t,this.useCurve.P);return new s(i,n,this.useCurve)}newZero(){return new s(0n,0n,this.useCurve)}add(e){const[t,r]=[this,e],[i,n,a,d]=[t.x,t.y,r.x,r.y];if(0n===i||0n===n)return r;if(0n===a||0n===d)return t;if(i===a&&n===d)return this.double();if(i===a&&n===-d)return this.newZero();const l=c((d-n)*o(a-i,this.useCurve.P),this.useCurve.P),u=c(l*l-i-a,this.useCurve.P),h=c(l*(i-u)-n,this.useCurve.P);return new s(u,h,this.useCurve)}multiplyDA(e){let t=this.newZero(),r=this;for(;e>0n;)1n&e&&(t=t.add(r)),r=r.double(),e>>=1n;return t}isInfinity(){return null==this.x||null==this.y}getEncoded(e=!1){if(this.isInfinity())return new Uint8Array(0);let t=d(this.x);return l(e?[Uint8Array.from([2]),t]:[Uint8Array.from([4]),t,d(this.y)])}equals(e){if(null==e)return!1;let t=this.isInfinity(),r=e.isInfinity();if(t||r)return t&&r;let i=e;return this.x===i.x&&this.y===i.y}static decodeFromHex(e,t=i){if(130!=e.length)throw new Error("only decompressed points allowed. 65 bytes.");let r;switch(e.slice(0,2)){case"04":let i=BigInt("0x"+e.slice(2,66)),n=BigInt("0x"+e.slice(66,130));r=new s(i,n,t);break;default:throw new Error("only decompressed points allowed")}if(!r.validate())throw new Error(`Point not valid (${r.x},${r.y})`);return r}validate(){return c(this.y*this.y,this.useCurve.P)-c(f(this.x,3n,this.useCurve.P)+this.x*this.useCurve.A+this.useCurve.B,this.useCurve.P)==0n}negate(){return new s(this.x,this.useCurve.P-this.y,this.useCurve)}subtract(e){return this.add(e.negate())}}function a(e){let t=[],r=[...e];r.length%2&&r.unshift("0");let i="";for(;r.length;)i="",i+=r.shift()+r.shift(),t.push(parseInt(i,16));return t}function c(e,t=n.P){const r=e%t;return r>=0?r:t+r}function o(e,t=n.P){if(0n===e||t<=0n)throw new Error("invert: expected positive integers");let[r,i]=function(e,t){let[r,i,n,s]=[0n,1n,1n,0n];for(;0n!==e;){let[a,c]=[t/e,t%e],[o,d]=[r-n*a,i-s*a];[t,e]=[e,c],[r,i]=[n,s],[n,s]=[o,d]}return[t,r,i]}(c(e,t),t);if(1n!==r)throw new Error("invert: does not exist");return c(i,t)}function d(e){var t=BigInt(e).toString(16);t.length%2&&(t="0"+t);for(var r=t.length/2,i=new Uint8Array(r),n=0,s=0;ne.charCodeAt(0))),t}function h(e){for(var t=[],r=0;r0n;)1n&t&&(i=i*n%r),n=n*n%r,t>>=1n;return i}function p(e){return Array.from(e).map((e=>("0"+e.toString(16)).slice(-2))).join("")}const m={END_OF_CONTENT:0,BOOLEAN:1,INTEGER:2,BIT_STRING:3,OCTET_STRING:4,NULL_VALUE:5,OBJECT_ID:6,OBJECT_DESCRIPTOR:7,EXTERNAL:8,REAL:9,ENUMERATED:10,EMBEDDED_PDV:11,UTF8STRING:12,RELATIVE_OID:13,SEQUENCE_10:16,SET_OF:17,NUMERABLE_STRING:18,PRINTABLE_STRING:19,T61STRING:20,VIDEO_TEX_STRING:21,IA5STRING:22,UTC_TIME:23,GENERALIZED_TIME:24,GRAPHIC_STRING:25,VISIBLE_STRING:26,GENERAL_STRING:27,UNIVERSAL_STRING:28,CHARACTER_STRING:29,BMP_STRING:30,SEQUENCE_30:48,SET:49},b={0:"END_OF_CONTENT",1:"BOOLEAN",2:"INTEGER",3:"BIT_STRING",4:"OCTET_STRING",5:"NULL_VALUE",6:"OBJECT_ID",7:"OBJECT_DESCRIPTOR",8:"EXTERNAL",9:"REAL",10:"ENUMERATED",11:"EMBEDDED_PDV",12:"UTF8STRING",13:"RELATIVE_OID",16:"SEQUENCE_10",19:"PRINTABLE_STRING",22:"IA5STRING",24:"GENERALIZED_TIME",26:"VISIBLE_STRING",48:"SEQUENCE_30",49:"SET"};class g{static encodeAsInteger(e){return this.encode("INTEGER",e)}static encode(e,t){let r=m[e],i="";switch(e){case"GENERALIZED_TIME":case"VISIBLE_STRING":i=function(e){for(var t="",r=0;r7&&(i="00"+i);break;case"SEQUENCE_30":case"OCTET_STRING":i=t;break;case"BIT_STRING":i="00"+t}let n="",s=Math.ceil(i.length/2),a=s.toString(16);return a=(a.length%2?"0":"")+a,n=s<128?a:(128+Math.round(a.length/2)).toString(16)+a,i=(i.length%2?"0":"")+i,r.toString(16).padStart(2,"0")+n+i}decode(e){let t=Array.from(e);return this.read(t)}lenEncoded(e){let t=e.shift();if(t<128)return t;if(t>128){let r=0;for(let i=0;i>t>0n)||(console.log("Curve order is not 253 bits which is required by the current implementation"),!1)}getType(e){switch(e.toLowerCase()){case"mail":return y.mail;case"phone":return y.phone;default:throw new Error("Wrong type of identifier")}}makeRiddle(e,t,r){return this.hashIdentifier(t,e).multiplyDA(r).getEncoded(!1)}makeCommitment(e,t,r){let i=A.multiplyDA(r);return this.makeCommitmentFromHiding(e,t,i)}makeCommitmentFromHiding(e,t,r){let i=this.mapToCurveMultiplier(t,e);return v.multiplyDA(i).add(r).getEncoded(!1)}hashIdentifier(e,t){let r=this.mapToInteger(e,Uint8Array.from(h(t.trim().toLowerCase())));return this.computePoint_bn256(r)}mapToInteger(e,t){let r=[0,0,0,e],i=l([Uint8Array.from(r),t]);return this.mapToIntegerFromUint8(i)}mapToIntegerIntString(e,t){return this.mapToInteger(e,Uint8Array.from(h(t)))}mapToCurveMultiplier(e,t){let r=Uint8Array.from(h(t.trim().toLowerCase())),i=[0,0,0,e],s=function(e){let t=[];return Uint8Array.from(e).forEach((function(e){var r=e.toString(16);r.length%2&&(r="0"+r),t.push(r)})),BigInt("0x"+t.join(""))}(l([Uint8Array.from(i),r]));do{s=this.mapTo256BitInteger(d(s))}while(s>=n.n);return s}mapTo256BitInteger(e){return BigInt("0x"+S.keccak256(e))}mapToIntegerFromUint8(e){let t=S.keccak256(l([Uint8Array.from([0]),e])),r=S.keccak256(l([Uint8Array.from([1]),e]));return BigInt("0x"+t+r)}computePoint_bn256(e){let t=n.P;e=c(e,t);let r,i,a,o=0n,d=0n,l=t+1n>>2n,u=t-1n>>1n;do{do{e=c(e+1n),d=c(f(e,3n,t)+n.A*e+n.B),a=f(d,u,t)}while(1n!==a);o=f(d,l,t),r=new s(e,o,n),r.x>t>>1n&&(r=new s(e,t-o,n)),i=r.multiplyDA(n.n-1n),i.y>t>>1n&&(i=new s(i.x,t-i.y,n))}while(!r.equals(i)||r.isInfinity());return r}makeSecret(e=48){var t=new Uint8Array(e);window.crypto.getRandomValues(t);let r="0x";for(var i=0;i=n.n);return new I(A,e,i,a)}verifyAttestationRequestProof(e){let t=c(this.mapTo256BitInteger(this.makeArray([v,e.getBase(),e.getRiddle(),e.getPoint()])),n.n);return!!e.getBase().equals(A)&&this.verifyPok(e,t)}verifyEqualityProof(e,t,r){let i=s.decodeFromHex(p(e),n),a=s.decodeFromHex(p(t),n);if(!i.subtract(a).equals(r.getRiddle()))return!1;if(!r.getBase().equals(A))return!1;let c=this.mapTo256BitInteger(this.makeArray([v,r.getBase(),i,a,r.getPoint()]));return this.verifyPok(r,c)}verifyPok(e,t){let r=e.getBase().multiplyDA(e.getChallenge()),i=e.getRiddle().multiplyDA(t).add(e.getPoint());return r.equals(i)}computeProof(e,t,r){let i=this.makeSecret(),s=e.multiplyDA(i),a=c(this.mapToIntegerFromUint8(this.makeArray([e,t,s])),n.n),o=c(i+a*r,n.n);return new I(e,t,s,o)}makeArray(e){let t=new Uint8Array(0);return e.forEach((e=>{t=new Uint8Array([...t,...e.getEncoded(!1)])})),t}verifyProof(e){let t=c(this.mapToIntegerFromUint8(this.makeArray([e.getBase(),e.getRiddle(),e.getPoint()])),n.n),r=e.getBase().multiplyDA(e.getChallenge()),i=e.getRiddle().multiplyDA(t).add(e.getPoint());return r.equals(i)}addressFromKey(e){let t=e.getPublicKeyAsHexStr();return"0x"+S.keccak256(a(t)).slice(-40).toUpperCase()}}C.OID_SIGNATURE_ALG="1.2.840.10045.2.1";class I{constructor(e,t,r,i){this.base=e,this.riddle=t,this.tPoint=r,this.challenge=i,this.encoding=this.makeEncoding()}static fromArray(e,t,r,i){let a=new this(s.decodeFromHex(e,n),s.decodeFromHex(t,n),s.decodeFromHex(i,n),BigInt("0x"+r));return a.encoding=a.makeEncoding(),a}verify(){let e=new C,t=e.verifyProof(this);return console.log(`verify POK = ${t}`),e.verifyProof(this)}getBase(){return this.base}getRiddle(){return this.riddle}getPoint(){return this.tPoint}getChallenge(){return this.challenge}makeEncoding(){let e=g.encode("OCTET_STRING",p(this.base.getEncoded(!1)))+g.encode("OCTET_STRING",p(this.riddle.getEncoded(!1)))+g.encode("OCTET_STRING",this.challenge.toString(16))+g.encode("OCTET_STRING",p(this.tPoint.getEncoded(!1)));return g.encode("SEQUENCE_30",e)}getDerEncoding(){return this.encoding}}const k=r(561),B=new s(55066263022277343669578718895168534326250603453777594175500187360389116729240n,32670510020758816978083085130507043184471273380659243275938904335757337482424n);class w{constructor(){}getPrivateAsHexString(){return this.privateInHex}getPrivateAsBigInt(){return BigInt("0x"+this.privateInHex)}static privateFromBigInt(e){let t=new this;return t.privateInHex=e.toString(16).padStart(64,"0"),t}static privateFromHex(e){let t=new this;return t.privateInHex=e.padStart(64,"0"),t}static fromPublicHex(e){if(e.length<129||e.length>130)throw new Error("Wrong public hex length");let t=new this;return t.publicInHex=e.padStart(130,"0"),t}static privateFromAsn1base64(e){let t=new this,r=e.split(/\r?\n/);"---"===e.slice(0,3)&&(r.shift(),r.pop());let i=u(r.join("")),n=k.decode(i);if("SEQUENCE"!=n.typeName()||3!=n.sub.length)throw new Error("Wrong Private Key format(mainSequence)");let s=n.sub[2];if("OCTET_STRING"!=s.typeName()||1!=s.sub.length)throw new Error("Wrong Private Key format(octetsAsWrapper)");let c=s.sub[0];if("SEQUENCE"!=c.typeName()||4!=c.sub.length)throw new Error("Wrong Private Key format(SequenseAsWrapper)");let o=c.sub[1].toHexString(),d=new g;return t.privateInHex=d.decode(Uint8Array.from(a(o))),t}static async generateKeyAsync(){const e=await crypto.subtle.generateKey({name:"AES-GCM",length:256},!0,["encrypt"]);let t=["0x"];const r=await crypto.subtle.exportKey("raw",e);return new Uint8Array(r).forEach((e=>{var r=e.toString(16);r.length%2&&(r="0"+r),t.push(r)})),this.privateFromBigInt(BigInt(t.join(""))%i.n)}static createKeys(){return this.privateFromBigInt(BigInt("0x"+p(crypto.getRandomValues(new Uint8Array(32))))%i.n)}getPublicKeyAsHexStr(){if(this.publicInHex)return this.publicInHex;{let e=B.multiplyDA(this.getPrivateAsBigInt());return"04"+e.x.toString(16).padStart(64,"0")+e.y.toString(16).padStart(64,"0")}}getAsnDerPublic(){var e=this.getPublicKeyAsHexStr();return g.encode("SEQUENCE_30","3081EC06072A8648CE3D02013081E0020101302C06072A8648CE3D0101022100FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F3044042000000000000000000000000000000000000000000000000000000000000000000420000000000000000000000000000000000000000000000000000000000000000704410479BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798483ADA7726A3C4655DA4FBFC0E1108A8FD17B448A68554199C47D08FFB10D4B8022100FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141020101"+g.encode("BIT_STRING",e))}}let E=new(r(266).ec)("secp256k1");const M=r(561);let T=r(94);class N{constructor(){}static fromEmail(e){let t=new C,r=w.createKeys(),i=t.makeSecret(),n=t.computeAttestationProof(i);return{request:N.fromData(e,y.mail,n,r).getDerEncoding(),requestSecret:i}}static fromData(e,t,r,i){let n=new this;if(n.create(e,t,r,i),!n.verify())throw new Error("The signature or proof is not valid");return n}create(e,t,r,i){this.identity=e,this.type=t,this.pok=r,this.keys=i;let n=E.keyFromPrivate(this.keys.getPrivateAsHexString(),"hex"),s=T.keccak256(a(this.getUnsignedEncoding())),c=n.sign(s);this.signature=c.toDER("hex")}getUnsignedEncoding(){let e=g.encode("VISIBLE_STRING",this.identity)+g.encode("INTEGER",this.type)+this.pok.encoding;return g.encode("SEQUENCE_30",e)}getDerEncoding(){var e=this.keys.getPublicKeyAsHexStr();let t=g.encode("SEQUENCE_30","3081EC06072A8648CE3D02013081E0020101302C06072A8648CE3D0101022100FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F3044042000000000000000000000000000000000000000000000000000000000000000000420000000000000000000000000000000000000000000000000000000000000000704410479BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798483ADA7726A3C4655DA4FBFC0E1108A8FD17B448A68554199C47D08FFB10D4B8022100FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141020101"+g.encode("BIT_STRING",e)),r=this.getUnsignedEncoding()+t+g.encode("BIT_STRING",this.signature);return g.encode("SEQUENCE_30",r)}static fromBytes(e){let t=new this,r=M.decode(e);if("SEQUENCE"!=r.typeName()||3!=r.sub.length)throw new Error("Wrong attestation format");let i=r.sub[0];if("SEQUENCE"!=i.typeName()||3!=i.sub.length)throw new Error("Wrong attestation format(UnsignedEncodingSequence)");t.identity=i.sub[0].content(),t.type=i.sub[1].content();let n=i.sub[2];if("SEQUENCE"!=n.typeName()||4!=n.sub.length)throw new Error("Wrong attestation format(pokSequence)");let s=n.sub[0].content().replace(/\(.+\)\s+/,""),c=n.sub[1].content().replace(/\(.+\)\s+/,""),o=n.sub[2].content().replace(/\(.+\)\s+/,""),d=n.sub[3].content().replace(/\(.+\)\s+/,"");t.pok=I.fromArray(s,c,o,d);let l=r.sub[1];if("SEQUENCE"!=l.typeName()||2!=l.sub.length)throw new Error("Wrong attestation format(pubKeySequence)");let u=l.sub[1].toHexString(),h=(new g).decode(Uint8Array.from(a(u)));t.keys=w.fromPublicHex(h.toString(16));let f=r.sub[2].toHexString(),p=(new g).decode(Uint8Array.from(a(f)));if(t.signature=p.toString(16),!t.verify())throw new Error("The signature is not valid");return t}verify(){let e=E.keyFromPublic(this.keys.getPublicKeyAsHexStr(),"hex"),t=T.keccak256(a(this.getUnsignedEncoding()));return!!e.verify(t,this.signature)&&!!(new C).verifyAttestationRequestProof(this.pok)}checkValidity(){return!!(new C).hashIdentifier(this.type,this.identity).equals(this.pok.getBase())}getPok(){return this.pok}getIdentity(){return this.identity}getType(){return this.type}getKeys(){return this.keys}}let P=new(r(266).ec)("secp256k1"),D=r(94);class x{static sign(e,t){let r=P.keyFromPrivate(t.getPrivateAsHexString(),"hex"),i=D.keccak256(a(e));return r.sign(i).toDER("hex")}static verify(e,t,r){return x.verifyArrayBuf(a(e),t,r)}static verifyArrayBuf(e,t,r){let i=P.keyFromPublic(r.getPublicKeyAsHexStr(),"hex"),n=D.keccak256(e);return i.verify(n,t)}}let O=r(94),R=new(r(266).ec)("secp256k1");class F{constructor(){}static fromData(e,t,r,i,n,s){const a=new this;if(a.commitment=e,a.keys=s,a.amount=t,r%1e3!=0||i%1e3!=0)throw new Error("Can only support time granularity to the second");a.notValidBefore=r,a.notValidAfter=i,a.signature=n;let c=a.makeCheque();if(a.encoded=a.encodeSignedCheque(c,p(n)),!a.verify())throw new Error("Signature is invalid");return a}static createAndVerify(e,t,r,i,n,s){let c=new this;c.identifier=e,c.type=t,c.amount=r,c.validity=i,c.keys=n,c.secret=s;let o=new C;c.commitment=o.makeCommitment(c.identifier,y[c.type],c.secret);let d=(new Date).getTime();c.notValidBefore=d-d%1e3,c.notValidAfter=c.notValidBefore+1e3*c.validity;let l=c.makeCheque(),u=R.keyFromPrivate(c.keys.getPrivateAsHexString(),"hex"),h=O.keccak256(a(l));var f=u.sign(h);let p=g.encode("BIT_STRING",f.toDER("hex"));if(c.encoded=c.encodeSignedCheque(l,p),!u.verify(h,f))throw new Error("Public and private keys are incorrect");return{cheque:l,chequeEncoded:c.encoded,derSignature:p,derSecret:g.encode("SEQUENCE_30",g.encode("OCTET_STRING",c.secret.toString(16)))}}encodeSignedCheque(e,t){let r=e+g.encode("BIT_STRING",this.keys.getPublicKeyAsHexStr())+t;return g.encode("SEQUENCE_30",r)}makeCheque(){let e=g.encode("GENERALIZED_TIME",K(this.notValidBefore))+g.encode("GENERALIZED_TIME",K(this.notValidAfter)),t=g.encode("INTEGER",this.amount)+g.encode("SEQUENCE_30",e)+g.encode("OCTET_STRING",p(this.commitment));return g.encode("SEQUENCE_30",t)}verify(){let e=this.makeCheque();return x.verify(e,p(this.signature),this.keys)}getDerEncoding(){return Uint8Array.from([])}checkValidity(){let e=Date.now();return this.notValidBefore>e?(console.log("Cheque is no longer valid"),!1):!(this.notValidAftere.charCodeAt(0))).buffer}if(e instanceof ArrayBuffer){const t=(0,H.sc)(e);this.fromSchema(t.result)}else this.ticket=new X(e.ticket),this.commitment=(0,_.getParametersValue)(e,"commitment"),this.publicKeyInfo=new U(e.publicKeyInfo),this.signatureValue=(0,_.getParametersValue)(e,"signatureValue")}static schema(e={}){const t=(0,_.getParametersValue)(e,"names",{});return new H.T9({name:t.blockName||"SignedDevconTicket",value:[X.schema(e),new H.fi({name:"commitment"}),new H.T9({name:"publicKeyInfo",optional:!0,value:[U.schema(t.publicKeyInfo||{names:{blockName:"publicKeyInfo"}})]}),new H._K({name:"signatureValue"})]})}fromSchema(e){(0,_.clearProps)(e,["ticket","commitment","publicKeyInfo","signatureValue"]);const t=(0,H.eN)(e,e,G.schema());if(!1===t.verified)throw new Error("Object's schema was not verified against input data for SignedDevconTicket");this.ticket=new X(t.result.ticket.valueBeforeDecode),"commitment"in t.result&&(this.commitment=t.result.commitment.valueBlock.valueHex),this.publicKeyInfo=new U({schema:t.result.publicKeyInfo});const r=t.result.signatureValue;this.signatureValue=r.valueBlock.valueHex}}var V,q,W,z,j=r(85);(z=V||(V={}))[z.Sequence=0]="Sequence",z[z.Set=1]="Set",z[z.Choice=2]="Choice",(W=q||(q={}))[W.Any=1]="Any",W[W.Boolean=2]="Boolean",W[W.OctetString=3]="OctetString",W[W.BitString=4]="BitString",W[W.Integer=5]="Integer",W[W.Enumerated=6]="Enumerated",W[W.ObjectIdentifier=7]="ObjectIdentifier",W[W.Utf8String=8]="Utf8String",W[W.BmpString=9]="BmpString",W[W.UniversalString=10]="UniversalString",W[W.NumericString=11]="NumericString",W[W.PrintableString=12]="PrintableString",W[W.TeletexString=13]="TeletexString",W[W.VideotexString=14]="VideotexString",W[W.IA5String=15]="IA5String",W[W.GraphicString=16]="GraphicString",W[W.VisibleString=17]="VisibleString",W[W.GeneralString=18]="GeneralString",W[W.CharacterString=19]="CharacterString",W[W.UTCTime=20]="UTCTime",W[W.GeneralizedTime=21]="GeneralizedTime",W[W.DATE=22]="DATE",W[W.TimeOfDay=23]="TimeOfDay",W[W.DateTime=24]="DateTime",W[W.Duration=25]="Duration",W[W.TIME=26]="TIME",W[W.Null=27]="Null";const J={fromASN:e=>e instanceof j.Null?null:e.valueBeforeDecode,toASN:e=>{if(null===e)return new j.Null;const t=j.fromBER(e);if(t.result.error)throw new Error(t.result.error);return t.result}},Q={fromASN:e=>e.valueBlock.valueHex.byteLength>4?e.valueBlock.toString():e.valueBlock.valueDec,toASN:e=>new j.Integer({value:e})},Z={fromASN:e=>e.valueBlock.valueDec,toASN:e=>new j.Enumerated({value:e})},$={fromASN:e=>e.valueBlock.valueHex,toASN:e=>new j.BitString({valueHex:e})},Y={fromASN:e=>e.valueBlock.toString(),toASN:e=>new j.ObjectIdentifier({value:e})},ee={fromASN:e=>e.valueBlock.value,toASN:e=>new j.Boolean({value:e})},te={fromASN:e=>e.valueBlock.valueHex,toASN:e=>new j.OctetString({valueHex:e})};function re(e){return{fromASN:e=>e.valueBlock.value,toASN:t=>new e({value:t})}}const ie=re(j.Utf8String),ne=re(j.BmpString),se=re(j.UniversalString),ae=re(j.NumericString),ce=re(j.PrintableString),oe=re(j.TeletexString),de=re(j.VideotexString),le=re(j.IA5String),ue=re(j.GraphicString),he=re(j.VisibleString),fe=re(j.GeneralString),pe=re(j.CharacterString),me={fromASN:e=>e.toDate(),toASN:e=>new j.UTCTime({valueDate:e})},be={fromASN:e=>e.toDate(),toASN:e=>new j.GeneralizedTime({valueDate:e})},ge={fromASN:e=>null,toASN:e=>new j.Null};function ye(e){switch(e){case q.Any:return J;case q.BitString:return $;case q.BmpString:return ne;case q.Boolean:return ee;case q.CharacterString:return pe;case q.Enumerated:return Z;case q.GeneralString:return fe;case q.GeneralizedTime:return be;case q.GraphicString:return ue;case q.IA5String:return le;case q.Integer:return Q;case q.Null:return ge;case q.NumericString:return ae;case q.ObjectIdentifier:return Y;case q.OctetString:return te;case q.PrintableString:return ce;case q.TeletexString:return oe;case q.UTCTime:return me;case q.UniversalString:return se;case q.Utf8String:return ie;case q.VideotexString:return de;case q.VisibleString:return he;default:return null}}function Se(e){return e&&e.prototype?!(!e.prototype.toASN||!e.prototype.fromASN)||Se(e.prototype):!!(e&&e.toASN&&e.fromASN)}function ve(e){var t;if(e){const r=Object.getPrototypeOf(e);return(null===(t=null==r?void 0:r.prototype)||void 0===t?void 0:t.constructor)===Array||ve(r)}return!1}r(43);const Ae=new class{constructor(){this.items=new WeakMap}has(e){return this.items.has(e)}get(e){var t,r,i,n;const s=this.items.get(e);if(!s)throw new Error(`Cannot get schema for '${null!==(n=null===(i=null===(r=null===(t=e)||void 0===t?void 0:t.prototype)||void 0===r?void 0:r.constructor)||void 0===i?void 0:i.name)&&void 0!==n?n:e}' target`);return s}cache(e){const t=this.get(e);t.schema||(t.schema=this.create(e,!0))}createDefault(e){const t={type:V.Sequence,items:{}},r=this.findParentSchema(e);return r&&(Object.assign(t,r),t.items=Object.assign({},t.items,r.items)),t}create(e,t){const r=this.items.get(e)||this.createDefault(e),i=[];for(const e in r.items){const n=r.items[e],s=t?e:"";let a;if("number"==typeof n.type){const e=q[n.type],t=j[e];if(!t)throw new Error(`Cannot get ASN1 class by name '${e}'`);a=new t({name:s})}else Se(n.type)?a=(new n.type).toSchema(s):n.optional?this.get(n.type).type===V.Choice?a=new j.Any({name:s}):(a=this.create(n.type,!1),a.name=s):a=new j.Any({name:s});const c=!!n.optional||void 0!==n.defaultValue;if(n.repeated&&(a.name="",a=new("set"===n.repeated?j.Set:j.Sequence)({name:"",value:[new j.Repeated({name:s,value:a})]})),null!==n.context&&void 0!==n.context)if(n.implicit)if("number"==typeof n.type||Se(n.type)){const e=n.repeated?j.Constructed:j.Primitive;i.push(new e({name:s,optional:c,idBlock:{tagClass:3,tagNumber:n.context}}))}else{this.cache(n.type);const e=!!n.repeated;let t=e?a:this.get(n.type).schema;t=t.valueBlock?t.valueBlock.value:t.value,i.push(new j.Constructed({name:e?"":s,optional:c,idBlock:{tagClass:3,tagNumber:n.context},value:t}))}else i.push(new j.Constructed({optional:c,idBlock:{tagClass:3,tagNumber:n.context},value:[a]}));else a.optional=c,i.push(a)}switch(r.type){case V.Sequence:return new j.Sequence({value:i,name:""});case V.Set:return new j.Set({value:i,name:""});case V.Choice:return new j.Choice({value:i,name:""});default:throw new Error("Unsupported ASN1 type in use")}}set(e,t){return this.items.set(e,t),this}findParentSchema(e){const t=e.__proto__;return t?this.items.get(t)||this.findParentSchema(t):null}},Ce=e=>t=>{let r;Ae.has(t)?r=Ae.get(t):(r=Ae.createDefault(t),Ae.set(t,r)),Object.assign(r,e)},Ie=e=>(t,r)=>{let i;Ae.has(t.constructor)?i=Ae.get(t.constructor):(i=Ae.createDefault(t.constructor),Ae.set(t.constructor,i));const n=Object.assign({},e);if("number"==typeof n.type&&!n.converter){const i=ye(e.type);if(!i)throw new Error(`Cannot get default converter for property '${r}' of ${t.constructor.name}`);n.converter=i}i.items[r]=n};class ke extends Error{constructor(){super(...arguments),this.schemas=[]}}class Be{static parse(e,t){let r;if(e instanceof ArrayBuffer)r=e;else if("undefined"!=typeof Buffer&&Buffer.isBuffer(e))r=new Uint8Array(e).buffer;else{if(!(ArrayBuffer.isView(e)||e.buffer instanceof ArrayBuffer))throw new TypeError("Wrong type of 'data' argument");r=e.buffer}const i=j.fromBER(r);if(i.result.error)throw new Error(i.result.error);return this.fromASN(i.result,t)}static fromASN(e,t){var r;try{if(Se(t))return(new t).fromASN(e);const i=Ae.get(t);Ae.cache(t);let n=i.schema;if(e.constructor===j.Constructed&&i.type!==V.Choice){n=new j.Constructed({idBlock:{tagClass:3,tagNumber:e.idBlock.tagNumber},value:i.schema.valueBlock.value});for(const t in i.items)delete e[t]}const s=j.compareSchema(e,e,n);if(!s.verified)throw new ke(`Data does not match to ${t.name} ASN1 schema. ${s.result.error}`);const a=new t;if(ve(t)){if("number"==typeof i.itemType){const r=ye(i.itemType);if(!r)throw new Error(`Cannot get default converter for array item of ${t.name} ASN1 schema`);return t.from(e.valueBlock.value,(e=>r.fromASN(e)))}return t.from(e.valueBlock.value,(e=>this.fromASN(e,i.itemType)))}for(const t in i.items){if(!e[t])continue;const n=i.items[t];if("number"==typeof n.type||Se(n.type)){const i=null!==(r=n.converter)&&void 0!==r?r:Se(n.type)?new n.type:null;if(!i)throw new Error("Converter is empty");if(n.repeated)if(n.implicit){const r=new("sequence"===n.repeated?j.Sequence:j.Set);r.valueBlock=e[t].valueBlock;const s=j.fromBER(r.toBER(!1)).result.valueBlock.value;a[t]=Array.from(s,(e=>i.fromASN(e)))}else a[t]=Array.from(e[t],(e=>i.fromASN(e)));else{let r=e[t];if(n.implicit){let e;if(Se(n.type))e=(new n.type).toSchema("");else{const t=q[n.type],r=j[t];if(!r)throw new Error(`Cannot get '${t}' class from asn1js module`);e=new r}e.valueBlock=r.valueBlock,r=j.fromBER(e.toBER(!1)).result}a[t]=i.fromASN(r)}}else n.repeated?a[t]=Array.from(e[t],(e=>this.fromASN(e,n.type))):a[t]=this.fromASN(e[t],n.type)}return a}catch(e){throw e instanceof ke&&e.schemas.push(t.name),e}}}class we extends Array{constructor(e=[]){if("number"==typeof e)super(e);else{super();for(const t of e)this.push(t)}}}var Ee=function(e,t,r,i){var n,s=arguments.length,a=s<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,r):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,i);else for(var c=e.length-1;c>=0;c--)(n=e[c])&&(a=(s<3?n(a):s>3?n(t,r,a):n(t,r))||a);return s>3&&a&&Object.defineProperty(t,r,a),a};class Me{}Ee([Ie({type:q.ObjectIdentifier})],Me.prototype,"algorithm",void 0),Ee([Ie({type:q.Any,optional:!0})],Me.prototype,"parameters",void 0);class Te{constructor(){this.version=0}}Ee([Ie({type:q.Integer})],Te.prototype,"version",void 0);let Ne=class{};Ee([Ie({type:q.UTCTime})],Ne.prototype,"utcTime",void 0),Ee([Ie({type:q.GeneralizedTime})],Ne.prototype,"generalizedTime",void 0),Ne=Ee([Ce({type:V.Choice})],Ne);class Pe{}Ee([Ie({type:Ne})],Pe.prototype,"notBefore",void 0),Ee([Ie({type:Ne})],Pe.prototype,"notAfter",void 0);let De=class{};Ee([Ie({type:Pe,context:0})],De.prototype,"value",void 0),Ee([Ie({type:q.Integer,context:1})],De.prototype,"null",void 0),De=Ee([Ce({type:V.Choice})],De);class xe{}Ee([Ie({type:q.ObjectIdentifier})],xe.prototype,"extnId",void 0),Ee([Ie({type:q.Boolean})],xe.prototype,"critical",void 0),Ee([Ie({type:q.OctetString})],xe.prototype,"extnValue",void 0);class Oe{}Ee([Ie({type:xe})],Oe.prototype,"extension",void 0);var Re,Fe,Ke=function(e,t,r,i){var n,s=arguments.length,a=s<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,r):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,i);else for(var c=e.length-1;c>=0;c--)(n=e[c])&&(a=(s<3?n(a):s>3?n(t,r,a):n(t,r))||a);return s>3&&a&&Object.defineProperty(t,r,a),a};class He{}Ke([Ie({type:q.ObjectIdentifier})],He.prototype,"type",void 0),Ke([Ie({type:q.Any})],He.prototype,"value",void 0);let _e=Re=class extends we{constructor(e){super(e),Object.setPrototypeOf(this,Re.prototype)}};_e=Re=Ke([Ce({type:V.Set,itemType:He})],_e);let Le=Fe=class extends we{constructor(e){super(e),Object.setPrototypeOf(this,Fe.prototype)}};Le=Fe=Ke([Ce({type:V.Sequence,itemType:_e})],Le);let Ue=class{};Ke([Ie({type:Le})],Ue.prototype,"rdnSequence",void 0),Ke([Ie({type:q.Null})],Ue.prototype,"null",void 0),Ue=Ke([Ce({type:V.Choice})],Ue);var Xe=function(e,t,r,i){var n,s=arguments.length,a=s<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,r):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,i);else for(var c=e.length-1;c>=0;c--)(n=e[c])&&(a=(s<3?n(a):s>3?n(t,r,a):n(t,r))||a);return s>3&&a&&Object.defineProperty(t,r,a),a};class Ge{}Xe([Ie({type:Me})],Ge.prototype,"algorithm",void 0),Xe([Ie({type:q.BitString})],Ge.prototype,"subjectPublicKey",void 0);let Ve=class{constructor(){this.null=!1}};Xe([Ie({type:Ge})],Ve.prototype,"value",void 0),Xe([Ie({type:q.Any})],Ve.prototype,"null",void 0),Ve=Xe([Ce({type:V.Choice})],Ve);let qe=class{};Xe([Ie({type:Oe,context:3})],qe.prototype,"extensions",void 0),Xe([Ie({type:q.Any,context:4})],qe.prototype,"dataObject",void 0),qe=Xe([Ce({type:V.Choice})],qe);class We{}Xe([Ie({type:q.Integer})],We.prototype,"value",void 0);class ze{}Xe([Ie({type:Te})],ze.prototype,"version",void 0),Xe([Ie({type:q.Integer})],ze.prototype,"serialNumber",void 0),Xe([Ie({type:Me})],ze.prototype,"signature",void 0),Xe([Ie({type:Ue})],ze.prototype,"issuer",void 0),Xe([Ie({type:Pe})],ze.prototype,"validity",void 0),Xe([Ie({type:Ue})],ze.prototype,"subject",void 0),Xe([Ie({type:Ve})],ze.prototype,"subjectPublicKeyInfo",void 0),Xe([Ie({type:We,optional:!0})],ze.prototype,"contract",void 0),Xe([Ie({type:qe})],ze.prototype,"attestsTo",void 0);class je{constructor(){this.signedInfo=new Uint8Array}}Xe([Ie({type:q.Any})],je.prototype,"signedInfo",void 0),Xe([Ie({type:Me})],je.prototype,"signatureAlgorithm",void 0),Xe([Ie({type:q.BitString})],je.prototype,"signatureValue",void 0);class Je{constructor(e){this.signedInfo=e,this.version=18;let t=Be.parse(e,ze);this.version=t.version.version,this.serialNumber=t.serialNumber,this.signature=t.signature,t.validity&&(this.notValidBefore=t.validity.notBefore.generalizedTime.getTime(),this.notValidAfter=t.validity.notAfter.generalizedTime.getTime()),this.subject=t.subject,this.subjectPublicKeyInfo=t.subjectPublicKeyInfo,this.issuer=t.issuer,t.contract&&(this.smartcontracts=t.contract),t.attestsTo.extensions?this.extensions=t.attestsTo.extensions:t.attestsTo.dataObject&&(this.extensions=t.attestsTo.dataObject)}getDerEncoding(){return this.signedInfo}getNotValidBefore(){return this.notValidBefore}getNotValidAfter(){return this.notValidAfter}getSubjectPublicKeyInfo(){return this.subjectPublicKeyInfo}checkValidity(){if(null==this.version||null==this.serialNumber||null==this.signature||null==this.extensions&&null==this.dataObject)return!1;let e=Date.now(),t=this.getNotValidBefore(),r=this.getNotValidAfter();return!t||!r||e>=t&&e=0;c--)(n=e[c])&&(a=(s<3?n(a):s>3?n(t,r,a):n(t,r))||a);return s>3&&a&&Object.defineProperty(t,r,a),a};class $e{}Ze([Ie({type:q.Integer})],$e.prototype,"amount",void 0),Ze([Ie({type:Pe})],$e.prototype,"validity",void 0),Ze([Ie({type:q.OctetString})],$e.prototype,"commitment",void 0);class Ye{}Ze([Ie({type:$e})],Ye.prototype,"cheque",void 0),Ze([Ie({type:q.BitString})],Ye.prototype,"publicKey",void 0),Ze([Ie({type:q.BitString})],Ye.prototype,"signatureValue",void 0);class et{constructor(e,t,r,i){this.attestableObject=e,this.att=t,this.attestationSecret=r,this.chequeSecret=i,this.crypto=new C,this.pok=this.makeProof(r,i,this.crypto),this.derEncodedProof=this.pok.getDerEncoding();let n=p(this.attestableObject.getDerEncoding())+p(this.att.getDerEncoding())+this.pok.getDerEncoding();this.unsignedEncoding=g.encode("SEQUENCE_30",n)}makeProof(e,t,r){let i=this.att.getUnsignedAttestation().getExtensions(),n=new Uint8Array(i.extension.extnValue),s=this.attestableObject.getCommitment(),a=r.computeEqualityProof(p(n),p(s),e,t);if(!r.verifyEqualityProof(n,s,a))throw new Error("The redeem proof did not verify");return a}getAttestableObject(){return this.attestableObject}getAtt(){return this.att}getDerEncodeProof(){return this.derEncodedProof}}const tt=r(561);class rt{constructor(){this.crypto=new C,this.Asn1Der=new g,this.Asn1=tt}createKeys(){return w.createKeys()}decodeTicket(e){return new G(e)}keysFromPrivateBase64(e){return w.privateFromAsn1base64(e)}createCheque(e,t,r,i,n,s){return F.createAndVerify(t,r,e,i,n,s)}requestAttest(e,t,r){r||(r=w.createKeys());let i=this.crypto.makeSecret(),n=this.crypto.computeAttestationProof(i),s=N.fromData(e,y[t],n,r);return{request:s.getDerEncoding(),requestSignature:s.signature,requestSecret:g.encode("SEQUENCE_30",g.encode("OCTET_STRING",i.toString(16)))}}constructAttest(e,t,r,i){return{verify:"Verify attestation signing request "+(N.fromBytes(Uint8Array.from(a(i))).verify()?"OK":"failed")}}static getUseToken(e,t,r,i,n){let s=class{constructor(){}static fromBase64(e){let t=u(e);const r=Be.parse(t,Ye);let i=r.cheque.amount,n=r.cheque.validity.notBefore.generalizedTime.getTime(),s=r.cheque.validity.notAfter.generalizedTime.getTime(),a=new Uint8Array(r.cheque.commitment),c=w.fromPublicHex(p(new Uint8Array(r.publicKey))),o=new Uint8Array(r.signatureValue);return F.fromData(a,i,n,s,o,c)}}.fromBase64(r);if(!s.checkValidity())throw console.log("Could not validate cheque"),new Error("Validation failed");if(!s.verify())throw console.log("Could not verify cheque"),new Error("Verification failed");let a=u(n),c=Be.parse(a,Ve),o=w.fromPublicHex(p(new Uint8Array(c.value.subjectPublicKey))),d=new Qe(i,o);if(!d.checkValidity())throw console.log("Could not validate attestation"),new Error("Validation failed");if(!d.verify())throw console.log("Could not verify attestation"),new Error("Verification failed");let l=new et(s,d,t,e).getDerEncodeProof(),h=p(u(r))+p(u(i))+l;return g.encode("SEQUENCE_30",h)}}window.Authenticator=class{constructor(){this.base64attestorPubKey="MIIBMzCB7AYHKoZIzj0CATCB4AIBATAsBgcqhkjOPQEBAiEA/////////////////////////////////////v///C8wRAQgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHBEEEeb5mfvncu6xVoGKVzocLBwKb/NstzijZWfKBWxb4F5hIOtp3JqPEZV2k+/wOEQio/Re0SKaFVBmcR9CP+xDUuAIhAP////////////////////66rtzmr0igO7/SXozQNkFBAgEBA0IABFCuTloU0f13n4VXYke5ZAm7ZWiXsw1REDHXdNeEwGuLj/bNcXB7LLwt10eXFTLe/LEo5KItdPugI378EG0xV/E="}getAuthenticationBlob(e,t){this.signedTokenBlob=e.ticketBlob,this.signedTokenSecret=e.ticketSecret,this.attestationOrigin=e.attestationOrigin,this.authResultCallback=t,this.getIdentifierAttestation()}getIdentifierAttestation(){this.attachPostMessageListener(this.postMessageAttestationListener.bind(this));const e=document.createElement("iframe");this.iframe=e,e.src=this.attestationOrigin,e.style.display="none",e.onload=()=>{const t=new URL(window.location.href);e.contentWindow.postMessage({request:"attestation"},t.origin)},document.body.appendChild(e)}postMessageAttestationListener(e){if(void 0===e.data.attestation||void 0===e.data.secret||!e.data.attestation||!e.data.secret)return;this.iframe.remove(),this.attestationBlob=e.data.attestation,this.attestationSecret=e.data.secret;let t=BigInt("0x"+p(u(this.attestationSecret)));try{let e=rt.getUseToken(this.signedTokenSecret,t,this.signedTokenBlob,this.attestationBlob,this.base64attestorPubKey);this.authResultCallback(e)}catch(e){console.log(`UseDevconTicket. Something went wrong. ${e}`),this.authResultCallback(!1)}}attachPostMessageListener(e){window.addEventListener?window.addEventListener("message",(t=>{e(t)})):window.attachEvent("onmessage",(t=>{e(t)}))}}},574:()=>{},906:()=>{}},t={};function r(i){if(t[i])return t[i].exports;var n=t[i]={id:i,loaded:!1,exports:{}};return e[i].call(n.exports,n,n.exports,r),n.loaded=!0,n.exports}r.amdO={},r.d=(e,t)=>{for(var i in t)r.o(t,i)&&!r.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),r(200)})(); \ No newline at end of file diff --git a/examples/sites/devcon-issuer/react-third-party/public/demo.html b/examples/sites/devcon-issuer/react-third-party/public/demo.html deleted file mode 100644 index fde14977..00000000 --- a/examples/sites/devcon-issuer/react-third-party/public/demo.html +++ /dev/null @@ -1,11 +0,0 @@ - \ No newline at end of file diff --git a/examples/sites/devcon-issuer/react-third-party/public/index.html b/examples/sites/devcon-issuer/react-third-party/public/index.html index aa069f27..1440f7b2 100644 --- a/examples/sites/devcon-issuer/react-third-party/public/index.html +++ b/examples/sites/devcon-issuer/react-third-party/public/index.html @@ -1,21 +1,19 @@ - - - - - - - - - - - React App - - - -
- + + + + + + +
+ - - + + + \ No newline at end of file diff --git a/examples/sites/devcon-issuer/react-third-party/public/roomTypesTicketClassDataMock0.json b/examples/sites/devcon-issuer/react-third-party/public/roomTypesTicketClassDataMock0.json new file mode 100644 index 00000000..2b3bce6e --- /dev/null +++ b/examples/sites/devcon-issuer/react-third-party/public/roomTypesTicketClassDataMock0.json @@ -0,0 +1,3 @@ +{ + "discount": 15 +} \ No newline at end of file diff --git a/examples/sites/devcon-issuer/react-third-party/public/roomTypesTicketClassDataMock1.json b/examples/sites/devcon-issuer/react-third-party/public/roomTypesTicketClassDataMock1.json new file mode 100644 index 00000000..498922a0 --- /dev/null +++ b/examples/sites/devcon-issuer/react-third-party/public/roomTypesTicketClassDataMock1.json @@ -0,0 +1,3 @@ +{ + "discount": 10 +} \ No newline at end of file diff --git a/examples/sites/devcon-issuer/react-third-party/public/roomTypesTicketClassDataMock2.json b/examples/sites/devcon-issuer/react-third-party/public/roomTypesTicketClassDataMock2.json new file mode 100644 index 00000000..6ac8728e --- /dev/null +++ b/examples/sites/devcon-issuer/react-third-party/public/roomTypesTicketClassDataMock2.json @@ -0,0 +1,3 @@ +{ + "discount": 5 +} \ No newline at end of file diff --git a/examples/sites/devcon-issuer/react-third-party/src/App.css b/examples/sites/devcon-issuer/react-third-party/src/App.css index e5efa7bf..8490c491 100644 --- a/examples/sites/devcon-issuer/react-third-party/src/App.css +++ b/examples/sites/devcon-issuer/react-third-party/src/App.css @@ -13,7 +13,7 @@ display: flex; flex-wrap: wrap; justify-content: center; - margin: 60px; + margin: 20px 60px; } .discountOptionContainer, .discountButtonContainer { @@ -34,83 +34,3 @@ text-align: center; } -/* Ethereum logo */ - -.ethScale { - height: 20px; - width: 100%; - transform: scale(0.1); - margin-bottom: 52px; -} - -#space{ - margin: auto; - width: 800px; - height: 500px; - transform: perspective 100px; - transform-origin: 110px 110px; -} - -.elogo{ - margin: auto; - position: reative; - width: 400px; - height: 400px; - transform-style: preserve-3d; - transform-origin: 110px 110px 0; - transform: perspective(400px) rotateY(46deg) rotateX(-5deg) rotateZ(-5deg); - animation: aniether 6s infinite; - transform-style: preserve-3d; - transform-origin: 110px 110px 0; - transform: perspective(400px) rotateY(46deg) rotateX(-5deg) rotateZ(-5deg); -} - -.trif { - position: absolute; - width: 0px; - height: 0px; - border-left: 100px solid transparent; - border-right: 100px solid transparent; -} -.elogo .u1 { - transform: translateZ(50px) rotateX(23.5deg); - border-bottom: 250px solid rgba(50,50,51,0.8); -} -.elogo .u2 { - transform: rotateY(90deg) translateZ(50px) rotateX(23.5deg); - border-bottom: 250px solid rgba(50,50,51,0.6); -} -.elogo .u3 { - transform: rotateY(180deg) translateZ(50px) rotateX(23.5deg); - border-bottom: 250px solid rgba(50,50,51,0.3); -} -.elogo .u4 { - transform: rotateY(-90deg) translateZ(50px) rotateX(23.5deg); - border-bottom: 250px solid rgba(50,50,51,0.3); -} - -.elogo .ct { - width: 200px; - height: 200px; - border: 0; - transform: rotateX(-90deg) translateZ(140px); - background-color: rgba(60,60,61,1); -} -.elogo .l1 { - transform: translateY(55px) translateZ(50px) rotateX(156.5deg); - border-bottom: 250px solid rgba(50,50,51,0.85); -} -.elogo .l4 { - transform: translateY(55px) rotateY(-90deg) rotateZ(0deg) translateZ(50px) rotateX(156.5deg); - border-bottom: 250px solid rgba(50,50,51,0.45); -} - -@keyframes aniether { - 20% {transform: perspective(400px) rotateY(46deg); } - 30% {transform: perspective(400px) rotateY(10deg); } - 50% {transform: perspective(400px) rotateY(46deg); } - 60% {transform: perspective(400px) rotateY(80deg); } - 80% {transform: perspective(400px) rotateY(46deg); } - 100% {transform: perspective(400px) rotateY(46deg) rotateX(-5deg) rotateZ(-5deg); } -} - diff --git a/examples/sites/devcon-issuer/react-third-party/src/App.js b/examples/sites/devcon-issuer/react-third-party/src/App.js index 970a4776..a0401217 100644 --- a/examples/sites/devcon-issuer/react-third-party/src/App.js +++ b/examples/sites/devcon-issuer/react-third-party/src/App.js @@ -1,73 +1,141 @@ -// import Web3 from 'web3'; import React, { useState, useEffect } from 'react'; -import { Negotiator, Authenticator } from './TokenScript'; import LogoCard from './LogoCard'; import RoomCard from './RoomCard'; +import TokenNotificationCard from './TokenNotificationCard'; import Typography from '@material-ui/core/Typography'; -import roomTypesData from './roomTypesDataMock.json'; +import EthereumLogo from './EthereumLogo'; +import BookingDate from './BookingDate'; import './App.css'; function App() { - // let web3 = new Web3('HTTP://127.0.0.1:7545'); + + // React state hooks + + // Devcon Tickets let [tokens, setTokens] = useState([]); - useEffect(() => { }, []); - // Show discount inside web view - let [discountApplied, setDiscountApplied] = useState(false); - // Validated discount, this could be sent to the backend etc - let [validatedDiscount, setValidatedDiscount] = useState(false); - // 1. User opens website and the negotiator is triggered - const negotiator = new Negotiator(["discountTokens"]); - // 2. iframe gets the tickets - const iframe = () => { - return { - __html: '' + + // Devcon non-discount offers + let [freeShuttle, setFreeShuttle] = useState(false); + + // Room Types Data + let [roomTypesData, setRoomTypesData] = useState([]); + + // Selected token instance to apply discount, with the discount value. + let [discount, setDiscount] = useState({ value: undefined, tokenInstance: null }); + + // Negotiator + + // Instantiate an instance of the Negotiator with chosen filters + let tokensURL = "https://devcontickets.herokuapp.com/outlet/"; + let filter = { 'ticketClass': 1 }; + let negotiator = new Negotiator(filter, { tokensOrigin: tokensURL }); + + // Booking and Hotel Specific Events + + // Select Ticket to apply a view change, showing the discount that can be redeemed. + const getRoomTypesData = async () => { + try { + const roomTypesEndpoint = await fetch('http://bogotabackend.herokuapp.com/'); + return roomTypesEndpoint.json(); + } catch (e) { + throw e; } } - // 3. listen for ticket changes and apply to view on change - window.document.addEventListener('ticketsRecievedEvent', handleEvent, false) - function handleEvent(e) { - setDiscountApplied(true); - setTokens(e.detail) - }; - // 4. webster selects to apply discount + + // Apply discount, user selected a ticket const applyDiscount = async (ticket) => { - // 5. attestation is triggered - const useTicketProof = await Authenticator.getAuthenticationBlob({ ticket }); - // 6. get Challenge - const challenge = await Authenticator.fetchChallenge(); - // 7. sign Challenge useTicketProof, challenge - const signedMsg = await Authenticator.signChallenge({ useTicketProof, challenge }); - // 8. post signed message - const sentChallenge = await Authenticator.sendChallenge({ signedMsg }); - // 9. discount can be given to the end user - setValidatedDiscount(sentChallenge); + try { + const response = await fetch(`./roomTypesTicketClassDataMock${ticket.ticketClass.toString()}.json`) + const data = await response.json(); + setDiscount({ value: data.discount, tokenInstance: ticket }); + } catch (e) { + throw e; + } } + + // User selects to make the booking + const book = async (form) => { + console.log('form data:', form); + + // To confirm this flow: + // const useDevconTicket = await Authenticator.getAuthenticationBlob({ ticket }); + // webster sign useDevconTicket with metamask and send it to the smartContract + // const signedTicket = await Authenticator.signToken(useDevconTicket); + // for bogota example: I will add Authenticator method to sign ticket with Metamask and return result object. and you can send that object to the backend for autorization+dicounted checkout. + // const checkout = this.backendRequestForCheckoutWithDiscount(product, signedTicket); + + // discount object with ticket inside: + // console.log(discount); + + // let base64ticket = "MIGXMAkCAQYCAW8CAQAEQQQvZiRvuwETD_9d_eDp_4b0o0caeQ9FZ7e8hsxMi7SNsx-xkbfqtaNONRXQzQ1wO95bOVk3BRSdbQBNVLox62pCA0cAMEQCIFavePjptmgxBsVuHp7bZSDxK0ovB8d9URp2VjiGos56AiA9apKTL6Kk74Jgf2H7Mb4EZqlsdwJLXSN23sC6aoRyKg=="; + // let ticketSecret = 45845870611; + + // const authenticator = new Authenticator(); + + // debugger; + + // authenticator.getAuthenticationBlob({ + // ticketBlob: base64ticket, + // ticketSecret: ticketSecret, + // attestationOrigin: 'https://stage.attestation.id/', + // }, useDevconTicket => { + // console.log('success'); + // console.log(useDevconTicket); + // // writeToLog('useDevconTicket received (in hex ): ' + useDevconTicket); + // debugger; + // }, (err) => { + // console.log('fail', err); + // }); + } + + // React effects + useEffect(() => { + // Get tokens with applied filter + negotiator.negotiate(data => { + setTokens(data.tokens); + // apply any upfront discounts + data.tokens.map(token => { + setFreeShuttle(true); + }); + }); + // Get mock rooms data + getRoomTypesData().then((data) => { + setRoomTypesData(data); + }) + }, []); + return (
-
+
+ {tokens.length > 0 && + + } +
+
{roomTypesData.map((room, index) => { - return + return })}
- {discountApplied && + { + freeShuttle &&
- {/*
-
-
-
-
-
-
-
-
-
-
-
-
*/} - - Devcon discount applied! Enjoy the event. + + + Free shuttle service available as a Devcon Ticket holder! Enjoy the event.
} diff --git a/examples/sites/devcon-issuer/react-third-party/src/Attestation/AlgorithmIdentifier.js b/examples/sites/devcon-issuer/react-third-party/src/Attestation/AlgorithmIdentifier.js deleted file mode 100644 index 24360905..00000000 --- a/examples/sites/devcon-issuer/react-third-party/src/Attestation/AlgorithmIdentifier.js +++ /dev/null @@ -1,218 +0,0 @@ -import { Any, compareSchema, ObjectIdentifier, Sequence } from "asn1js"; -import { getParametersValue, clearProps } from "pvutils"; -//************************************************************************************** -/** - * Class from RFC5280 - */ -export default class AlgorithmIdentifier { - //********************************************************************************** - /** - * Constructor for AlgorithmIdentifier class - * @param {Object} [source={}] - * @param {Object} [source.schema] asn1js parsed value to initialize the class from - * @property {string} [algorithmId] ObjectIdentifier for algorithm (string representation) - */ - constructor(source = {}) { - if (typeof(source) == "string") { - throw new TypeError("Unimplemented: Not accepting string yet.") - } - if (source instanceof ArrayBuffer) { - const asn1 = fromBER(source) - this.fromSchema(asn1.result); - } else { - /** - * @type {string} - * @desc ObjectIdentifier for algorithm (string representation) - */ - this.algorithmId = getParametersValue( - source, - "algorithmId" - ); - - if ("algorithmParams" in source) - /** - * @type {Object} - * @desc Any algorithm source - */ - this.algorithmParams = getParametersValue( - source, - "algorithmParams", - AlgorithmIdentifier.defaultValues("algorithmParams") - ); - } - } - //********************************************************************************** - /** - * Return default values for all class members - * @param {string} memberName String name for a class member - */ - /* FIXME: algorithmParams is options hence not removed and we need to complete this with all parameters with their default value covered here. - */ - static defaultValues(memberName) { - switch (memberName) { - case "algorithmParams": - return new Any(); - default: - throw new Error( - `Invalid member name for AlgorithmIdentifier class: ${memberName}` - ); - } - } - //********************************************************************************** - /** - * Compare values with default values for all class members - * @param {string} memberName String name for a class member - * @param {*} memberValue Value to compare with default value - */ - static compareWithDefault(memberName, memberValue) { - switch (memberName) { - case "algorithmId": - return memberValue === ""; - case "algorithmParams": - return memberValue instanceof asn1js.Any; - default: - throw new Error( - `Invalid member name for AlgorithmIdentifier class: ${memberName}` - ); - } - } - //********************************************************************************** - /** - * Return value of pre-defined ASN.1 schema for current class - * - * ASN.1 schema: - * ```asn1 - * AlgorithmIdentifier ::= Sequence { - * algorithm OBJECT IDENTIFIER, - * parameters ANY DEFINED BY algorithm OPTIONAL } - * ``` - * - * @param {Object} parameters Input parameters for the schema - * @returns {Object} asn1js schema object - */ - static schema(parameters = {}) { - /** - * @type {Object} - * @property {string} algorithmIdentifier ObjectIdentifier for the algorithm - * @property {string} algorithmParams Any algorithm parameters - */ - const names = getParametersValue(parameters, "names", {}); - - return new Sequence({ - name: names.blockName || "", - optional: names.optional || false, - value: [ - new ObjectIdentifier({ name: names.algorithmIdentifier || "algorithm" }), - new Any({ name: names.algorithmParams || "parameters", optional: true }), - ], - }); - } - //********************************************************************************** - /** - * Convert parsed asn1js object into current class - * @param {!Object} schema - */ - fromSchema(schema) { - //region Clear input data first - clearProps(schema, ["algorithm", "params"]); - //endregion - - //region Check the schema is valid - const asn1 = compareSchema( - schema, - schema, - AlgorithmIdentifier.schema({ - names: { - algorithmIdentifier: "algorithm", - algorithmParams: "params", - }, - }) - ); - - if (asn1.verified === false) - throw new Error( - "Object's schema was not verified against input data for AlgorithmIdentifier" - ); - //endregion - - //region Get internal properties from parsed schema - this.algorithmId = asn1.result.algorithm.valueBlock.toString(); - if ("params" in asn1.result) this.algorithmParams = asn1.result.params; - //endregion - } - //********************************************************************************** - /** - * Convert current object to asn1js object and set correct values - * @returns {Object} asn1js object - */ - toSchema() { - //region Create array for output sequence - const outputArray = []; - - outputArray.push(new ObjectIdentifier({ value: this.algorithmId })); - if ( - "algorithmParams" in this && - this.algorithmParams instanceof asn1js.Any === false - ) - outputArray.push(this.algorithmParams); - //endregion - - //region Construct and return new ASN.1 schema for this object - return new Sequence({ - value: outputArray, - }); - //endregion - } - //********************************************************************************** - /** - * Convertion for the class to JSON object - * @returns {Object} - */ - toJSON() { - const object = { - algorithmId: this.algorithmId, - }; - - if ( - "algorithmParams" in this && - this.algorithmParams instanceof asn1js.Any === false - ) - object.algorithmParams = this.algorithmParams.toJSON(); - - return object; - } - //********************************************************************************** - /** - * Check that two "AlgorithmIdentifiers" are equal - * @param {AlgorithmIdentifier} algorithmIdentifier - * @returns {boolean} - */ - isEqual(algorithmIdentifier) { - //region Check input type - if (algorithmIdentifier instanceof AlgorithmIdentifier === false) - return false; - //endregion - - //region Check "algorithm_id" - if (this.algorithmId !== algorithmIdentifier.algorithmId) return false; - //endregion - - //region Check "algorithm_params" - if ("algorithmParams" in this) { - if ("algorithmParams" in algorithmIdentifier) - return ( - JSON.stringify(this.algorithmParams) === - JSON.stringify(algorithmIdentifier.algorithmParams) - ); - - return false; - } - - if ("algorithmParams" in algorithmIdentifier) return false; - //endregion - - return true; - } - //********************************************************************************** -} -//************************************************************************************** diff --git a/examples/sites/devcon-issuer/react-third-party/src/Attestation/Negotiator.js b/examples/sites/devcon-issuer/react-third-party/src/Attestation/Negotiator.js deleted file mode 100644 index 1a4996b4..00000000 --- a/examples/sites/devcon-issuer/react-third-party/src/Attestation/Negotiator.js +++ /dev/null @@ -1,243 +0,0 @@ -import { SignedDevconTicket } from "./SignedDevonTicket.js"; - -export class Negotiator { - // other code - constructor(filter) { - this.filter = filter; - this.debug = 1; - this.hideIframe = 0; - this.attestationOrigin = "stage.attestation.id"; - } - - /* - * Return token objects satisfying the current negotiator's requirements - */ - getTokenInstances() { - - // let signedDevconTicket = new SignedDevconTicket('') - // some code to get the signedDevconTicket from ticket.devcon.org (through iframe) - - // the first 3 attributes are "Business Attributes", obtained from SignedDevonTicket.ticket - // the last 3 attributes are "Operational Attributes" - - return this.tokens.web; - } - - async negotiate(callBack) { - if (window !== window.parent) { - // its iframe. have to send back tokens - if (typeof callBack === "function") callBack(this.readTokens()); - - } else { - // its direct site open, just show tokens, no need to send them to parent - // TODO check if need to grab tokens from other site or show right here - const needIframe = true; - - if (needIframe) { - let path = window.location.href; - - // get current URL and remove hashtag - if (path.lastIndexOf("#") > -1) path = path.substring(0, path.lastIndexOf("#")); - // remove filename from URL - path = path.substring(0, path.lastIndexOf("/")); - - // - // create path to "ticket.devcon.org" - this.remoteUrl = path + "/ticket.devcon.org.html"; - - // its iframe, we will send tokens to parent - if (window.addEventListener) { - window.addEventListener("message", (e) => { - this.parentPostMessagelistener(e, callBack); - }); - } else { - // IE8 - window.attachEvent("onmessage", (e) => { - this.parentPostMessagelistener(e, callBack); - }); - } - - const iframe = document.createElement('iframe'); - this.tokensIframe = iframe; - iframe.setAttribute('name', 'target'); - if (this.hideIframe) { - iframe.style.display = 'none'; - } - const remoteUrl = this.remoteUrl; - iframe.src = remoteUrl; - iframe.onload = () => { - // console.log("remoteUrl = " + remoteUrl); - const url = new URL(remoteUrl); - iframe.contentWindow.postMessage({ filter: this.filter }, url.origin); - } - document.body.appendChild(iframe); - } - } - } - - // postMessageEvent - parentPostMessagelistener(event, callBack) { - - // ignore system postMessages, we work with postMessages with defined event.data.tokens - if (typeof event.data.tokens === "undefined") { - return; - } - - if (this.debug) { - console.log('---parent postMessage event received, event.data.tokens:', event.data.tokens); - } - - // save received tokens - let encodedTokens = event.data.tokens; - // remove iframe when data received - this.tokensIframe.remove(); - - this.tokens = { raw: [], web: [] }; - if (encodedTokens.length) { - encodedTokens.forEach(token => { - let decodedToken = new SignedDevconTicket(token); - - this.tokens.raw.push(token) - if (decodedToken) this.tokens.web.push(this.addWebTicket(decodedToken)); - - }) - callBack && callBack(this.getTokenInstances()); - } - } - - static iframePostMessagelistener() { - - if (window === window.parent) { - // its not a iframe. lets read tokens from url - - let negotiator = new Negotiator(); - negotiator.readTokens(); - } - - function listener(event) { - this.debug = 0; - - if ("undefined" === typeof event.data.filter) { - return; - } - const filter = event.data.filter; - - if (this.debug) { - console.log('iframe postMessage event received:', filter); - } - - const source = event.source; - - let negotiator = new Negotiator(filter); - negotiator.negotiate((tokens) => { - if (this.debug) { - console.log(tokens); - } - source.postMessage({ tokens: tokens }, event.origin) - }) - - } - if (window.addEventListener) { - window.addEventListener("message", listener); - } else { - // IE8 - window.attachEvent("onmessage", listener); - } - } - - // Get the token instances (with filter) - readTokens() { - - // TODO open ticket.devcon.org and receive list of tickets - // TODO filter tokens return - - // Get ticket from params - to add to local storage / read into app - const urlParams = new URLSearchParams(window.location.search); - const ticketFromQuery = urlParams.get('ticket'); - const secretFromQuery = urlParams.get('secret'); - // Get the current Storage Tokens (DER format) - const storageTokens = localStorage.getItem('dcTokens'); - // Decode the current ticket (DER format) - // root object { commitment, publicKeyInfo, signatureValue, ticket } - // ticket example: "SignedDevconTicket{ticket: DevconTicket {devconId: 6n,ticketId: 417541561855n,ticketClass: 0n},commitment: ArrayBuffer {[Uint8Contents]: <04 12 35 64 9d 5b fd 29 fe c5 d8 5b 6d e9 05 4e dc 8d 36 79 16 9d 88 4d 64 27 a9 2f af dd f8 fd 30 29 38 b6 71 ae 1e 46 2f 78 cb a0 4c fd 26 fe 36 16 ca 4f bf f2 c7 15 ae 8c f4 06 8e b8 b0 2f 22>,byteLength: 65},publicKeyInfo: PublicKeyInfo { signatureAlgorithm: undefined, publicKey: undefined },signatureValue: ArrayBuffer {[Uint8Contents]: <30 44 02 20 70 2c af bd e4 d3 d9 a3 45 b4 d4 70 c1 7f 26 62 b1 9d 8a 68 da f3 a1 6b b1 45 5f e7 86 31 8b 30 02 20 68 e3 f8 79 55 48 34 7e 71 33 c0 af f4 e5 43 77 23 86 dc 1c 54 ab 23 d5 40 eb 83 53 d3 da 0b da>,byteLength: 70}}'"; - - let ticketDecodedString; - let ticketObject = {}; - - if (ticketFromQuery) { - ticketDecodedString = new SignedDevconTicket(ticketFromQuery); - // Read from Decoded ticket String - ticketObject = ticketDecodedString.ticket; - } - - // Check if the ticket is valid (has data) - const isValidTicket = - ticketObject.ticketId && ticketObject.ticketClass && ticketObject.devconId; - // Tickets for storage (raw) and for web view - const tickets = { - raw: [], - web: [] - }; - // If Valid, return web friendly tickets - if (isValidTicket) { - // Check if its new or an existing ticket id: - // If the ticket from the query is new / or to replace an existing ticket - let isNewQueryTicket = true; - if (storageTokens && storageTokens.length) { - // Build new list of tickets from current and query ticket { ticket, secret } - JSON.parse(storageTokens).map((tokenBlob) => { - // Decoded string to JS Object - const storedTicketObject = new SignedDevconTicket(tokenBlob.ticket); - // If the same as a previous ticket - replace with the new ticket - if (storedTicketObject.ticket.ticketId == ticketObject.ticketId) { - // If new push the DER of the ticket into localstorage - tickets.raw.push({ ticket: ticketFromQuery, secret: secretFromQuery }); - // Push a js object - tickets.web.push(this.addWebTicket(ticketObject)); - isNewQueryTicket = false; - } else { - // Else push the original DER - Check this is correct. - tickets.raw.push(tokenBlob); // contains the ticket and secret - tickets.web.push(this.addWebTicket(storedTicketObject)); - } - }); - } - // Add ticket if new - if (isNewQueryTicket) { - tickets.raw.push({ ticket: ticketFromQuery, secret: secretFromQuery }); // new raw object - } - // Set New tokens list raw only, websters will be decoded each time - localStorage.setItem('dcTokens', JSON.stringify(tickets.raw)); - } else { // no ticket in browser window, search for localstorage items - if (storageTokens && storageTokens.length) { - JSON.parse(storageTokens).map((tokenBlob) => { - // Decoded string to JS Object - const storedTicketObject = new SignedDevconTicket(tokenBlob.ticket); - // Push the original DER - tickets.raw.push(tokenBlob); - tickets.web.push(this.addWebTicket(storedTicketObject)); - }); - } - } - - // Return tickets for web - this.tokens = tickets; - return tickets.web; - } - - addWebTicket(ticketObj) { - // TODO move type correction to the webster - return { - devconId: ticketObj.ticket.devconId.toString(), - ticketId: ticketObj.ticket.ticketId.toString(), - ticketClass: ticketObj.ticket.ticketClass.toString() - } - } - - getTokenType(type) { - // TODO use type - return { - attestationOrigin: this.attestationOrigin - }; - } -} \ No newline at end of file diff --git a/examples/sites/devcon-issuer/react-third-party/src/Attestation/PublicKeyInfo.js b/examples/sites/devcon-issuer/react-third-party/src/Attestation/PublicKeyInfo.js deleted file mode 100644 index 3812ba94..00000000 --- a/examples/sites/devcon-issuer/react-third-party/src/Attestation/PublicKeyInfo.js +++ /dev/null @@ -1,114 +0,0 @@ -import { - BitString, - compareSchema, - Integer, - OctetString, - Sequence, - fromBER, - Any, - ObjectIdentifier -} from "asn1js"; -import { getParametersValue, clearProps } from "pvutils"; -import AlgorithmIdentifier from "./AlgorithmIdentifier.js"; -//************************************************************************************** -/** - * Class from RFC5280 - */ -export default class PublicKeyInfo { - //********************************************************************************** - /** - * Constructor for PublicKeyInfo class - * @param {Object} [source={}] - * @param {Object} [source.schema] asn1js parsed value to initialize the class from - * @property {string} [algorithmId] ObjectIdentifier for algorithm (string representation) - */ - constructor(source = {}) { - if (typeof(source) == "string") { - throw new TypeError("Not accepting string. For base64, convert to ArrayBuffer.") - } - if (source instanceof ArrayBuffer) { - const asn1 = fromBER(source) - this.fromSchema(asn1.result); - } else { - /** - * @type {string} - * @desc ObjectIdentifier for algorithm (string representation) - */ - this.signatureAlgorithm = getParametersValue( - source, - "signatureAlgorithm" - ); - this.publicKey = getParametersValue( - source, - "publicKey" - ); - } - } - - //********************************************************************************** - /** - * Return value of pre-defined ASN.1 schema for current class - * - * ASN.1 schema: - * ```asn1 - * PublicKeyInfo ::= Sequence { - * signatureAlgorithm AlgorithmIdentifier, - * publicKey BIT-STRING } - * ``` - * - * @param {Object} parameters Input parameters for the schema - * @returns {Object} asn1js schema object - */ - static schema(parameters = {}) { - /** - * @type {Object} - * @property {string} signatureAlgorithm ObjectIdentifier for the algorithm - * @property {string} publicKey Any algorithm parameters - */ - const names = getParametersValue(parameters, "names", {}); - - return new Sequence({ - name: names.blockName || "", - optional: true, - value: [ - AlgorithmIdentifier.schema( - names.signatureAlgorithm || { - names: { - blockName: "signatureAlgorithm", - }, - } - ), - new BitString({ name: "publicKey"}), - ], - }); - } - //********************************************************************************** - /** - * Convert parsed asn1js object into current class - * @param {!Object} schema - */ - fromSchema(schema) { - //region Clear input data first - clearProps(schema, ["signatureAlgorithm", "publicKey"]); - //endregion - - //region Check the schema is valid - const asn1 = compareSchema( - schema, - schema, - PublicKeyInfo.schema({ - names: { - signatureAlgorithm: "signatureAlgorithm", - publicKey: "publicKey", - }, - }) - ); - - if (asn1.verified === false) - throw new Error( - "Object's schema was not verified against input data for AlgorithmIdentifier" - ); - //endregion - } -} -//************************************************************************************** diff --git a/examples/sites/devcon-issuer/react-third-party/src/Attestation/SignedDevonTicket.js b/examples/sites/devcon-issuer/react-third-party/src/Attestation/SignedDevonTicket.js deleted file mode 100644 index fcd9b82b..00000000 --- a/examples/sites/devcon-issuer/react-third-party/src/Attestation/SignedDevonTicket.js +++ /dev/null @@ -1,257 +0,0 @@ -import { - BitString, - compareSchema, - Integer, - OctetString, - Sequence, - fromBER -} from "asn1js"; -import { getParametersValue, clearProps, bufferToHexCodes } from "pvutils"; -import AlgorithmIdentifier from "./AlgorithmIdentifier.js"; -import PublicKeyInfo from "./PublicKeyInfo.js"; -import BigInt from "big-integer"; - -export class DevconTicket { - //********************************************************************************** - /** - * Constructor for Attribute class - * @param {Object} [source={}] source is an object - * @param {Object} [source:ArrayBuffer] source is DER encoded - * @param {Object} [source:String] source is CER encoded - */ - constructor(source = {}) { - if (typeof (source) == "string") { - throw new TypeError("Unimplemented: Not accepting string yet.") - } - if (source instanceof ArrayBuffer) { - const asn1 = fromBER(source) - this.fromSchema(asn1.result); - } else { - this.devconId = getParametersValue( - source, - "devconId" - ); - this.ticketId = getParametersValue( - source, - "ticketId" - ); - this.ticketClass = getParametersValue( - source, - "ticketClass" - ); - } - } - - static schema(parameters = {}) { - const names = getParametersValue(parameters, "names", {}); - - return new Sequence({ - name: names.blockName || "ticket", - value: [ - new Integer({ - name: names.devconId || "devconId", - }), - new Integer({ - name: names.ticketId || "ticketId", - }), - new Integer({ - name: names.ticketClass || "ticketClass", - }), - ], - }); - } - - //********************************************************************************** - /** - * Convert parsed asn1js object into current class - * @param {!Object} schema - */ - fromSchema(schema) { - //region Clear input data first - clearProps(schema, [ - // "ticket", - "devconId", - "ticketId", - "ticketClass", - ]); - //endregion - - //region Check the schema is valid - const asn1 = compareSchema(schema, schema, DevconTicket.schema()); - - if (asn1.verified === false) - throw new Error("Object's schema was not verified against input data for DevconTicket"); - - //endregion - - //region Get internal properties from parsed schema - // noinspection JSUnresolvedVariable - - if ("devconId" in asn1.result) { - const devconId = asn1.result["devconId"].valueBlock._valueHex; - this.devconId = new BigInt("0x" + bufferToHexCodes(devconId)).value; - } - - if ("ticketId" in asn1.result) { - const ticketId = asn1.result["ticketId"].valueBlock._valueHex - this.ticketId = new BigInt("0x" + bufferToHexCodes(ticketId)).value; - } - - if ("ticketClass" in asn1.result) { - const ticketClass = asn1.result["ticketClass"].valueBlock._valueHex; - this.ticketClass = new BigInt("0x" + bufferToHexCodes(ticketClass)).value; - } - - //endregion - } -} - -export class SignedDevconTicket { - //********************************************************************************** - /** - * Constructor for Attribute class - * @param {Object} [source={}] source is an object - * @param {Object} [source:ArrayBuffer] source is DER encoded - * @param {Object} [source:String] source is DER encoded - */ - constructor(source = {}) { - if (typeof (source) == "string") { - - const ticketEncoded = (source.startsWith("https://")) ? - (new URL(source)).searchParams.get('ticket') : source; - - let base64str = ticketEncoded - .split('_').join('+') - .split('-').join('/') - .split('.').join('='); - - // source = Uint8Array.from(Buffer.from(base64str, 'base64')).buffer; - if (typeof Buffer !== 'undefined') { - source = Uint8Array.from(Buffer.from(base64str, 'base64')).buffer; - } else { - source = Uint8Array.from(atob(base64str), c => c.charCodeAt(0)).buffer; - } - - } - if (source instanceof ArrayBuffer) { - const asn1 = fromBER(source); - this.fromSchema(asn1.result); - } else { - this.ticket = new DevconTicket(source.ticket); - - this.commitment = getParametersValue( - source, - "commitment" - ); - - // TODO: issue #75 - // this.signatureAlgorithm = new AlgorithmIdentifier(source.signatureAlgorithm); - - this.publicKeyInfo = new PublicKeyInfo(source.publicKeyInfo) - - this.signatureValue = getParametersValue( - source, - "signatureValue" - ); - } - } - - //********************************************************************************** - /** - * Return value of pre-defined ASN.1 schema for current class - * - * ASN.1 schema: - * ```asn1 - * CertificateList ::= SEQUENCE { - * tbsCertList TBSCertList, - * signatureAlgorithm AlgorithmIdentifier, - * signatureValue BIT STRING } - * ``` - * - * @param {Object} parameters Input parameters for the schema - * @returns {Object} asn1js schema object - */ - static schema(parameters = {}) { - /** - * @type {Object} - * @property {string} [blockName] - * @property {string} [signatureAlgorithm] - * @property {string} [signatureValue] - */ - const names = getParametersValue(parameters, "names", {}); - - return new Sequence({ - name: names.blockName || "SignedDevconTicket", - value: [ - DevconTicket.schema(parameters), - new OctetString({ - name: "commitment", - }), - /* PublicKeyInfo is specified in schema here but not appearing in the constructed data object. - * This is because the underlying AlgorithmIdentifier isn't fully implemented and also - * that this data is not important for the 1st delivery deadline, won't be read by client anyway. - * TODO: add support for PublicKeyInfo https://github.com/TokenScript/attestation/issues/75 - */ - new Sequence({ - name: "publicKeyInfo", - optional: true, - value: [ - PublicKeyInfo.schema( - names.publicKeyInfo || { - names: { - blockName: "publicKeyInfo", - }, - } - ) - ] - }), - - new BitString({ - name: "signatureValue", - }), - ], - }); - } - //********************************************************************************** - /** - * Convert parsed asn1js object into current class - * @param {!Object} schema - */ - fromSchema(schema) { - //region Clear input data first - clearProps(schema, [ - // "ticket", - "ticket", - "commitment", - // TODO: #75 - "publicKeyInfo", - "signatureValue", - ]); - //endregion - - //region Check the schema is valid - const asn1 = compareSchema(schema, schema, SignedDevconTicket.schema()); - - if (asn1.verified === false) - throw new Error("Object's schema was not verified against input data for SignedDevconTicket"); - - //endregion - - //region Get internal properties from parsed schema - // noinspection JSUnresolvedVariable - - this.ticket = new DevconTicket(asn1.result.ticket.valueBeforeDecode) - - if ("commitment" in asn1.result) - this.commitment = asn1.result["commitment"].valueBlock.valueHex; - - // TODO: issue #75 - // this.signatureAlgorithm = new AlgorithmIdentifier(asn1.result.signatureAlgorithm); - this.publicKeyInfo = new PublicKeyInfo({ - schema: asn1.result.publicKeyInfo, - }); - - const signatureValue = asn1.result.signatureValue; - this.signatureValue = signatureValue.valueBlock.valueHex; //endregion - } -} \ No newline at end of file diff --git a/examples/sites/devcon-issuer/react-third-party/src/BookingDate/index.js b/examples/sites/devcon-issuer/react-third-party/src/BookingDate/index.js new file mode 100644 index 00000000..c385dca8 --- /dev/null +++ b/examples/sites/devcon-issuer/react-third-party/src/BookingDate/index.js @@ -0,0 +1,45 @@ +import React, { useState } from "react"; +import DatePicker from './../DatePicker'; + +const BookingDate = () => { + + var today = new Date(); + var tomorrow = new Date(); + tomorrow.setDate(tomorrow.getDate() + 1); + + // Form state. + const [formInput, setFormInput] = useState({ + from: today, + to: tomorrow + }); + + // Handle date change input + const handleInput = (newValue, label) => { + setFormInput({ [label]: newValue }); + }; + + return ( +
+
+
+ +
+
+ +
+
+
+ ); +} + +export default BookingDate; \ No newline at end of file diff --git a/examples/sites/devcon-issuer/react-third-party/src/BookingModal/BookingModal.css b/examples/sites/devcon-issuer/react-third-party/src/BookingModal/BookingModal.css new file mode 100644 index 00000000..ad252dcb --- /dev/null +++ b/examples/sites/devcon-issuer/react-third-party/src/BookingModal/BookingModal.css @@ -0,0 +1,17 @@ +.container { + width: 380px; +} +.title { + font-size: 1.2rem; + margin-bottom: 0px; + padding-bottom: 0; + padding: 17px 24px 0px 24px !important +} +.subTitle { + font-size: 1rem; + margin: 0px; + padding-top: 0; +} +.smallCopy { + font-size: 0.8rem; +} \ No newline at end of file diff --git a/examples/sites/devcon-issuer/react-third-party/src/BookingModal/index.js b/examples/sites/devcon-issuer/react-third-party/src/BookingModal/index.js index 2d8311a3..c010820a 100644 --- a/examples/sites/devcon-issuer/react-third-party/src/BookingModal/index.js +++ b/examples/sites/devcon-issuer/react-third-party/src/BookingModal/index.js @@ -1,59 +1,146 @@ -import React from 'react'; + +import React, { useReducer } from "react"; import Button from '@material-ui/core/Button'; import TextField from '@material-ui/core/TextField'; import Dialog from '@material-ui/core/Dialog'; import DialogActions from '@material-ui/core/DialogActions'; import DialogContent from '@material-ui/core/DialogContent'; -import DialogContentText from '@material-ui/core/DialogContentText'; import DialogTitle from '@material-ui/core/DialogTitle'; -import DatePicker from './../DatePicker'; -import Card from './../Card'; +import TokenCard from './../TokenCard'; +import './BookingModal.css'; + +// BOOKING MODAL COMPONENT +// Booking form -export default function FormDialog({ roomType, applyDiscount, discountApplied, price, tokens }) { +export default function BookingModal({ roomType, applyDiscount, discount, price, tokens, book }) { + + // Modal State (open boolean) const [open, setOpen] = React.useState(false); + // Form state. + const [formInput, setFormInput] = useReducer((state, newState) => ({ ...state, ...newState }), { reference: "" }); + + // Handle form input. + const handleInput = evt => { + const name = evt.target.name; + const newValue = evt.target.value; + setFormInput({ [name]: newValue }); + }; + + // Simple validation check. + const formIsValid = () => { + return !( + (formInput.reference.length > 0) + ); + } + + // handle form submission. + const handleSubmit = evt => { + evt.preventDefault(); + book(formInput); + }; + + // Open Modal const handleClickOpen = () => { setOpen(true); }; + // Close Modal const handleClose = () => { setOpen(false); }; + // Discount price calculation + const discountValue = discount.value ? price * discount.value / 100 : 0; + const viewPrice = price - discountValue; + + // Tickets that can be used to apply a discount + const discountTicketClasess = [1n]; + + // Text to accompany the tickets (only shown when there are tickets) + const TicketCopy = (index) => { + if (index === 0) { + return ( +

Select a ticket to apply discount:

+ ); + } + } + return (
- - - {roomType} - - {discountApplied ? 'Special discount' : 'Standard'} price of {price} ETH per night. - - -

Select a ticket:

- {tokens && - tokens.map((token, index) => { - return - }) - } -
- - - - + +
); } + + + diff --git a/examples/sites/devcon-issuer/react-third-party/src/Card/index.js b/examples/sites/devcon-issuer/react-third-party/src/Card/index.js deleted file mode 100644 index 543274e2..00000000 --- a/examples/sites/devcon-issuer/react-third-party/src/Card/index.js +++ /dev/null @@ -1,47 +0,0 @@ -import React from 'react'; -import { makeStyles } from '@material-ui/core/styles'; -import Card from '@material-ui/core/Card'; -import CardActionArea from '@material-ui/core/CardActionArea'; -import CardContent from '@material-ui/core/CardContent'; -import CardMedia from '@material-ui/core/CardMedia'; -import Typography from '@material-ui/core/Typography'; -import CardActions from '@material-ui/core/CardActions'; -import Button from '@material-ui/core/Button'; -import './Card.css'; - -const useStyles = makeStyles({ - root: { - maxWidth: 345, - }, - media: { - height: 3, - }, -}); - -function MediaCard({ tokenInstance, applyDiscount }) { - const classes = useStyles(); - return ( - - - - applyDiscount(tokenInstance)}> - - {tokenInstance.ticketClass.toString()} - - - Ticket Id: {tokenInstance.ticketId.toString()} - - - Devcon Id: {tokenInstance.devconId.toString()} - - - - - ); -} - -export default MediaCard; diff --git a/examples/sites/devcon-issuer/react-third-party/src/DatePicker/index.js b/examples/sites/devcon-issuer/react-third-party/src/DatePicker/index.js index 89f6ec2f..6687fb98 100644 --- a/examples/sites/devcon-issuer/react-third-party/src/DatePicker/index.js +++ b/examples/sites/devcon-issuer/react-third-party/src/DatePicker/index.js @@ -4,93 +4,29 @@ import 'date-fns'; import React from 'react'; import Grid from '@material-ui/core/Grid'; import DateFnsUtils from '@date-io/date-fns'; -import { - MuiPickersUtilsProvider, - KeyboardTimePicker, - KeyboardDatePicker, -} from '@material-ui/pickers'; +import { MuiPickersUtilsProvider, KeyboardDatePicker } from '@material-ui/pickers'; -export default function MaterialUIPickers() { - // The first commit of Material-UI - const [selectedDate, setSelectedDate] = React.useState(new Date('2021-04-10T21:11:54')); - - const handleDateChange = (date) => { - setSelectedDate(date); - }; +// DATE PICKER COMPONENT +// Simply wraps the Date picker material ui component +export default function DatePicker({ label, handleInput, date }) { return ( handleInput(e, label)} KeyboardButtonProps={{ 'aria-label': 'change date', }} /> - {/* - */} ); } - -// import React from 'react'; -// import { makeStyles } from '@material-ui/core/styles'; -// import TextField from '@material-ui/core/TextField'; - -// const useStyles = makeStyles((theme) => ({ -// container: { -// display: 'flex', -// flexWrap: 'wrap', -// }, -// textField: { -// marginLeft: theme.spacing(1), -// marginRight: theme.spacing(1), -// width: 200, -// }, -// })); - -// export default function DatePickers() { -// const classes = useStyles(); - -// return ( -//
-// -// -// ); -// } \ No newline at end of file diff --git a/examples/sites/devcon-issuer/react-third-party/src/EthereumLogo/EthereumLogo.css b/examples/sites/devcon-issuer/react-third-party/src/EthereumLogo/EthereumLogo.css new file mode 100644 index 00000000..7de77c28 --- /dev/null +++ b/examples/sites/devcon-issuer/react-third-party/src/EthereumLogo/EthereumLogo.css @@ -0,0 +1,78 @@ + +.ethScale { + height: 20px; + width: 100%; + transform: scale(0.1); + margin-bottom: 52px; +} + +#space{ + margin: auto; + width: 500px; + height: 500px; + transform: perspective 100px; + transform-origin: 110px 110px; +} + +.elogo{ + margin: auto; + position: reative; + width: 400px; + height: 400px; + transform-style: preserve-3d; + transform-origin: 110px 110px 0; + transform: perspective(400px) rotateY(46deg) rotateX(-5deg) rotateZ(-5deg); + animation: aniether 6s infinite; + transform-style: preserve-3d; + transform-origin: 110px 110px 0; + transform: perspective(400px) rotateY(46deg) rotateX(-5deg) rotateZ(-5deg); +} + +.trif { + position: absolute; + width: 0px; + height: 0px; + border-left: 100px solid transparent; + border-right: 100px solid transparent; +} +.elogo .u1 { + transform: translateZ(50px) rotateX(23.5deg); + border-bottom: 250px solid rgba(50,50,51,0.8); +} +.elogo .u2 { + transform: rotateY(90deg) translateZ(50px) rotateX(23.5deg); + border-bottom: 250px solid rgba(50,50,51,0.6); +} +.elogo .u3 { + transform: rotateY(180deg) translateZ(50px) rotateX(23.5deg); + border-bottom: 250px solid rgba(50,50,51,0.3); +} +.elogo .u4 { + transform: rotateY(-90deg) translateZ(50px) rotateX(23.5deg); + border-bottom: 250px solid rgba(50,50,51,0.3); +} + +.elogo .ct { + width: 200px; + height: 200px; + border: 0; + transform: rotateX(-90deg) translateZ(140px); + background-color: rgba(60,60,61,1); +} +.elogo .l1 { + transform: translateY(55px) translateZ(50px) rotateX(156.5deg); + border-bottom: 250px solid rgba(50,50,51,0.85); +} +.elogo .l4 { + transform: translateY(55px) rotateY(-90deg) rotateZ(0deg) translateZ(50px) rotateX(156.5deg); + border-bottom: 250px solid rgba(50,50,51,0.45); +} + +@keyframes aniether { + 20% {transform: perspective(400px) rotateY(46deg); } + 30% {transform: perspective(400px) rotateY(10deg); } + 50% {transform: perspective(400px) rotateY(46deg); } + 60% {transform: perspective(400px) rotateY(80deg); } + 80% {transform: perspective(400px) rotateY(46deg); } + 100% {transform: perspective(400px) rotateY(46deg) rotateX(-5deg) rotateZ(-5deg); } +} diff --git a/examples/sites/devcon-issuer/react-third-party/src/EthereumLogo/index.js b/examples/sites/devcon-issuer/react-third-party/src/EthereumLogo/index.js new file mode 100644 index 00000000..edea2d77 --- /dev/null +++ b/examples/sites/devcon-issuer/react-third-party/src/EthereumLogo/index.js @@ -0,0 +1,21 @@ +import './EthereumLogo.css'; + +const EthereumLogo = () => { + return ( +
+
+
+
+
+
+
+
+
+
+
+
+
+ ) +} + +export default EthereumLogo; \ No newline at end of file diff --git a/examples/sites/devcon-issuer/react-third-party/src/LogoCard/index.js b/examples/sites/devcon-issuer/react-third-party/src/LogoCard/index.js index f08044c2..ec5d9b14 100644 --- a/examples/sites/devcon-issuer/react-third-party/src/LogoCard/index.js +++ b/examples/sites/devcon-issuer/react-third-party/src/LogoCard/index.js @@ -1,17 +1,21 @@ import React from 'react'; -import { makeStyles } from '@material-ui/core/styles'; import Card from '@material-ui/core/Card'; -import CardActionArea from '@material-ui/core/CardActionArea'; import CardContent from '@material-ui/core/CardContent'; -import CardMedia from '@material-ui/core/CardMedia'; import Typography from '@material-ui/core/Typography'; import './logoCard.css'; -function MediaCard({ title }) { +// LOGO CARD COMPONENT +// Simply shows the Hotel title + +function LogoCard({ title }) { return ( - + {title} @@ -19,5 +23,5 @@ function MediaCard({ title }) { ); } -export default MediaCard; +export default LogoCard; diff --git a/examples/sites/devcon-issuer/react-third-party/src/LogoCard/logoCard.css b/examples/sites/devcon-issuer/react-third-party/src/LogoCard/logoCard.css index 80bbf307..a3d0145f 100644 --- a/examples/sites/devcon-issuer/react-third-party/src/LogoCard/logoCard.css +++ b/examples/sites/devcon-issuer/react-third-party/src/LogoCard/logoCard.css @@ -2,7 +2,6 @@ margin: 12px; flex-grow: 1; flex-basis: 0; - min-width: 220px; max-width: 220px; } diff --git a/examples/sites/devcon-issuer/react-third-party/src/RoomCard/index.js b/examples/sites/devcon-issuer/react-third-party/src/RoomCard/index.js index ce0d5be5..48849171 100644 --- a/examples/sites/devcon-issuer/react-third-party/src/RoomCard/index.js +++ b/examples/sites/devcon-issuer/react-third-party/src/RoomCard/index.js @@ -9,6 +9,11 @@ import BookingModal from './../BookingModal'; import Typography from '@material-ui/core/Typography'; import './RoomCard.css'; +// ROOM CARD COMPONENT +// Shows hotel room item; image, price and option to book. + +// https://css-tricks.com/animate-a-container-on-mouse-over-using-perspective-and-transform/ + const useStyles = makeStyles({ root: { maxWidth: 345, @@ -19,9 +24,9 @@ const useStyles = makeStyles({ }, }); -export default function MediaCard({ room, applyDiscount, discountApplied, tokens }) { +export default function RoomCard({ room, applyDiscount, discount, tokens, book }) { const classes = useStyles(); - const { type, price, discountPrice, image, frequency } = room; + const { type, price, image, frequency } = room; return ( @@ -31,29 +36,30 @@ export default function MediaCard({ room, applyDiscount, discountApplied, tokens title="token" /> - + {type} - {discountApplied === false && - - {price} ETH / {frequency} - - } - {discountApplied === true && -
- - {price} ETH - - - - ${discountPrice} ETH / {frequency} - -
- } + + From {price} ETH / {frequency} +
- +
); diff --git a/examples/sites/devcon-issuer/react-third-party/src/Card/Card.css b/examples/sites/devcon-issuer/react-third-party/src/TokenCard/TokenCard.css similarity index 51% rename from examples/sites/devcon-issuer/react-third-party/src/Card/Card.css rename to examples/sites/devcon-issuer/react-third-party/src/TokenCard/TokenCard.css index 7dfd9522..9d1287b0 100644 --- a/examples/sites/devcon-issuer/react-third-party/src/Card/Card.css +++ b/examples/sites/devcon-issuer/react-third-party/src/TokenCard/TokenCard.css @@ -1,7 +1,12 @@ -.card { +.tokenCard { margin: 24px 0; flex-grow: 1; flex-basis: 0; min-width: 220px; max-width: 345px; -} \ No newline at end of file +} + +.tokenCard.selected { + transition: all .35s; + background: #dcdcdc; +} diff --git a/examples/sites/devcon-issuer/react-third-party/src/TokenCard/index.js b/examples/sites/devcon-issuer/react-third-party/src/TokenCard/index.js new file mode 100644 index 00000000..3bd92c11 --- /dev/null +++ b/examples/sites/devcon-issuer/react-third-party/src/TokenCard/index.js @@ -0,0 +1,58 @@ +import React from 'react'; +import { makeStyles } from '@material-ui/core/styles'; +import Card from '@material-ui/core/Card'; +import CardActionArea from '@material-ui/core/CardActionArea'; +import CardContent from '@material-ui/core/CardContent'; +import CardMedia from '@material-ui/core/CardMedia'; +import Typography from '@material-ui/core/Typography'; +import './TokenCard.css'; + +const useStyles = makeStyles({ + root: {}, + media: { + height: 5, + }, +}); + +function TokenCard({ tokenInstance, applyDiscount, discount }) { + const classes = useStyles(); + debugger; + return ( + + + + {tokenInstance && tokenInstance.ticketClass && + applyDiscount(tokenInstance)}> + + {tokenInstance.ticketClass.toString()} + + + Ticket Id: {tokenInstance.ticketId.toString()} + + + Devcon Id: {tokenInstance.devconId.toString()} + + + } + + + ); +} + +export default TokenCard; diff --git a/examples/sites/devcon-issuer/react-third-party/src/TokenNotificationCard/TokenNotificationCard.css b/examples/sites/devcon-issuer/react-third-party/src/TokenNotificationCard/TokenNotificationCard.css new file mode 100644 index 00000000..24cba576 --- /dev/null +++ b/examples/sites/devcon-issuer/react-third-party/src/TokenNotificationCard/TokenNotificationCard.css @@ -0,0 +1,20 @@ +.tokenNotificationCard { + margin: 12px; + flex-grow: 1; + flex-basis: 0; + max-width: 220px; +} + +.tokenNotificationCard h1 { + font-size: 1.1rem; +} + +p.MuiTypography-body1 { + font-size: 0.75rem; +} + +@media (max-width: 480px) { + .tokenNotificationCard { + display: none; + } +} diff --git a/examples/sites/devcon-issuer/react-third-party/src/TokenNotificationCard/index.js b/examples/sites/devcon-issuer/react-third-party/src/TokenNotificationCard/index.js new file mode 100644 index 00000000..90bb36e9 --- /dev/null +++ b/examples/sites/devcon-issuer/react-third-party/src/TokenNotificationCard/index.js @@ -0,0 +1,54 @@ +import React from 'react'; +import { makeStyles } from '@material-ui/core/styles'; +import Card from '@material-ui/core/Card'; +import CardContent from '@material-ui/core/CardContent'; +import CardMedia from '@material-ui/core/CardMedia'; +import Typography from '@material-ui/core/Typography'; +import Zoom from '@material-ui/core/Zoom'; +import './TokenNotificationCard.css'; + +// TOKEN NOTIFICATION CARD COMPONENT +// To show a discount is available to Devcon ticket holders. + +const useStyles = makeStyles({ + root: { + maxWidth: 345, + }, + media: { + height: 3, + }, +}); + +function TokenNotificationCard({ tokensNumber }) { + const classes = useStyles(); + return ( + + + + + {tokensNumber} Devcon Tickets found + + + booking discounts available + + + + + + ); +} + +export default TokenNotificationCard; + diff --git a/examples/sites/devcon-issuer/react-third-party/src/TokenScript/Authenticator.js b/examples/sites/devcon-issuer/react-third-party/src/TokenScript/Authenticator.js deleted file mode 100644 index 1607bddd..00000000 --- a/examples/sites/devcon-issuer/react-third-party/src/TokenScript/Authenticator.js +++ /dev/null @@ -1,39 +0,0 @@ -export const Authenticator = { - getAuthenticationBlob: async ({ ticket }) => { - return btoa(ticket.ticketId); - }, - fetchChallenge: async () => { - return fetch('./Authentication/getChallenge.json', - { - method: 'GET', - headers: { - 'Content-Type': 'application/json', - } - }) - .then(response => response.json()) - .then(data => { - return data.value; - }) - .catch((error) => { - console.error('Error:', error); - }); - }, - signChallenge: async ({ useTicketProof, challenge }) => { - return `{challenge: ${challenge}, proof: ${atob(useTicketProof)}}`; - }, - sendChallenge: async ({ signedMsg }) => { - return fetch('./Authentication/validChallenge.json', { - method: 'GET', // POST for actual app (can't use POST in this simple mock example) - // body: signedMsg // body used for actual app (can't use POST in this simple mock example) - }) - .then(response => response.json()) - .then(data => { - return data.value; - }) - .catch(error => { - console.error('Error:', error); - }); - }, - assetOwnerAddress: async () => { }, // return; to confirm the function of this - findOwner: async () => { }, // return ownerAddress -} diff --git a/examples/sites/devcon-issuer/react-third-party/src/TokenScript/Negotiator.js b/examples/sites/devcon-issuer/react-third-party/src/TokenScript/Negotiator.js deleted file mode 100644 index fd97e1e6..00000000 --- a/examples/sites/devcon-issuer/react-third-party/src/TokenScript/Negotiator.js +++ /dev/null @@ -1,105 +0,0 @@ -// https://github.com/TokenScript/attestation/blob/main/src/main/javascript/SignedDevonTicket.js -import { SignedDevconTicket } from './../Attestation/SignedDevonTicket'; - -export class Negotiator { - constructor(filter) { - this.filter = filter; - } - - // Modal / Auto Attestation - async negotiate() { - return true; - } - - // Get the token instances (with filter) - async getTokenInstances() { - // Get ticket from params - to add to local storage / read into app - const urlParams = new URLSearchParams(window.location.search); - const ticketFromQuery = urlParams.get('ticket'); - const secretFromQuery = urlParams.get('secret'); - // Get the current Storage Tokens (DER format) - const storageTickets = localStorage.getItem('dcTokens'); - // Decode the current ticket (DER format) - // root object { commitment, publicKeyInfo, signatureValue, ticket } - // ticket example: "SignedDevconTicket{ticket: DevconTicket {devconId: 6n,ticketId: 417541561855n,ticketClass: 0n},commitment: ArrayBuffer {[Uint8Contents]: <04 12 35 64 9d 5b fd 29 fe c5 d8 5b 6d e9 05 4e dc 8d 36 79 16 9d 88 4d 64 27 a9 2f af dd f8 fd 30 29 38 b6 71 ae 1e 46 2f 78 cb a0 4c fd 26 fe 36 16 ca 4f bf f2 c7 15 ae 8c f4 06 8e b8 b0 2f 22>,byteLength: 65},publicKeyInfo: PublicKeyInfo { signatureAlgorithm: undefined, publicKey: undefined },signatureValue: ArrayBuffer {[Uint8Contents]: <30 44 02 20 70 2c af bd e4 d3 d9 a3 45 b4 d4 70 c1 7f 26 62 b1 9d 8a 68 da f3 a1 6b b1 45 5f e7 86 31 8b 30 02 20 68 e3 f8 79 55 48 34 7e 71 33 c0 af f4 e5 43 77 23 86 dc 1c 54 ab 23 d5 40 eb 83 53 d3 da 0b da>,byteLength: 70}}'"; - let ticketDecodedString; - let ticketObject = {}; - if (ticketFromQuery) { - ticketDecodedString = new SignedDevconTicket(ticketFromQuery); - // Read from Decoded ticket String - ticketObject = ticketDecodedString.ticket; - } - // Check if the ticket is valid (has data) - const isValidTicket = ( - ticketObject.ticketId, - ticketObject.ticketClass, - ticketObject.devconId - ); - // Tickets for storage (raw) and for web view - const tickets = { - raw: [], - web: [] - }; - // If Valid, return web friendly tickets - if (isValidTicket) { - // Check if its new or an existing ticket id: - // If the ticket from the query is new / or to replace an existing ticket - let isNewQueryTicket = true; - if (storageTickets && storageTickets.length) { - // Build new list of tickets from current and query ticket { ticket, secret } - JSON.parse(storageTickets).map((ticketBlob) => { - // Decoded string to JS Object - const storedTicketObject = new SignedDevconTicket(ticketBlob.ticket); - // If the same as a previous ticket - replace with the new ticket - if (storedTicketObject.ticket.ticketId == ticketObject.ticketId) { - // If new push the DER of the ticket into localstorage - tickets.raw.push({ ticket: ticketFromQuery, secret: secretFromQuery }); - // Push a js object - tickets.web.push({ - devconId: ticketObject.devconId, - ticketId: ticketObject.ticketId, - ticketClass: ticketObject.ticketClass - }); - isNewQueryTicket = false; - } else { - // Else push the original DER - Check this is correct. - tickets.raw.push(ticketBlob); // contains the ticket and secret - tickets.web.push({ - devconId: storedTicketObject.ticket.devconId, - ticketId: storedTicketObject.ticket.ticketId, - ticketClass: storedTicketObject.ticket.ticketClass - }); - } - }); - } - // Add ticket if new - if (isNewQueryTicket) { - tickets.raw.push({ ticket: ticketFromQuery, secret: secretFromQuery }); // new raw object - tickets.web.push({ - devconId: ticketObject.devconId, - ticketId: ticketObject.ticketId, - ticketClass: ticketObject.ticketClass - }); - } - // Set New tokens list raw only, websters will be decoded each time - localStorage.setItem('dcTokens', JSON.stringify(tickets.raw)); - } else { // no ticket in browser window, search for localstorage items - if (storageTickets && storageTickets.length) { - JSON.parse(storageTickets).map((ticketBlob) => { - // Decoded string to JS Object - const storedTicketObject = new SignedDevconTicket(ticketBlob.ticket); - // Push the original DER - tickets.raw.push(ticketBlob); - tickets.web.push({ - devconId: storedTicketObject.ticket.devconId, - ticketId: storedTicketObject.ticket.ticketId, - ticketClass: storedTicketObject.ticket.ticketClass - }); - }); - } - } - // Return tickets for web - return tickets.web; - } - -} \ No newline at end of file diff --git a/examples/sites/devcon-issuer/react-third-party/src/TokenScript/Negotiator.test.js b/examples/sites/devcon-issuer/react-third-party/src/TokenScript/Negotiator.test.js deleted file mode 100644 index 2ddc43cb..00000000 --- a/examples/sites/devcon-issuer/react-third-party/src/TokenScript/Negotiator.test.js +++ /dev/null @@ -1,69 +0,0 @@ -import { Negotiator } from './Negotiator'; - -test('Negotiator provides the correctly given filters', () => { - localStorage.setItem('dcTokens', '[]'); - const negotiator = new Negotiator(["tickets", "expiry > today"]); - expect(negotiator.filter).toEqual(['tickets', 'expiry > today']); -}); - -// code implementation before using the full signed ticket att method -// test('Negotiator provides token from local storage', async () => { -// localStorage.setItem('dcTokens', '[]'); -// const negotiator = new Negotiator(["tickets", "expiry > today"]); -// var ticketStored = '[{"ticket":"MIGbMA0CAQYCBWE3ap3-AgEABEEEEjVknVv9Kf7F2Ftt6QVO3I02eRadiE1kJ6kvr934-TApOLZxrh5GL3jLoEz9Jv42FspPv-LHFa6M9AaOuLAvIgNHADBEAiBwLK_95NPZo0W01HDBfyZisZ2KaNrzoWuxRV-nhjGLMAIgaOP4eVVINH5xM8Cv9OVDdyOG3BxUqyPVQOuDU9PaC9o=","secret":"45845870684"}]'; -// localStorage.setItem('dcTokens', ticketStored); -// const tickets = await negotiator.getTokenInstances(); -// expect(tickets).toEqual([{ "devconId": "6n", "ticketId": "48646n", "ticketClass": "0n" }]); -// }); - -// test('Negotiator, ensure Query string ticket can be added', async () => { -// window.history.pushState({}, 'Test Title', '?ticket=MIGbMA0CAQYCBWE3ap3-AgEABEEEEjVknVv9Kf7F2Ftt6QVO3I02eRadiE1kJ6kvr934-TApOLZxrh5GL3jLoEz9Jv42FspPv-LHFa6M9AaOuLAvIgNHADBEAiBwLK_95NPZo0W01HDBfyZisZ2KaNrzoWuxRV-nhjGLMAIgaOP4eVVINH5xM8Cv9OVDdyOG3BxUqyPVQOuDU9PaC9o=&secret=45845870684'); -// const negotiator = new Negotiator(["tickets", "expiry > today"]); -// const tickets = await negotiator.getTokenInstances(); -// expect(tickets).toEqual([ -// { "devconId": "6n", "ticketId": "417541561855n", "ticketClass": "0n" } -// ]); -// }) - -// test('Negotiator, add two tickets', async () => { -// localStorage.setItem('dcTokens', '[]'); -// window.history.pushState({}, 'Test Title', '?ticket=MIGbMA0CAQYCBWE3ap3-AgEABEEEEjVknVv9Kf7F2Ftt6QVO3I02eRadiE1kJ6kvr934-TApOLZxrh5GL3jLoEz9Jv42FspPv-LHFa6M9AaOuLAvIgNHADBEAiBwLK_95NPZo0W01HDBfyZisZ2KaNrzoWuxRV-nhjGLMAIgaOP4eVVINH5xM8Cv9OVDdyOG3BxUqyPVQOuDU9PaC9o=&secret=45845870684'); -// const negotiator = new Negotiator(["tickets", "expiry > today"]); -// const tickets = await negotiator.getTokenInstances(); -// expect(tickets).toEqual([ -// { "devconId": "6n", "ticketId": "417541561855n", "ticketClass": "0n" }, -// ]); -// window.history.pushState({}, 'Test Title', '?ticket="SignedDevconTicket{ticket: DevconTicket {devconId: 2n,ticketId: 117541561855n,ticketClass: 2n},commitment: ArrayBuffer {[Uint8Contents]: <04 12 35 64 9d 5b fd 29 fe c5 d8 5b 6d e9 05 4e dc 8d 36 79 16 9d 88 4d 64 27 a9 2f af dd f8 fd 30 29 38 b6 71 ae 1e 46 2f 78 cb a0 4c fd 26 fe 36 16 ca 4f bf f2 c7 15 ae 8c f4 06 8e b8 b0 2f 22>,byteLength: 65},publicKeyInfo: PublicKeyInfo { signatureAlgorithm: undefined, publicKey: undefined },signatureValue: ArrayBuffer {[Uint8Contents]: <30 44 02 20 70 2c af bd e4 d3 d9 a3 45 b4 d4 70 c1 7f 26 62 b1 9d 8a 68 da f3 a1 6b b1 45 5f e7 86 31 8b 30 02 20 68 e3 f8 79 55 48 34 7e 71 33 c0 af f4 e5 43 77 23 86 dc 1c 54 ab 23 d5 40 eb 83 53 d3 da 0b da>,byteLength: 70}}&secret=45845870684"'); -// const ticketAdded = await negotiator.getTokenInstances(); -// expect(ticketAdded).toEqual([ -// { -// "devconId": "2n", -// "ticketClass": "2n", -// "ticketId": "117541561855n", -// }, -// { -// "devconId": "6n", -// "ticketClass": "0n", -// "ticketId": "417541561855n", -// }, -// ]); -// }) - -// test('Negotiator, ensure ticket is not appended when the same', async () => { -// localStorage.setItem('dcTokens', '[]'); -// window.history.pushState({}, 'Test Title', '?ticket=MIGbMA0CAQYCBWE3ap3-AgEABEEEEjVknVv9Kf7F2Ftt6QVO3I02eRadiE1kJ6kvr934-TApOLZxrh5GL3jLoEz9Jv42FspPv-LHFa6M9AaOuLAvIgNHADBEAiBwLK_95NPZo0W01HDBfyZisZ2KaNrzoWuxRV-nhjGLMAIgaOP4eVVINH5xM8Cv9OVDdyOG3BxUqyPVQOuDU9PaC9o=&secret=45845870684'); -// const negotiator = new Negotiator(["tickets", "expiry > today"]); -// const tickets = await negotiator.getTokenInstances(); -// expect(tickets).toEqual([ -// { "devconId": "6n", "ticketId": "417541561855n", "ticketClass": "0n" }, -// ]); -// window.history.pushState({}, 'Test Title', '?ticket=MIGbMA0CAQYCBWE3ap3-AgEABEEEEjVknVv9Kf7F2Ftt6QVO3I02eRadiE1kJ6kvr934-TApOLZxrh5GL3jLoEz9Jv42FspPv-LHFa6M9AaOuLAvIgNHADBEAiBwLK_95NPZo0W01HDBfyZisZ2KaNrzoWuxRV-nhjGLMAIgaOP4eVVINH5xM8Cv9OVDdyOG3BxUqyPVQOuDU9PaC9o=&secret=45845870684'); -// const ticketAdded = await negotiator.getTokenInstances(); -// expect(ticketAdded).toEqual([ -// { -// "devconId": "6n", -// "ticketClass": "0n", -// "ticketId": "417541561855n" -// } -// ]); -// }) diff --git a/examples/sites/devcon-issuer/react-third-party/src/TokenScript/index.js b/examples/sites/devcon-issuer/react-third-party/src/TokenScript/index.js deleted file mode 100644 index 0a1b941a..00000000 --- a/examples/sites/devcon-issuer/react-third-party/src/TokenScript/index.js +++ /dev/null @@ -1,7 +0,0 @@ -import { Authenticator } from './Authenticator'; -import { Negotiator } from './Negotiator'; - -export { - Authenticator, - Negotiator, -}; \ No newline at end of file diff --git a/examples/sites/devcon-issuer/react-third-party/src/TokenScript/tokenMock.js b/examples/sites/devcon-issuer/react-third-party/src/TokenScript/tokenMock.js deleted file mode 100644 index 6a3c63f6..00000000 --- a/examples/sites/devcon-issuer/react-third-party/src/TokenScript/tokenMock.js +++ /dev/null @@ -1,5 +0,0 @@ -export default [ - { token: { ticketId: 42, ticketClass: "VIP", conferenceId: 1, isValid: true }, ownerAddress: null }, - { token: { ticketId: 32, ticketClass: "STANDARD", conferenceId: 2, isValid: true }, ownerAddress: 2 }, - { token: { ticketId: 15, ticketClass: "VIP", conferenceId: 3, isValid: true }, ownerAddress: 2 }, -]; diff --git a/examples/sites/devcon-issuer/react-third-party/src/roomTypesDataMock.json b/examples/sites/devcon-issuer/react-third-party/src/roomTypesDataMock.json index 10df1b69..9808bb8f 100644 --- a/examples/sites/devcon-issuer/react-third-party/src/roomTypesDataMock.json +++ b/examples/sites/devcon-issuer/react-third-party/src/roomTypesDataMock.json @@ -3,21 +3,18 @@ "type": "Deluxe Room", "price": "1.5", "frequency": "per night", - "discountPrice": "1", "image": "./hotel_3.jpg" }, { "type": "King Suite", "price": "2", "frequency": "per night", - "discountPrice": "1.5", "image": "./hotel_2.png" }, { "type": "Superior Deluxe Suite", "price": "5.5", "frequency": "per night", - "discountPrice": "4", "image": "./hotel_1.jpg" } ] \ No newline at end of file diff --git a/examples/sites/devcon-issuer/react-third-party/yarn.lock b/examples/sites/devcon-issuer/react-third-party/yarn.lock index 98a52a06..42467302 100644 --- a/examples/sites/devcon-issuer/react-third-party/yarn.lock +++ b/examples/sites/devcon-issuer/react-third-party/yarn.lock @@ -1578,6 +1578,17 @@ react-is "^16.8.0 || ^17.0.0" react-transition-group "^4.4.0" +"@material-ui/lab@^4.0.0-alpha.57": + version "4.0.0-alpha.57" + resolved "https://registry.yarnpkg.com/@material-ui/lab/-/lab-4.0.0-alpha.57.tgz#e8961bcf6449e8a8dabe84f2700daacfcafbf83a" + integrity sha512-qo/IuIQOmEKtzmRD2E4Aa6DB4A87kmY6h0uYhjUmrrgmEAgbbw9etXpWPVXuRK6AGIQCjFzV6WO2i21m1R4FCw== + dependencies: + "@babel/runtime" "^7.4.4" + "@material-ui/utils" "^4.11.2" + clsx "^1.0.4" + prop-types "^15.7.2" + react-is "^16.8.0 || ^17.0.0" + "@material-ui/pickers@latest": version "3.2.10" resolved "https://registry.yarnpkg.com/@material-ui/pickers/-/pickers-3.2.10.tgz#19df024895876eb0ec7cd239bbaea595f703f0ae" @@ -12986,11 +12997,6 @@ yargs@^15.4.1: y18n "^4.0.0" yargs-parser "^18.1.2" -yarn@^1.22.10: - version "1.22.10" - resolved "https://registry.yarnpkg.com/yarn/-/yarn-1.22.10.tgz#c99daa06257c80f8fa2c3f1490724e394c26b18c" - integrity sha512-IanQGI9RRPAN87VGTF7zs2uxkSyQSrSPsju0COgbsKQOOXr5LtcVPeyXWgwVa0ywG3d8dg6kSYKGBuYK021qeA== - yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"