{"version":3,"sources":["node_modules/jsrsasign/lib/jsrsasign.js","node_modules/dayjs/plugin/localeData.js","node_modules/dayjs/plugin/customParseFormat.js","node_modules/dayjs/plugin/objectSupport.js","node_modules/dayjs/plugin/localizedFormat.js","node_modules/dayjs/plugin/utc.js","node_modules/dayjs/plugin/isoWeek.js","node_modules/dayjs/plugin/weekOfYear.js","node_modules/dayjs/plugin/weekday.js","node_modules/dayjs/locale/fi.js","node_modules/dayjs/locale/sv.js","src/app/app.module.ts","node_modules/@progress/kendo-angular-intl/locales/fi/all.js","node_modules/@progress/kendo-angular-intl/locales/sv/all.js","node_modules/@progress/kendo-angular-intl/locales/en/all.js","src/app/page-not-found.component.ts","src/app/no-usage-right.component.ts","src/app/no-usage-right.component.html","src/app/no-admin-right.component.ts","src/app/app-landing.component.ts","src/app/app-landing.component.html","src/app/forbidden.component.ts","src/app/open-target.component.ts","src/app/open-target.component.html","src/app/services/app-component.service.ts","src/app/auth/callback/callback.component.ts","src/app/auth/callback/callback.component.html","src/app/app-routing.module.ts","src/app/shared/handlers/hpo-errorhandler.service.ts","node_modules/angular-oauth2-oidc-jwks/fesm2022/angular-oauth2-oidc-jwks.mjs","src/environments/environment.prod.ts","src/app/app.component.ts","src/app/app.component.html","src/app/services/floating-chat.service.ts","node_modules/angular-split/fesm2022/angular-split.mjs","src/app/modules/Iframe/Iframe.component.ts","src/app/modules/Iframe/Iframe.component.html","node_modules/@angular/common/locales/fi.mjs","node_modules/@angular/common/locales/sv.mjs","node_modules/@angular/common/locales/en.mjs","src/app/providers/blah-mat-paginator-intl.ts","node_modules/@headpower/components/dayjs/loader.mjs","src/app/services/localization-message-service.ts","src/app/bypass-service-worker.interceptor.ts","src/app/core.module.ts","src/app/auth/auth.module.ts","src/main.ts"],"sourcesContent":["var navigator = {};\nnavigator.userAgent = false;\nvar window = {};\n/*\n * jsrsasign(all) 11.1.0 (2024-02-01) (c) 2010-2023 Kenji Urushima | kjur.github.io/jsrsasign/license\n */\nvar VERSION = \"11.1.0\";\nvar VERSION_FULL = \"jsrsasign(all) 11.1.0 (2024-02-01) (c) 2010-2023 Kenji Urushima | kjur.github.io/jsrsasign/license\";\n\n/*! CryptoJS v3.1.2 core-fix.js\n * code.google.com/p/crypto-js\n * (c) 2009-2013 by Jeff Mott. All rights reserved.\n * code.google.com/p/crypto-js/wiki/License\n * THIS IS FIX of 'core.js' to fix Hmac issue.\n * https://code.google.com/p/crypto-js/issues/detail?id=84\n * https://crypto-js.googlecode.com/svn-history/r667/branches/3.x/src/core.js\n */\nvar CryptoJS = CryptoJS || function (e, g) {\n var a = {};\n var b = a.lib = {};\n var j = b.Base = function () {\n function n() {}\n return {\n extend: function (p) {\n n.prototype = this;\n var o = new n();\n if (p) {\n o.mixIn(p);\n }\n if (!o.hasOwnProperty(\"init\")) {\n o.init = function () {\n o.$super.init.apply(this, arguments);\n };\n }\n o.init.prototype = o;\n o.$super = this;\n return o;\n },\n create: function () {\n var o = this.extend();\n o.init.apply(o, arguments);\n return o;\n },\n init: function () {},\n mixIn: function (p) {\n for (var o in p) {\n if (p.hasOwnProperty(o)) {\n this[o] = p[o];\n }\n }\n if (p.hasOwnProperty(\"toString\")) {\n this.toString = p.toString;\n }\n },\n clone: function () {\n return this.init.prototype.extend(this);\n }\n };\n }();\n var l = b.WordArray = j.extend({\n init: function (o, n) {\n o = this.words = o || [];\n if (n != g) {\n this.sigBytes = n;\n } else {\n this.sigBytes = o.length * 4;\n }\n },\n toString: function (n) {\n return (n || h).stringify(this);\n },\n concat: function (t) {\n var q = this.words;\n var p = t.words;\n var n = this.sigBytes;\n var s = t.sigBytes;\n this.clamp();\n if (n % 4) {\n for (var r = 0; r < s; r++) {\n var o = p[r >>> 2] >>> 24 - r % 4 * 8 & 255;\n q[n + r >>> 2] |= o << 24 - (n + r) % 4 * 8;\n }\n } else {\n for (var r = 0; r < s; r += 4) {\n q[n + r >>> 2] = p[r >>> 2];\n }\n }\n this.sigBytes += s;\n return this;\n },\n clamp: function () {\n var o = this.words;\n var n = this.sigBytes;\n o[n >>> 2] &= 4294967295 << 32 - n % 4 * 8;\n o.length = e.ceil(n / 4);\n },\n clone: function () {\n var n = j.clone.call(this);\n n.words = this.words.slice(0);\n return n;\n },\n random: function (p) {\n var o = [];\n for (var n = 0; n < p; n += 4) {\n o.push(e.random() * 4294967296 | 0);\n }\n return new l.init(o, p);\n }\n });\n var m = a.enc = {};\n var h = m.Hex = {\n stringify: function (p) {\n var r = p.words;\n var o = p.sigBytes;\n var q = [];\n for (var n = 0; n < o; n++) {\n var s = r[n >>> 2] >>> 24 - n % 4 * 8 & 255;\n q.push((s >>> 4).toString(16));\n q.push((s & 15).toString(16));\n }\n return q.join(\"\");\n },\n parse: function (p) {\n var n = p.length;\n var q = [];\n for (var o = 0; o < n; o += 2) {\n q[o >>> 3] |= parseInt(p.substr(o, 2), 16) << 24 - o % 8 * 4;\n }\n return new l.init(q, n / 2);\n }\n };\n var d = m.Latin1 = {\n stringify: function (q) {\n var r = q.words;\n var p = q.sigBytes;\n var n = [];\n for (var o = 0; o < p; o++) {\n var s = r[o >>> 2] >>> 24 - o % 4 * 8 & 255;\n n.push(String.fromCharCode(s));\n }\n return n.join(\"\");\n },\n parse: function (p) {\n var n = p.length;\n var q = [];\n for (var o = 0; o < n; o++) {\n q[o >>> 2] |= (p.charCodeAt(o) & 255) << 24 - o % 4 * 8;\n }\n return new l.init(q, n);\n }\n };\n var c = m.Utf8 = {\n stringify: function (n) {\n try {\n return decodeURIComponent(escape(d.stringify(n)));\n } catch (o) {\n throw new Error(\"Malformed UTF-8 data\");\n }\n },\n parse: function (n) {\n return d.parse(unescape(encodeURIComponent(n)));\n }\n };\n var i = b.BufferedBlockAlgorithm = j.extend({\n reset: function () {\n this._data = new l.init();\n this._nDataBytes = 0;\n },\n _append: function (n) {\n if (typeof n == \"string\") {\n n = c.parse(n);\n }\n this._data.concat(n);\n this._nDataBytes += n.sigBytes;\n },\n _process: function (w) {\n var q = this._data;\n var x = q.words;\n var n = q.sigBytes;\n var t = this.blockSize;\n var v = t * 4;\n var u = n / v;\n if (w) {\n u = e.ceil(u);\n } else {\n u = e.max((u | 0) - this._minBufferSize, 0);\n }\n var s = u * t;\n var r = e.min(s * 4, n);\n if (s) {\n for (var p = 0; p < s; p += t) {\n this._doProcessBlock(x, p);\n }\n var o = x.splice(0, s);\n q.sigBytes -= r;\n }\n return new l.init(o, r);\n },\n clone: function () {\n var n = j.clone.call(this);\n n._data = this._data.clone();\n return n;\n },\n _minBufferSize: 0\n });\n var f = b.Hasher = i.extend({\n cfg: j.extend(),\n init: function (n) {\n this.cfg = this.cfg.extend(n);\n this.reset();\n },\n reset: function () {\n i.reset.call(this);\n this._doReset();\n },\n update: function (n) {\n this._append(n);\n this._process();\n return this;\n },\n finalize: function (n) {\n if (n) {\n this._append(n);\n }\n var o = this._doFinalize();\n return o;\n },\n blockSize: 512 / 32,\n _createHelper: function (n) {\n return function (p, o) {\n return new n.init(o).finalize(p);\n };\n },\n _createHmacHelper: function (n) {\n return function (p, o) {\n return new k.HMAC.init(n, o).finalize(p);\n };\n }\n });\n var k = a.algo = {};\n return a;\n}(Math);\n/*\nCryptoJS v3.1.2 x64-core-min.js\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n(function (g) {\n var a = CryptoJS,\n f = a.lib,\n e = f.Base,\n h = f.WordArray,\n a = a.x64 = {};\n a.Word = e.extend({\n init: function (b, c) {\n this.high = b;\n this.low = c;\n }\n });\n a.WordArray = e.extend({\n init: function (b, c) {\n b = this.words = b || [];\n this.sigBytes = c != g ? c : 8 * b.length;\n },\n toX32: function () {\n for (var b = this.words, c = b.length, a = [], d = 0; d < c; d++) {\n var e = b[d];\n a.push(e.high);\n a.push(e.low);\n }\n return h.create(a, this.sigBytes);\n },\n clone: function () {\n for (var b = e.clone.call(this), c = b.words = this.words.slice(0), a = c.length, d = 0; d < a; d++) c[d] = c[d].clone();\n return b;\n }\n });\n})();\n\n/*\nCryptoJS v3.1.2 cipher-core.js\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\nCryptoJS.lib.Cipher || function (u) {\n var g = CryptoJS,\n f = g.lib,\n k = f.Base,\n l = f.WordArray,\n q = f.BufferedBlockAlgorithm,\n r = g.enc.Base64,\n v = g.algo.EvpKDF,\n n = f.Cipher = q.extend({\n cfg: k.extend(),\n createEncryptor: function (a, b) {\n return this.create(this._ENC_XFORM_MODE, a, b);\n },\n createDecryptor: function (a, b) {\n return this.create(this._DEC_XFORM_MODE, a, b);\n },\n init: function (a, b, c) {\n this.cfg = this.cfg.extend(c);\n this._xformMode = a;\n this._key = b;\n this.reset();\n },\n reset: function () {\n q.reset.call(this);\n this._doReset();\n },\n process: function (a) {\n this._append(a);\n return this._process();\n },\n finalize: function (a) {\n a && this._append(a);\n return this._doFinalize();\n },\n keySize: 4,\n ivSize: 4,\n _ENC_XFORM_MODE: 1,\n _DEC_XFORM_MODE: 2,\n _createHelper: function (a) {\n return {\n encrypt: function (b, c, d) {\n return (\"string\" == typeof c ? s : j).encrypt(a, b, c, d);\n },\n decrypt: function (b, c, d) {\n return (\"string\" == typeof c ? s : j).decrypt(a, b, c, d);\n }\n };\n }\n });\n f.StreamCipher = n.extend({\n _doFinalize: function () {\n return this._process(!0);\n },\n blockSize: 1\n });\n var m = g.mode = {},\n t = function (a, b, c) {\n var d = this._iv;\n d ? this._iv = u : d = this._prevBlock;\n for (var e = 0; e < c; e++) a[b + e] ^= d[e];\n },\n h = (f.BlockCipherMode = k.extend({\n createEncryptor: function (a, b) {\n return this.Encryptor.create(a, b);\n },\n createDecryptor: function (a, b) {\n return this.Decryptor.create(a, b);\n },\n init: function (a, b) {\n this._cipher = a;\n this._iv = b;\n }\n })).extend();\n h.Encryptor = h.extend({\n processBlock: function (a, b) {\n var c = this._cipher,\n d = c.blockSize;\n t.call(this, a, b, d);\n c.encryptBlock(a, b);\n this._prevBlock = a.slice(b, b + d);\n }\n });\n h.Decryptor = h.extend({\n processBlock: function (a, b) {\n var c = this._cipher,\n d = c.blockSize,\n e = a.slice(b, b + d);\n c.decryptBlock(a, b);\n t.call(this, a, b, d);\n this._prevBlock = e;\n }\n });\n m = m.CBC = h;\n h = (g.pad = {}).Pkcs7 = {\n pad: function (a, b) {\n for (var c = 4 * b, c = c - a.sigBytes % c, d = c << 24 | c << 16 | c << 8 | c, e = [], f = 0; f < c; f += 4) e.push(d);\n c = l.create(e, c);\n a.concat(c);\n },\n unpad: function (a) {\n a.sigBytes -= a.words[a.sigBytes - 1 >>> 2] & 255;\n }\n };\n f.BlockCipher = n.extend({\n cfg: n.cfg.extend({\n mode: m,\n padding: h\n }),\n reset: function () {\n n.reset.call(this);\n var a = this.cfg,\n b = a.iv,\n a = a.mode;\n if (this._xformMode == this._ENC_XFORM_MODE) var c = a.createEncryptor;else c = a.createDecryptor, this._minBufferSize = 1;\n this._mode = c.call(a, this, b && b.words);\n },\n _doProcessBlock: function (a, b) {\n this._mode.processBlock(a, b);\n },\n _doFinalize: function () {\n var a = this.cfg.padding;\n if (this._xformMode == this._ENC_XFORM_MODE) {\n a.pad(this._data, this.blockSize);\n var b = this._process(!0);\n } else b = this._process(!0), a.unpad(b);\n return b;\n },\n blockSize: 4\n });\n var p = f.CipherParams = k.extend({\n init: function (a) {\n this.mixIn(a);\n },\n toString: function (a) {\n return (a || this.formatter).stringify(this);\n }\n }),\n m = (g.format = {}).OpenSSL = {\n stringify: function (a) {\n var b = a.ciphertext;\n a = a.salt;\n return (a ? l.create([1398893684, 1701076831]).concat(a).concat(b) : b).toString(r);\n },\n parse: function (a) {\n a = r.parse(a);\n var b = a.words;\n if (1398893684 == b[0] && 1701076831 == b[1]) {\n var c = l.create(b.slice(2, 4));\n b.splice(0, 4);\n a.sigBytes -= 16;\n }\n return p.create({\n ciphertext: a,\n salt: c\n });\n }\n },\n j = f.SerializableCipher = k.extend({\n cfg: k.extend({\n format: m\n }),\n encrypt: function (a, b, c, d) {\n d = this.cfg.extend(d);\n var e = a.createEncryptor(c, d);\n b = e.finalize(b);\n e = e.cfg;\n return p.create({\n ciphertext: b,\n key: c,\n iv: e.iv,\n algorithm: a,\n mode: e.mode,\n padding: e.padding,\n blockSize: a.blockSize,\n formatter: d.format\n });\n },\n decrypt: function (a, b, c, d) {\n d = this.cfg.extend(d);\n b = this._parse(b, d.format);\n return a.createDecryptor(c, d).finalize(b.ciphertext);\n },\n _parse: function (a, b) {\n return \"string\" == typeof a ? b.parse(a, this) : a;\n }\n }),\n g = (g.kdf = {}).OpenSSL = {\n execute: function (a, b, c, d) {\n d || (d = l.random(8));\n a = v.create({\n keySize: b + c\n }).compute(a, d);\n c = l.create(a.words.slice(b), 4 * c);\n a.sigBytes = 4 * b;\n return p.create({\n key: a,\n iv: c,\n salt: d\n });\n }\n },\n s = f.PasswordBasedCipher = j.extend({\n cfg: j.cfg.extend({\n kdf: g\n }),\n encrypt: function (a, b, c, d) {\n d = this.cfg.extend(d);\n c = d.kdf.execute(c, a.keySize, a.ivSize);\n d.iv = c.iv;\n a = j.encrypt.call(this, a, b, c.key, d);\n a.mixIn(c);\n return a;\n },\n decrypt: function (a, b, c, d) {\n d = this.cfg.extend(d);\n b = this._parse(b, d.format);\n c = d.kdf.execute(c, a.keySize, a.ivSize, b.salt);\n d.iv = c.iv;\n return j.decrypt.call(this, a, b, c.key, d);\n }\n });\n}();\n\n/*\nCryptoJS v3.1.2 aes.js\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n(function () {\n for (var q = CryptoJS, x = q.lib.BlockCipher, r = q.algo, j = [], y = [], z = [], A = [], B = [], C = [], s = [], u = [], v = [], w = [], g = [], k = 0; 256 > k; k++) g[k] = 128 > k ? k << 1 : k << 1 ^ 283;\n for (var n = 0, l = 0, k = 0; 256 > k; k++) {\n var f = l ^ l << 1 ^ l << 2 ^ l << 3 ^ l << 4,\n f = f >>> 8 ^ f & 255 ^ 99;\n j[n] = f;\n y[f] = n;\n var t = g[n],\n D = g[t],\n E = g[D],\n b = 257 * g[f] ^ 16843008 * f;\n z[n] = b << 24 | b >>> 8;\n A[n] = b << 16 | b >>> 16;\n B[n] = b << 8 | b >>> 24;\n C[n] = b;\n b = 16843009 * E ^ 65537 * D ^ 257 * t ^ 16843008 * n;\n s[f] = b << 24 | b >>> 8;\n u[f] = b << 16 | b >>> 16;\n v[f] = b << 8 | b >>> 24;\n w[f] = b;\n n ? (n = t ^ g[g[g[E ^ t]]], l ^= g[g[l]]) : n = l = 1;\n }\n var F = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54],\n r = r.AES = x.extend({\n _doReset: function () {\n for (var c = this._key, e = c.words, a = c.sigBytes / 4, c = 4 * ((this._nRounds = a + 6) + 1), b = this._keySchedule = [], h = 0; h < c; h++) if (h < a) b[h] = e[h];else {\n var d = b[h - 1];\n h % a ? 6 < a && 4 == h % a && (d = j[d >>> 24] << 24 | j[d >>> 16 & 255] << 16 | j[d >>> 8 & 255] << 8 | j[d & 255]) : (d = d << 8 | d >>> 24, d = j[d >>> 24] << 24 | j[d >>> 16 & 255] << 16 | j[d >>> 8 & 255] << 8 | j[d & 255], d ^= F[h / a | 0] << 24);\n b[h] = b[h - a] ^ d;\n }\n e = this._invKeySchedule = [];\n for (a = 0; a < c; a++) h = c - a, d = a % 4 ? b[h] : b[h - 4], e[a] = 4 > a || 4 >= h ? d : s[j[d >>> 24]] ^ u[j[d >>> 16 & 255]] ^ v[j[d >>> 8 & 255]] ^ w[j[d & 255]];\n },\n encryptBlock: function (c, e) {\n this._doCryptBlock(c, e, this._keySchedule, z, A, B, C, j);\n },\n decryptBlock: function (c, e) {\n var a = c[e + 1];\n c[e + 1] = c[e + 3];\n c[e + 3] = a;\n this._doCryptBlock(c, e, this._invKeySchedule, s, u, v, w, y);\n a = c[e + 1];\n c[e + 1] = c[e + 3];\n c[e + 3] = a;\n },\n _doCryptBlock: function (c, e, a, b, h, d, j, m) {\n for (var n = this._nRounds, f = c[e] ^ a[0], g = c[e + 1] ^ a[1], k = c[e + 2] ^ a[2], p = c[e + 3] ^ a[3], l = 4, t = 1; t < n; t++) var q = b[f >>> 24] ^ h[g >>> 16 & 255] ^ d[k >>> 8 & 255] ^ j[p & 255] ^ a[l++], r = b[g >>> 24] ^ h[k >>> 16 & 255] ^ d[p >>> 8 & 255] ^ j[f & 255] ^ a[l++], s = b[k >>> 24] ^ h[p >>> 16 & 255] ^ d[f >>> 8 & 255] ^ j[g & 255] ^ a[l++], p = b[p >>> 24] ^ h[f >>> 16 & 255] ^ d[g >>> 8 & 255] ^ j[k & 255] ^ a[l++], f = q, g = r, k = s;\n q = (m[f >>> 24] << 24 | m[g >>> 16 & 255] << 16 | m[k >>> 8 & 255] << 8 | m[p & 255]) ^ a[l++];\n r = (m[g >>> 24] << 24 | m[k >>> 16 & 255] << 16 | m[p >>> 8 & 255] << 8 | m[f & 255]) ^ a[l++];\n s = (m[k >>> 24] << 24 | m[p >>> 16 & 255] << 16 | m[f >>> 8 & 255] << 8 | m[g & 255]) ^ a[l++];\n p = (m[p >>> 24] << 24 | m[f >>> 16 & 255] << 16 | m[g >>> 8 & 255] << 8 | m[k & 255]) ^ a[l++];\n c[e] = q;\n c[e + 1] = r;\n c[e + 2] = s;\n c[e + 3] = p;\n },\n keySize: 8\n });\n q.AES = x._createHelper(r);\n})();\n\n/*\nCryptoJS v3.1.2 tripledes-min.js\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n(function () {\n function j(b, c) {\n var a = (this._lBlock >>> b ^ this._rBlock) & c;\n this._rBlock ^= a;\n this._lBlock ^= a << b;\n }\n function l(b, c) {\n var a = (this._rBlock >>> b ^ this._lBlock) & c;\n this._lBlock ^= a;\n this._rBlock ^= a << b;\n }\n var h = CryptoJS,\n e = h.lib,\n n = e.WordArray,\n e = e.BlockCipher,\n g = h.algo,\n q = [57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36, 63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4],\n p = [14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10, 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2, 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48, 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32],\n r = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28],\n s = [{\n \"0\": 8421888,\n 268435456: 32768,\n 536870912: 8421378,\n 805306368: 2,\n 1073741824: 512,\n 1342177280: 8421890,\n 1610612736: 8389122,\n 1879048192: 8388608,\n 2147483648: 514,\n 2415919104: 8389120,\n 2684354560: 33280,\n 2952790016: 8421376,\n 3221225472: 32770,\n 3489660928: 8388610,\n 3758096384: 0,\n 4026531840: 33282,\n 134217728: 0,\n 402653184: 8421890,\n 671088640: 33282,\n 939524096: 32768,\n 1207959552: 8421888,\n 1476395008: 512,\n 1744830464: 8421378,\n 2013265920: 2,\n 2281701376: 8389120,\n 2550136832: 33280,\n 2818572288: 8421376,\n 3087007744: 8389122,\n 3355443200: 8388610,\n 3623878656: 32770,\n 3892314112: 514,\n 4160749568: 8388608,\n 1: 32768,\n 268435457: 2,\n 536870913: 8421888,\n 805306369: 8388608,\n 1073741825: 8421378,\n 1342177281: 33280,\n 1610612737: 512,\n 1879048193: 8389122,\n 2147483649: 8421890,\n 2415919105: 8421376,\n 2684354561: 8388610,\n 2952790017: 33282,\n 3221225473: 514,\n 3489660929: 8389120,\n 3758096385: 32770,\n 4026531841: 0,\n 134217729: 8421890,\n 402653185: 8421376,\n 671088641: 8388608,\n 939524097: 512,\n 1207959553: 32768,\n 1476395009: 8388610,\n 1744830465: 2,\n 2013265921: 33282,\n 2281701377: 32770,\n 2550136833: 8389122,\n 2818572289: 514,\n 3087007745: 8421888,\n 3355443201: 8389120,\n 3623878657: 0,\n 3892314113: 33280,\n 4160749569: 8421378\n }, {\n \"0\": 1074282512,\n 16777216: 16384,\n 33554432: 524288,\n 50331648: 1074266128,\n 67108864: 1073741840,\n 83886080: 1074282496,\n 100663296: 1073758208,\n 117440512: 16,\n 134217728: 540672,\n 150994944: 1073758224,\n 167772160: 1073741824,\n 184549376: 540688,\n 201326592: 524304,\n 218103808: 0,\n 234881024: 16400,\n 251658240: 1074266112,\n 8388608: 1073758208,\n 25165824: 540688,\n 41943040: 16,\n 58720256: 1073758224,\n 75497472: 1074282512,\n 92274688: 1073741824,\n 109051904: 524288,\n 125829120: 1074266128,\n 142606336: 524304,\n 159383552: 0,\n 176160768: 16384,\n 192937984: 1074266112,\n 209715200: 1073741840,\n 226492416: 540672,\n 243269632: 1074282496,\n 260046848: 16400,\n 268435456: 0,\n 285212672: 1074266128,\n 301989888: 1073758224,\n 318767104: 1074282496,\n 335544320: 1074266112,\n 352321536: 16,\n 369098752: 540688,\n 385875968: 16384,\n 402653184: 16400,\n 419430400: 524288,\n 436207616: 524304,\n 452984832: 1073741840,\n 469762048: 540672,\n 486539264: 1073758208,\n 503316480: 1073741824,\n 520093696: 1074282512,\n 276824064: 540688,\n 293601280: 524288,\n 310378496: 1074266112,\n 327155712: 16384,\n 343932928: 1073758208,\n 360710144: 1074282512,\n 377487360: 16,\n 394264576: 1073741824,\n 411041792: 1074282496,\n 427819008: 1073741840,\n 444596224: 1073758224,\n 461373440: 524304,\n 478150656: 0,\n 494927872: 16400,\n 511705088: 1074266128,\n 528482304: 540672\n }, {\n \"0\": 260,\n 1048576: 0,\n 2097152: 67109120,\n 3145728: 65796,\n 4194304: 65540,\n 5242880: 67108868,\n 6291456: 67174660,\n 7340032: 67174400,\n 8388608: 67108864,\n 9437184: 67174656,\n 10485760: 65792,\n 11534336: 67174404,\n 12582912: 67109124,\n 13631488: 65536,\n 14680064: 4,\n 15728640: 256,\n 524288: 67174656,\n 1572864: 67174404,\n 2621440: 0,\n 3670016: 67109120,\n 4718592: 67108868,\n 5767168: 65536,\n 6815744: 65540,\n 7864320: 260,\n 8912896: 4,\n 9961472: 256,\n 11010048: 67174400,\n 12058624: 65796,\n 13107200: 65792,\n 14155776: 67109124,\n 15204352: 67174660,\n 16252928: 67108864,\n 16777216: 67174656,\n 17825792: 65540,\n 18874368: 65536,\n 19922944: 67109120,\n 20971520: 256,\n 22020096: 67174660,\n 23068672: 67108868,\n 24117248: 0,\n 25165824: 67109124,\n 26214400: 67108864,\n 27262976: 4,\n 28311552: 65792,\n 29360128: 67174400,\n 30408704: 260,\n 31457280: 65796,\n 32505856: 67174404,\n 17301504: 67108864,\n 18350080: 260,\n 19398656: 67174656,\n 20447232: 0,\n 21495808: 65540,\n 22544384: 67109120,\n 23592960: 256,\n 24641536: 67174404,\n 25690112: 65536,\n 26738688: 67174660,\n 27787264: 65796,\n 28835840: 67108868,\n 29884416: 67109124,\n 30932992: 67174400,\n 31981568: 4,\n 33030144: 65792\n }, {\n \"0\": 2151682048,\n 65536: 2147487808,\n 131072: 4198464,\n 196608: 2151677952,\n 262144: 0,\n 327680: 4198400,\n 393216: 2147483712,\n 458752: 4194368,\n 524288: 2147483648,\n 589824: 4194304,\n 655360: 64,\n 720896: 2147487744,\n 786432: 2151678016,\n 851968: 4160,\n 917504: 4096,\n 983040: 2151682112,\n 32768: 2147487808,\n 98304: 64,\n 163840: 2151678016,\n 229376: 2147487744,\n 294912: 4198400,\n 360448: 2151682112,\n 425984: 0,\n 491520: 2151677952,\n 557056: 4096,\n 622592: 2151682048,\n 688128: 4194304,\n 753664: 4160,\n 819200: 2147483648,\n 884736: 4194368,\n 950272: 4198464,\n 1015808: 2147483712,\n 1048576: 4194368,\n 1114112: 4198400,\n 1179648: 2147483712,\n 1245184: 0,\n 1310720: 4160,\n 1376256: 2151678016,\n 1441792: 2151682048,\n 1507328: 2147487808,\n 1572864: 2151682112,\n 1638400: 2147483648,\n 1703936: 2151677952,\n 1769472: 4198464,\n 1835008: 2147487744,\n 1900544: 4194304,\n 1966080: 64,\n 2031616: 4096,\n 1081344: 2151677952,\n 1146880: 2151682112,\n 1212416: 0,\n 1277952: 4198400,\n 1343488: 4194368,\n 1409024: 2147483648,\n 1474560: 2147487808,\n 1540096: 64,\n 1605632: 2147483712,\n 1671168: 4096,\n 1736704: 2147487744,\n 1802240: 2151678016,\n 1867776: 4160,\n 1933312: 2151682048,\n 1998848: 4194304,\n 2064384: 4198464\n }, {\n \"0\": 128,\n 4096: 17039360,\n 8192: 262144,\n 12288: 536870912,\n 16384: 537133184,\n 20480: 16777344,\n 24576: 553648256,\n 28672: 262272,\n 32768: 16777216,\n 36864: 537133056,\n 40960: 536871040,\n 45056: 553910400,\n 49152: 553910272,\n 53248: 0,\n 57344: 17039488,\n 61440: 553648128,\n 2048: 17039488,\n 6144: 553648256,\n 10240: 128,\n 14336: 17039360,\n 18432: 262144,\n 22528: 537133184,\n 26624: 553910272,\n 30720: 536870912,\n 34816: 537133056,\n 38912: 0,\n 43008: 553910400,\n 47104: 16777344,\n 51200: 536871040,\n 55296: 553648128,\n 59392: 16777216,\n 63488: 262272,\n 65536: 262144,\n 69632: 128,\n 73728: 536870912,\n 77824: 553648256,\n 81920: 16777344,\n 86016: 553910272,\n 90112: 537133184,\n 94208: 16777216,\n 98304: 553910400,\n 102400: 553648128,\n 106496: 17039360,\n 110592: 537133056,\n 114688: 262272,\n 118784: 536871040,\n 122880: 0,\n 126976: 17039488,\n 67584: 553648256,\n 71680: 16777216,\n 75776: 17039360,\n 79872: 537133184,\n 83968: 536870912,\n 88064: 17039488,\n 92160: 128,\n 96256: 553910272,\n 100352: 262272,\n 104448: 553910400,\n 108544: 0,\n 112640: 553648128,\n 116736: 16777344,\n 120832: 262144,\n 124928: 537133056,\n 129024: 536871040\n }, {\n \"0\": 268435464,\n 256: 8192,\n 512: 270532608,\n 768: 270540808,\n 1024: 268443648,\n 1280: 2097152,\n 1536: 2097160,\n 1792: 268435456,\n 2048: 0,\n 2304: 268443656,\n 2560: 2105344,\n 2816: 8,\n 3072: 270532616,\n 3328: 2105352,\n 3584: 8200,\n 3840: 270540800,\n 128: 270532608,\n 384: 270540808,\n 640: 8,\n 896: 2097152,\n 1152: 2105352,\n 1408: 268435464,\n 1664: 268443648,\n 1920: 8200,\n 2176: 2097160,\n 2432: 8192,\n 2688: 268443656,\n 2944: 270532616,\n 3200: 0,\n 3456: 270540800,\n 3712: 2105344,\n 3968: 268435456,\n 4096: 268443648,\n 4352: 270532616,\n 4608: 270540808,\n 4864: 8200,\n 5120: 2097152,\n 5376: 268435456,\n 5632: 268435464,\n 5888: 2105344,\n 6144: 2105352,\n 6400: 0,\n 6656: 8,\n 6912: 270532608,\n 7168: 8192,\n 7424: 268443656,\n 7680: 270540800,\n 7936: 2097160,\n 4224: 8,\n 4480: 2105344,\n 4736: 2097152,\n 4992: 268435464,\n 5248: 268443648,\n 5504: 8200,\n 5760: 270540808,\n 6016: 270532608,\n 6272: 270540800,\n 6528: 270532616,\n 6784: 8192,\n 7040: 2105352,\n 7296: 2097160,\n 7552: 0,\n 7808: 268435456,\n 8064: 268443656\n }, {\n \"0\": 1048576,\n 16: 33555457,\n 32: 1024,\n 48: 1049601,\n 64: 34604033,\n 80: 0,\n 96: 1,\n 112: 34603009,\n 128: 33555456,\n 144: 1048577,\n 160: 33554433,\n 176: 34604032,\n 192: 34603008,\n 208: 1025,\n 224: 1049600,\n 240: 33554432,\n 8: 34603009,\n 24: 0,\n 40: 33555457,\n 56: 34604032,\n 72: 1048576,\n 88: 33554433,\n 104: 33554432,\n 120: 1025,\n 136: 1049601,\n 152: 33555456,\n 168: 34603008,\n 184: 1048577,\n 200: 1024,\n 216: 34604033,\n 232: 1,\n 248: 1049600,\n 256: 33554432,\n 272: 1048576,\n 288: 33555457,\n 304: 34603009,\n 320: 1048577,\n 336: 33555456,\n 352: 34604032,\n 368: 1049601,\n 384: 1025,\n 400: 34604033,\n 416: 1049600,\n 432: 1,\n 448: 0,\n 464: 34603008,\n 480: 33554433,\n 496: 1024,\n 264: 1049600,\n 280: 33555457,\n 296: 34603009,\n 312: 1,\n 328: 33554432,\n 344: 1048576,\n 360: 1025,\n 376: 34604032,\n 392: 33554433,\n 408: 34603008,\n 424: 0,\n 440: 34604033,\n 456: 1049601,\n 472: 1024,\n 488: 33555456,\n 504: 1048577\n }, {\n \"0\": 134219808,\n 1: 131072,\n 2: 134217728,\n 3: 32,\n 4: 131104,\n 5: 134350880,\n 6: 134350848,\n 7: 2048,\n 8: 134348800,\n 9: 134219776,\n 10: 133120,\n 11: 134348832,\n 12: 2080,\n 13: 0,\n 14: 134217760,\n 15: 133152,\n 2147483648: 2048,\n 2147483649: 134350880,\n 2147483650: 134219808,\n 2147483651: 134217728,\n 2147483652: 134348800,\n 2147483653: 133120,\n 2147483654: 133152,\n 2147483655: 32,\n 2147483656: 134217760,\n 2147483657: 2080,\n 2147483658: 131104,\n 2147483659: 134350848,\n 2147483660: 0,\n 2147483661: 134348832,\n 2147483662: 134219776,\n 2147483663: 131072,\n 16: 133152,\n 17: 134350848,\n 18: 32,\n 19: 2048,\n 20: 134219776,\n 21: 134217760,\n 22: 134348832,\n 23: 131072,\n 24: 0,\n 25: 131104,\n 26: 134348800,\n 27: 134219808,\n 28: 134350880,\n 29: 133120,\n 30: 2080,\n 31: 134217728,\n 2147483664: 131072,\n 2147483665: 2048,\n 2147483666: 134348832,\n 2147483667: 133152,\n 2147483668: 32,\n 2147483669: 134348800,\n 2147483670: 134217728,\n 2147483671: 134219808,\n 2147483672: 134350880,\n 2147483673: 134217760,\n 2147483674: 134219776,\n 2147483675: 0,\n 2147483676: 133120,\n 2147483677: 2080,\n 2147483678: 131104,\n 2147483679: 134350848\n }],\n t = [4160749569, 528482304, 33030144, 2064384, 129024, 8064, 504, 2147483679],\n m = g.DES = e.extend({\n _doReset: function () {\n for (var b = this._key.words, c = [], a = 0; 56 > a; a++) {\n var f = q[a] - 1;\n c[a] = b[f >>> 5] >>> 31 - f % 32 & 1;\n }\n b = this._subKeys = [];\n for (f = 0; 16 > f; f++) {\n for (var d = b[f] = [], e = r[f], a = 0; 24 > a; a++) d[a / 6 | 0] |= c[(p[a] - 1 + e) % 28] << 31 - a % 6, d[4 + (a / 6 | 0)] |= c[28 + (p[a + 24] - 1 + e) % 28] << 31 - a % 6;\n d[0] = d[0] << 1 | d[0] >>> 31;\n for (a = 1; 7 > a; a++) d[a] >>>= 4 * (a - 1) + 3;\n d[7] = d[7] << 5 | d[7] >>> 27;\n }\n c = this._invSubKeys = [];\n for (a = 0; 16 > a; a++) c[a] = b[15 - a];\n },\n encryptBlock: function (b, c) {\n this._doCryptBlock(b, c, this._subKeys);\n },\n decryptBlock: function (b, c) {\n this._doCryptBlock(b, c, this._invSubKeys);\n },\n _doCryptBlock: function (b, c, a) {\n this._lBlock = b[c];\n this._rBlock = b[c + 1];\n j.call(this, 4, 252645135);\n j.call(this, 16, 65535);\n l.call(this, 2, 858993459);\n l.call(this, 8, 16711935);\n j.call(this, 1, 1431655765);\n for (var f = 0; 16 > f; f++) {\n for (var d = a[f], e = this._lBlock, h = this._rBlock, g = 0, k = 0; 8 > k; k++) g |= s[k][((h ^ d[k]) & t[k]) >>> 0];\n this._lBlock = h;\n this._rBlock = e ^ g;\n }\n a = this._lBlock;\n this._lBlock = this._rBlock;\n this._rBlock = a;\n j.call(this, 1, 1431655765);\n l.call(this, 8, 16711935);\n l.call(this, 2, 858993459);\n j.call(this, 16, 65535);\n j.call(this, 4, 252645135);\n b[c] = this._lBlock;\n b[c + 1] = this._rBlock;\n },\n keySize: 2,\n ivSize: 2,\n blockSize: 2\n });\n h.DES = e._createHelper(m);\n g = g.TripleDES = e.extend({\n _doReset: function () {\n var b = this._key.words;\n this._des1 = m.createEncryptor(n.create(b.slice(0, 2)));\n this._des2 = m.createEncryptor(n.create(b.slice(2, 4)));\n this._des3 = m.createEncryptor(n.create(b.slice(4, 6)));\n },\n encryptBlock: function (b, c) {\n this._des1.encryptBlock(b, c);\n this._des2.decryptBlock(b, c);\n this._des3.encryptBlock(b, c);\n },\n decryptBlock: function (b, c) {\n this._des3.decryptBlock(b, c);\n this._des2.encryptBlock(b, c);\n this._des1.decryptBlock(b, c);\n },\n keySize: 6,\n ivSize: 2,\n blockSize: 2\n });\n h.TripleDES = e._createHelper(g);\n})();\n\n/*\nCryptoJS v3.1.2 enc-base64.js\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n(function () {\n var h = CryptoJS,\n j = h.lib.WordArray;\n h.enc.Base64 = {\n stringify: function (b) {\n var e = b.words,\n f = b.sigBytes,\n c = this._map;\n b.clamp();\n b = [];\n for (var a = 0; a < f; a += 3) for (var d = (e[a >>> 2] >>> 24 - 8 * (a % 4) & 255) << 16 | (e[a + 1 >>> 2] >>> 24 - 8 * ((a + 1) % 4) & 255) << 8 | e[a + 2 >>> 2] >>> 24 - 8 * ((a + 2) % 4) & 255, g = 0; 4 > g && a + 0.75 * g < f; g++) b.push(c.charAt(d >>> 6 * (3 - g) & 63));\n if (e = c.charAt(64)) for (; b.length % 4;) b.push(e);\n return b.join(\"\");\n },\n parse: function (b) {\n var e = b.length,\n f = this._map,\n c = f.charAt(64);\n c && (c = b.indexOf(c), -1 != c && (e = c));\n for (var c = [], a = 0, d = 0; d < e; d++) if (d % 4) {\n var g = f.indexOf(b.charAt(d - 1)) << 2 * (d % 4),\n h = f.indexOf(b.charAt(d)) >>> 6 - 2 * (d % 4);\n c[a >>> 2] |= (g | h) << 24 - 8 * (a % 4);\n a++;\n }\n return j.create(c, a);\n },\n _map: \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\"\n };\n})();\n\n/*\nCryptoJS v3.1.2 md5.js\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n(function (E) {\n function h(a, f, g, j, p, h, k) {\n a = a + (f & g | ~f & j) + p + k;\n return (a << h | a >>> 32 - h) + f;\n }\n function k(a, f, g, j, p, h, k) {\n a = a + (f & j | g & ~j) + p + k;\n return (a << h | a >>> 32 - h) + f;\n }\n function l(a, f, g, j, h, k, l) {\n a = a + (f ^ g ^ j) + h + l;\n return (a << k | a >>> 32 - k) + f;\n }\n function n(a, f, g, j, h, k, l) {\n a = a + (g ^ (f | ~j)) + h + l;\n return (a << k | a >>> 32 - k) + f;\n }\n for (var r = CryptoJS, q = r.lib, F = q.WordArray, s = q.Hasher, q = r.algo, a = [], t = 0; 64 > t; t++) a[t] = 4294967296 * E.abs(E.sin(t + 1)) | 0;\n q = q.MD5 = s.extend({\n _doReset: function () {\n this._hash = new F.init([1732584193, 4023233417, 2562383102, 271733878]);\n },\n _doProcessBlock: function (m, f) {\n for (var g = 0; 16 > g; g++) {\n var j = f + g,\n p = m[j];\n m[j] = (p << 8 | p >>> 24) & 16711935 | (p << 24 | p >>> 8) & 4278255360;\n }\n var g = this._hash.words,\n j = m[f + 0],\n p = m[f + 1],\n q = m[f + 2],\n r = m[f + 3],\n s = m[f + 4],\n t = m[f + 5],\n u = m[f + 6],\n v = m[f + 7],\n w = m[f + 8],\n x = m[f + 9],\n y = m[f + 10],\n z = m[f + 11],\n A = m[f + 12],\n B = m[f + 13],\n C = m[f + 14],\n D = m[f + 15],\n b = g[0],\n c = g[1],\n d = g[2],\n e = g[3],\n b = h(b, c, d, e, j, 7, a[0]),\n e = h(e, b, c, d, p, 12, a[1]),\n d = h(d, e, b, c, q, 17, a[2]),\n c = h(c, d, e, b, r, 22, a[3]),\n b = h(b, c, d, e, s, 7, a[4]),\n e = h(e, b, c, d, t, 12, a[5]),\n d = h(d, e, b, c, u, 17, a[6]),\n c = h(c, d, e, b, v, 22, a[7]),\n b = h(b, c, d, e, w, 7, a[8]),\n e = h(e, b, c, d, x, 12, a[9]),\n d = h(d, e, b, c, y, 17, a[10]),\n c = h(c, d, e, b, z, 22, a[11]),\n b = h(b, c, d, e, A, 7, a[12]),\n e = h(e, b, c, d, B, 12, a[13]),\n d = h(d, e, b, c, C, 17, a[14]),\n c = h(c, d, e, b, D, 22, a[15]),\n b = k(b, c, d, e, p, 5, a[16]),\n e = k(e, b, c, d, u, 9, a[17]),\n d = k(d, e, b, c, z, 14, a[18]),\n c = k(c, d, e, b, j, 20, a[19]),\n b = k(b, c, d, e, t, 5, a[20]),\n e = k(e, b, c, d, y, 9, a[21]),\n d = k(d, e, b, c, D, 14, a[22]),\n c = k(c, d, e, b, s, 20, a[23]),\n b = k(b, c, d, e, x, 5, a[24]),\n e = k(e, b, c, d, C, 9, a[25]),\n d = k(d, e, b, c, r, 14, a[26]),\n c = k(c, d, e, b, w, 20, a[27]),\n b = k(b, c, d, e, B, 5, a[28]),\n e = k(e, b, c, d, q, 9, a[29]),\n d = k(d, e, b, c, v, 14, a[30]),\n c = k(c, d, e, b, A, 20, a[31]),\n b = l(b, c, d, e, t, 4, a[32]),\n e = l(e, b, c, d, w, 11, a[33]),\n d = l(d, e, b, c, z, 16, a[34]),\n c = l(c, d, e, b, C, 23, a[35]),\n b = l(b, c, d, e, p, 4, a[36]),\n e = l(e, b, c, d, s, 11, a[37]),\n d = l(d, e, b, c, v, 16, a[38]),\n c = l(c, d, e, b, y, 23, a[39]),\n b = l(b, c, d, e, B, 4, a[40]),\n e = l(e, b, c, d, j, 11, a[41]),\n d = l(d, e, b, c, r, 16, a[42]),\n c = l(c, d, e, b, u, 23, a[43]),\n b = l(b, c, d, e, x, 4, a[44]),\n e = l(e, b, c, d, A, 11, a[45]),\n d = l(d, e, b, c, D, 16, a[46]),\n c = l(c, d, e, b, q, 23, a[47]),\n b = n(b, c, d, e, j, 6, a[48]),\n e = n(e, b, c, d, v, 10, a[49]),\n d = n(d, e, b, c, C, 15, a[50]),\n c = n(c, d, e, b, t, 21, a[51]),\n b = n(b, c, d, e, A, 6, a[52]),\n e = n(e, b, c, d, r, 10, a[53]),\n d = n(d, e, b, c, y, 15, a[54]),\n c = n(c, d, e, b, p, 21, a[55]),\n b = n(b, c, d, e, w, 6, a[56]),\n e = n(e, b, c, d, D, 10, a[57]),\n d = n(d, e, b, c, u, 15, a[58]),\n c = n(c, d, e, b, B, 21, a[59]),\n b = n(b, c, d, e, s, 6, a[60]),\n e = n(e, b, c, d, z, 10, a[61]),\n d = n(d, e, b, c, q, 15, a[62]),\n c = n(c, d, e, b, x, 21, a[63]);\n g[0] = g[0] + b | 0;\n g[1] = g[1] + c | 0;\n g[2] = g[2] + d | 0;\n g[3] = g[3] + e | 0;\n },\n _doFinalize: function () {\n var a = this._data,\n f = a.words,\n g = 8 * this._nDataBytes,\n j = 8 * a.sigBytes;\n f[j >>> 5] |= 128 << 24 - j % 32;\n var h = E.floor(g / 4294967296);\n f[(j + 64 >>> 9 << 4) + 15] = (h << 8 | h >>> 24) & 16711935 | (h << 24 | h >>> 8) & 4278255360;\n f[(j + 64 >>> 9 << 4) + 14] = (g << 8 | g >>> 24) & 16711935 | (g << 24 | g >>> 8) & 4278255360;\n a.sigBytes = 4 * (f.length + 1);\n this._process();\n a = this._hash;\n f = a.words;\n for (g = 0; 4 > g; g++) j = f[g], f[g] = (j << 8 | j >>> 24) & 16711935 | (j << 24 | j >>> 8) & 4278255360;\n return a;\n },\n clone: function () {\n var a = s.clone.call(this);\n a._hash = this._hash.clone();\n return a;\n }\n });\n r.MD5 = s._createHelper(q);\n r.HmacMD5 = s._createHmacHelper(q);\n})(Math);\n\n/*\nCryptoJS v3.1.2 sha1-min.js\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n(function () {\n var k = CryptoJS,\n b = k.lib,\n m = b.WordArray,\n l = b.Hasher,\n d = [],\n b = k.algo.SHA1 = l.extend({\n _doReset: function () {\n this._hash = new m.init([1732584193, 4023233417, 2562383102, 271733878, 3285377520]);\n },\n _doProcessBlock: function (n, p) {\n for (var a = this._hash.words, e = a[0], f = a[1], h = a[2], j = a[3], b = a[4], c = 0; 80 > c; c++) {\n if (16 > c) d[c] = n[p + c] | 0;else {\n var g = d[c - 3] ^ d[c - 8] ^ d[c - 14] ^ d[c - 16];\n d[c] = g << 1 | g >>> 31;\n }\n g = (e << 5 | e >>> 27) + b + d[c];\n g = 20 > c ? g + ((f & h | ~f & j) + 1518500249) : 40 > c ? g + ((f ^ h ^ j) + 1859775393) : 60 > c ? g + ((f & h | f & j | h & j) - 1894007588) : g + ((f ^ h ^ j) - 899497514);\n b = j;\n j = h;\n h = f << 30 | f >>> 2;\n f = e;\n e = g;\n }\n a[0] = a[0] + e | 0;\n a[1] = a[1] + f | 0;\n a[2] = a[2] + h | 0;\n a[3] = a[3] + j | 0;\n a[4] = a[4] + b | 0;\n },\n _doFinalize: function () {\n var b = this._data,\n d = b.words,\n a = 8 * this._nDataBytes,\n e = 8 * b.sigBytes;\n d[e >>> 5] |= 128 << 24 - e % 32;\n d[(e + 64 >>> 9 << 4) + 14] = Math.floor(a / 4294967296);\n d[(e + 64 >>> 9 << 4) + 15] = a;\n b.sigBytes = 4 * d.length;\n this._process();\n return this._hash;\n },\n clone: function () {\n var b = l.clone.call(this);\n b._hash = this._hash.clone();\n return b;\n }\n });\n k.SHA1 = l._createHelper(b);\n k.HmacSHA1 = l._createHmacHelper(b);\n})();\n\n/*\nCryptoJS v3.1.2 sha256-min.js\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n(function (k) {\n for (var g = CryptoJS, h = g.lib, v = h.WordArray, j = h.Hasher, h = g.algo, s = [], t = [], u = function (q) {\n return 4294967296 * (q - (q | 0)) | 0;\n }, l = 2, b = 0; 64 > b;) {\n var d;\n a: {\n d = l;\n for (var w = k.sqrt(d), r = 2; r <= w; r++) if (!(d % r)) {\n d = !1;\n break a;\n }\n d = !0;\n }\n d && (8 > b && (s[b] = u(k.pow(l, 0.5))), t[b] = u(k.pow(l, 1 / 3)), b++);\n l++;\n }\n var n = [],\n h = h.SHA256 = j.extend({\n _doReset: function () {\n this._hash = new v.init(s.slice(0));\n },\n _doProcessBlock: function (q, h) {\n for (var a = this._hash.words, c = a[0], d = a[1], b = a[2], k = a[3], f = a[4], g = a[5], j = a[6], l = a[7], e = 0; 64 > e; e++) {\n if (16 > e) n[e] = q[h + e] | 0;else {\n var m = n[e - 15],\n p = n[e - 2];\n n[e] = ((m << 25 | m >>> 7) ^ (m << 14 | m >>> 18) ^ m >>> 3) + n[e - 7] + ((p << 15 | p >>> 17) ^ (p << 13 | p >>> 19) ^ p >>> 10) + n[e - 16];\n }\n m = l + ((f << 26 | f >>> 6) ^ (f << 21 | f >>> 11) ^ (f << 7 | f >>> 25)) + (f & g ^ ~f & j) + t[e] + n[e];\n p = ((c << 30 | c >>> 2) ^ (c << 19 | c >>> 13) ^ (c << 10 | c >>> 22)) + (c & d ^ c & b ^ d & b);\n l = j;\n j = g;\n g = f;\n f = k + m | 0;\n k = b;\n b = d;\n d = c;\n c = m + p | 0;\n }\n a[0] = a[0] + c | 0;\n a[1] = a[1] + d | 0;\n a[2] = a[2] + b | 0;\n a[3] = a[3] + k | 0;\n a[4] = a[4] + f | 0;\n a[5] = a[5] + g | 0;\n a[6] = a[6] + j | 0;\n a[7] = a[7] + l | 0;\n },\n _doFinalize: function () {\n var d = this._data,\n b = d.words,\n a = 8 * this._nDataBytes,\n c = 8 * d.sigBytes;\n b[c >>> 5] |= 128 << 24 - c % 32;\n b[(c + 64 >>> 9 << 4) + 14] = k.floor(a / 4294967296);\n b[(c + 64 >>> 9 << 4) + 15] = a;\n d.sigBytes = 4 * b.length;\n this._process();\n return this._hash;\n },\n clone: function () {\n var b = j.clone.call(this);\n b._hash = this._hash.clone();\n return b;\n }\n });\n g.SHA256 = j._createHelper(h);\n g.HmacSHA256 = j._createHmacHelper(h);\n})(Math);\n\n/*\nCryptoJS v3.1.2 sha224-min.js\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n(function () {\n var b = CryptoJS,\n d = b.lib.WordArray,\n a = b.algo,\n c = a.SHA256,\n a = a.SHA224 = c.extend({\n _doReset: function () {\n this._hash = new d.init([3238371032, 914150663, 812702999, 4144912697, 4290775857, 1750603025, 1694076839, 3204075428]);\n },\n _doFinalize: function () {\n var a = c._doFinalize.call(this);\n a.sigBytes -= 4;\n return a;\n }\n });\n b.SHA224 = c._createHelper(a);\n b.HmacSHA224 = c._createHmacHelper(a);\n})();\n\n/*\nCryptoJS v3.1.2 sha512-min.js\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n(function () {\n function a() {\n return d.create.apply(d, arguments);\n }\n for (var n = CryptoJS, r = n.lib.Hasher, e = n.x64, d = e.Word, T = e.WordArray, e = n.algo, ea = [a(1116352408, 3609767458), a(1899447441, 602891725), a(3049323471, 3964484399), a(3921009573, 2173295548), a(961987163, 4081628472), a(1508970993, 3053834265), a(2453635748, 2937671579), a(2870763221, 3664609560), a(3624381080, 2734883394), a(310598401, 1164996542), a(607225278, 1323610764), a(1426881987, 3590304994), a(1925078388, 4068182383), a(2162078206, 991336113), a(2614888103, 633803317), a(3248222580, 3479774868), a(3835390401, 2666613458), a(4022224774, 944711139), a(264347078, 2341262773), a(604807628, 2007800933), a(770255983, 1495990901), a(1249150122, 1856431235), a(1555081692, 3175218132), a(1996064986, 2198950837), a(2554220882, 3999719339), a(2821834349, 766784016), a(2952996808, 2566594879), a(3210313671, 3203337956), a(3336571891, 1034457026), a(3584528711, 2466948901), a(113926993, 3758326383), a(338241895, 168717936), a(666307205, 1188179964), a(773529912, 1546045734), a(1294757372, 1522805485), a(1396182291, 2643833823), a(1695183700, 2343527390), a(1986661051, 1014477480), a(2177026350, 1206759142), a(2456956037, 344077627), a(2730485921, 1290863460), a(2820302411, 3158454273), a(3259730800, 3505952657), a(3345764771, 106217008), a(3516065817, 3606008344), a(3600352804, 1432725776), a(4094571909, 1467031594), a(275423344, 851169720), a(430227734, 3100823752), a(506948616, 1363258195), a(659060556, 3750685593), a(883997877, 3785050280), a(958139571, 3318307427), a(1322822218, 3812723403), a(1537002063, 2003034995), a(1747873779, 3602036899), a(1955562222, 1575990012), a(2024104815, 1125592928), a(2227730452, 2716904306), a(2361852424, 442776044), a(2428436474, 593698344), a(2756734187, 3733110249), a(3204031479, 2999351573), a(3329325298, 3815920427), a(3391569614, 3928383900), a(3515267271, 566280711), a(3940187606, 3454069534), a(4118630271, 4000239992), a(116418474, 1914138554), a(174292421, 2731055270), a(289380356, 3203993006), a(460393269, 320620315), a(685471733, 587496836), a(852142971, 1086792851), a(1017036298, 365543100), a(1126000580, 2618297676), a(1288033470, 3409855158), a(1501505948, 4234509866), a(1607167915, 987167468), a(1816402316, 1246189591)], v = [], w = 0; 80 > w; w++) v[w] = a();\n e = e.SHA512 = r.extend({\n _doReset: function () {\n this._hash = new T.init([new d.init(1779033703, 4089235720), new d.init(3144134277, 2227873595), new d.init(1013904242, 4271175723), new d.init(2773480762, 1595750129), new d.init(1359893119, 2917565137), new d.init(2600822924, 725511199), new d.init(528734635, 4215389547), new d.init(1541459225, 327033209)]);\n },\n _doProcessBlock: function (a, d) {\n for (var f = this._hash.words, F = f[0], e = f[1], n = f[2], r = f[3], G = f[4], H = f[5], I = f[6], f = f[7], w = F.high, J = F.low, X = e.high, K = e.low, Y = n.high, L = n.low, Z = r.high, M = r.low, $ = G.high, N = G.low, aa = H.high, O = H.low, ba = I.high, P = I.low, ca = f.high, Q = f.low, k = w, g = J, z = X, x = K, A = Y, y = L, U = Z, B = M, l = $, h = N, R = aa, C = O, S = ba, D = P, V = ca, E = Q, m = 0; 80 > m; m++) {\n var s = v[m];\n if (16 > m) var j = s.high = a[d + 2 * m] | 0,\n b = s.low = a[d + 2 * m + 1] | 0;else {\n var j = v[m - 15],\n b = j.high,\n p = j.low,\n j = (b >>> 1 | p << 31) ^ (b >>> 8 | p << 24) ^ b >>> 7,\n p = (p >>> 1 | b << 31) ^ (p >>> 8 | b << 24) ^ (p >>> 7 | b << 25),\n u = v[m - 2],\n b = u.high,\n c = u.low,\n u = (b >>> 19 | c << 13) ^ (b << 3 | c >>> 29) ^ b >>> 6,\n c = (c >>> 19 | b << 13) ^ (c << 3 | b >>> 29) ^ (c >>> 6 | b << 26),\n b = v[m - 7],\n W = b.high,\n t = v[m - 16],\n q = t.high,\n t = t.low,\n b = p + b.low,\n j = j + W + (b >>> 0 < p >>> 0 ? 1 : 0),\n b = b + c,\n j = j + u + (b >>> 0 < c >>> 0 ? 1 : 0),\n b = b + t,\n j = j + q + (b >>> 0 < t >>> 0 ? 1 : 0);\n s.high = j;\n s.low = b;\n }\n var W = l & R ^ ~l & S,\n t = h & C ^ ~h & D,\n s = k & z ^ k & A ^ z & A,\n T = g & x ^ g & y ^ x & y,\n p = (k >>> 28 | g << 4) ^ (k << 30 | g >>> 2) ^ (k << 25 | g >>> 7),\n u = (g >>> 28 | k << 4) ^ (g << 30 | k >>> 2) ^ (g << 25 | k >>> 7),\n c = ea[m],\n fa = c.high,\n da = c.low,\n c = E + ((h >>> 14 | l << 18) ^ (h >>> 18 | l << 14) ^ (h << 23 | l >>> 9)),\n q = V + ((l >>> 14 | h << 18) ^ (l >>> 18 | h << 14) ^ (l << 23 | h >>> 9)) + (c >>> 0 < E >>> 0 ? 1 : 0),\n c = c + t,\n q = q + W + (c >>> 0 < t >>> 0 ? 1 : 0),\n c = c + da,\n q = q + fa + (c >>> 0 < da >>> 0 ? 1 : 0),\n c = c + b,\n q = q + j + (c >>> 0 < b >>> 0 ? 1 : 0),\n b = u + T,\n s = p + s + (b >>> 0 < u >>> 0 ? 1 : 0),\n V = S,\n E = D,\n S = R,\n D = C,\n R = l,\n C = h,\n h = B + c | 0,\n l = U + q + (h >>> 0 < B >>> 0 ? 1 : 0) | 0,\n U = A,\n B = y,\n A = z,\n y = x,\n z = k,\n x = g,\n g = c + b | 0,\n k = q + s + (g >>> 0 < c >>> 0 ? 1 : 0) | 0;\n }\n J = F.low = J + g;\n F.high = w + k + (J >>> 0 < g >>> 0 ? 1 : 0);\n K = e.low = K + x;\n e.high = X + z + (K >>> 0 < x >>> 0 ? 1 : 0);\n L = n.low = L + y;\n n.high = Y + A + (L >>> 0 < y >>> 0 ? 1 : 0);\n M = r.low = M + B;\n r.high = Z + U + (M >>> 0 < B >>> 0 ? 1 : 0);\n N = G.low = N + h;\n G.high = $ + l + (N >>> 0 < h >>> 0 ? 1 : 0);\n O = H.low = O + C;\n H.high = aa + R + (O >>> 0 < C >>> 0 ? 1 : 0);\n P = I.low = P + D;\n I.high = ba + S + (P >>> 0 < D >>> 0 ? 1 : 0);\n Q = f.low = Q + E;\n f.high = ca + V + (Q >>> 0 < E >>> 0 ? 1 : 0);\n },\n _doFinalize: function () {\n var a = this._data,\n d = a.words,\n f = 8 * this._nDataBytes,\n e = 8 * a.sigBytes;\n d[e >>> 5] |= 128 << 24 - e % 32;\n d[(e + 128 >>> 10 << 5) + 30] = Math.floor(f / 4294967296);\n d[(e + 128 >>> 10 << 5) + 31] = f;\n a.sigBytes = 4 * d.length;\n this._process();\n return this._hash.toX32();\n },\n clone: function () {\n var a = r.clone.call(this);\n a._hash = this._hash.clone();\n return a;\n },\n blockSize: 32\n });\n n.SHA512 = r._createHelper(e);\n n.HmacSHA512 = r._createHmacHelper(e);\n})();\n\n/*\nCryptoJS v3.1.2 sha384-min.js\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n(function () {\n var c = CryptoJS,\n a = c.x64,\n b = a.Word,\n e = a.WordArray,\n a = c.algo,\n d = a.SHA512,\n a = a.SHA384 = d.extend({\n _doReset: function () {\n this._hash = new e.init([new b.init(3418070365, 3238371032), new b.init(1654270250, 914150663), new b.init(2438529370, 812702999), new b.init(355462360, 4144912697), new b.init(1731405415, 4290775857), new b.init(2394180231, 1750603025), new b.init(3675008525, 1694076839), new b.init(1203062813, 3204075428)]);\n },\n _doFinalize: function () {\n var a = d._doFinalize.call(this);\n a.sigBytes -= 16;\n return a;\n }\n });\n c.SHA384 = d._createHelper(a);\n c.HmacSHA384 = d._createHmacHelper(a);\n})();\n\n/*\nCryptoJS v3.1.2 ripemd160-min.js\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n/*\n\n(c) 2012 by Cedric Mesnil. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n\n - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\n - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n(function () {\n var q = CryptoJS,\n d = q.lib,\n n = d.WordArray,\n p = d.Hasher,\n d = q.algo,\n x = n.create([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]),\n y = n.create([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]),\n z = n.create([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]),\n A = n.create([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]),\n B = n.create([0, 1518500249, 1859775393, 2400959708, 2840853838]),\n C = n.create([1352829926, 1548603684, 1836072691, 2053994217, 0]),\n d = d.RIPEMD160 = p.extend({\n _doReset: function () {\n this._hash = n.create([1732584193, 4023233417, 2562383102, 271733878, 3285377520]);\n },\n _doProcessBlock: function (e, v) {\n for (var b = 0; 16 > b; b++) {\n var c = v + b,\n f = e[c];\n e[c] = (f << 8 | f >>> 24) & 16711935 | (f << 24 | f >>> 8) & 4278255360;\n }\n var c = this._hash.words,\n f = B.words,\n d = C.words,\n n = x.words,\n q = y.words,\n p = z.words,\n w = A.words,\n t,\n g,\n h,\n j,\n r,\n u,\n k,\n l,\n m,\n s;\n u = t = c[0];\n k = g = c[1];\n l = h = c[2];\n m = j = c[3];\n s = r = c[4];\n for (var a, b = 0; 80 > b; b += 1) a = t + e[v + n[b]] | 0, a = 16 > b ? a + ((g ^ h ^ j) + f[0]) : 32 > b ? a + ((g & h | ~g & j) + f[1]) : 48 > b ? a + (((g | ~h) ^ j) + f[2]) : 64 > b ? a + ((g & j | h & ~j) + f[3]) : a + ((g ^ (h | ~j)) + f[4]), a |= 0, a = a << p[b] | a >>> 32 - p[b], a = a + r | 0, t = r, r = j, j = h << 10 | h >>> 22, h = g, g = a, a = u + e[v + q[b]] | 0, a = 16 > b ? a + ((k ^ (l | ~m)) + d[0]) : 32 > b ? a + ((k & m | l & ~m) + d[1]) : 48 > b ? a + (((k | ~l) ^ m) + d[2]) : 64 > b ? a + ((k & l | ~k & m) + d[3]) : a + ((k ^ l ^ m) + d[4]), a |= 0, a = a << w[b] | a >>> 32 - w[b], a = a + s | 0, u = s, s = m, m = l << 10 | l >>> 22, l = k, k = a;\n a = c[1] + h + m | 0;\n c[1] = c[2] + j + s | 0;\n c[2] = c[3] + r + u | 0;\n c[3] = c[4] + t + k | 0;\n c[4] = c[0] + g + l | 0;\n c[0] = a;\n },\n _doFinalize: function () {\n var e = this._data,\n d = e.words,\n b = 8 * this._nDataBytes,\n c = 8 * e.sigBytes;\n d[c >>> 5] |= 128 << 24 - c % 32;\n d[(c + 64 >>> 9 << 4) + 14] = (b << 8 | b >>> 24) & 16711935 | (b << 24 | b >>> 8) & 4278255360;\n e.sigBytes = 4 * (d.length + 1);\n this._process();\n e = this._hash;\n d = e.words;\n for (b = 0; 5 > b; b++) c = d[b], d[b] = (c << 8 | c >>> 24) & 16711935 | (c << 24 | c >>> 8) & 4278255360;\n return e;\n },\n clone: function () {\n var d = p.clone.call(this);\n d._hash = this._hash.clone();\n return d;\n }\n });\n q.RIPEMD160 = p._createHelper(d);\n q.HmacRIPEMD160 = p._createHmacHelper(d);\n})(Math);\n\n/*\nCryptoJS v3.1.2 hmac.js\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n(function () {\n var c = CryptoJS,\n k = c.enc.Utf8;\n c.algo.HMAC = c.lib.Base.extend({\n init: function (a, b) {\n a = this._hasher = new a.init();\n \"string\" == typeof b && (b = k.parse(b));\n var c = a.blockSize,\n e = 4 * c;\n b.sigBytes > e && (b = a.finalize(b));\n b.clamp();\n for (var f = this._oKey = b.clone(), g = this._iKey = b.clone(), h = f.words, j = g.words, d = 0; d < c; d++) h[d] ^= 1549556828, j[d] ^= 909522486;\n f.sigBytes = g.sigBytes = e;\n this.reset();\n },\n reset: function () {\n var a = this._hasher;\n a.reset();\n a.update(this._iKey);\n },\n update: function (a) {\n this._hasher.update(a);\n return this;\n },\n finalize: function (a) {\n var b = this._hasher;\n a = b.finalize(a);\n b.reset();\n return b.finalize(this._oKey.clone().concat(a));\n }\n });\n})();\n\n/*\nCryptoJS v3.1.2 pbkdf2-min.js\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n(function () {\n var b = CryptoJS,\n a = b.lib,\n d = a.Base,\n m = a.WordArray,\n a = b.algo,\n q = a.HMAC,\n l = a.PBKDF2 = d.extend({\n cfg: d.extend({\n keySize: 4,\n hasher: a.SHA1,\n iterations: 1\n }),\n init: function (a) {\n this.cfg = this.cfg.extend(a);\n },\n compute: function (a, b) {\n for (var c = this.cfg, f = q.create(c.hasher, a), g = m.create(), d = m.create([1]), l = g.words, r = d.words, n = c.keySize, c = c.iterations; l.length < n;) {\n var h = f.update(b).finalize(d);\n f.reset();\n for (var j = h.words, s = j.length, k = h, p = 1; p < c; p++) {\n k = f.finalize(k);\n f.reset();\n for (var t = k.words, e = 0; e < s; e++) j[e] ^= t[e];\n }\n g.concat(h);\n r[0]++;\n }\n g.sigBytes = 4 * n;\n return g;\n }\n });\n b.PBKDF2 = function (a, b, c) {\n return l.create(c).compute(a, b);\n };\n})();\n\n/*! (c) Tom Wu | http://www-cs-students.stanford.edu/~tjw/jsbn/\n */\nvar b64map = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\nvar b64pad = \"=\";\nfunction hex2b64(d) {\n var b;\n var e;\n var a = \"\";\n for (b = 0; b + 3 <= d.length; b += 3) {\n e = parseInt(d.substring(b, b + 3), 16);\n a += b64map.charAt(e >> 6) + b64map.charAt(e & 63);\n }\n if (b + 1 == d.length) {\n e = parseInt(d.substring(b, b + 1), 16);\n a += b64map.charAt(e << 2);\n } else {\n if (b + 2 == d.length) {\n e = parseInt(d.substring(b, b + 2), 16);\n a += b64map.charAt(e >> 2) + b64map.charAt((e & 3) << 4);\n }\n }\n if (b64pad) {\n while ((a.length & 3) > 0) {\n a += b64pad;\n }\n }\n return a;\n}\nfunction b64tohex(f) {\n var d = \"\";\n var e;\n var b = 0;\n var c;\n var a;\n for (e = 0; e < f.length; ++e) {\n if (f.charAt(e) == b64pad) {\n break;\n }\n a = b64map.indexOf(f.charAt(e));\n if (a < 0) {\n continue;\n }\n if (b == 0) {\n d += int2char(a >> 2);\n c = a & 3;\n b = 1;\n } else {\n if (b == 1) {\n d += int2char(c << 2 | a >> 4);\n c = a & 15;\n b = 2;\n } else {\n if (b == 2) {\n d += int2char(c);\n d += int2char(a >> 2);\n c = a & 3;\n b = 3;\n } else {\n d += int2char(c << 2 | a >> 4);\n d += int2char(a & 15);\n b = 0;\n }\n }\n }\n }\n if (b == 1) {\n d += int2char(c << 2);\n }\n return d;\n}\nfunction b64toBA(e) {\n var d = b64tohex(e);\n var c;\n var b = new Array();\n for (c = 0; 2 * c < d.length; ++c) {\n b[c] = parseInt(d.substring(2 * c, 2 * c + 2), 16);\n }\n return b;\n}\n;\n/*! (c) Tom Wu | http://www-cs-students.stanford.edu/~tjw/jsbn/\n */\nvar dbits;\nvar canary = 244837814094590;\nvar j_lm = (canary & 16777215) == 15715070;\nfunction BigInteger(e, d, f) {\n if (e != null) {\n if (\"number\" == typeof e) {\n this.fromNumber(e, d, f);\n } else {\n if (d == null && \"string\" != typeof e) {\n this.fromString(e, 256);\n } else {\n this.fromString(e, d);\n }\n }\n }\n}\nfunction nbi() {\n return new BigInteger(null);\n}\nfunction am1(f, a, b, e, h, g) {\n while (--g >= 0) {\n var d = a * this[f++] + b[e] + h;\n h = Math.floor(d / 67108864);\n b[e++] = d & 67108863;\n }\n return h;\n}\nfunction am2(f, q, r, e, o, a) {\n var k = q & 32767,\n p = q >> 15;\n while (--a >= 0) {\n var d = this[f] & 32767;\n var g = this[f++] >> 15;\n var b = p * d + g * k;\n d = k * d + ((b & 32767) << 15) + r[e] + (o & 1073741823);\n o = (d >>> 30) + (b >>> 15) + p * g + (o >>> 30);\n r[e++] = d & 1073741823;\n }\n return o;\n}\nfunction am3(f, q, r, e, o, a) {\n var k = q & 16383,\n p = q >> 14;\n while (--a >= 0) {\n var d = this[f] & 16383;\n var g = this[f++] >> 14;\n var b = p * d + g * k;\n d = k * d + ((b & 16383) << 14) + r[e] + o;\n o = (d >> 28) + (b >> 14) + p * g;\n r[e++] = d & 268435455;\n }\n return o;\n}\nif (j_lm && navigator.appName == \"Microsoft Internet Explorer\") {\n BigInteger.prototype.am = am2;\n dbits = 30;\n} else {\n if (j_lm && navigator.appName != \"Netscape\") {\n BigInteger.prototype.am = am1;\n dbits = 26;\n } else {\n BigInteger.prototype.am = am3;\n dbits = 28;\n }\n}\nBigInteger.prototype.DB = dbits;\nBigInteger.prototype.DM = (1 << dbits) - 1;\nBigInteger.prototype.DV = 1 << dbits;\nvar BI_FP = 52;\nBigInteger.prototype.FV = Math.pow(2, BI_FP);\nBigInteger.prototype.F1 = BI_FP - dbits;\nBigInteger.prototype.F2 = 2 * dbits - BI_FP;\nvar BI_RM = \"0123456789abcdefghijklmnopqrstuvwxyz\";\nvar BI_RC = new Array();\nvar rr, vv;\nrr = \"0\".charCodeAt(0);\nfor (vv = 0; vv <= 9; ++vv) {\n BI_RC[rr++] = vv;\n}\nrr = \"a\".charCodeAt(0);\nfor (vv = 10; vv < 36; ++vv) {\n BI_RC[rr++] = vv;\n}\nrr = \"A\".charCodeAt(0);\nfor (vv = 10; vv < 36; ++vv) {\n BI_RC[rr++] = vv;\n}\nfunction int2char(a) {\n return BI_RM.charAt(a);\n}\nfunction intAt(b, a) {\n var d = BI_RC[b.charCodeAt(a)];\n return d == null ? -1 : d;\n}\nfunction bnpCopyTo(b) {\n for (var a = this.t - 1; a >= 0; --a) {\n b[a] = this[a];\n }\n b.t = this.t;\n b.s = this.s;\n}\nfunction bnpFromInt(a) {\n this.t = 1;\n this.s = a < 0 ? -1 : 0;\n if (a > 0) {\n this[0] = a;\n } else {\n if (a < -1) {\n this[0] = a + this.DV;\n } else {\n this.t = 0;\n }\n }\n}\nfunction nbv(a) {\n var b = nbi();\n b.fromInt(a);\n return b;\n}\nfunction bnpFromString(h, c) {\n var e;\n if (c == 16) {\n e = 4;\n } else {\n if (c == 8) {\n e = 3;\n } else {\n if (c == 256) {\n e = 8;\n } else {\n if (c == 2) {\n e = 1;\n } else {\n if (c == 32) {\n e = 5;\n } else {\n if (c == 4) {\n e = 2;\n } else {\n this.fromRadix(h, c);\n return;\n }\n }\n }\n }\n }\n }\n this.t = 0;\n this.s = 0;\n var g = h.length,\n d = false,\n f = 0;\n while (--g >= 0) {\n var a = e == 8 ? h[g] & 255 : intAt(h, g);\n if (a < 0) {\n if (h.charAt(g) == \"-\") {\n d = true;\n }\n continue;\n }\n d = false;\n if (f == 0) {\n this[this.t++] = a;\n } else {\n if (f + e > this.DB) {\n this[this.t - 1] |= (a & (1 << this.DB - f) - 1) << f;\n this[this.t++] = a >> this.DB - f;\n } else {\n this[this.t - 1] |= a << f;\n }\n }\n f += e;\n if (f >= this.DB) {\n f -= this.DB;\n }\n }\n if (e == 8 && (h[0] & 128) != 0) {\n this.s = -1;\n if (f > 0) {\n this[this.t - 1] |= (1 << this.DB - f) - 1 << f;\n }\n }\n this.clamp();\n if (d) {\n BigInteger.ZERO.subTo(this, this);\n }\n}\nfunction bnpClamp() {\n var a = this.s & this.DM;\n while (this.t > 0 && this[this.t - 1] == a) {\n --this.t;\n }\n}\nfunction bnToString(c) {\n if (this.s < 0) {\n return \"-\" + this.negate().toString(c);\n }\n var e;\n if (c == 16) {\n e = 4;\n } else {\n if (c == 8) {\n e = 3;\n } else {\n if (c == 2) {\n e = 1;\n } else {\n if (c == 32) {\n e = 5;\n } else {\n if (c == 4) {\n e = 2;\n } else {\n return this.toRadix(c);\n }\n }\n }\n }\n }\n var g = (1 << e) - 1,\n l,\n a = false,\n h = \"\",\n f = this.t;\n var j = this.DB - f * this.DB % e;\n if (f-- > 0) {\n if (j < this.DB && (l = this[f] >> j) > 0) {\n a = true;\n h = int2char(l);\n }\n while (f >= 0) {\n if (j < e) {\n l = (this[f] & (1 << j) - 1) << e - j;\n l |= this[--f] >> (j += this.DB - e);\n } else {\n l = this[f] >> (j -= e) & g;\n if (j <= 0) {\n j += this.DB;\n --f;\n }\n }\n if (l > 0) {\n a = true;\n }\n if (a) {\n h += int2char(l);\n }\n }\n }\n return a ? h : \"0\";\n}\nfunction bnNegate() {\n var a = nbi();\n BigInteger.ZERO.subTo(this, a);\n return a;\n}\nfunction bnAbs() {\n return this.s < 0 ? this.negate() : this;\n}\nfunction bnCompareTo(b) {\n var d = this.s - b.s;\n if (d != 0) {\n return d;\n }\n var c = this.t;\n d = c - b.t;\n if (d != 0) {\n return this.s < 0 ? -d : d;\n }\n while (--c >= 0) {\n if ((d = this[c] - b[c]) != 0) {\n return d;\n }\n }\n return 0;\n}\nfunction nbits(a) {\n var c = 1,\n b;\n if ((b = a >>> 16) != 0) {\n a = b;\n c += 16;\n }\n if ((b = a >> 8) != 0) {\n a = b;\n c += 8;\n }\n if ((b = a >> 4) != 0) {\n a = b;\n c += 4;\n }\n if ((b = a >> 2) != 0) {\n a = b;\n c += 2;\n }\n if ((b = a >> 1) != 0) {\n a = b;\n c += 1;\n }\n return c;\n}\nfunction bnBitLength() {\n if (this.t <= 0) {\n return 0;\n }\n return this.DB * (this.t - 1) + nbits(this[this.t - 1] ^ this.s & this.DM);\n}\nfunction bnpDLShiftTo(c, b) {\n var a;\n for (a = this.t - 1; a >= 0; --a) {\n b[a + c] = this[a];\n }\n for (a = c - 1; a >= 0; --a) {\n b[a] = 0;\n }\n b.t = this.t + c;\n b.s = this.s;\n}\nfunction bnpDRShiftTo(c, b) {\n for (var a = c; a < this.t; ++a) {\n b[a - c] = this[a];\n }\n b.t = Math.max(this.t - c, 0);\n b.s = this.s;\n}\nfunction bnpLShiftTo(j, e) {\n var b = j % this.DB;\n var a = this.DB - b;\n var g = (1 << a) - 1;\n var f = Math.floor(j / this.DB),\n h = this.s << b & this.DM,\n d;\n for (d = this.t - 1; d >= 0; --d) {\n e[d + f + 1] = this[d] >> a | h;\n h = (this[d] & g) << b;\n }\n for (d = f - 1; d >= 0; --d) {\n e[d] = 0;\n }\n e[f] = h;\n e.t = this.t + f + 1;\n e.s = this.s;\n e.clamp();\n}\nfunction bnpRShiftTo(g, d) {\n d.s = this.s;\n var e = Math.floor(g / this.DB);\n if (e >= this.t) {\n d.t = 0;\n return;\n }\n var b = g % this.DB;\n var a = this.DB - b;\n var f = (1 << b) - 1;\n d[0] = this[e] >> b;\n for (var c = e + 1; c < this.t; ++c) {\n d[c - e - 1] |= (this[c] & f) << a;\n d[c - e] = this[c] >> b;\n }\n if (b > 0) {\n d[this.t - e - 1] |= (this.s & f) << a;\n }\n d.t = this.t - e;\n d.clamp();\n}\nfunction bnpSubTo(d, f) {\n var e = 0,\n g = 0,\n b = Math.min(d.t, this.t);\n while (e < b) {\n g += this[e] - d[e];\n f[e++] = g & this.DM;\n g >>= this.DB;\n }\n if (d.t < this.t) {\n g -= d.s;\n while (e < this.t) {\n g += this[e];\n f[e++] = g & this.DM;\n g >>= this.DB;\n }\n g += this.s;\n } else {\n g += this.s;\n while (e < d.t) {\n g -= d[e];\n f[e++] = g & this.DM;\n g >>= this.DB;\n }\n g -= d.s;\n }\n f.s = g < 0 ? -1 : 0;\n if (g < -1) {\n f[e++] = this.DV + g;\n } else {\n if (g > 0) {\n f[e++] = g;\n }\n }\n f.t = e;\n f.clamp();\n}\nfunction bnpMultiplyTo(c, e) {\n var b = this.abs(),\n f = c.abs();\n var d = b.t;\n e.t = d + f.t;\n while (--d >= 0) {\n e[d] = 0;\n }\n for (d = 0; d < f.t; ++d) {\n e[d + b.t] = b.am(0, f[d], e, d, 0, b.t);\n }\n e.s = 0;\n e.clamp();\n if (this.s != c.s) {\n BigInteger.ZERO.subTo(e, e);\n }\n}\nfunction bnpSquareTo(d) {\n var a = this.abs();\n var b = d.t = 2 * a.t;\n while (--b >= 0) {\n d[b] = 0;\n }\n for (b = 0; b < a.t - 1; ++b) {\n var e = a.am(b, a[b], d, 2 * b, 0, 1);\n if ((d[b + a.t] += a.am(b + 1, 2 * a[b], d, 2 * b + 1, e, a.t - b - 1)) >= a.DV) {\n d[b + a.t] -= a.DV;\n d[b + a.t + 1] = 1;\n }\n }\n if (d.t > 0) {\n d[d.t - 1] += a.am(b, a[b], d, 2 * b, 0, 1);\n }\n d.s = 0;\n d.clamp();\n}\nfunction bnpDivRemTo(n, h, g) {\n var w = n.abs();\n if (w.t <= 0) {\n return;\n }\n var k = this.abs();\n if (k.t < w.t) {\n if (h != null) {\n h.fromInt(0);\n }\n if (g != null) {\n this.copyTo(g);\n }\n return;\n }\n if (g == null) {\n g = nbi();\n }\n var d = nbi(),\n a = this.s,\n l = n.s;\n var v = this.DB - nbits(w[w.t - 1]);\n if (v > 0) {\n w.lShiftTo(v, d);\n k.lShiftTo(v, g);\n } else {\n w.copyTo(d);\n k.copyTo(g);\n }\n var p = d.t;\n var b = d[p - 1];\n if (b == 0) {\n return;\n }\n var o = b * (1 << this.F1) + (p > 1 ? d[p - 2] >> this.F2 : 0);\n var A = this.FV / o,\n z = (1 << this.F1) / o,\n x = 1 << this.F2;\n var u = g.t,\n s = u - p,\n f = h == null ? nbi() : h;\n d.dlShiftTo(s, f);\n if (g.compareTo(f) >= 0) {\n g[g.t++] = 1;\n g.subTo(f, g);\n }\n BigInteger.ONE.dlShiftTo(p, f);\n f.subTo(d, d);\n while (d.t < p) {\n d[d.t++] = 0;\n }\n while (--s >= 0) {\n var c = g[--u] == b ? this.DM : Math.floor(g[u] * A + (g[u - 1] + x) * z);\n if ((g[u] += d.am(0, c, g, s, 0, p)) < c) {\n d.dlShiftTo(s, f);\n g.subTo(f, g);\n while (g[u] < --c) {\n g.subTo(f, g);\n }\n }\n }\n if (h != null) {\n g.drShiftTo(p, h);\n if (a != l) {\n BigInteger.ZERO.subTo(h, h);\n }\n }\n g.t = p;\n g.clamp();\n if (v > 0) {\n g.rShiftTo(v, g);\n }\n if (a < 0) {\n BigInteger.ZERO.subTo(g, g);\n }\n}\nfunction bnMod(b) {\n var c = nbi();\n this.abs().divRemTo(b, null, c);\n if (this.s < 0 && c.compareTo(BigInteger.ZERO) > 0) {\n b.subTo(c, c);\n }\n return c;\n}\nfunction Classic(a) {\n this.m = a;\n}\nfunction cConvert(a) {\n if (a.s < 0 || a.compareTo(this.m) >= 0) {\n return a.mod(this.m);\n } else {\n return a;\n }\n}\nfunction cRevert(a) {\n return a;\n}\nfunction cReduce(a) {\n a.divRemTo(this.m, null, a);\n}\nfunction cMulTo(a, c, b) {\n a.multiplyTo(c, b);\n this.reduce(b);\n}\nfunction cSqrTo(a, b) {\n a.squareTo(b);\n this.reduce(b);\n}\nClassic.prototype.convert = cConvert;\nClassic.prototype.revert = cRevert;\nClassic.prototype.reduce = cReduce;\nClassic.prototype.mulTo = cMulTo;\nClassic.prototype.sqrTo = cSqrTo;\nfunction bnpInvDigit() {\n if (this.t < 1) {\n return 0;\n }\n var a = this[0];\n if ((a & 1) == 0) {\n return 0;\n }\n var b = a & 3;\n b = b * (2 - (a & 15) * b) & 15;\n b = b * (2 - (a & 255) * b) & 255;\n b = b * (2 - ((a & 65535) * b & 65535)) & 65535;\n b = b * (2 - a * b % this.DV) % this.DV;\n return b > 0 ? this.DV - b : -b;\n}\nfunction Montgomery(a) {\n this.m = a;\n this.mp = a.invDigit();\n this.mpl = this.mp & 32767;\n this.mph = this.mp >> 15;\n this.um = (1 << a.DB - 15) - 1;\n this.mt2 = 2 * a.t;\n}\nfunction montConvert(a) {\n var b = nbi();\n a.abs().dlShiftTo(this.m.t, b);\n b.divRemTo(this.m, null, b);\n if (a.s < 0 && b.compareTo(BigInteger.ZERO) > 0) {\n this.m.subTo(b, b);\n }\n return b;\n}\nfunction montRevert(a) {\n var b = nbi();\n a.copyTo(b);\n this.reduce(b);\n return b;\n}\nfunction montReduce(a) {\n while (a.t <= this.mt2) {\n a[a.t++] = 0;\n }\n for (var c = 0; c < this.m.t; ++c) {\n var b = a[c] & 32767;\n var d = b * this.mpl + ((b * this.mph + (a[c] >> 15) * this.mpl & this.um) << 15) & a.DM;\n b = c + this.m.t;\n a[b] += this.m.am(0, d, a, c, 0, this.m.t);\n while (a[b] >= a.DV) {\n a[b] -= a.DV;\n a[++b]++;\n }\n }\n a.clamp();\n a.drShiftTo(this.m.t, a);\n if (a.compareTo(this.m) >= 0) {\n a.subTo(this.m, a);\n }\n}\nfunction montSqrTo(a, b) {\n a.squareTo(b);\n this.reduce(b);\n}\nfunction montMulTo(a, c, b) {\n a.multiplyTo(c, b);\n this.reduce(b);\n}\nMontgomery.prototype.convert = montConvert;\nMontgomery.prototype.revert = montRevert;\nMontgomery.prototype.reduce = montReduce;\nMontgomery.prototype.mulTo = montMulTo;\nMontgomery.prototype.sqrTo = montSqrTo;\nfunction bnpIsEven() {\n return (this.t > 0 ? this[0] & 1 : this.s) == 0;\n}\nfunction bnpExp(h, j) {\n if (h > 4294967295 || h < 1) {\n return BigInteger.ONE;\n }\n var f = nbi(),\n a = nbi(),\n d = j.convert(this),\n c = nbits(h) - 1;\n d.copyTo(f);\n while (--c >= 0) {\n j.sqrTo(f, a);\n if ((h & 1 << c) > 0) {\n j.mulTo(a, d, f);\n } else {\n var b = f;\n f = a;\n a = b;\n }\n }\n return j.revert(f);\n}\nfunction bnModPowInt(b, a) {\n var c;\n if (b < 256 || a.isEven()) {\n c = new Classic(a);\n } else {\n c = new Montgomery(a);\n }\n return this.exp(b, c);\n}\nBigInteger.prototype.copyTo = bnpCopyTo;\nBigInteger.prototype.fromInt = bnpFromInt;\nBigInteger.prototype.fromString = bnpFromString;\nBigInteger.prototype.clamp = bnpClamp;\nBigInteger.prototype.dlShiftTo = bnpDLShiftTo;\nBigInteger.prototype.drShiftTo = bnpDRShiftTo;\nBigInteger.prototype.lShiftTo = bnpLShiftTo;\nBigInteger.prototype.rShiftTo = bnpRShiftTo;\nBigInteger.prototype.subTo = bnpSubTo;\nBigInteger.prototype.multiplyTo = bnpMultiplyTo;\nBigInteger.prototype.squareTo = bnpSquareTo;\nBigInteger.prototype.divRemTo = bnpDivRemTo;\nBigInteger.prototype.invDigit = bnpInvDigit;\nBigInteger.prototype.isEven = bnpIsEven;\nBigInteger.prototype.exp = bnpExp;\nBigInteger.prototype.toString = bnToString;\nBigInteger.prototype.negate = bnNegate;\nBigInteger.prototype.abs = bnAbs;\nBigInteger.prototype.compareTo = bnCompareTo;\nBigInteger.prototype.bitLength = bnBitLength;\nBigInteger.prototype.mod = bnMod;\nBigInteger.prototype.modPowInt = bnModPowInt;\nBigInteger.ZERO = nbv(0);\nBigInteger.ONE = nbv(1);\n/*! (c) Tom Wu | http://www-cs-students.stanford.edu/~tjw/jsbn/\n */\nfunction bnClone() {\n var a = nbi();\n this.copyTo(a);\n return a;\n}\nfunction bnIntValue() {\n if (this.s < 0) {\n if (this.t == 1) {\n return this[0] - this.DV;\n } else {\n if (this.t == 0) {\n return -1;\n }\n }\n } else {\n if (this.t == 1) {\n return this[0];\n } else {\n if (this.t == 0) {\n return 0;\n }\n }\n }\n return (this[1] & (1 << 32 - this.DB) - 1) << this.DB | this[0];\n}\nfunction bnByteValue() {\n return this.t == 0 ? this.s : this[0] << 24 >> 24;\n}\nfunction bnShortValue() {\n return this.t == 0 ? this.s : this[0] << 16 >> 16;\n}\nfunction bnpChunkSize(a) {\n return Math.floor(Math.LN2 * this.DB / Math.log(a));\n}\nfunction bnSigNum() {\n if (this.s < 0) {\n return -1;\n } else {\n if (this.t <= 0 || this.t == 1 && this[0] <= 0) {\n return 0;\n } else {\n return 1;\n }\n }\n}\nfunction bnpToRadix(c) {\n if (c == null) {\n c = 10;\n }\n if (this.signum() == 0 || c < 2 || c > 36) {\n return \"0\";\n }\n var f = this.chunkSize(c);\n var e = Math.pow(c, f);\n var i = nbv(e),\n j = nbi(),\n h = nbi(),\n g = \"\";\n this.divRemTo(i, j, h);\n while (j.signum() > 0) {\n g = (e + h.intValue()).toString(c).substr(1) + g;\n j.divRemTo(i, j, h);\n }\n return h.intValue().toString(c) + g;\n}\nfunction bnpFromRadix(m, h) {\n this.fromInt(0);\n if (h == null) {\n h = 10;\n }\n var f = this.chunkSize(h);\n var g = Math.pow(h, f),\n e = false,\n a = 0,\n l = 0;\n for (var c = 0; c < m.length; ++c) {\n var k = intAt(m, c);\n if (k < 0) {\n if (m.charAt(c) == \"-\" && this.signum() == 0) {\n e = true;\n }\n continue;\n }\n l = h * l + k;\n if (++a >= f) {\n this.dMultiply(g);\n this.dAddOffset(l, 0);\n a = 0;\n l = 0;\n }\n }\n if (a > 0) {\n this.dMultiply(Math.pow(h, a));\n this.dAddOffset(l, 0);\n }\n if (e) {\n BigInteger.ZERO.subTo(this, this);\n }\n}\nfunction bnpFromNumber(f, e, h) {\n if (\"number\" == typeof e) {\n if (f < 2) {\n this.fromInt(1);\n } else {\n this.fromNumber(f, h);\n if (!this.testBit(f - 1)) {\n this.bitwiseTo(BigInteger.ONE.shiftLeft(f - 1), op_or, this);\n }\n if (this.isEven()) {\n this.dAddOffset(1, 0);\n }\n while (!this.isProbablePrime(e)) {\n this.dAddOffset(2, 0);\n if (this.bitLength() > f) {\n this.subTo(BigInteger.ONE.shiftLeft(f - 1), this);\n }\n }\n }\n } else {\n var d = new Array(),\n g = f & 7;\n d.length = (f >> 3) + 1;\n e.nextBytes(d);\n if (g > 0) {\n d[0] &= (1 << g) - 1;\n } else {\n d[0] = 0;\n }\n this.fromString(d, 256);\n }\n}\nfunction bnToByteArray() {\n var b = this.t,\n c = new Array();\n c[0] = this.s;\n var e = this.DB - b * this.DB % 8,\n f,\n a = 0;\n if (b-- > 0) {\n if (e < this.DB && (f = this[b] >> e) != (this.s & this.DM) >> e) {\n c[a++] = f | this.s << this.DB - e;\n }\n while (b >= 0) {\n if (e < 8) {\n f = (this[b] & (1 << e) - 1) << 8 - e;\n f |= this[--b] >> (e += this.DB - 8);\n } else {\n f = this[b] >> (e -= 8) & 255;\n if (e <= 0) {\n e += this.DB;\n --b;\n }\n }\n if ((f & 128) != 0) {\n f |= -256;\n }\n if (a == 0 && (this.s & 128) != (f & 128)) {\n ++a;\n }\n if (a > 0 || f != this.s) {\n c[a++] = f;\n }\n }\n }\n return c;\n}\nfunction bnEquals(b) {\n return this.compareTo(b) == 0;\n}\nfunction bnMin(b) {\n return this.compareTo(b) < 0 ? this : b;\n}\nfunction bnMax(b) {\n return this.compareTo(b) > 0 ? this : b;\n}\nfunction bnpBitwiseTo(c, h, e) {\n var d,\n g,\n b = Math.min(c.t, this.t);\n for (d = 0; d < b; ++d) {\n e[d] = h(this[d], c[d]);\n }\n if (c.t < this.t) {\n g = c.s & this.DM;\n for (d = b; d < this.t; ++d) {\n e[d] = h(this[d], g);\n }\n e.t = this.t;\n } else {\n g = this.s & this.DM;\n for (d = b; d < c.t; ++d) {\n e[d] = h(g, c[d]);\n }\n e.t = c.t;\n }\n e.s = h(this.s, c.s);\n e.clamp();\n}\nfunction op_and(a, b) {\n return a & b;\n}\nfunction bnAnd(b) {\n var c = nbi();\n this.bitwiseTo(b, op_and, c);\n return c;\n}\nfunction op_or(a, b) {\n return a | b;\n}\nfunction bnOr(b) {\n var c = nbi();\n this.bitwiseTo(b, op_or, c);\n return c;\n}\nfunction op_xor(a, b) {\n return a ^ b;\n}\nfunction bnXor(b) {\n var c = nbi();\n this.bitwiseTo(b, op_xor, c);\n return c;\n}\nfunction op_andnot(a, b) {\n return a & ~b;\n}\nfunction bnAndNot(b) {\n var c = nbi();\n this.bitwiseTo(b, op_andnot, c);\n return c;\n}\nfunction bnNot() {\n var b = nbi();\n for (var a = 0; a < this.t; ++a) {\n b[a] = this.DM & ~this[a];\n }\n b.t = this.t;\n b.s = ~this.s;\n return b;\n}\nfunction bnShiftLeft(b) {\n var a = nbi();\n if (b < 0) {\n this.rShiftTo(-b, a);\n } else {\n this.lShiftTo(b, a);\n }\n return a;\n}\nfunction bnShiftRight(b) {\n var a = nbi();\n if (b < 0) {\n this.lShiftTo(-b, a);\n } else {\n this.rShiftTo(b, a);\n }\n return a;\n}\nfunction lbit(a) {\n if (a == 0) {\n return -1;\n }\n var b = 0;\n if ((a & 65535) == 0) {\n a >>= 16;\n b += 16;\n }\n if ((a & 255) == 0) {\n a >>= 8;\n b += 8;\n }\n if ((a & 15) == 0) {\n a >>= 4;\n b += 4;\n }\n if ((a & 3) == 0) {\n a >>= 2;\n b += 2;\n }\n if ((a & 1) == 0) {\n ++b;\n }\n return b;\n}\nfunction bnGetLowestSetBit() {\n for (var a = 0; a < this.t; ++a) {\n if (this[a] != 0) {\n return a * this.DB + lbit(this[a]);\n }\n }\n if (this.s < 0) {\n return this.t * this.DB;\n }\n return -1;\n}\nfunction cbit(a) {\n var b = 0;\n while (a != 0) {\n a &= a - 1;\n ++b;\n }\n return b;\n}\nfunction bnBitCount() {\n var c = 0,\n a = this.s & this.DM;\n for (var b = 0; b < this.t; ++b) {\n c += cbit(this[b] ^ a);\n }\n return c;\n}\nfunction bnTestBit(b) {\n var a = Math.floor(b / this.DB);\n if (a >= this.t) {\n return this.s != 0;\n }\n return (this[a] & 1 << b % this.DB) != 0;\n}\nfunction bnpChangeBit(c, b) {\n var a = BigInteger.ONE.shiftLeft(c);\n this.bitwiseTo(a, b, a);\n return a;\n}\nfunction bnSetBit(a) {\n return this.changeBit(a, op_or);\n}\nfunction bnClearBit(a) {\n return this.changeBit(a, op_andnot);\n}\nfunction bnFlipBit(a) {\n return this.changeBit(a, op_xor);\n}\nfunction bnpAddTo(d, f) {\n var e = 0,\n g = 0,\n b = Math.min(d.t, this.t);\n while (e < b) {\n g += this[e] + d[e];\n f[e++] = g & this.DM;\n g >>= this.DB;\n }\n if (d.t < this.t) {\n g += d.s;\n while (e < this.t) {\n g += this[e];\n f[e++] = g & this.DM;\n g >>= this.DB;\n }\n g += this.s;\n } else {\n g += this.s;\n while (e < d.t) {\n g += d[e];\n f[e++] = g & this.DM;\n g >>= this.DB;\n }\n g += d.s;\n }\n f.s = g < 0 ? -1 : 0;\n if (g > 0) {\n f[e++] = g;\n } else {\n if (g < -1) {\n f[e++] = this.DV + g;\n }\n }\n f.t = e;\n f.clamp();\n}\nfunction bnAdd(b) {\n var c = nbi();\n this.addTo(b, c);\n return c;\n}\nfunction bnSubtract(b) {\n var c = nbi();\n this.subTo(b, c);\n return c;\n}\nfunction bnMultiply(b) {\n var c = nbi();\n this.multiplyTo(b, c);\n return c;\n}\nfunction bnSquare() {\n var a = nbi();\n this.squareTo(a);\n return a;\n}\nfunction bnDivide(b) {\n var c = nbi();\n this.divRemTo(b, c, null);\n return c;\n}\nfunction bnRemainder(b) {\n var c = nbi();\n this.divRemTo(b, null, c);\n return c;\n}\nfunction bnDivideAndRemainder(b) {\n var d = nbi(),\n c = nbi();\n this.divRemTo(b, d, c);\n return new Array(d, c);\n}\nfunction bnpDMultiply(a) {\n this[this.t] = this.am(0, a - 1, this, 0, 0, this.t);\n ++this.t;\n this.clamp();\n}\nfunction bnpDAddOffset(b, a) {\n if (b == 0) {\n return;\n }\n while (this.t <= a) {\n this[this.t++] = 0;\n }\n this[a] += b;\n while (this[a] >= this.DV) {\n this[a] -= this.DV;\n if (++a >= this.t) {\n this[this.t++] = 0;\n }\n ++this[a];\n }\n}\nfunction NullExp() {}\nfunction nNop(a) {\n return a;\n}\nfunction nMulTo(a, c, b) {\n a.multiplyTo(c, b);\n}\nfunction nSqrTo(a, b) {\n a.squareTo(b);\n}\nNullExp.prototype.convert = nNop;\nNullExp.prototype.revert = nNop;\nNullExp.prototype.mulTo = nMulTo;\nNullExp.prototype.sqrTo = nSqrTo;\nfunction bnPow(a) {\n return this.exp(a, new NullExp());\n}\nfunction bnpMultiplyLowerTo(b, f, e) {\n var d = Math.min(this.t + b.t, f);\n e.s = 0;\n e.t = d;\n while (d > 0) {\n e[--d] = 0;\n }\n var c;\n for (c = e.t - this.t; d < c; ++d) {\n e[d + this.t] = this.am(0, b[d], e, d, 0, this.t);\n }\n for (c = Math.min(b.t, f); d < c; ++d) {\n this.am(0, b[d], e, d, 0, f - d);\n }\n e.clamp();\n}\nfunction bnpMultiplyUpperTo(b, e, d) {\n --e;\n var c = d.t = this.t + b.t - e;\n d.s = 0;\n while (--c >= 0) {\n d[c] = 0;\n }\n for (c = Math.max(e - this.t, 0); c < b.t; ++c) {\n d[this.t + c - e] = this.am(e - c, b[c], d, 0, 0, this.t + c - e);\n }\n d.clamp();\n d.drShiftTo(1, d);\n}\nfunction Barrett(a) {\n this.r2 = nbi();\n this.q3 = nbi();\n BigInteger.ONE.dlShiftTo(2 * a.t, this.r2);\n this.mu = this.r2.divide(a);\n this.m = a;\n}\nfunction barrettConvert(a) {\n if (a.s < 0 || a.t > 2 * this.m.t) {\n return a.mod(this.m);\n } else {\n if (a.compareTo(this.m) < 0) {\n return a;\n } else {\n var b = nbi();\n a.copyTo(b);\n this.reduce(b);\n return b;\n }\n }\n}\nfunction barrettRevert(a) {\n return a;\n}\nfunction barrettReduce(a) {\n a.drShiftTo(this.m.t - 1, this.r2);\n if (a.t > this.m.t + 1) {\n a.t = this.m.t + 1;\n a.clamp();\n }\n this.mu.multiplyUpperTo(this.r2, this.m.t + 1, this.q3);\n this.m.multiplyLowerTo(this.q3, this.m.t + 1, this.r2);\n while (a.compareTo(this.r2) < 0) {\n a.dAddOffset(1, this.m.t + 1);\n }\n a.subTo(this.r2, a);\n while (a.compareTo(this.m) >= 0) {\n a.subTo(this.m, a);\n }\n}\nfunction barrettSqrTo(a, b) {\n a.squareTo(b);\n this.reduce(b);\n}\nfunction barrettMulTo(a, c, b) {\n a.multiplyTo(c, b);\n this.reduce(b);\n}\nBarrett.prototype.convert = barrettConvert;\nBarrett.prototype.revert = barrettRevert;\nBarrett.prototype.reduce = barrettReduce;\nBarrett.prototype.mulTo = barrettMulTo;\nBarrett.prototype.sqrTo = barrettSqrTo;\nfunction bnModPow(q, f) {\n var o = q.bitLength(),\n h,\n b = nbv(1),\n v;\n if (o <= 0) {\n return b;\n } else {\n if (o < 18) {\n h = 1;\n } else {\n if (o < 48) {\n h = 3;\n } else {\n if (o < 144) {\n h = 4;\n } else {\n if (o < 768) {\n h = 5;\n } else {\n h = 6;\n }\n }\n }\n }\n }\n if (o < 8) {\n v = new Classic(f);\n } else {\n if (f.isEven()) {\n v = new Barrett(f);\n } else {\n v = new Montgomery(f);\n }\n }\n var p = new Array(),\n d = 3,\n s = h - 1,\n a = (1 << h) - 1;\n p[1] = v.convert(this);\n if (h > 1) {\n var A = nbi();\n v.sqrTo(p[1], A);\n while (d <= a) {\n p[d] = nbi();\n v.mulTo(A, p[d - 2], p[d]);\n d += 2;\n }\n }\n var l = q.t - 1,\n x,\n u = true,\n c = nbi(),\n y;\n o = nbits(q[l]) - 1;\n while (l >= 0) {\n if (o >= s) {\n x = q[l] >> o - s & a;\n } else {\n x = (q[l] & (1 << o + 1) - 1) << s - o;\n if (l > 0) {\n x |= q[l - 1] >> this.DB + o - s;\n }\n }\n d = h;\n while ((x & 1) == 0) {\n x >>= 1;\n --d;\n }\n if ((o -= d) < 0) {\n o += this.DB;\n --l;\n }\n if (u) {\n p[x].copyTo(b);\n u = false;\n } else {\n while (d > 1) {\n v.sqrTo(b, c);\n v.sqrTo(c, b);\n d -= 2;\n }\n if (d > 0) {\n v.sqrTo(b, c);\n } else {\n y = b;\n b = c;\n c = y;\n }\n v.mulTo(c, p[x], b);\n }\n while (l >= 0 && (q[l] & 1 << o) == 0) {\n v.sqrTo(b, c);\n y = b;\n b = c;\n c = y;\n if (--o < 0) {\n o = this.DB - 1;\n --l;\n }\n }\n }\n return v.revert(b);\n}\nfunction bnGCD(c) {\n var b = this.s < 0 ? this.negate() : this.clone();\n var h = c.s < 0 ? c.negate() : c.clone();\n if (b.compareTo(h) < 0) {\n var e = b;\n b = h;\n h = e;\n }\n var d = b.getLowestSetBit(),\n f = h.getLowestSetBit();\n if (f < 0) {\n return b;\n }\n if (d < f) {\n f = d;\n }\n if (f > 0) {\n b.rShiftTo(f, b);\n h.rShiftTo(f, h);\n }\n while (b.signum() > 0) {\n if ((d = b.getLowestSetBit()) > 0) {\n b.rShiftTo(d, b);\n }\n if ((d = h.getLowestSetBit()) > 0) {\n h.rShiftTo(d, h);\n }\n if (b.compareTo(h) >= 0) {\n b.subTo(h, b);\n b.rShiftTo(1, b);\n } else {\n h.subTo(b, h);\n h.rShiftTo(1, h);\n }\n }\n if (f > 0) {\n h.lShiftTo(f, h);\n }\n return h;\n}\nfunction bnpModInt(e) {\n if (e <= 0) {\n return 0;\n }\n var c = this.DV % e,\n b = this.s < 0 ? e - 1 : 0;\n if (this.t > 0) {\n if (c == 0) {\n b = this[0] % e;\n } else {\n for (var a = this.t - 1; a >= 0; --a) {\n b = (c * b + this[a]) % e;\n }\n }\n }\n return b;\n}\nfunction bnModInverse(f) {\n var j = f.isEven();\n if (this.isEven() && j || f.signum() == 0) {\n return BigInteger.ZERO;\n }\n var i = f.clone(),\n h = this.clone();\n var g = nbv(1),\n e = nbv(0),\n l = nbv(0),\n k = nbv(1);\n while (i.signum() != 0) {\n while (i.isEven()) {\n i.rShiftTo(1, i);\n if (j) {\n if (!g.isEven() || !e.isEven()) {\n g.addTo(this, g);\n e.subTo(f, e);\n }\n g.rShiftTo(1, g);\n } else {\n if (!e.isEven()) {\n e.subTo(f, e);\n }\n }\n e.rShiftTo(1, e);\n }\n while (h.isEven()) {\n h.rShiftTo(1, h);\n if (j) {\n if (!l.isEven() || !k.isEven()) {\n l.addTo(this, l);\n k.subTo(f, k);\n }\n l.rShiftTo(1, l);\n } else {\n if (!k.isEven()) {\n k.subTo(f, k);\n }\n }\n k.rShiftTo(1, k);\n }\n if (i.compareTo(h) >= 0) {\n i.subTo(h, i);\n if (j) {\n g.subTo(l, g);\n }\n e.subTo(k, e);\n } else {\n h.subTo(i, h);\n if (j) {\n l.subTo(g, l);\n }\n k.subTo(e, k);\n }\n }\n if (h.compareTo(BigInteger.ONE) != 0) {\n return BigInteger.ZERO;\n }\n if (k.compareTo(f) >= 0) {\n return k.subtract(f);\n }\n if (k.signum() < 0) {\n k.addTo(f, k);\n } else {\n return k;\n }\n if (k.signum() < 0) {\n return k.add(f);\n } else {\n return k;\n }\n}\nvar lowprimes = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701, 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997];\nvar lplim = (1 << 26) / lowprimes[lowprimes.length - 1];\nfunction bnIsProbablePrime(e) {\n var d,\n b = this.abs();\n if (b.t == 1 && b[0] <= lowprimes[lowprimes.length - 1]) {\n for (d = 0; d < lowprimes.length; ++d) {\n if (b[0] == lowprimes[d]) {\n return true;\n }\n }\n return false;\n }\n if (b.isEven()) {\n return false;\n }\n d = 1;\n while (d < lowprimes.length) {\n var a = lowprimes[d],\n c = d + 1;\n while (c < lowprimes.length && a < lplim) {\n a *= lowprimes[c++];\n }\n a = b.modInt(a);\n while (d < c) {\n if (a % lowprimes[d++] == 0) {\n return false;\n }\n }\n }\n return b.millerRabin(e);\n}\nfunction bnpMillerRabin(f) {\n var g = this.subtract(BigInteger.ONE);\n var c = g.getLowestSetBit();\n if (c <= 0) {\n return false;\n }\n var h = g.shiftRight(c);\n f = f + 1 >> 1;\n if (f > lowprimes.length) {\n f = lowprimes.length;\n }\n var b = nbi();\n for (var e = 0; e < f; ++e) {\n b.fromInt(lowprimes[Math.floor(Math.random() * lowprimes.length)]);\n var l = b.modPow(h, this);\n if (l.compareTo(BigInteger.ONE) != 0 && l.compareTo(g) != 0) {\n var d = 1;\n while (d++ < c && l.compareTo(g) != 0) {\n l = l.modPowInt(2, this);\n if (l.compareTo(BigInteger.ONE) == 0) {\n return false;\n }\n }\n if (l.compareTo(g) != 0) {\n return false;\n }\n }\n }\n return true;\n}\nBigInteger.prototype.chunkSize = bnpChunkSize;\nBigInteger.prototype.toRadix = bnpToRadix;\nBigInteger.prototype.fromRadix = bnpFromRadix;\nBigInteger.prototype.fromNumber = bnpFromNumber;\nBigInteger.prototype.bitwiseTo = bnpBitwiseTo;\nBigInteger.prototype.changeBit = bnpChangeBit;\nBigInteger.prototype.addTo = bnpAddTo;\nBigInteger.prototype.dMultiply = bnpDMultiply;\nBigInteger.prototype.dAddOffset = bnpDAddOffset;\nBigInteger.prototype.multiplyLowerTo = bnpMultiplyLowerTo;\nBigInteger.prototype.multiplyUpperTo = bnpMultiplyUpperTo;\nBigInteger.prototype.modInt = bnpModInt;\nBigInteger.prototype.millerRabin = bnpMillerRabin;\nBigInteger.prototype.clone = bnClone;\nBigInteger.prototype.intValue = bnIntValue;\nBigInteger.prototype.byteValue = bnByteValue;\nBigInteger.prototype.shortValue = bnShortValue;\nBigInteger.prototype.signum = bnSigNum;\nBigInteger.prototype.toByteArray = bnToByteArray;\nBigInteger.prototype.equals = bnEquals;\nBigInteger.prototype.min = bnMin;\nBigInteger.prototype.max = bnMax;\nBigInteger.prototype.and = bnAnd;\nBigInteger.prototype.or = bnOr;\nBigInteger.prototype.xor = bnXor;\nBigInteger.prototype.andNot = bnAndNot;\nBigInteger.prototype.not = bnNot;\nBigInteger.prototype.shiftLeft = bnShiftLeft;\nBigInteger.prototype.shiftRight = bnShiftRight;\nBigInteger.prototype.getLowestSetBit = bnGetLowestSetBit;\nBigInteger.prototype.bitCount = bnBitCount;\nBigInteger.prototype.testBit = bnTestBit;\nBigInteger.prototype.setBit = bnSetBit;\nBigInteger.prototype.clearBit = bnClearBit;\nBigInteger.prototype.flipBit = bnFlipBit;\nBigInteger.prototype.add = bnAdd;\nBigInteger.prototype.subtract = bnSubtract;\nBigInteger.prototype.multiply = bnMultiply;\nBigInteger.prototype.divide = bnDivide;\nBigInteger.prototype.remainder = bnRemainder;\nBigInteger.prototype.divideAndRemainder = bnDivideAndRemainder;\nBigInteger.prototype.modPow = bnModPow;\nBigInteger.prototype.modInverse = bnModInverse;\nBigInteger.prototype.pow = bnPow;\nBigInteger.prototype.gcd = bnGCD;\nBigInteger.prototype.isProbablePrime = bnIsProbablePrime;\nBigInteger.prototype.square = bnSquare;\n/*! (c) Tom Wu | http://www-cs-students.stanford.edu/~tjw/jsbn/\n */\nfunction Arcfour() {\n this.i = 0;\n this.j = 0;\n this.S = new Array();\n}\nfunction ARC4init(d) {\n var c, a, b;\n for (c = 0; c < 256; ++c) {\n this.S[c] = c;\n }\n a = 0;\n for (c = 0; c < 256; ++c) {\n a = a + this.S[c] + d[c % d.length] & 255;\n b = this.S[c];\n this.S[c] = this.S[a];\n this.S[a] = b;\n }\n this.i = 0;\n this.j = 0;\n}\nfunction ARC4next() {\n var a;\n this.i = this.i + 1 & 255;\n this.j = this.j + this.S[this.i] & 255;\n a = this.S[this.i];\n this.S[this.i] = this.S[this.j];\n this.S[this.j] = a;\n return this.S[a + this.S[this.i] & 255];\n}\nArcfour.prototype.init = ARC4init;\nArcfour.prototype.next = ARC4next;\nfunction prng_newstate() {\n return new Arcfour();\n}\nvar rng_psize = 256;\n/*! (c) Tom Wu | http://www-cs-students.stanford.edu/~tjw/jsbn/\n */\nvar rng_state;\nvar rng_pool;\nvar rng_pptr;\nfunction rng_seed_int(a) {\n rng_pool[rng_pptr++] ^= a & 255;\n rng_pool[rng_pptr++] ^= a >> 8 & 255;\n rng_pool[rng_pptr++] ^= a >> 16 & 255;\n rng_pool[rng_pptr++] ^= a >> 24 & 255;\n if (rng_pptr >= rng_psize) {\n rng_pptr -= rng_psize;\n }\n}\nfunction rng_seed_time() {\n rng_seed_int(new Date().getTime());\n}\nif (rng_pool == null) {\n rng_pool = new Array();\n rng_pptr = 0;\n var t;\n if (window !== undefined && (window.crypto !== undefined || window.msCrypto !== undefined)) {\n var crypto = window.crypto || window.msCrypto;\n if (crypto.getRandomValues) {\n var ua = new Uint8Array(32);\n crypto.getRandomValues(ua);\n for (t = 0; t < 32; ++t) {\n rng_pool[rng_pptr++] = ua[t];\n }\n } else {\n if (navigator.appName == \"Netscape\" && navigator.appVersion < \"5\") {\n var z = window.crypto.random(32);\n for (t = 0; t < z.length; ++t) {\n rng_pool[rng_pptr++] = z.charCodeAt(t) & 255;\n }\n }\n }\n }\n while (rng_pptr < rng_psize) {\n t = Math.floor(65536 * Math.random());\n rng_pool[rng_pptr++] = t >>> 8;\n rng_pool[rng_pptr++] = t & 255;\n }\n rng_pptr = 0;\n rng_seed_time();\n}\nfunction rng_get_byte() {\n if (rng_state == null) {\n rng_seed_time();\n rng_state = prng_newstate();\n rng_state.init(rng_pool);\n for (rng_pptr = 0; rng_pptr < rng_pool.length; ++rng_pptr) {\n rng_pool[rng_pptr] = 0;\n }\n rng_pptr = 0;\n }\n return rng_state.next();\n}\nfunction rng_get_bytes(b) {\n var a;\n for (a = 0; a < b.length; ++a) {\n b[a] = rng_get_byte();\n }\n}\nfunction SecureRandom() {}\nSecureRandom.prototype.nextBytes = rng_get_bytes;\n/*! (c) Tom Wu | http://www-cs-students.stanford.edu/~tjw/jsbn/\n */\nfunction parseBigInt(b, a) {\n return new BigInteger(b, a);\n}\nfunction linebrk(c, d) {\n var a = \"\";\n var b = 0;\n while (b + d < c.length) {\n a += c.substring(b, b + d) + \"\\n\";\n b += d;\n }\n return a + c.substring(b, c.length);\n}\nfunction byte2Hex(a) {\n if (a < 16) {\n return \"0\" + a.toString(16);\n } else {\n return a.toString(16);\n }\n}\nfunction pkcs1pad2(e, h) {\n if (h < e.length + 11) {\n throw \"Message too long for RSA\";\n return null;\n }\n var g = new Array();\n var d = e.length - 1;\n while (d >= 0 && h > 0) {\n var f = e.charCodeAt(d--);\n if (f < 128) {\n g[--h] = f;\n } else {\n if (f > 127 && f < 2048) {\n g[--h] = f & 63 | 128;\n g[--h] = f >> 6 | 192;\n } else {\n g[--h] = f & 63 | 128;\n g[--h] = f >> 6 & 63 | 128;\n g[--h] = f >> 12 | 224;\n }\n }\n }\n g[--h] = 0;\n var b = new SecureRandom();\n var a = new Array();\n while (h > 2) {\n a[0] = 0;\n while (a[0] == 0) {\n b.nextBytes(a);\n }\n g[--h] = a[0];\n }\n g[--h] = 2;\n g[--h] = 0;\n return new BigInteger(g);\n}\nfunction oaep_mgf1_arr(c, a, e) {\n var b = \"\",\n d = 0;\n while (b.length < a) {\n b += e(String.fromCharCode.apply(String, c.concat([(d & 4278190080) >> 24, (d & 16711680) >> 16, (d & 65280) >> 8, d & 255])));\n d += 1;\n }\n return b;\n}\nfunction oaep_pad(q, a, f, l) {\n var c = KJUR.crypto.MessageDigest;\n var o = KJUR.crypto.Util;\n var b = null;\n if (!f) {\n f = \"sha1\";\n }\n if (typeof f === \"string\") {\n b = c.getCanonicalAlgName(f);\n l = c.getHashLength(b);\n f = function (i) {\n return hextorstr(o.hashHex(rstrtohex(i), b));\n };\n }\n if (q.length + 2 * l + 2 > a) {\n throw \"Message too long for RSA\";\n }\n var k = \"\",\n e;\n for (e = 0; e < a - q.length - 2 * l - 2; e += 1) {\n k += \"\\x00\";\n }\n var h = f(\"\") + k + \"\\x01\" + q;\n var g = new Array(l);\n new SecureRandom().nextBytes(g);\n var j = oaep_mgf1_arr(g, h.length, f);\n var p = [];\n for (e = 0; e < h.length; e += 1) {\n p[e] = h.charCodeAt(e) ^ j.charCodeAt(e);\n }\n var m = oaep_mgf1_arr(p, g.length, f);\n var d = [0];\n for (e = 0; e < g.length; e += 1) {\n d[e + 1] = g[e] ^ m.charCodeAt(e);\n }\n return new BigInteger(d.concat(p));\n}\nfunction RSAKey() {\n this.n = null;\n this.e = 0;\n this.d = null;\n this.p = null;\n this.q = null;\n this.dmp1 = null;\n this.dmq1 = null;\n this.coeff = null;\n}\nfunction RSASetPublic(b, a) {\n this.isPublic = true;\n this.isPrivate = false;\n if (typeof b !== \"string\") {\n this.n = b;\n this.e = a;\n } else {\n if (b != null && a != null && b.length > 0 && a.length > 0) {\n this.n = parseBigInt(b, 16);\n this.e = parseInt(a, 16);\n } else {\n throw \"Invalid RSA public key\";\n }\n }\n}\nfunction RSADoPublic(a) {\n return a.modPowInt(this.e, this.n);\n}\nRSAKey.prototype.doPublic = RSADoPublic;\nRSAKey.prototype.setPublic = RSASetPublic;\nRSAKey.prototype.type = \"RSA\";\n/*! (c) Tom Wu, Kenji Urushima | http://www-cs-students.stanford.edu/~tjw/jsbn/\n */\nfunction pkcs1unpad2(g, j) {\n var a = g.toByteArray();\n var f = 0;\n while (f < a.length && a[f] == 0) {\n ++f;\n }\n if (a.length - f != j - 1 || a[f] != 2) {\n return null;\n }\n ++f;\n while (a[f] != 0) {\n if (++f >= a.length) {\n return null;\n }\n }\n var e = \"\";\n while (++f < a.length) {\n var h = a[f] & 255;\n if (h < 128) {\n e += String.fromCharCode(h);\n } else {\n if (h > 191 && h < 224) {\n e += String.fromCharCode((h & 31) << 6 | a[f + 1] & 63);\n ++f;\n } else {\n e += String.fromCharCode((h & 15) << 12 | (a[f + 1] & 63) << 6 | a[f + 2] & 63);\n f += 2;\n }\n }\n }\n return e;\n}\nfunction oaep_mgf1_str(c, a, e) {\n var b = \"\",\n d = 0;\n while (b.length < a) {\n b += e(c + String.fromCharCode.apply(String, [(d & 4278190080) >> 24, (d & 16711680) >> 16, (d & 65280) >> 8, d & 255]));\n d += 1;\n }\n return b;\n}\nfunction oaep_unpad(o, b, g, p) {\n var e = KJUR.crypto.MessageDigest;\n var r = KJUR.crypto.Util;\n var c = null;\n if (!g) {\n g = \"sha1\";\n }\n if (typeof g === \"string\") {\n c = e.getCanonicalAlgName(g);\n p = e.getHashLength(c);\n g = function (d) {\n return hextorstr(r.hashHex(rstrtohex(d), c));\n };\n }\n o = o.toByteArray();\n var h;\n for (h = 0; h < o.length; h += 1) {\n o[h] &= 255;\n }\n while (o.length < b) {\n o.unshift(0);\n }\n o = String.fromCharCode.apply(String, o);\n if (o.length < 2 * p + 2) {\n throw \"Cipher too short\";\n }\n var f = o.substr(1, p);\n var s = o.substr(p + 1);\n var q = oaep_mgf1_str(s, p, g);\n var k = [],\n h;\n for (h = 0; h < f.length; h += 1) {\n k[h] = f.charCodeAt(h) ^ q.charCodeAt(h);\n }\n var l = oaep_mgf1_str(String.fromCharCode.apply(String, k), o.length - p, g);\n var j = [];\n for (h = 0; h < s.length; h += 1) {\n j[h] = s.charCodeAt(h) ^ l.charCodeAt(h);\n }\n j = String.fromCharCode.apply(String, j);\n if (j.substr(0, p) !== g(\"\")) {\n throw \"Hash mismatch\";\n }\n j = j.substr(p);\n var a = j.indexOf(\"\\x01\");\n var m = a != -1 ? j.substr(0, a).lastIndexOf(\"\\x00\") : -1;\n if (m + 1 != a) {\n throw \"Malformed data\";\n }\n return j.substr(a + 1);\n}\nfunction RSASetPrivate(c, a, b) {\n this.isPrivate = true;\n if (typeof c !== \"string\") {\n this.n = c;\n this.e = a;\n this.d = b;\n } else {\n if (c != null && a != null && c.length > 0 && a.length > 0) {\n this.n = parseBigInt(c, 16);\n this.e = parseInt(a, 16);\n this.d = parseBigInt(b, 16);\n } else {\n throw \"Invalid RSA private key\";\n }\n }\n}\nfunction RSASetPrivateEx(g, d, e, c, b, a, h, f) {\n this.isPrivate = true;\n this.isPublic = false;\n if (g == null) {\n throw \"RSASetPrivateEx N == null\";\n }\n if (d == null) {\n throw \"RSASetPrivateEx E == null\";\n }\n if (g.length == 0) {\n throw \"RSASetPrivateEx N.length == 0\";\n }\n if (d.length == 0) {\n throw \"RSASetPrivateEx E.length == 0\";\n }\n if (g != null && d != null && g.length > 0 && d.length > 0) {\n this.n = parseBigInt(g, 16);\n this.e = parseInt(d, 16);\n this.d = parseBigInt(e, 16);\n this.p = parseBigInt(c, 16);\n this.q = parseBigInt(b, 16);\n this.dmp1 = parseBigInt(a, 16);\n this.dmq1 = parseBigInt(h, 16);\n this.coeff = parseBigInt(f, 16);\n } else {\n throw \"Invalid RSA private key in RSASetPrivateEx\";\n }\n}\nfunction RSAGenerate(b, l) {\n var a = new SecureRandom();\n var g = b >> 1;\n this.e = parseInt(l, 16);\n var c = new BigInteger(l, 16);\n var d = b / 2 - 100;\n var k = BigInteger.ONE.shiftLeft(d);\n for (;;) {\n for (;;) {\n this.p = new BigInteger(b - g, 1, a);\n if (this.p.subtract(BigInteger.ONE).gcd(c).compareTo(BigInteger.ONE) == 0 && this.p.isProbablePrime(10)) {\n break;\n }\n }\n for (;;) {\n this.q = new BigInteger(g, 1, a);\n if (this.q.subtract(BigInteger.ONE).gcd(c).compareTo(BigInteger.ONE) == 0 && this.q.isProbablePrime(10)) {\n break;\n }\n }\n if (this.p.compareTo(this.q) <= 0) {\n var j = this.p;\n this.p = this.q;\n this.q = j;\n }\n var h = this.q.subtract(this.p).abs();\n if (h.bitLength() < d || h.compareTo(k) <= 0) {\n continue;\n }\n var i = this.p.subtract(BigInteger.ONE);\n var e = this.q.subtract(BigInteger.ONE);\n var f = i.multiply(e);\n if (f.gcd(c).compareTo(BigInteger.ONE) == 0) {\n this.n = this.p.multiply(this.q);\n if (this.n.bitLength() == b) {\n this.d = c.modInverse(f);\n this.dmp1 = this.d.mod(i);\n this.dmq1 = this.d.mod(e);\n this.coeff = this.q.modInverse(this.p);\n break;\n }\n }\n }\n this.isPrivate = true;\n}\nfunction RSADoPrivate(a) {\n if (this.p == null || this.q == null) {\n return a.modPow(this.d, this.n);\n }\n var c = a.mod(this.p).modPow(this.dmp1, this.p);\n var b = a.mod(this.q).modPow(this.dmq1, this.q);\n while (c.compareTo(b) < 0) {\n c = c.add(this.p);\n }\n return c.subtract(b).multiply(this.coeff).mod(this.p).multiply(this.q).add(b);\n}\nRSAKey.prototype.doPrivate = RSADoPrivate;\nRSAKey.prototype.setPrivate = RSASetPrivate;\nRSAKey.prototype.setPrivateEx = RSASetPrivateEx;\nRSAKey.prototype.generate = RSAGenerate;\n/*! (c) Tom Wu | http://www-cs-students.stanford.edu/~tjw/jsbn/\n */\nfunction ECFieldElementFp(b, a) {\n this.x = a;\n this.q = b;\n}\nfunction feFpEquals(a) {\n if (a == this) {\n return true;\n }\n return this.q.equals(a.q) && this.x.equals(a.x);\n}\nfunction feFpToBigInteger() {\n return this.x;\n}\nfunction feFpNegate() {\n return new ECFieldElementFp(this.q, this.x.negate().mod(this.q));\n}\nfunction feFpAdd(a) {\n return new ECFieldElementFp(this.q, this.x.add(a.toBigInteger()).mod(this.q));\n}\nfunction feFpSubtract(a) {\n return new ECFieldElementFp(this.q, this.x.subtract(a.toBigInteger()).mod(this.q));\n}\nfunction feFpMultiply(a) {\n return new ECFieldElementFp(this.q, this.x.multiply(a.toBigInteger()).mod(this.q));\n}\nfunction feFpSquare() {\n return new ECFieldElementFp(this.q, this.x.square().mod(this.q));\n}\nfunction feFpDivide(a) {\n return new ECFieldElementFp(this.q, this.x.multiply(a.toBigInteger().modInverse(this.q)).mod(this.q));\n}\nECFieldElementFp.prototype.equals = feFpEquals;\nECFieldElementFp.prototype.toBigInteger = feFpToBigInteger;\nECFieldElementFp.prototype.negate = feFpNegate;\nECFieldElementFp.prototype.add = feFpAdd;\nECFieldElementFp.prototype.subtract = feFpSubtract;\nECFieldElementFp.prototype.multiply = feFpMultiply;\nECFieldElementFp.prototype.square = feFpSquare;\nECFieldElementFp.prototype.divide = feFpDivide;\nECFieldElementFp.prototype.sqrt = function () {\n return new ECFieldElementFp(this.q, this.x.sqrt().mod(this.q));\n};\nfunction ECPointFp(c, a, d, b) {\n this.curve = c;\n this.x = a;\n this.y = d;\n if (b == null) {\n this.z = BigInteger.ONE;\n } else {\n this.z = b;\n }\n this.zinv = null;\n}\nfunction pointFpGetX() {\n if (this.zinv == null) {\n this.zinv = this.z.modInverse(this.curve.q);\n }\n return this.curve.fromBigInteger(this.x.toBigInteger().multiply(this.zinv).mod(this.curve.q));\n}\nfunction pointFpGetY() {\n if (this.zinv == null) {\n this.zinv = this.z.modInverse(this.curve.q);\n }\n return this.curve.fromBigInteger(this.y.toBigInteger().multiply(this.zinv).mod(this.curve.q));\n}\nfunction pointFpEquals(a) {\n if (a == this) {\n return true;\n }\n if (this.isInfinity()) {\n return a.isInfinity();\n }\n if (a.isInfinity()) {\n return this.isInfinity();\n }\n var c, b;\n c = a.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(a.z)).mod(this.curve.q);\n if (!c.equals(BigInteger.ZERO)) {\n return false;\n }\n b = a.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(a.z)).mod(this.curve.q);\n return b.equals(BigInteger.ZERO);\n}\nfunction pointFpIsInfinity() {\n if (this.x == null && this.y == null) {\n return true;\n }\n return this.z.equals(BigInteger.ZERO) && !this.y.toBigInteger().equals(BigInteger.ZERO);\n}\nfunction pointFpNegate() {\n return new ECPointFp(this.curve, this.x, this.y.negate(), this.z);\n}\nfunction pointFpAdd(l) {\n if (this.isInfinity()) {\n return l;\n }\n if (l.isInfinity()) {\n return this;\n }\n var p = l.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(l.z)).mod(this.curve.q);\n var o = l.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(l.z)).mod(this.curve.q);\n if (BigInteger.ZERO.equals(o)) {\n if (BigInteger.ZERO.equals(p)) {\n return this.twice();\n }\n return this.curve.getInfinity();\n }\n var j = new BigInteger(\"3\");\n var e = this.x.toBigInteger();\n var n = this.y.toBigInteger();\n var c = l.x.toBigInteger();\n var k = l.y.toBigInteger();\n var m = o.square();\n var i = m.multiply(o);\n var d = e.multiply(m);\n var g = p.square().multiply(this.z);\n var a = g.subtract(d.shiftLeft(1)).multiply(l.z).subtract(i).multiply(o).mod(this.curve.q);\n var h = d.multiply(j).multiply(p).subtract(n.multiply(i)).subtract(g.multiply(p)).multiply(l.z).add(p.multiply(i)).mod(this.curve.q);\n var f = i.multiply(this.z).multiply(l.z).mod(this.curve.q);\n return new ECPointFp(this.curve, this.curve.fromBigInteger(a), this.curve.fromBigInteger(h), f);\n}\nfunction pointFpTwice() {\n if (this.isInfinity()) {\n return this;\n }\n if (this.y.toBigInteger().signum() == 0) {\n return this.curve.getInfinity();\n }\n var g = new BigInteger(\"3\");\n var c = this.x.toBigInteger();\n var h = this.y.toBigInteger();\n var e = h.multiply(this.z);\n var j = e.multiply(h).mod(this.curve.q);\n var i = this.curve.a.toBigInteger();\n var k = c.square().multiply(g);\n if (!BigInteger.ZERO.equals(i)) {\n k = k.add(this.z.square().multiply(i));\n }\n k = k.mod(this.curve.q);\n var b = k.square().subtract(c.shiftLeft(3).multiply(j)).shiftLeft(1).multiply(e).mod(this.curve.q);\n var f = k.multiply(g).multiply(c).subtract(j.shiftLeft(1)).shiftLeft(2).multiply(j).subtract(k.square().multiply(k)).mod(this.curve.q);\n var d = e.square().multiply(e).shiftLeft(3).mod(this.curve.q);\n return new ECPointFp(this.curve, this.curve.fromBigInteger(b), this.curve.fromBigInteger(f), d);\n}\nfunction pointFpMultiply(d) {\n if (this.isInfinity()) {\n return this;\n }\n if (d.signum() == 0) {\n return this.curve.getInfinity();\n }\n var m = d;\n var l = m.multiply(new BigInteger(\"3\"));\n var b = this.negate();\n var j = this;\n var q = this.curve.q.subtract(d);\n var o = q.multiply(new BigInteger(\"3\"));\n var c = new ECPointFp(this.curve, this.x, this.y);\n var a = c.negate();\n var g;\n for (g = l.bitLength() - 2; g > 0; --g) {\n j = j.twice();\n var n = l.testBit(g);\n var f = m.testBit(g);\n if (n != f) {\n j = j.add(n ? this : b);\n }\n }\n for (g = o.bitLength() - 2; g > 0; --g) {\n c = c.twice();\n var p = o.testBit(g);\n var r = q.testBit(g);\n if (p != r) {\n c = c.add(p ? c : a);\n }\n }\n return j;\n}\nfunction pointFpMultiplyTwo(c, a, b) {\n var d;\n if (c.bitLength() > b.bitLength()) {\n d = c.bitLength() - 1;\n } else {\n d = b.bitLength() - 1;\n }\n var f = this.curve.getInfinity();\n var e = this.add(a);\n while (d >= 0) {\n f = f.twice();\n if (c.testBit(d)) {\n if (b.testBit(d)) {\n f = f.add(e);\n } else {\n f = f.add(this);\n }\n } else {\n if (b.testBit(d)) {\n f = f.add(a);\n }\n }\n --d;\n }\n return f;\n}\nECPointFp.prototype.getX = pointFpGetX;\nECPointFp.prototype.getY = pointFpGetY;\nECPointFp.prototype.equals = pointFpEquals;\nECPointFp.prototype.isInfinity = pointFpIsInfinity;\nECPointFp.prototype.negate = pointFpNegate;\nECPointFp.prototype.add = pointFpAdd;\nECPointFp.prototype.twice = pointFpTwice;\nECPointFp.prototype.multiply = pointFpMultiply;\nECPointFp.prototype.multiplyTwo = pointFpMultiplyTwo;\nfunction ECCurveFp(e, d, c) {\n this.q = e;\n this.a = this.fromBigInteger(d);\n this.b = this.fromBigInteger(c);\n this.infinity = new ECPointFp(this, null, null);\n}\nfunction curveFpGetQ() {\n return this.q;\n}\nfunction curveFpGetA() {\n return this.a;\n}\nfunction curveFpGetB() {\n return this.b;\n}\nfunction curveFpEquals(a) {\n if (a == this) {\n return true;\n }\n return this.q.equals(a.q) && this.a.equals(a.a) && this.b.equals(a.b);\n}\nfunction curveFpGetInfinity() {\n return this.infinity;\n}\nfunction curveFpFromBigInteger(a) {\n return new ECFieldElementFp(this.q, a);\n}\nfunction curveFpDecodePointHex(m) {\n switch (parseInt(m.substr(0, 2), 16)) {\n case 0:\n return this.infinity;\n case 2:\n case 3:\n var c = m.substr(0, 2);\n var l = m.substr(2);\n var j = this.fromBigInteger(new BigInteger(k, 16));\n var i = this.getA();\n var h = this.getB();\n var e = j.square().add(i).multiply(j).add(h);\n var g = e.sqrt();\n if (c == \"03\") {\n g = g.negate();\n }\n return new ECPointFp(this, j, g);\n case 4:\n case 6:\n case 7:\n var d = (m.length - 2) / 2;\n var k = m.substr(2, d);\n var f = m.substr(d + 2, d);\n return new ECPointFp(this, this.fromBigInteger(new BigInteger(k, 16)), this.fromBigInteger(new BigInteger(f, 16)));\n default:\n return null;\n }\n}\nECCurveFp.prototype.getQ = curveFpGetQ;\nECCurveFp.prototype.getA = curveFpGetA;\nECCurveFp.prototype.getB = curveFpGetB;\nECCurveFp.prototype.equals = curveFpEquals;\nECCurveFp.prototype.getInfinity = curveFpGetInfinity;\nECCurveFp.prototype.fromBigInteger = curveFpFromBigInteger;\nECCurveFp.prototype.decodePointHex = curveFpDecodePointHex;\n/*! (c) Stefan Thomas | https://github.com/bitcoinjs/bitcoinjs-lib\n */\nECFieldElementFp.prototype.getByteLength = function () {\n return Math.floor((this.toBigInteger().bitLength() + 7) / 8);\n};\nECPointFp.prototype.getEncoded = function (c) {\n var d = function (h, f) {\n var g = h.toByteArrayUnsigned();\n if (f < g.length) {\n g = g.slice(g.length - f);\n } else {\n while (f > g.length) {\n g.unshift(0);\n }\n }\n return g;\n };\n var a = this.getX().toBigInteger();\n var e = this.getY().toBigInteger();\n var b = d(a, 32);\n if (c) {\n if (e.isEven()) {\n b.unshift(2);\n } else {\n b.unshift(3);\n }\n } else {\n b.unshift(4);\n b = b.concat(d(e, 32));\n }\n return b;\n};\nECPointFp.decodeFrom = function (g, c) {\n var f = c[0];\n var e = c.length - 1;\n var d = c.slice(1, 1 + e / 2);\n var b = c.slice(1 + e / 2, 1 + e);\n d.unshift(0);\n b.unshift(0);\n var a = new BigInteger(d);\n var h = new BigInteger(b);\n return new ECPointFp(g, g.fromBigInteger(a), g.fromBigInteger(h));\n};\nECPointFp.decodeFromHex = function (g, c) {\n var f = c.substr(0, 2);\n var e = c.length - 2;\n var d = c.substr(2, e / 2);\n var b = c.substr(2 + e / 2, e / 2);\n var a = new BigInteger(d, 16);\n var h = new BigInteger(b, 16);\n return new ECPointFp(g, g.fromBigInteger(a), g.fromBigInteger(h));\n};\nECPointFp.prototype.add2D = function (c) {\n if (this.isInfinity()) {\n return c;\n }\n if (c.isInfinity()) {\n return this;\n }\n if (this.x.equals(c.x)) {\n if (this.y.equals(c.y)) {\n return this.twice();\n }\n return this.curve.getInfinity();\n }\n var g = c.x.subtract(this.x);\n var e = c.y.subtract(this.y);\n var a = e.divide(g);\n var d = a.square().subtract(this.x).subtract(c.x);\n var f = a.multiply(this.x.subtract(d)).subtract(this.y);\n return new ECPointFp(this.curve, d, f);\n};\nECPointFp.prototype.twice2D = function () {\n if (this.isInfinity()) {\n return this;\n }\n if (this.y.toBigInteger().signum() == 0) {\n return this.curve.getInfinity();\n }\n var b = this.curve.fromBigInteger(BigInteger.valueOf(2));\n var e = this.curve.fromBigInteger(BigInteger.valueOf(3));\n var a = this.x.square().multiply(e).add(this.curve.a).divide(this.y.multiply(b));\n var c = a.square().subtract(this.x.multiply(b));\n var d = a.multiply(this.x.subtract(c)).subtract(this.y);\n return new ECPointFp(this.curve, c, d);\n};\nECPointFp.prototype.multiply2D = function (b) {\n if (this.isInfinity()) {\n return this;\n }\n if (b.signum() == 0) {\n return this.curve.getInfinity();\n }\n var g = b;\n var f = g.multiply(new BigInteger(\"3\"));\n var l = this.negate();\n var d = this;\n var c;\n for (c = f.bitLength() - 2; c > 0; --c) {\n d = d.twice();\n var a = f.testBit(c);\n var j = g.testBit(c);\n if (a != j) {\n d = d.add2D(a ? this : l);\n }\n }\n return d;\n};\nECPointFp.prototype.isOnCurve = function () {\n var d = this.getX().toBigInteger();\n var i = this.getY().toBigInteger();\n var f = this.curve.getA().toBigInteger();\n var c = this.curve.getB().toBigInteger();\n var h = this.curve.getQ();\n var e = i.multiply(i).mod(h);\n var g = d.multiply(d).multiply(d).add(f.multiply(d)).add(c).mod(h);\n return e.equals(g);\n};\nECPointFp.prototype.toString = function () {\n return \"(\" + this.getX().toBigInteger().toString() + \",\" + this.getY().toBigInteger().toString() + \")\";\n};\nECPointFp.prototype.validate = function () {\n var c = this.curve.getQ();\n if (this.isInfinity()) {\n throw new Error(\"Point is at infinity.\");\n }\n var a = this.getX().toBigInteger();\n var b = this.getY().toBigInteger();\n if (a.compareTo(BigInteger.ONE) < 0 || a.compareTo(c.subtract(BigInteger.ONE)) > 0) {\n throw new Error(\"x coordinate out of bounds\");\n }\n if (b.compareTo(BigInteger.ONE) < 0 || b.compareTo(c.subtract(BigInteger.ONE)) > 0) {\n throw new Error(\"y coordinate out of bounds\");\n }\n if (!this.isOnCurve()) {\n throw new Error(\"Point is not on the curve.\");\n }\n if (this.multiply(c).isInfinity()) {\n throw new Error(\"Point is not a scalar multiple of G.\");\n }\n return true;\n};\n/*! Mike Samuel (c) 2009 | code.google.com/p/json-sans-eval\n */\nvar jsonParse = function () {\n var e = \"(?:-?\\\\b(?:0|[1-9][0-9]*)(?:\\\\.[0-9]+)?(?:[eE][+-]?[0-9]+)?\\\\b)\";\n var j = '(?:[^\\\\0-\\\\x08\\\\x0a-\\\\x1f\"\\\\\\\\]|\\\\\\\\(?:[\"/\\\\\\\\bfnrt]|u[0-9A-Fa-f]{4}))';\n var i = '(?:\"' + j + '*\")';\n var d = new RegExp(\"(?:false|true|null|[\\\\{\\\\}\\\\[\\\\]]|\" + e + \"|\" + i + \")\", \"g\");\n var k = new RegExp(\"\\\\\\\\(?:([^u])|u(.{4}))\", \"g\");\n var g = {\n '\"': '\"',\n \"/\": \"/\",\n \"\\\\\": \"\\\\\",\n b: \"\\b\",\n f: \"\\f\",\n n: \"\\n\",\n r: \"\\r\",\n t: \"\\t\"\n };\n function h(l, m, n) {\n return m ? g[m] : String.fromCharCode(parseInt(n, 16));\n }\n var c = new String(\"\");\n var a = \"\\\\\";\n var f = {\n \"{\": Object,\n \"[\": Array\n };\n var b = Object.hasOwnProperty;\n return function (u, q) {\n var p = u.match(d);\n var x;\n var v = p[0];\n var l = false;\n if (\"{\" === v) {\n x = {};\n } else {\n if (\"[\" === v) {\n x = [];\n } else {\n x = [];\n l = true;\n }\n }\n var t;\n var r = [x];\n for (var o = 1 - l, m = p.length; o < m; ++o) {\n v = p[o];\n var w;\n switch (v.charCodeAt(0)) {\n default:\n w = r[0];\n w[t || w.length] = +v;\n t = void 0;\n break;\n case 34:\n v = v.substring(1, v.length - 1);\n if (v.indexOf(a) !== -1) {\n v = v.replace(k, h);\n }\n w = r[0];\n if (!t) {\n if (w instanceof Array) {\n t = w.length;\n } else {\n t = v || c;\n break;\n }\n }\n w[t] = v;\n t = void 0;\n break;\n case 91:\n w = r[0];\n r.unshift(w[t || w.length] = []);\n t = void 0;\n break;\n case 93:\n r.shift();\n break;\n case 102:\n w = r[0];\n w[t || w.length] = false;\n t = void 0;\n break;\n case 110:\n w = r[0];\n w[t || w.length] = null;\n t = void 0;\n break;\n case 116:\n w = r[0];\n w[t || w.length] = true;\n t = void 0;\n break;\n case 123:\n w = r[0];\n r.unshift(w[t || w.length] = {});\n t = void 0;\n break;\n case 125:\n r.shift();\n break;\n }\n }\n if (l) {\n if (r.length !== 1) {\n throw new Error();\n }\n x = x[0];\n } else {\n if (r.length) {\n throw new Error();\n }\n }\n if (q) {\n var s = function (C, B) {\n var D = C[B];\n if (D && typeof D === \"object\") {\n var n = null;\n for (var z in D) {\n if (b.call(D, z) && D !== C) {\n var y = s(D, z);\n if (y !== void 0) {\n D[z] = y;\n } else {\n if (!n) {\n n = [];\n }\n n.push(z);\n }\n }\n }\n if (n) {\n for (var A = n.length; --A >= 0;) {\n delete D[n[A]];\n }\n }\n }\n return q.call(C, B, D);\n };\n x = s({\n \"\": x\n }, \"\");\n }\n return x;\n };\n}();\nif (typeof KJUR == \"undefined\" || !KJUR) {\n KJUR = {};\n}\nif (typeof KJUR.asn1 == \"undefined\" || !KJUR.asn1) {\n KJUR.asn1 = {};\n}\nKJUR.asn1.ASN1Util = new function () {\n this.integerToByteHex = function (a) {\n var b = a.toString(16);\n if (b.length % 2 == 1) {\n b = \"0\" + b;\n }\n return b;\n };\n this.bigIntToMinTwosComplementsHex = function (a) {\n return twoscompl(a);\n };\n this.getPEMStringFromHex = function (a, b) {\n return hextopem(a, b);\n };\n this.newObject = function (k) {\n var F = KJUR,\n o = F.asn1,\n v = o.ASN1Object,\n B = o.DERBoolean,\n e = o.DERInteger,\n t = o.DERBitString,\n h = o.DEROctetString,\n x = o.DERNull,\n y = o.DERObjectIdentifier,\n m = o.DEREnumerated,\n g = o.DERUTF8String,\n f = o.DERNumericString,\n A = o.DERPrintableString,\n w = o.DERTeletexString,\n q = o.DERIA5String,\n E = o.DERUTCTime,\n j = o.DERGeneralizedTime,\n b = o.DERVisibleString,\n l = o.DERBMPString,\n n = o.DERSequence,\n c = o.DERSet,\n s = o.DERTaggedObject,\n p = o.ASN1Util.newObject;\n if (k instanceof o.ASN1Object) {\n return k;\n }\n var u = Object.keys(k);\n if (u.length != 1) {\n throw new Error(\"key of param shall be only one.\");\n }\n var H = u[0];\n if (\":asn1:bool:int:bitstr:octstr:null:oid:enum:utf8str:numstr:prnstr:telstr:ia5str:utctime:gentime:visstr:bmpstr:seq:set:tag:\".indexOf(\":\" + H + \":\") == -1) {\n throw new Error(\"undefined key: \" + H);\n }\n if (H == \"bool\") {\n return new B(k[H]);\n }\n if (H == \"int\") {\n return new e(k[H]);\n }\n if (H == \"bitstr\") {\n return new t(k[H]);\n }\n if (H == \"octstr\") {\n return new h(k[H]);\n }\n if (H == \"null\") {\n return new x(k[H]);\n }\n if (H == \"oid\") {\n return new y(k[H]);\n }\n if (H == \"enum\") {\n return new m(k[H]);\n }\n if (H == \"utf8str\") {\n return new g(k[H]);\n }\n if (H == \"numstr\") {\n return new f(k[H]);\n }\n if (H == \"prnstr\") {\n return new A(k[H]);\n }\n if (H == \"telstr\") {\n return new w(k[H]);\n }\n if (H == \"ia5str\") {\n return new q(k[H]);\n }\n if (H == \"utctime\") {\n return new E(k[H]);\n }\n if (H == \"gentime\") {\n return new j(k[H]);\n }\n if (H == \"visstr\") {\n return new b(k[H]);\n }\n if (H == \"bmpstr\") {\n return new l(k[H]);\n }\n if (H == \"asn1\") {\n return new v(k[H]);\n }\n if (H == \"seq\") {\n var d = k[H];\n var G = [];\n for (var z = 0; z < d.length; z++) {\n var D = p(d[z]);\n G.push(D);\n }\n return new n({\n array: G\n });\n }\n if (H == \"set\") {\n var d = k[H];\n var G = [];\n for (var z = 0; z < d.length; z++) {\n var D = p(d[z]);\n G.push(D);\n }\n return new c({\n array: G\n });\n }\n if (H == \"tag\") {\n var C = k[H];\n if (Object.prototype.toString.call(C) === \"[object Array]\" && C.length == 3) {\n var r = p(C[2]);\n return new s({\n tag: C[0],\n explicit: C[1],\n obj: r\n });\n } else {\n return new s(C);\n }\n }\n };\n this.jsonToASN1HEX = function (b) {\n var a = this.newObject(b);\n return a.tohex();\n };\n}();\nKJUR.asn1.ASN1Util.oidHexToInt = function (a) {\n var j = \"\";\n var k = parseInt(a.substr(0, 2), 16);\n var d = Math.floor(k / 40);\n var c = k % 40;\n var j = d + \".\" + c;\n var e = \"\";\n for (var f = 2; f < a.length; f += 2) {\n var g = parseInt(a.substr(f, 2), 16);\n var h = (\"00000000\" + g.toString(2)).slice(-8);\n e = e + h.substr(1, 7);\n if (h.substr(0, 1) == \"0\") {\n var b = new BigInteger(e, 2);\n j = j + \".\" + b.toString(10);\n e = \"\";\n }\n }\n return j;\n};\nKJUR.asn1.ASN1Util.oidIntToHex = function (f) {\n var e = function (a) {\n var k = a.toString(16);\n if (k.length == 1) {\n k = \"0\" + k;\n }\n return k;\n };\n var d = function (o) {\n var n = \"\";\n var k = new BigInteger(o, 10);\n var a = k.toString(2);\n var l = 7 - a.length % 7;\n if (l == 7) {\n l = 0;\n }\n var q = \"\";\n for (var m = 0; m < l; m++) {\n q += \"0\";\n }\n a = q + a;\n for (var m = 0; m < a.length - 1; m += 7) {\n var p = a.substr(m, 7);\n if (m != a.length - 7) {\n p = \"1\" + p;\n }\n n += e(parseInt(p, 2));\n }\n return n;\n };\n if (!f.match(/^[0-9.]+$/)) {\n throw \"malformed oid string: \" + f;\n }\n var g = \"\";\n var b = f.split(\".\");\n var j = parseInt(b[0]) * 40 + parseInt(b[1]);\n g += e(j);\n b.splice(0, 2);\n for (var c = 0; c < b.length; c++) {\n g += d(b[c]);\n }\n return g;\n};\nKJUR.asn1.ASN1Object = function (e) {\n var c = true;\n var b = null;\n var d = \"00\";\n var f = \"00\";\n var a = \"\";\n this.params = null;\n this.getLengthHexFromValue = function () {\n if (typeof this.hV == \"undefined\" || this.hV == null) {\n throw new Error(\"this.hV is null or undefined\");\n }\n if (this.hV.length % 2 == 1) {\n throw new Error(\"value hex must be even length: n=\" + a.length + \",v=\" + this.hV);\n }\n var j = this.hV.length / 2;\n var i = j.toString(16);\n if (i.length % 2 == 1) {\n i = \"0\" + i;\n }\n if (j < 128) {\n return i;\n } else {\n var h = i.length / 2;\n if (h > 15) {\n throw new Error(\"ASN.1 length too long to represent by 8x: n = \" + j.toString(16));\n }\n var g = 128 + h;\n return g.toString(16) + i;\n }\n };\n this.tohex = function () {\n if (this.hTLV == null || this.isModified) {\n this.hV = this.getFreshValueHex();\n this.hL = this.getLengthHexFromValue();\n this.hTLV = this.hT + this.hL + this.hV;\n this.isModified = false;\n }\n return this.hTLV;\n };\n this.getEncodedHex = function () {\n return this.tohex();\n };\n this.getValueHex = function () {\n this.tohex();\n return this.hV;\n };\n this.getFreshValueHex = function () {\n return \"\";\n };\n this.setByParam = function (g) {\n this.params = g;\n };\n if (e != undefined) {\n if (e.tlv != undefined) {\n this.hTLV = e.tlv;\n this.isModified = false;\n }\n }\n};\nKJUR.asn1.DERAbstractString = function (c) {\n KJUR.asn1.DERAbstractString.superclass.constructor.call(this);\n var b = null;\n var a = null;\n this.getString = function () {\n return this.s;\n };\n this.setString = function (d) {\n this.hTLV = null;\n this.isModified = true;\n this.s = d;\n this.hV = utf8tohex(this.s).toLowerCase();\n };\n this.setStringHex = function (d) {\n this.hTLV = null;\n this.isModified = true;\n this.s = null;\n this.hV = d;\n };\n this.getFreshValueHex = function () {\n return this.hV;\n };\n if (typeof c != \"undefined\") {\n if (typeof c == \"string\") {\n this.setString(c);\n } else {\n if (typeof c.str != \"undefined\") {\n this.setString(c.str);\n } else {\n if (typeof c.hex != \"undefined\") {\n this.setStringHex(c.hex);\n }\n }\n }\n }\n};\nextendClass(KJUR.asn1.DERAbstractString, KJUR.asn1.ASN1Object);\nKJUR.asn1.DERAbstractTime = function (c) {\n KJUR.asn1.DERAbstractTime.superclass.constructor.call(this);\n var b = null;\n var a = null;\n this.localDateToUTC = function (g) {\n var e = g.getTime() + g.getTimezoneOffset() * 60000;\n var f = new Date(e);\n return f;\n };\n this.formatDate = function (m, o, e) {\n var g = this.zeroPadding;\n var n = this.localDateToUTC(m);\n var p = String(n.getFullYear());\n if (o == \"utc\") {\n p = p.substr(2, 2);\n }\n var l = g(String(n.getMonth() + 1), 2);\n var q = g(String(n.getDate()), 2);\n var h = g(String(n.getHours()), 2);\n var i = g(String(n.getMinutes()), 2);\n var j = g(String(n.getSeconds()), 2);\n var r = p + l + q + h + i + j;\n if (e === true) {\n var f = n.getMilliseconds();\n if (f != 0) {\n var k = g(String(f), 3);\n k = k.replace(/[0]+$/, \"\");\n r = r + \".\" + k;\n }\n }\n return r + \"Z\";\n };\n this.zeroPadding = function (e, d) {\n if (e.length >= d) {\n return e;\n }\n return new Array(d - e.length + 1).join(\"0\") + e;\n };\n this.setByParam = function (d) {\n this.hV = null;\n this.hTLV = null;\n this.params = d;\n };\n this.getString = function () {\n return undefined;\n };\n this.setString = function (d) {\n this.hTLV = null;\n this.isModified = true;\n if (this.params == undefined) {\n this.params = {};\n }\n this.params.str = d;\n };\n this.setByDate = function (d) {\n this.hTLV = null;\n this.isModified = true;\n if (this.params == undefined) {\n this.params = {};\n }\n this.params.date = d;\n };\n this.setByDateValue = function (h, j, e, d, f, g) {\n var i = new Date(Date.UTC(h, j - 1, e, d, f, g, 0));\n this.setByDate(i);\n };\n this.getFreshValueHex = function () {\n return this.hV;\n };\n};\nextendClass(KJUR.asn1.DERAbstractTime, KJUR.asn1.ASN1Object);\nKJUR.asn1.DERAbstractStructured = function (b) {\n KJUR.asn1.DERAbstractString.superclass.constructor.call(this);\n var a = null;\n this.setByASN1ObjectArray = function (c) {\n this.hTLV = null;\n this.isModified = true;\n this.asn1Array = c;\n };\n this.appendASN1Object = function (c) {\n this.hTLV = null;\n this.isModified = true;\n this.asn1Array.push(c);\n };\n this.asn1Array = new Array();\n if (typeof b != \"undefined\") {\n if (typeof b.array != \"undefined\") {\n this.asn1Array = b.array;\n }\n }\n};\nextendClass(KJUR.asn1.DERAbstractStructured, KJUR.asn1.ASN1Object);\nKJUR.asn1.DERBoolean = function (a) {\n KJUR.asn1.DERBoolean.superclass.constructor.call(this);\n this.hT = \"01\";\n if (a == false) {\n this.hTLV = \"010100\";\n } else {\n this.hTLV = \"0101ff\";\n }\n};\nextendClass(KJUR.asn1.DERBoolean, KJUR.asn1.ASN1Object);\nKJUR.asn1.DERInteger = function (b) {\n KJUR.asn1.DERInteger.superclass.constructor.call(this);\n this.hT = \"02\";\n this.params = null;\n var a = twoscompl;\n this.setByBigInteger = function (c) {\n this.isModified = true;\n this.params = {\n bigint: c\n };\n };\n this.setByInteger = function (c) {\n this.isModified = true;\n this.params = c;\n };\n this.setValueHex = function (c) {\n this.isModified = true;\n this.params = {\n hex: c\n };\n };\n this.getFreshValueHex = function () {\n var d = this.params;\n var c = null;\n if (d == null) {\n throw new Error(\"value not set\");\n }\n if (typeof d == \"object\" && d.hex != undefined) {\n this.hV = d.hex;\n return this.hV;\n }\n if (typeof d == \"number\") {\n c = new BigInteger(String(d), 10);\n } else {\n if (d[\"int\"] != undefined) {\n c = new BigInteger(String(d[\"int\"]), 10);\n } else {\n if (d.bigint != undefined) {\n c = d.bigint;\n } else {\n throw new Error(\"wrong parameter\");\n }\n }\n }\n this.hV = a(c);\n return this.hV;\n };\n if (b != undefined) {\n this.params = b;\n }\n};\nextendClass(KJUR.asn1.DERInteger, KJUR.asn1.ASN1Object);\nKJUR.asn1.DERBitString = function (b) {\n if (b !== undefined && typeof b.obj !== \"undefined\") {\n var a = KJUR.asn1.ASN1Util.newObject(b.obj);\n b.hex = \"00\" + a.tohex();\n }\n KJUR.asn1.DERBitString.superclass.constructor.call(this);\n this.hT = \"03\";\n this.setHexValueIncludingUnusedBits = function (c) {\n this.hTLV = null;\n this.isModified = true;\n this.hV = c;\n };\n this.setUnusedBitsAndHexValue = function (c, e) {\n if (c < 0 || 7 < c) {\n throw \"unused bits shall be from 0 to 7: u = \" + c;\n }\n var d = \"0\" + c;\n this.hTLV = null;\n this.isModified = true;\n this.hV = d + e;\n };\n this.setByBinaryString = function (e) {\n e = e.replace(/0+$/, \"\");\n var f = 8 - e.length % 8;\n if (f == 8) {\n f = 0;\n }\n e += \"0000000\".substr(0, f);\n var j = \"\";\n for (var g = 0; g < e.length - 1; g += 8) {\n var d = e.substr(g, 8);\n var c = parseInt(d, 2).toString(16);\n if (c.length == 1) {\n c = \"0\" + c;\n }\n j += c;\n }\n this.hTLV = null;\n this.isModified = true;\n this.hV = \"0\" + f + j;\n };\n this.setByBooleanArray = function (e) {\n var d = \"\";\n for (var c = 0; c < e.length; c++) {\n if (e[c] == true) {\n d += \"1\";\n } else {\n d += \"0\";\n }\n }\n this.setByBinaryString(d);\n };\n this.newFalseArray = function (e) {\n var c = new Array(e);\n for (var d = 0; d < e; d++) {\n c[d] = false;\n }\n return c;\n };\n this.getFreshValueHex = function () {\n return this.hV;\n };\n if (typeof b != \"undefined\") {\n if (typeof b == \"string\" && b.toLowerCase().match(/^[0-9a-f]+$/)) {\n this.setHexValueIncludingUnusedBits(b);\n } else {\n if (typeof b.hex != \"undefined\") {\n this.setHexValueIncludingUnusedBits(b.hex);\n } else {\n if (typeof b.bin != \"undefined\") {\n this.setByBinaryString(b.bin);\n } else {\n if (typeof b.array != \"undefined\") {\n this.setByBooleanArray(b.array);\n }\n }\n }\n }\n }\n};\nextendClass(KJUR.asn1.DERBitString, KJUR.asn1.ASN1Object);\nKJUR.asn1.DEROctetString = function (b) {\n if (b !== undefined && typeof b.obj !== \"undefined\") {\n var a = KJUR.asn1.ASN1Util.newObject(b.obj);\n b.hex = a.tohex();\n }\n KJUR.asn1.DEROctetString.superclass.constructor.call(this, b);\n this.hT = \"04\";\n};\nextendClass(KJUR.asn1.DEROctetString, KJUR.asn1.DERAbstractString);\nKJUR.asn1.DERNull = function () {\n KJUR.asn1.DERNull.superclass.constructor.call(this);\n this.hT = \"05\";\n this.hTLV = \"0500\";\n};\nextendClass(KJUR.asn1.DERNull, KJUR.asn1.ASN1Object);\nKJUR.asn1.DERObjectIdentifier = function (a) {\n KJUR.asn1.DERObjectIdentifier.superclass.constructor.call(this);\n this.hT = \"06\";\n this.setValueHex = function (b) {\n this.hTLV = null;\n this.isModified = true;\n this.s = null;\n this.hV = b;\n };\n this.setValueOidString = function (b) {\n var c = oidtohex(b);\n if (c == null) {\n throw new Error(\"malformed oid string: \" + b);\n }\n this.hTLV = null;\n this.isModified = true;\n this.s = null;\n this.hV = c;\n };\n this.setValueName = function (c) {\n var b = KJUR.asn1.x509.OID.name2oid(c);\n if (b !== \"\") {\n this.setValueOidString(b);\n } else {\n throw new Error(\"DERObjectIdentifier oidName undefined: \" + c);\n }\n };\n this.setValueNameOrOid = function (b) {\n if (b.match(/^[0-2].[0-9.]+$/)) {\n this.setValueOidString(b);\n } else {\n this.setValueName(b);\n }\n };\n this.getFreshValueHex = function () {\n return this.hV;\n };\n this.setByParam = function (b) {\n if (typeof b === \"string\") {\n this.setValueNameOrOid(b);\n } else {\n if (b.oid !== undefined) {\n this.setValueNameOrOid(b.oid);\n } else {\n if (b.name !== undefined) {\n this.setValueNameOrOid(b.name);\n } else {\n if (b.hex !== undefined) {\n this.setValueHex(b.hex);\n }\n }\n }\n }\n };\n if (a !== undefined) {\n this.setByParam(a);\n }\n};\nextendClass(KJUR.asn1.DERObjectIdentifier, KJUR.asn1.ASN1Object);\nKJUR.asn1.DEREnumerated = function (a) {\n KJUR.asn1.DEREnumerated.superclass.constructor.call(this);\n this.hT = \"0a\";\n this.setByBigInteger = function (b) {\n this.hTLV = null;\n this.isModified = true;\n this.hV = twoscompl(b);\n };\n this.setByInteger = function (c) {\n var b = new BigInteger(String(c), 10);\n this.setByBigInteger(b);\n };\n this.setValueHex = function (b) {\n this.hV = b;\n };\n this.getFreshValueHex = function () {\n return this.hV;\n };\n if (typeof a != \"undefined\") {\n if (typeof a[\"int\"] != \"undefined\") {\n this.setByInteger(a[\"int\"]);\n } else {\n if (typeof a == \"number\") {\n this.setByInteger(a);\n } else {\n if (typeof a.hex != \"undefined\") {\n this.setValueHex(a.hex);\n }\n }\n }\n }\n};\nextendClass(KJUR.asn1.DEREnumerated, KJUR.asn1.ASN1Object);\nKJUR.asn1.DERUTF8String = function (a) {\n KJUR.asn1.DERUTF8String.superclass.constructor.call(this, a);\n this.hT = \"0c\";\n};\nextendClass(KJUR.asn1.DERUTF8String, KJUR.asn1.DERAbstractString);\nKJUR.asn1.DERNumericString = function (a) {\n KJUR.asn1.DERNumericString.superclass.constructor.call(this, a);\n this.hT = \"12\";\n};\nextendClass(KJUR.asn1.DERNumericString, KJUR.asn1.DERAbstractString);\nKJUR.asn1.DERPrintableString = function (a) {\n KJUR.asn1.DERPrintableString.superclass.constructor.call(this, a);\n this.hT = \"13\";\n};\nextendClass(KJUR.asn1.DERPrintableString, KJUR.asn1.DERAbstractString);\nKJUR.asn1.DERTeletexString = function (a) {\n KJUR.asn1.DERTeletexString.superclass.constructor.call(this, a);\n this.hT = \"14\";\n};\nextendClass(KJUR.asn1.DERTeletexString, KJUR.asn1.DERAbstractString);\nKJUR.asn1.DERIA5String = function (a) {\n KJUR.asn1.DERIA5String.superclass.constructor.call(this, a);\n this.hT = \"16\";\n};\nextendClass(KJUR.asn1.DERIA5String, KJUR.asn1.DERAbstractString);\nKJUR.asn1.DERVisibleString = function (a) {\n KJUR.asn1.DERIA5String.superclass.constructor.call(this, a);\n this.hT = \"1a\";\n};\nextendClass(KJUR.asn1.DERVisibleString, KJUR.asn1.DERAbstractString);\nKJUR.asn1.DERBMPString = function (a) {\n KJUR.asn1.DERBMPString.superclass.constructor.call(this, a);\n this.hT = \"1e\";\n};\nextendClass(KJUR.asn1.DERBMPString, KJUR.asn1.DERAbstractString);\nKJUR.asn1.DERUTCTime = function (a) {\n KJUR.asn1.DERUTCTime.superclass.constructor.call(this, a);\n this.hT = \"17\";\n this.params = undefined;\n this.getFreshValueHex = function () {\n var d = this.params;\n if (this.params == undefined) {\n d = {\n date: new Date()\n };\n }\n if (typeof d == \"string\") {\n if (d.match(/^[0-9]{12}Z$/) || d.match(/^[0-9]{12}\\.[0-9]+Z$/)) {\n this.hV = stohex(d);\n } else {\n throw new Error(\"malformed string for UTCTime: \" + d);\n }\n } else {\n if (d.str != undefined) {\n this.hV = stohex(d.str);\n } else {\n if (d.date == undefined && d.millis == true) {\n var c = new Date();\n this.hV = stohex(this.formatDate(c, \"utc\", true));\n } else {\n if (d.date != undefined && d.date instanceof Date) {\n var b = d.millis === true;\n this.hV = stohex(this.formatDate(d.date, \"utc\", b));\n } else {\n if (d instanceof Date) {\n this.hV = stohex(this.formatDate(d, \"utc\"));\n }\n }\n }\n }\n }\n if (this.hV == undefined) {\n throw new Error(\"parameter not specified properly for UTCTime\");\n }\n return this.hV;\n };\n if (a != undefined) {\n this.setByParam(a);\n }\n};\nextendClass(KJUR.asn1.DERUTCTime, KJUR.asn1.DERAbstractTime);\nKJUR.asn1.DERGeneralizedTime = function (a) {\n KJUR.asn1.DERGeneralizedTime.superclass.constructor.call(this, a);\n this.hT = \"18\";\n this.params = a;\n this.getFreshValueHex = function () {\n var d = this.params;\n if (this.params == undefined) {\n d = {\n date: new Date()\n };\n }\n if (typeof d == \"string\") {\n if (d.match(/^[0-9]{14}Z$/) || d.match(/^[0-9]{14}\\.[0-9]+Z$/)) {\n this.hV = stohex(d);\n } else {\n throw new Error(\"malformed string for GeneralizedTime: \" + d);\n }\n } else {\n if (d.str != undefined) {\n this.hV = stohex(d.str);\n } else {\n if (d.date == undefined && d.millis == true) {\n var c = new Date();\n this.hV = stohex(this.formatDate(c, \"gen\", true));\n } else {\n if (d.date != undefined && d.date instanceof Date) {\n var b = d.millis === true;\n this.hV = stohex(this.formatDate(d.date, \"gen\", b));\n } else {\n if (d instanceof Date) {\n this.hV = stohex(this.formatDate(d, \"gen\"));\n }\n }\n }\n }\n }\n if (this.hV == undefined) {\n throw new Error(\"parameter not specified properly for GeneralizedTime\");\n }\n return this.hV;\n };\n if (a != undefined) {\n this.setByParam(a);\n }\n};\nextendClass(KJUR.asn1.DERGeneralizedTime, KJUR.asn1.DERAbstractTime);\nKJUR.asn1.DERSequence = function (a) {\n KJUR.asn1.DERSequence.superclass.constructor.call(this, a);\n this.hT = \"30\";\n this.getFreshValueHex = function () {\n var c = \"\";\n for (var b = 0; b < this.asn1Array.length; b++) {\n var d = this.asn1Array[b];\n c += d.tohex();\n }\n this.hV = c;\n return this.hV;\n };\n};\nextendClass(KJUR.asn1.DERSequence, KJUR.asn1.DERAbstractStructured);\nKJUR.asn1.DERSet = function (a) {\n KJUR.asn1.DERSet.superclass.constructor.call(this, a);\n this.hT = \"31\";\n this.sortFlag = true;\n this.getFreshValueHex = function () {\n var b = new Array();\n for (var c = 0; c < this.asn1Array.length; c++) {\n var d = this.asn1Array[c];\n b.push(d.tohex());\n }\n if (this.sortFlag == true) {\n b.sort();\n }\n this.hV = b.join(\"\");\n return this.hV;\n };\n if (typeof a != \"undefined\") {\n if (typeof a.sortflag != \"undefined\" && a.sortflag == false) {\n this.sortFlag = false;\n }\n }\n};\nextendClass(KJUR.asn1.DERSet, KJUR.asn1.DERAbstractStructured);\nKJUR.asn1.DERTaggedObject = function (f) {\n KJUR.asn1.DERTaggedObject.superclass.constructor.call(this);\n var d = KJUR.asn1,\n e = ASN1HEX,\n a = e.getV,\n c = e.isASN1HEX,\n b = d.ASN1Util.newObject;\n this.hT = \"a0\";\n this.hV = \"\";\n this.isExplicit = true;\n this.asn1Object = null;\n this.params = {\n tag: \"a0\",\n explicit: true\n };\n this.setASN1Object = function (g, h, i) {\n this.params = {\n tag: h,\n explicit: g,\n obj: i\n };\n };\n this.getFreshValueHex = function () {\n var h = this.params;\n if (h.explicit == undefined) {\n h.explicit = true;\n }\n if (h.tage != undefined) {\n h.tag = h.tage;\n h.explicit = true;\n }\n if (h.tagi != undefined) {\n h.tag = h.tagi;\n h.explicit = false;\n }\n if (h.str != undefined) {\n this.hV = utf8tohex(h.str);\n } else {\n if (h.hex != undefined) {\n this.hV = h.hex;\n } else {\n if (h.obj != undefined) {\n var g;\n if (h.obj instanceof d.ASN1Object) {\n g = h.obj.tohex();\n } else {\n if (typeof h.obj == \"object\") {\n g = b(h.obj).tohex();\n }\n }\n if (h.explicit) {\n this.hV = g;\n } else {\n this.hV = a(g, 0);\n }\n } else {\n throw new Error(\"str, hex nor obj not specified\");\n }\n }\n }\n if (h.tag == undefined) {\n h.tag = \"a0\";\n }\n this.hT = h.tag;\n this.hTLV = null;\n this.isModified = true;\n return this.hV;\n };\n this.setByParam = function (g) {\n this.params = g;\n };\n if (f !== undefined) {\n this.setByParam(f);\n }\n};\nextendClass(KJUR.asn1.DERTaggedObject, KJUR.asn1.ASN1Object);\nvar ASN1HEX = new function () {}();\nASN1HEX.getLblen = function (c, a) {\n if (c.substr(a + 2, 1) != \"8\") {\n return 1;\n }\n var b = parseInt(c.substr(a + 3, 1));\n if (b == 0) {\n return -1;\n }\n if (0 < b && b < 10) {\n return b + 1;\n }\n return -2;\n};\nASN1HEX.getL = function (c, b) {\n var a = ASN1HEX.getLblen(c, b);\n if (a < 1) {\n return \"\";\n }\n return c.substr(b + 2, a * 2);\n};\nASN1HEX.getVblen = function (d, a) {\n var c, b;\n c = ASN1HEX.getL(d, a);\n if (c == \"\") {\n return -1;\n }\n if (c.substr(0, 1) === \"8\") {\n b = new BigInteger(c.substr(2), 16);\n } else {\n b = new BigInteger(c, 16);\n }\n return b.intValue();\n};\nASN1HEX.getVidx = function (c, b) {\n var a = ASN1HEX.getLblen(c, b);\n if (a < 0) {\n return a;\n }\n return b + (a + 1) * 2;\n};\nASN1HEX.getV = function (d, a) {\n var c = ASN1HEX.getVidx(d, a);\n var b = ASN1HEX.getVblen(d, a);\n return d.substr(c, b * 2);\n};\nASN1HEX.getTLV = function (b, a) {\n return b.substr(a, 2) + ASN1HEX.getL(b, a) + ASN1HEX.getV(b, a);\n};\nASN1HEX.getTLVblen = function (b, a) {\n return 2 + ASN1HEX.getLblen(b, a) * 2 + ASN1HEX.getVblen(b, a) * 2;\n};\nASN1HEX.getNextSiblingIdx = function (d, a) {\n var c = ASN1HEX.getVidx(d, a);\n var b = ASN1HEX.getVblen(d, a);\n return c + b * 2;\n};\nASN1HEX.getChildIdx = function (e, k) {\n var l = ASN1HEX;\n var j = [];\n var c, f, g;\n c = l.getVidx(e, k);\n f = l.getVblen(e, k) * 2;\n if (e.substr(k, 2) == \"03\") {\n c += 2;\n f -= 2;\n }\n g = 0;\n var d = c;\n while (g <= f) {\n var b = l.getTLVblen(e, d);\n g += b;\n if (g <= f) {\n j.push(d);\n }\n d += b;\n if (g >= f) {\n break;\n }\n }\n return j;\n};\nASN1HEX.getNthChildIdx = function (d, b, e) {\n var c = ASN1HEX.getChildIdx(d, b);\n return c[e];\n};\nASN1HEX.getIdxbyList = function (e, d, c, i) {\n var g = ASN1HEX;\n var f, b;\n if (c.length == 0) {\n if (i !== undefined) {\n if (e.substr(d, 2) !== i) {\n return -1;\n }\n }\n return d;\n }\n f = c.shift();\n b = g.getChildIdx(e, d);\n if (f >= b.length) {\n return -1;\n }\n return g.getIdxbyList(e, b[f], c, i);\n};\nASN1HEX.getIdxbyListEx = function (f, k, b, g) {\n var m = ASN1HEX;\n var d, l;\n if (b.length == 0) {\n if (g !== undefined) {\n if (f.substr(k, 2) !== g) {\n return -1;\n }\n }\n return k;\n }\n d = b.shift();\n l = m.getChildIdx(f, k);\n var j = 0;\n for (var e = 0; e < l.length; e++) {\n var c = f.substr(l[e], 2);\n if (typeof d == \"number\" && !m.isContextTag(c) && j == d || typeof d == \"string\" && m.isContextTag(c, d)) {\n return m.getIdxbyListEx(f, l[e], b, g);\n }\n if (!m.isContextTag(c)) {\n j++;\n }\n }\n return -1;\n};\nASN1HEX.getTLVbyList = function (d, c, b, f) {\n var e = ASN1HEX;\n var a = e.getIdxbyList(d, c, b, f);\n if (a == -1) {\n return null;\n }\n if (a >= d.length) {\n return null;\n }\n return e.getTLV(d, a);\n};\nASN1HEX.getTLVbyListEx = function (d, c, b, f) {\n var e = ASN1HEX;\n var a = e.getIdxbyListEx(d, c, b, f);\n if (a == -1) {\n return null;\n }\n return e.getTLV(d, a);\n};\nASN1HEX.getVbyList = function (e, c, b, g, i) {\n var f = ASN1HEX;\n var a, d;\n a = f.getIdxbyList(e, c, b, g);\n if (a == -1) {\n return null;\n }\n if (a >= e.length) {\n return null;\n }\n d = f.getV(e, a);\n if (i === true) {\n d = d.substr(2);\n }\n return d;\n};\nASN1HEX.getVbyListEx = function (b, e, a, d, f) {\n var j = ASN1HEX;\n var g, c, i;\n g = j.getIdxbyListEx(b, e, a, d);\n if (g == -1) {\n return null;\n }\n i = j.getV(b, g);\n if (b.substr(g, 2) == \"03\" && f !== false) {\n i = i.substr(2);\n }\n return i;\n};\nASN1HEX.getInt = function (e, b, f) {\n if (f == undefined) {\n f = -1;\n }\n try {\n var c = e.substr(b, 2);\n if (c != \"02\" && c != \"03\") {\n return f;\n }\n var a = ASN1HEX.getV(e, b);\n if (c == \"02\") {\n return parseInt(a, 16);\n } else {\n return bitstrtoint(a);\n }\n } catch (d) {\n return f;\n }\n};\nASN1HEX.getOID = function (c, a, d) {\n if (d == undefined) {\n d = null;\n }\n try {\n if (c.substr(a, 2) != \"06\") {\n return d;\n }\n var e = ASN1HEX.getV(c, a);\n return hextooid(e);\n } catch (b) {\n return d;\n }\n};\nASN1HEX.getOIDName = function (d, a, f) {\n if (f == undefined) {\n f = null;\n }\n try {\n var e = ASN1HEX.getOID(d, a, f);\n if (e == f) {\n return f;\n }\n var b = KJUR.asn1.x509.OID.oid2name(e);\n if (b == \"\") {\n return e;\n }\n return b;\n } catch (c) {\n return f;\n }\n};\nASN1HEX.getString = function (d, b, e) {\n if (e == undefined) {\n e = null;\n }\n try {\n var a = ASN1HEX.getV(d, b);\n return hextorstr(a);\n } catch (c) {\n return e;\n }\n};\nASN1HEX.hextooidstr = function (e) {\n var h = function (b, a) {\n if (b.length >= a) {\n return b;\n }\n return new Array(a - b.length + 1).join(\"0\") + b;\n };\n var l = [];\n var o = e.substr(0, 2);\n var f = parseInt(o, 16);\n l[0] = new String(Math.floor(f / 40));\n l[1] = new String(f % 40);\n var m = e.substr(2);\n var k = [];\n for (var g = 0; g < m.length / 2; g++) {\n k.push(parseInt(m.substr(g * 2, 2), 16));\n }\n var j = [];\n var d = \"\";\n for (var g = 0; g < k.length; g++) {\n if (k[g] & 128) {\n d = d + h((k[g] & 127).toString(2), 7);\n } else {\n d = d + h((k[g] & 127).toString(2), 7);\n j.push(new String(parseInt(d, 2)));\n d = \"\";\n }\n }\n var n = l.join(\".\");\n if (j.length > 0) {\n n = n + \".\" + j.join(\".\");\n }\n return n;\n};\nASN1HEX.dump = function (t, c, l, g) {\n var p = ASN1HEX;\n var j = p.getV;\n var y = p.dump;\n var w = p.getChildIdx;\n var e = t;\n if (t instanceof KJUR.asn1.ASN1Object) {\n e = t.tohex();\n }\n var q = function (A, i) {\n if (A.length <= i * 2) {\n return A;\n } else {\n var v = A.substr(0, i) + \"..(total \" + A.length / 2 + \"bytes)..\" + A.substr(A.length - i, i);\n return v;\n }\n };\n if (c === undefined) {\n c = {\n ommit_long_octet: 32\n };\n }\n if (l === undefined) {\n l = 0;\n }\n if (g === undefined) {\n g = \"\";\n }\n var x = c.ommit_long_octet;\n var z = e.substr(l, 2);\n if (z == \"01\") {\n var h = j(e, l);\n if (h == \"00\") {\n return g + \"BOOLEAN FALSE\\n\";\n } else {\n return g + \"BOOLEAN TRUE\\n\";\n }\n }\n if (z == \"02\") {\n var h = j(e, l);\n return g + \"INTEGER \" + q(h, x) + \"\\n\";\n }\n if (z == \"03\") {\n var h = j(e, l);\n if (p.isASN1HEX(h.substr(2))) {\n var k = g + \"BITSTRING, encapsulates\\n\";\n k = k + y(h.substr(2), c, 0, g + \" \");\n return k;\n } else {\n return g + \"BITSTRING \" + q(h, x) + \"\\n\";\n }\n }\n if (z == \"04\") {\n var h = j(e, l);\n if (p.isASN1HEX(h)) {\n var k = g + \"OCTETSTRING, encapsulates\\n\";\n k = k + y(h, c, 0, g + \" \");\n return k;\n } else {\n return g + \"OCTETSTRING \" + q(h, x) + \"\\n\";\n }\n }\n if (z == \"05\") {\n return g + \"NULL\\n\";\n }\n if (z == \"06\") {\n var m = j(e, l);\n var b = KJUR.asn1.ASN1Util.oidHexToInt(m);\n var o = KJUR.asn1.x509.OID.oid2name(b);\n var a = b.replace(/\\./g, \" \");\n if (o != \"\") {\n return g + \"ObjectIdentifier \" + o + \" (\" + a + \")\\n\";\n } else {\n return g + \"ObjectIdentifier (\" + a + \")\\n\";\n }\n }\n if (z == \"0a\") {\n return g + \"ENUMERATED \" + parseInt(j(e, l)) + \"\\n\";\n }\n if (z == \"0c\") {\n return g + \"UTF8String '\" + hextoutf8(j(e, l)) + \"'\\n\";\n }\n if (z == \"13\") {\n return g + \"PrintableString '\" + hextoutf8(j(e, l)) + \"'\\n\";\n }\n if (z == \"14\") {\n return g + \"TeletexString '\" + hextoutf8(j(e, l)) + \"'\\n\";\n }\n if (z == \"16\") {\n return g + \"IA5String '\" + hextoutf8(j(e, l)) + \"'\\n\";\n }\n if (z == \"17\") {\n return g + \"UTCTime \" + hextoutf8(j(e, l)) + \"\\n\";\n }\n if (z == \"18\") {\n return g + \"GeneralizedTime \" + hextoutf8(j(e, l)) + \"\\n\";\n }\n if (z == \"1a\") {\n return g + \"VisualString '\" + hextoutf8(j(e, l)) + \"'\\n\";\n }\n if (z == \"1e\") {\n return g + \"BMPString '\" + ucs2hextoutf8(j(e, l)) + \"'\\n\";\n }\n if (z == \"30\") {\n if (e.substr(l, 4) == \"3000\") {\n return g + \"SEQUENCE {}\\n\";\n }\n var k = g + \"SEQUENCE\\n\";\n var d = w(e, l);\n var f = c;\n if ((d.length == 2 || d.length == 3) && e.substr(d[0], 2) == \"06\" && e.substr(d[d.length - 1], 2) == \"04\") {\n var o = p.oidname(j(e, d[0]));\n var r = JSON.parse(JSON.stringify(c));\n r.x509ExtName = o;\n f = r;\n }\n for (var u = 0; u < d.length; u++) {\n k = k + y(e, f, d[u], g + \" \");\n }\n return k;\n }\n if (z == \"31\") {\n var k = g + \"SET\\n\";\n var d = w(e, l);\n for (var u = 0; u < d.length; u++) {\n k = k + y(e, c, d[u], g + \" \");\n }\n return k;\n }\n var z = parseInt(z, 16);\n if ((z & 128) != 0) {\n var n = z & 31;\n if ((z & 32) != 0) {\n var k = g + \"[\" + n + \"]\\n\";\n var d = w(e, l);\n for (var u = 0; u < d.length; u++) {\n k = k + y(e, c, d[u], g + \" \");\n }\n return k;\n } else {\n var h = j(e, l);\n if (ASN1HEX.isASN1HEX(h)) {\n var k = g + \"[\" + n + \"]\\n\";\n k = k + y(h, c, 0, g + \" \");\n return k;\n } else {\n if (h.substr(0, 8) == \"68747470\") {\n h = hextoutf8(h);\n } else {\n if (c.x509ExtName === \"subjectAltName\" && n == 2) {\n h = hextoutf8(h);\n }\n }\n }\n var k = g + \"[\" + n + \"] \" + h + \"\\n\";\n return k;\n }\n }\n return g + \"UNKNOWN(\" + z + \") \" + j(e, l) + \"\\n\";\n};\nASN1HEX.parse = function (x) {\n var t = ASN1HEX,\n f = t.parse,\n a = t.isASN1HEX,\n l = t.getV,\n b = t.getTLV,\n y = t.getChildIdx,\n i = KJUR.asn1,\n e = i.ASN1Util.oidHexToInt,\n B = i.x509.OID.oid2name,\n k = hextoutf8,\n n = ucs2hextoutf8,\n q = iso88591hextoutf8;\n var c = {\n \"0c\": \"utf8str\",\n \"12\": \"numstr\",\n \"13\": \"prnstr\",\n \"14\": \"telstr\",\n \"16\": \"ia5str\",\n \"17\": \"utctime\",\n \"18\": \"gentime\",\n \"1a\": \"visstr\",\n \"1e\": \"bmpstr\",\n \"30\": \"seq\",\n \"31\": \"set\"\n };\n var u = function (H) {\n var D = [];\n var E = y(H, 0);\n for (var G = 0; G < E.length; G++) {\n var s = E[G];\n var d = b(H, s);\n var F = f(d);\n D.push(F);\n }\n return D;\n };\n var C = x.substr(0, 2);\n var j = {};\n var p = l(x, 0);\n if (C == \"01\") {\n if (x == \"0101ff\") {\n return {\n bool: true\n };\n }\n return {\n bool: false\n };\n } else {\n if (C == \"02\") {\n return {\n \"int\": {\n hex: p\n }\n };\n } else {\n if (C == \"03\") {\n try {\n if (p.substr(0, 2) != \"00\") {\n throw \"not encap\";\n }\n var v = p.substr(2);\n if (!a(v)) {\n throw \"not encap\";\n }\n return {\n bitstr: {\n obj: f(v)\n }\n };\n } catch (z) {\n var m = null;\n if (p.length <= 10) {\n m = bitstrtobinstr(p);\n }\n if (m == null) {\n return {\n bitstr: {\n hex: p\n }\n };\n } else {\n return {\n bitstr: {\n bin: m\n }\n };\n }\n }\n } else {\n if (C == \"04\") {\n try {\n if (!a(p)) {\n throw \"not encap\";\n }\n return {\n octstr: {\n obj: f(p)\n }\n };\n } catch (z) {\n return {\n octstr: {\n hex: p\n }\n };\n }\n } else {\n if (C == \"05\") {\n return {\n \"null\": \"\"\n };\n } else {\n if (C == \"06\") {\n var g = e(p);\n var r = B(g);\n if (r == \"\") {\n return {\n oid: g\n };\n } else {\n return {\n oid: r\n };\n }\n } else {\n if (C == \"0a\") {\n if (p.length > 4) {\n return {\n \"enum\": {\n hex: p\n }\n };\n } else {\n return {\n \"enum\": parseInt(p, 16)\n };\n }\n } else {\n if (C == \"30\" || C == \"31\") {\n j[c[C]] = u(x);\n return j;\n } else {\n if (C == \"14\") {\n var o = q(p);\n j[c[C]] = {\n str: o\n };\n return j;\n } else {\n if (C == \"1e\") {\n var o = n(p);\n j[c[C]] = {\n str: o\n };\n return j;\n } else {\n if (\":0c:12:13:16:17:18:1a:\".indexOf(C) != -1) {\n var o = k(p);\n j[c[C]] = {\n str: o\n };\n return j;\n } else {\n if (C.match(/^8[0-9]$/)) {\n var o = k(p);\n if (o == null | o == \"\") {\n return {\n tag: {\n tag: C,\n explicit: false,\n hex: p\n }\n };\n } else {\n if (o.match(/[\\x00-\\x1F\\x7F-\\x9F]/) != null || o.match(/[\\u0000-\\u001F\\u0080–\\u009F]/) != null) {\n return {\n tag: {\n tag: C,\n explicit: false,\n hex: p\n }\n };\n } else {\n return {\n tag: {\n tag: C,\n explicit: false,\n str: o\n }\n };\n }\n }\n } else {\n if (C.match(/^a[0-9]$/)) {\n try {\n if (!a(p)) {\n throw new Error(\"not encap\");\n }\n return {\n tag: {\n tag: C,\n explicit: true,\n obj: f(p)\n }\n };\n } catch (z) {\n return {\n tag: {\n tag: C,\n explicit: true,\n hex: p\n }\n };\n }\n } else {\n var A = new KJUR.asn1.ASN1Object();\n A.hV = p;\n var w = A.getLengthHexFromValue();\n return {\n asn1: {\n tlv: C + w + p\n }\n };\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n};\nASN1HEX.isContextTag = function (c, b) {\n c = c.toLowerCase();\n var f, e;\n try {\n f = parseInt(c, 16);\n } catch (d) {\n return -1;\n }\n if (b === undefined) {\n if ((f & 192) == 128) {\n return true;\n } else {\n return false;\n }\n }\n try {\n var a = b.match(/^\\[[0-9]+\\]$/);\n if (a == null) {\n return false;\n }\n e = parseInt(b.substr(1, b.length - 1), 10);\n if (e > 31) {\n return false;\n }\n if ((f & 192) == 128 && (f & 31) == e) {\n return true;\n }\n return false;\n } catch (d) {\n return false;\n }\n};\nASN1HEX.isASN1HEX = function (e) {\n var d = ASN1HEX;\n if (e.length % 2 == 1) {\n return false;\n }\n var c = d.getVblen(e, 0);\n var b = e.substr(0, 2);\n var f = d.getL(e, 0);\n var a = e.length - b.length - f.length;\n if (a == c * 2) {\n return true;\n }\n return false;\n};\nASN1HEX.checkStrictDER = function (g, o, d, c, r) {\n var s = ASN1HEX;\n if (d === undefined) {\n if (typeof g != \"string\") {\n throw new Error(\"not hex string\");\n }\n g = g.toLowerCase();\n if (!KJUR.lang.String.isHex(g)) {\n throw new Error(\"not hex string\");\n }\n d = g.length;\n c = g.length / 2;\n if (c < 128) {\n r = 1;\n } else {\n r = Math.ceil(c.toString(16)) + 1;\n }\n }\n var k = s.getL(g, o);\n if (k.length > r * 2) {\n throw new Error(\"L of TLV too long: idx=\" + o);\n }\n var n = s.getVblen(g, o);\n if (n > c) {\n throw new Error(\"value of L too long than hex: idx=\" + o);\n }\n var q = s.getTLV(g, o);\n var f = q.length - 2 - s.getL(g, o).length;\n if (f !== n * 2) {\n throw new Error(\"V string length and L's value not the same:\" + f + \"/\" + n * 2);\n }\n if (o === 0) {\n if (g.length != q.length) {\n throw new Error(\"total length and TLV length unmatch:\" + g.length + \"!=\" + q.length);\n }\n }\n var b = g.substr(o, 2);\n if (b === \"02\") {\n var a = s.getVidx(g, o);\n if (g.substr(a, 2) == \"00\" && g.charCodeAt(a + 2) < 56) {\n throw new Error(\"not least zeros for DER INTEGER\");\n }\n }\n if (parseInt(b, 16) & 32) {\n var p = s.getVblen(g, o);\n var m = 0;\n var l = s.getChildIdx(g, o);\n for (var e = 0; e < l.length; e++) {\n var j = s.getTLV(g, l[e]);\n m += j.length;\n s.checkStrictDER(g, l[e], d, c, r);\n }\n if (p * 2 != m) {\n throw new Error(\"sum of children's TLV length and L unmatch: \" + p * 2 + \"!=\" + m);\n }\n }\n};\nASN1HEX.oidname = function (a) {\n var c = KJUR.asn1;\n if (KJUR.lang.String.isHex(a)) {\n a = c.ASN1Util.oidHexToInt(a);\n }\n var b = c.x509.OID.oid2name(a);\n if (b === \"\") {\n b = a;\n }\n return b;\n};\nif (typeof KJUR == \"undefined\" || !KJUR) {\n KJUR = {};\n}\nif (typeof KJUR.asn1 == \"undefined\" || !KJUR.asn1) {\n KJUR.asn1 = {};\n}\nif (typeof KJUR.asn1.x509 == \"undefined\" || !KJUR.asn1.x509) {\n KJUR.asn1.x509 = {};\n}\nKJUR.asn1.x509.Certificate = function (h) {\n KJUR.asn1.x509.Certificate.superclass.constructor.call(this);\n var d = KJUR,\n c = d.asn1,\n f = c.DERBitString,\n b = c.DERSequence,\n g = c.x509,\n a = g.TBSCertificate,\n e = g.AlgorithmIdentifier;\n this.params = undefined;\n this.setByParam = function (i) {\n this.params = i;\n };\n this.sign = function () {\n var l = this.params;\n var k = l.sigalg;\n if (l.sigalg.name != undefined) {\n k = l.sigalg.name;\n }\n var i = l.tbsobj.tohex();\n var j = new KJUR.crypto.Signature({\n alg: k\n });\n j.init(l.cakey);\n j.updateHex(i);\n l.sighex = j.sign();\n };\n this.getPEM = function () {\n return hextopem(this.tohex(), \"CERTIFICATE\");\n };\n this.tohex = function () {\n var k = this.params;\n if (k.tbsobj == undefined || k.tbsobj == null) {\n k.tbsobj = new a(k);\n }\n if (k.sighex == undefined && k.cakey != undefined) {\n this.sign();\n }\n if (k.sighex == undefined) {\n throw new Error(\"sighex or cakey parameter not defined\");\n }\n var i = [];\n i.push(k.tbsobj);\n i.push(new e({\n name: k.sigalg\n }));\n i.push(new f({\n hex: \"00\" + k.sighex\n }));\n var j = new b({\n array: i\n });\n return j.tohex();\n };\n this.getEncodedHex = function () {\n return this.tohex();\n };\n if (h != undefined) {\n this.params = h;\n }\n};\nextendClass(KJUR.asn1.x509.Certificate, KJUR.asn1.ASN1Object);\nKJUR.asn1.x509.TBSCertificate = function (f) {\n KJUR.asn1.x509.TBSCertificate.superclass.constructor.call(this);\n var b = KJUR,\n i = b.asn1,\n d = i.x509,\n c = i.DERTaggedObject,\n h = i.DERInteger,\n g = i.DERSequence,\n l = d.AlgorithmIdentifier,\n e = d.Time,\n a = d.X500Name,\n j = d.Extensions,\n k = d.SubjectPublicKeyInfo;\n this.params = null;\n this.setByParam = function (m) {\n this.params = m;\n };\n this.tohex = function () {\n var n = [];\n var q = this.params;\n if (q.version != undefined || q.version != 1) {\n var m = 2;\n if (q.version != undefined) {\n m = q.version - 1;\n }\n var p = new c({\n obj: new h({\n \"int\": m\n })\n });\n n.push(p);\n }\n n.push(new h(q.serial));\n n.push(new l({\n name: q.sigalg\n }));\n n.push(new a(q.issuer));\n n.push(new g({\n array: [new e(q.notbefore), new e(q.notafter)]\n }));\n n.push(new a(q.subject));\n n.push(new k(KEYUTIL.getKey(q.sbjpubkey)));\n if (q.ext !== undefined && q.ext.length > 0) {\n n.push(new c({\n tag: \"a3\",\n obj: new j(q.ext)\n }));\n }\n var o = new KJUR.asn1.DERSequence({\n array: n\n });\n return o.tohex();\n };\n this.getEncodedHex = function () {\n return this.tohex();\n };\n if (f !== undefined) {\n this.setByParam(f);\n }\n};\nextendClass(KJUR.asn1.x509.TBSCertificate, KJUR.asn1.ASN1Object);\nKJUR.asn1.x509.Extensions = function (d) {\n KJUR.asn1.x509.Extensions.superclass.constructor.call(this);\n var c = KJUR,\n b = c.asn1,\n a = b.DERSequence,\n e = b.x509;\n this.aParam = [];\n this.setByParam = function (f) {\n this.aParam = f;\n };\n this.tohex = function () {\n var f = [];\n for (var h = 0; h < this.aParam.length; h++) {\n var l = this.aParam[h];\n var k = l.extname;\n var j = null;\n if (l.extn != undefined) {\n j = new e.PrivateExtension(l);\n } else {\n if (k == \"subjectKeyIdentifier\") {\n j = new e.SubjectKeyIdentifier(l);\n } else {\n if (k == \"keyUsage\") {\n j = new e.KeyUsage(l);\n } else {\n if (k == \"subjectAltName\") {\n j = new e.SubjectAltName(l);\n } else {\n if (k == \"issuerAltName\") {\n j = new e.IssuerAltName(l);\n } else {\n if (k == \"basicConstraints\") {\n j = new e.BasicConstraints(l);\n } else {\n if (k == \"nameConstraints\") {\n j = new e.NameConstraints(l);\n } else {\n if (k == \"cRLDistributionPoints\") {\n j = new e.CRLDistributionPoints(l);\n } else {\n if (k == \"certificatePolicies\") {\n j = new e.CertificatePolicies(l);\n } else {\n if (k == \"policyMappings\") {\n j = new e.PolicyMappings(l);\n } else {\n if (k == \"policyConstraints\") {\n j = new e.PolicyConstraints(l);\n } else {\n if (k == \"inhibitAnyPolicy\") {\n j = new e.InhibitAnyPolicy(l);\n } else {\n if (k == \"authorityKeyIdentifier\") {\n j = new e.AuthorityKeyIdentifier(l);\n } else {\n if (k == \"extKeyUsage\") {\n j = new e.ExtKeyUsage(l);\n } else {\n if (k == \"authorityInfoAccess\") {\n j = new e.AuthorityInfoAccess(l);\n } else {\n if (k == \"cRLNumber\") {\n j = new e.CRLNumber(l);\n } else {\n if (k == \"cRLReason\") {\n j = new e.CRLReason(l);\n } else {\n if (k == \"ocspNonce\") {\n j = new e.OCSPNonce(l);\n } else {\n if (k == \"ocspNoCheck\") {\n j = new e.OCSPNoCheck(l);\n } else {\n if (k == \"adobeTimeStamp\") {\n j = new e.AdobeTimeStamp(l);\n } else {\n if (k == \"subjectDirectoryAttributes\") {\n j = new e.SubjectDirectoryAttributes(l);\n } else {\n throw new Error(\"extension not supported:\" + JSON.stringify(l));\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n if (j != null) {\n f.push(j);\n }\n }\n var g = new a({\n array: f\n });\n return g.tohex();\n };\n this.getEncodedHex = function () {\n return this.tohex();\n };\n if (d != undefined) {\n this.setByParam(d);\n }\n};\nextendClass(KJUR.asn1.x509.Extensions, KJUR.asn1.ASN1Object);\nKJUR.asn1.x509.Extension = function (d) {\n KJUR.asn1.x509.Extension.superclass.constructor.call(this);\n var f = null,\n a = KJUR,\n e = a.asn1,\n h = e.DERObjectIdentifier,\n i = e.DEROctetString,\n b = e.DERBitString,\n g = e.DERBoolean,\n c = e.DERSequence;\n this.tohex = function () {\n var m = new h({\n oid: this.oid\n });\n var l = new i({\n hex: this.getExtnValueHex()\n });\n var k = new Array();\n k.push(m);\n if (this.critical) {\n k.push(new g());\n }\n k.push(l);\n var j = new c({\n array: k\n });\n return j.tohex();\n };\n this.getEncodedHex = function () {\n return this.tohex();\n };\n this.critical = false;\n if (d !== undefined) {\n if (d.critical !== undefined) {\n this.critical = d.critical;\n }\n }\n};\nextendClass(KJUR.asn1.x509.Extension, KJUR.asn1.ASN1Object);\nKJUR.asn1.x509.KeyUsage = function (c) {\n KJUR.asn1.x509.KeyUsage.superclass.constructor.call(this, c);\n var b = Error;\n var a = {\n digitalSignature: 0,\n nonRepudiation: 1,\n keyEncipherment: 2,\n dataEncipherment: 3,\n keyAgreement: 4,\n keyCertSign: 5,\n cRLSign: 6,\n encipherOnly: 7,\n decipherOnly: 8\n };\n this.getExtnValueHex = function () {\n var d = this.getBinValue();\n this.asn1ExtnValue = new KJUR.asn1.DERBitString({\n bin: d\n });\n return this.asn1ExtnValue.tohex();\n };\n this.getBinValue = function () {\n var d = this.params;\n if (typeof d != \"object\" || typeof d.names != \"object\" && typeof d.bin != \"string\") {\n throw new b(\"parameter not yet set\");\n }\n if (d.names != undefined) {\n return namearraytobinstr(d.names, a);\n } else {\n if (d.bin != undefined) {\n return d.bin;\n } else {\n throw new b(\"parameter not set properly\");\n }\n }\n };\n this.oid = \"2.5.29.15\";\n if (c !== undefined) {\n this.params = c;\n }\n};\nextendClass(KJUR.asn1.x509.KeyUsage, KJUR.asn1.x509.Extension);\nKJUR.asn1.x509.BasicConstraints = function (g) {\n KJUR.asn1.x509.BasicConstraints.superclass.constructor.call(this, g);\n var c = KJUR.asn1,\n e = c.DERBoolean,\n f = c.DERInteger,\n b = c.DERSequence;\n var a = false;\n var d = -1;\n this.getExtnValueHex = function () {\n var i = new Array();\n if (this.cA) {\n i.push(new e());\n }\n if (this.pathLen > -1) {\n i.push(new f({\n \"int\": this.pathLen\n }));\n }\n var h = new b({\n array: i\n });\n this.asn1ExtnValue = h;\n return this.asn1ExtnValue.tohex();\n };\n this.oid = \"2.5.29.19\";\n this.cA = false;\n this.pathLen = -1;\n if (g !== undefined) {\n if (g.cA !== undefined) {\n this.cA = g.cA;\n }\n if (g.pathLen !== undefined) {\n this.pathLen = g.pathLen;\n }\n }\n};\nextendClass(KJUR.asn1.x509.BasicConstraints, KJUR.asn1.x509.Extension);\nKJUR.asn1.x509.CRLDistributionPoints = function (d) {\n KJUR.asn1.x509.CRLDistributionPoints.superclass.constructor.call(this, d);\n var b = KJUR,\n a = b.asn1,\n c = a.x509;\n this.getExtnValueHex = function () {\n return this.asn1ExtnValue.tohex();\n };\n this.setByDPArray = function (e) {\n var f = [];\n for (var g = 0; g < e.length; g++) {\n if (e[g] instanceof KJUR.asn1.ASN1Object) {\n f.push(e[g]);\n } else {\n var h = new c.DistributionPoint(e[g]);\n f.push(h);\n }\n }\n this.asn1ExtnValue = new a.DERSequence({\n array: f\n });\n };\n this.setByOneURI = function (f) {\n var e = new c.DistributionPoint({\n fulluri: f\n });\n this.setByDPArray([e]);\n };\n this.oid = \"2.5.29.31\";\n if (d !== undefined) {\n if (d.array !== undefined) {\n this.setByDPArray(d.array);\n } else {\n if (d.uri !== undefined) {\n this.setByOneURI(d.uri);\n }\n }\n }\n};\nextendClass(KJUR.asn1.x509.CRLDistributionPoints, KJUR.asn1.x509.Extension);\nKJUR.asn1.x509.DistributionPoint = function (e) {\n KJUR.asn1.x509.DistributionPoint.superclass.constructor.call(this);\n var a = null,\n c = KJUR,\n b = c.asn1,\n d = b.x509.DistributionPointName;\n this.tohex = function () {\n var f = new b.DERSequence();\n if (this.asn1DP != null) {\n var g = new b.DERTaggedObject({\n explicit: true,\n tag: \"a0\",\n obj: this.asn1DP\n });\n f.appendASN1Object(g);\n }\n this.hTLV = f.tohex();\n return this.hTLV;\n };\n this.getEncodedHex = function () {\n return this.tohex();\n };\n if (e !== undefined) {\n if (e.dpobj !== undefined) {\n this.asn1DP = e.dpobj;\n } else {\n if (e.dpname !== undefined) {\n this.asn1DP = new d(e.dpname);\n } else {\n if (e.fulluri !== undefined) {\n this.asn1DP = new d({\n full: [{\n uri: e.fulluri\n }]\n });\n }\n }\n }\n }\n};\nextendClass(KJUR.asn1.x509.DistributionPoint, KJUR.asn1.ASN1Object);\nKJUR.asn1.x509.DistributionPointName = function (h) {\n KJUR.asn1.x509.DistributionPointName.superclass.constructor.call(this);\n var g = null,\n d = null,\n a = null,\n f = null,\n c = KJUR,\n b = c.asn1,\n e = b.DERTaggedObject;\n this.tohex = function () {\n if (this.type != \"full\") {\n throw new Error(\"currently type shall be 'full': \" + this.type);\n }\n this.asn1Obj = new e({\n explicit: false,\n tag: this.tag,\n obj: this.asn1V\n });\n this.hTLV = this.asn1Obj.tohex();\n return this.hTLV;\n };\n this.getEncodedHex = function () {\n return this.tohex();\n };\n if (h !== undefined) {\n if (b.x509.GeneralNames.prototype.isPrototypeOf(h)) {\n this.type = \"full\";\n this.tag = \"a0\";\n this.asn1V = h;\n } else {\n if (h.full !== undefined) {\n this.type = \"full\";\n this.tag = \"a0\";\n this.asn1V = new b.x509.GeneralNames(h.full);\n } else {\n throw new Error(\"This class supports GeneralNames only as argument\");\n }\n }\n }\n};\nextendClass(KJUR.asn1.x509.DistributionPointName, KJUR.asn1.ASN1Object);\nKJUR.asn1.x509.CertificatePolicies = function (f) {\n KJUR.asn1.x509.CertificatePolicies.superclass.constructor.call(this, f);\n var c = KJUR,\n b = c.asn1,\n e = b.x509,\n a = b.DERSequence,\n d = e.PolicyInformation;\n this.params = null;\n this.getExtnValueHex = function () {\n var j = [];\n for (var h = 0; h < this.params.array.length; h++) {\n j.push(new d(this.params.array[h]));\n }\n var g = new a({\n array: j\n });\n this.asn1ExtnValue = g;\n return this.asn1ExtnValue.tohex();\n };\n this.oid = \"2.5.29.32\";\n if (f !== undefined) {\n this.params = f;\n }\n};\nextendClass(KJUR.asn1.x509.CertificatePolicies, KJUR.asn1.x509.Extension);\nKJUR.asn1.x509.PolicyInformation = function (d) {\n KJUR.asn1.x509.PolicyInformation.superclass.constructor.call(this, d);\n var c = KJUR.asn1,\n b = c.DERSequence,\n e = c.DERObjectIdentifier,\n a = c.x509.PolicyQualifierInfo;\n this.params = null;\n this.tohex = function () {\n if (this.params.policyoid === undefined && this.params.array === undefined) {\n throw new Error(\"parameter oid and array missing\");\n }\n var f = [new e(this.params.policyoid)];\n if (this.params.array !== undefined) {\n var j = [];\n for (var h = 0; h < this.params.array.length; h++) {\n j.push(new a(this.params.array[h]));\n }\n if (j.length > 0) {\n f.push(new b({\n array: j\n }));\n }\n }\n var g = new b({\n array: f\n });\n return g.tohex();\n };\n this.getEncodedHex = function () {\n return this.tohex();\n };\n if (d !== undefined) {\n this.params = d;\n }\n};\nextendClass(KJUR.asn1.x509.PolicyInformation, KJUR.asn1.ASN1Object);\nKJUR.asn1.x509.PolicyQualifierInfo = function (e) {\n KJUR.asn1.x509.PolicyQualifierInfo.superclass.constructor.call(this, e);\n var c = KJUR.asn1,\n b = c.DERSequence,\n d = c.DERIA5String,\n f = c.DERObjectIdentifier,\n a = c.x509.UserNotice;\n this.params = null;\n this.tohex = function () {\n if (this.params.cps !== undefined) {\n var g = new b({\n array: [new f({\n oid: \"1.3.6.1.5.5.7.2.1\"\n }), new d({\n str: this.params.cps\n })]\n });\n return g.tohex();\n }\n if (this.params.unotice != undefined) {\n var g = new b({\n array: [new f({\n oid: \"1.3.6.1.5.5.7.2.2\"\n }), new a(this.params.unotice)]\n });\n return g.tohex();\n }\n };\n this.getEncodedHex = function () {\n return this.tohex();\n };\n if (e !== undefined) {\n this.params = e;\n }\n};\nextendClass(KJUR.asn1.x509.PolicyQualifierInfo, KJUR.asn1.ASN1Object);\nKJUR.asn1.x509.UserNotice = function (e) {\n KJUR.asn1.x509.UserNotice.superclass.constructor.call(this, e);\n var a = KJUR.asn1.DERSequence,\n d = KJUR.asn1.DERInteger,\n c = KJUR.asn1.x509.DisplayText,\n b = KJUR.asn1.x509.NoticeReference;\n this.params = null;\n this.tohex = function () {\n var f = [];\n if (this.params.noticeref !== undefined) {\n f.push(new b(this.params.noticeref));\n }\n if (this.params.exptext !== undefined) {\n f.push(new c(this.params.exptext));\n }\n var g = new a({\n array: f\n });\n return g.tohex();\n };\n this.getEncodedHex = function () {\n return this.tohex();\n };\n if (e !== undefined) {\n this.params = e;\n }\n};\nextendClass(KJUR.asn1.x509.UserNotice, KJUR.asn1.ASN1Object);\nKJUR.asn1.x509.NoticeReference = function (d) {\n KJUR.asn1.x509.NoticeReference.superclass.constructor.call(this, d);\n var a = KJUR.asn1.DERSequence,\n c = KJUR.asn1.DERInteger,\n b = KJUR.asn1.x509.DisplayText;\n this.params = null;\n this.tohex = function () {\n var f = [];\n if (this.params.org !== undefined) {\n f.push(new b(this.params.org));\n }\n if (this.params.noticenum !== undefined) {\n var h = [];\n var e = this.params.noticenum;\n for (var j = 0; j < e.length; j++) {\n h.push(new c(e[j]));\n }\n f.push(new a({\n array: h\n }));\n }\n if (f.length == 0) {\n throw new Error(\"parameter is empty\");\n }\n var g = new a({\n array: f\n });\n return g.tohex();\n };\n this.getEncodedHex = function () {\n return this.tohex();\n };\n if (d !== undefined) {\n this.params = d;\n }\n};\nextendClass(KJUR.asn1.x509.NoticeReference, KJUR.asn1.ASN1Object);\nKJUR.asn1.x509.DisplayText = function (a) {\n KJUR.asn1.x509.DisplayText.superclass.constructor.call(this, a);\n this.hT = \"0c\";\n if (a !== undefined) {\n if (a.type === \"ia5\") {\n this.hT = \"16\";\n } else {\n if (a.type === \"vis\") {\n this.hT = \"1a\";\n } else {\n if (a.type === \"bmp\") {\n this.hT = \"1e\";\n }\n }\n }\n }\n};\nextendClass(KJUR.asn1.x509.DisplayText, KJUR.asn1.DERAbstractString);\nKJUR.asn1.x509.PolicyMappings = function (e) {\n KJUR.asn1.x509.PolicyMappings.superclass.constructor.call(this, e);\n var c = KJUR,\n b = c.asn1,\n d = b.x509,\n a = b.ASN1Util.newObject;\n this.params = null;\n this.getExtnValueHex = function () {\n var j = this.params;\n var f = [];\n for (var g = 0; g < j.array.length; g++) {\n var h = j.array[g];\n f.push({\n seq: [{\n oid: h[0]\n }, {\n oid: h[1]\n }]\n });\n }\n this.asn1ExtnValue = a({\n seq: f\n });\n return this.asn1ExtnValue.tohex();\n };\n this.oid = \"2.5.29.33\";\n if (e !== undefined) {\n this.params = e;\n }\n};\nextendClass(KJUR.asn1.x509.PolicyMappings, KJUR.asn1.x509.Extension);\nKJUR.asn1.x509.PolicyConstraints = function (e) {\n KJUR.asn1.x509.PolicyConstraints.superclass.constructor.call(this, e);\n var c = KJUR,\n b = c.asn1,\n d = b.x509,\n a = b.ASN1Util.newObject;\n this.params = null;\n this.getExtnValueHex = function () {\n var g = this.params;\n var f = [];\n if (g.reqexp != undefined) {\n f.push({\n tag: {\n tagi: \"80\",\n obj: {\n \"int\": g.reqexp\n }\n }\n });\n }\n if (g.inhibit != undefined) {\n f.push({\n tag: {\n tagi: \"81\",\n obj: {\n \"int\": g.inhibit\n }\n }\n });\n }\n this.asn1ExtnValue = a({\n seq: f\n });\n return this.asn1ExtnValue.tohex();\n };\n this.oid = \"2.5.29.36\";\n if (e !== undefined) {\n this.params = e;\n }\n};\nextendClass(KJUR.asn1.x509.PolicyConstraints, KJUR.asn1.x509.Extension);\nKJUR.asn1.x509.InhibitAnyPolicy = function (e) {\n KJUR.asn1.x509.InhibitAnyPolicy.superclass.constructor.call(this, e);\n var c = KJUR,\n b = c.asn1,\n d = b.x509,\n a = b.ASN1Util.newObject;\n this.params = null;\n this.getExtnValueHex = function () {\n this.asn1ExtnValue = a({\n \"int\": this.params.skip\n });\n return this.asn1ExtnValue.tohex();\n };\n this.oid = \"2.5.29.54\";\n if (e !== undefined) {\n this.params = e;\n }\n};\nextendClass(KJUR.asn1.x509.InhibitAnyPolicy, KJUR.asn1.x509.Extension);\nKJUR.asn1.x509.NameConstraints = function (f) {\n KJUR.asn1.x509.NameConstraints.superclass.constructor.call(this, f);\n var c = KJUR,\n b = c.asn1,\n e = b.x509,\n a = b.ASN1Util.newObject,\n d = e.GeneralSubtree;\n this.params = null;\n this.getExtnValueHex = function () {\n var l = this.params;\n var g = [];\n if (l.permit != undefined && l.permit.length != undefined) {\n var k = [];\n for (var h = 0; h < l.permit.length; h++) {\n k.push(new d(l.permit[h]));\n }\n g.push({\n tag: {\n tagi: \"a0\",\n obj: {\n seq: k\n }\n }\n });\n }\n if (l.exclude != undefined && l.exclude.length != undefined) {\n var j = [];\n for (var h = 0; h < l.exclude.length; h++) {\n j.push(new d(l.exclude[h]));\n }\n g.push({\n tag: {\n tagi: \"a1\",\n obj: {\n seq: j\n }\n }\n });\n }\n this.asn1ExtnValue = a({\n seq: g\n });\n return this.asn1ExtnValue.tohex();\n };\n this.oid = \"2.5.29.30\";\n if (f !== undefined) {\n this.params = f;\n }\n};\nextendClass(KJUR.asn1.x509.NameConstraints, KJUR.asn1.x509.Extension);\nKJUR.asn1.x509.GeneralSubtree = function (e) {\n KJUR.asn1.x509.GeneralSubtree.superclass.constructor.call(this);\n var b = KJUR.asn1,\n d = b.x509,\n c = d.GeneralName,\n a = b.ASN1Util.newObject;\n this.params = null;\n this.setByParam = function (f) {\n this.params = f;\n };\n this.tohex = function () {\n var h = this.params;\n var f = [new c(h)];\n if (h.min != undefined) {\n f.push({\n tag: {\n tagi: \"80\",\n obj: {\n \"int\": h.min\n }\n }\n });\n }\n if (h.max != undefined) {\n f.push({\n tag: {\n tagi: \"81\",\n obj: {\n \"int\": h.max\n }\n }\n });\n }\n var g = a({\n seq: f\n });\n return g.tohex();\n };\n this.getEncodedHex = function () {\n return this.tohex();\n };\n if (e !== undefined) {\n this.setByParam(e);\n }\n};\nextendClass(KJUR.asn1.x509.GeneralSubtree, KJUR.asn1.ASN1Object);\nKJUR.asn1.x509.ExtKeyUsage = function (c) {\n KJUR.asn1.x509.ExtKeyUsage.superclass.constructor.call(this, c);\n var b = KJUR,\n a = b.asn1;\n this.setPurposeArray = function (d) {\n this.asn1ExtnValue = new a.DERSequence();\n for (var e = 0; e < d.length; e++) {\n var f = new a.DERObjectIdentifier(d[e]);\n this.asn1ExtnValue.appendASN1Object(f);\n }\n };\n this.getExtnValueHex = function () {\n return this.asn1ExtnValue.tohex();\n };\n this.oid = \"2.5.29.37\";\n if (c !== undefined) {\n if (c.array !== undefined) {\n this.setPurposeArray(c.array);\n }\n }\n};\nextendClass(KJUR.asn1.x509.ExtKeyUsage, KJUR.asn1.x509.Extension);\nKJUR.asn1.x509.AuthorityKeyIdentifier = function (f) {\n KJUR.asn1.x509.AuthorityKeyIdentifier.superclass.constructor.call(this, f);\n var b = KJUR,\n a = b.asn1,\n d = a.DERTaggedObject,\n e = a.x509.GeneralNames,\n c = b.crypto.Util.isKey;\n this.asn1KID = null;\n this.asn1CertIssuer = null;\n this.asn1CertSN = null;\n this.getExtnValueHex = function () {\n var h = new Array();\n if (this.asn1KID) {\n h.push(new d({\n explicit: false,\n tag: \"80\",\n obj: this.asn1KID\n }));\n }\n if (this.asn1CertIssuer) {\n h.push(new d({\n explicit: false,\n tag: \"a1\",\n obj: new e([{\n dn: this.asn1CertIssuer\n }])\n }));\n }\n if (this.asn1CertSN) {\n h.push(new d({\n explicit: false,\n tag: \"82\",\n obj: this.asn1CertSN\n }));\n }\n var g = new a.DERSequence({\n array: h\n });\n this.asn1ExtnValue = g;\n return this.asn1ExtnValue.tohex();\n };\n this.setKIDByParam = function (i) {\n if (i.str !== undefined || i.hex !== undefined) {\n this.asn1KID = new KJUR.asn1.DEROctetString(i);\n } else {\n if (typeof i === \"object\" && KJUR.crypto.Util.isKey(i) || typeof i === \"string\" && i.indexOf(\"BEGIN \") != -1) {\n var h = i;\n if (typeof i === \"string\") {\n h = KEYUTIL.getKey(i);\n }\n var g = KEYUTIL.getKeyID(h);\n this.asn1KID = new KJUR.asn1.DEROctetString({\n hex: g\n });\n }\n }\n };\n this.setCertIssuerByParam = function (g) {\n if (g.str !== undefined || g.ldapstr !== undefined || g.hex !== undefined || g.certsubject !== undefined || g.certissuer !== undefined) {\n this.asn1CertIssuer = new KJUR.asn1.x509.X500Name(g);\n } else {\n if (typeof g === \"string\" && g.indexOf(\"BEGIN \") != -1 && g.indexOf(\"CERTIFICATE\") != -1) {\n this.asn1CertIssuer = new KJUR.asn1.x509.X500Name({\n certissuer: g\n });\n }\n }\n };\n this.setCertSNByParam = function (i) {\n if (i.str !== undefined || i.bigint !== undefined || i.hex !== undefined) {\n this.asn1CertSN = new KJUR.asn1.DERInteger(i);\n } else {\n if (typeof i === \"string\" && i.indexOf(\"BEGIN \") != -1 && i.indexOf(\"CERTIFICATE\")) {\n var g = new X509();\n g.readCertPEM(i);\n var h = g.getSerialNumberHex();\n this.asn1CertSN = new KJUR.asn1.DERInteger({\n hex: h\n });\n }\n }\n };\n this.oid = \"2.5.29.35\";\n if (f !== undefined) {\n if (f.kid !== undefined) {\n this.setKIDByParam(f.kid);\n }\n if (f.issuer !== undefined) {\n this.setCertIssuerByParam(f.issuer);\n }\n if (f.sn !== undefined) {\n this.setCertSNByParam(f.sn);\n }\n if (f.issuersn !== undefined && typeof f.issuersn === \"string\" && f.issuersn.indexOf(\"BEGIN \") != -1 && f.issuersn.indexOf(\"CERTIFICATE\")) {\n this.setCertSNByParam(f.issuersn);\n this.setCertIssuerByParam(f.issuersn);\n }\n }\n};\nextendClass(KJUR.asn1.x509.AuthorityKeyIdentifier, KJUR.asn1.x509.Extension);\nKJUR.asn1.x509.SubjectKeyIdentifier = function (d) {\n KJUR.asn1.x509.SubjectKeyIdentifier.superclass.constructor.call(this, d);\n var b = KJUR,\n a = b.asn1,\n c = a.DEROctetString;\n this.asn1KID = null;\n this.getExtnValueHex = function () {\n this.asn1ExtnValue = this.asn1KID;\n return this.asn1ExtnValue.tohex();\n };\n this.setKIDByParam = function (g) {\n if (g.str !== undefined || g.hex !== undefined) {\n this.asn1KID = new c(g);\n } else {\n if (typeof g === \"object\" && KJUR.crypto.Util.isKey(g) || typeof g === \"string\" && g.indexOf(\"BEGIN\") != -1) {\n var f = g;\n if (typeof g === \"string\") {\n f = KEYUTIL.getKey(g);\n }\n var e = KEYUTIL.getKeyID(f);\n this.asn1KID = new KJUR.asn1.DEROctetString({\n hex: e\n });\n }\n }\n };\n this.oid = \"2.5.29.14\";\n if (d !== undefined) {\n if (d.kid !== undefined) {\n this.setKIDByParam(d.kid);\n }\n }\n};\nextendClass(KJUR.asn1.x509.SubjectKeyIdentifier, KJUR.asn1.x509.Extension);\nKJUR.asn1.x509.AuthorityInfoAccess = function (a) {\n KJUR.asn1.x509.AuthorityInfoAccess.superclass.constructor.call(this, a);\n this.setAccessDescriptionArray = function (k) {\n var d = new Array(),\n b = KJUR,\n g = b.asn1,\n c = g.DERSequence,\n j = g.DERObjectIdentifier,\n l = g.x509.GeneralName;\n for (var f = 0; f < k.length; f++) {\n var e;\n var h = k[f];\n if (h.ocsp !== undefined) {\n e = new c({\n array: [new j({\n oid: \"1.3.6.1.5.5.7.48.1\"\n }), new l({\n uri: h.ocsp\n })]\n });\n } else {\n if (h.caissuer !== undefined) {\n e = new c({\n array: [new j({\n oid: \"1.3.6.1.5.5.7.48.2\"\n }), new l({\n uri: h.caissuer\n })]\n });\n } else {\n throw new Error(\"unknown AccessMethod parameter: \" + JSON.stringify(h));\n }\n }\n d.push(e);\n }\n this.asn1ExtnValue = new c({\n array: d\n });\n };\n this.getExtnValueHex = function () {\n return this.asn1ExtnValue.tohex();\n };\n this.oid = \"1.3.6.1.5.5.7.1.1\";\n if (a !== undefined) {\n if (a.array !== undefined) {\n this.setAccessDescriptionArray(a.array);\n }\n }\n};\nextendClass(KJUR.asn1.x509.AuthorityInfoAccess, KJUR.asn1.x509.Extension);\nKJUR.asn1.x509.SubjectAltName = function (a) {\n KJUR.asn1.x509.SubjectAltName.superclass.constructor.call(this, a);\n this.setNameArray = function (b) {\n this.asn1ExtnValue = new KJUR.asn1.x509.GeneralNames(b);\n };\n this.getExtnValueHex = function () {\n return this.asn1ExtnValue.tohex();\n };\n this.oid = \"2.5.29.17\";\n if (a !== undefined) {\n if (a.array !== undefined) {\n this.setNameArray(a.array);\n }\n }\n};\nextendClass(KJUR.asn1.x509.SubjectAltName, KJUR.asn1.x509.Extension);\nKJUR.asn1.x509.IssuerAltName = function (a) {\n KJUR.asn1.x509.IssuerAltName.superclass.constructor.call(this, a);\n this.setNameArray = function (b) {\n this.asn1ExtnValue = new KJUR.asn1.x509.GeneralNames(b);\n };\n this.getExtnValueHex = function () {\n return this.asn1ExtnValue.tohex();\n };\n this.oid = \"2.5.29.18\";\n if (a !== undefined) {\n if (a.array !== undefined) {\n this.setNameArray(a.array);\n }\n }\n};\nextendClass(KJUR.asn1.x509.IssuerAltName, KJUR.asn1.x509.Extension);\nKJUR.asn1.x509.SubjectDirectoryAttributes = function (e) {\n KJUR.asn1.x509.SubjectDirectoryAttributes.superclass.constructor.call(this, e);\n var c = KJUR.asn1,\n a = c.DERSequence,\n b = c.ASN1Util.newObject,\n d = c.x509.OID.name2oid;\n this.params = null;\n this.getExtnValueHex = function () {\n var f = [];\n for (var j = 0; j < this.params.array.length; j++) {\n var l = this.params.array[j];\n if (l.attr != undefined && l.array != undefined) {\n var k = {\n seq: [{\n oid: l.attr\n }, {\n set: l.array\n }]\n };\n f.push(b(k));\n continue;\n }\n var h = {\n seq: [{\n oid: \"1.2.3.4\"\n }, {\n set: [{\n utf8str: \"DE\"\n }]\n }]\n };\n if (l.attr == \"dateOfBirth\") {\n h.seq[0].oid = d(l.attr);\n h.seq[1].set[0] = {\n gentime: l.str\n };\n } else {\n if (l.attr == \"placeOfBirth\") {\n h.seq[0].oid = d(l.attr);\n h.seq[1].set[0] = {\n utf8str: l.str\n };\n } else {\n if (l.attr == \"gender\") {\n h.seq[0].oid = d(l.attr);\n h.seq[1].set[0] = {\n prnstr: l.str\n };\n } else {\n if (l.attr == \"countryOfCitizenship\") {\n h.seq[0].oid = d(l.attr);\n h.seq[1].set[0] = {\n prnstr: l.str\n };\n } else {\n if (l.attr == \"countryOfResidence\") {\n h.seq[0].oid = d(l.attr);\n h.seq[1].set[0] = {\n prnstr: l.str\n };\n } else {\n throw new Error(\"unsupported attribute: \" + l.attr);\n }\n }\n }\n }\n }\n f.push(new b(h));\n }\n var g = new a({\n array: f\n });\n this.asn1ExtnValue = g;\n return this.asn1ExtnValue.tohex();\n };\n this.oid = \"2.5.29.9\";\n if (e !== undefined) {\n this.params = e;\n }\n};\nextendClass(KJUR.asn1.x509.SubjectDirectoryAttributes, KJUR.asn1.x509.Extension);\nKJUR.asn1.x509.PrivateExtension = function (f) {\n KJUR.asn1.x509.PrivateExtension.superclass.constructor.call(this, f);\n var c = KJUR,\n e = c.lang.String.isHex,\n b = c.asn1,\n d = b.x509.OID.name2oid,\n a = b.ASN1Util.newObject;\n this.params = null;\n this.setByParam = function (g) {\n this.oid = d(g.extname);\n this.params = g;\n };\n this.getExtnValueHex = function () {\n if (this.params.extname == undefined || this.params.extn == undefined) {\n throw new Error(\"extname or extnhex not specified\");\n }\n var h = this.params.extn;\n if (typeof h == \"string\" && e(h)) {\n return h;\n } else {\n if (typeof h == \"object\") {\n try {\n return a(h).tohex();\n } catch (g) {}\n }\n }\n throw new Error(\"unsupported extn value\");\n };\n if (f != undefined) {\n this.setByParam(f);\n }\n};\nextendClass(KJUR.asn1.x509.PrivateExtension, KJUR.asn1.x509.Extension);\nKJUR.asn1.x509.CRL = function (g) {\n KJUR.asn1.x509.CRL.superclass.constructor.call(this);\n var c = KJUR,\n b = c.asn1,\n a = b.DERSequence,\n e = b.DERBitString,\n f = b.x509,\n d = f.AlgorithmIdentifier,\n h = f.TBSCertList;\n this.params = undefined;\n this.setByParam = function (i) {\n this.params = i;\n };\n this.sign = function () {\n var j = new h(this.params).tohex();\n var k = new KJUR.crypto.Signature({\n alg: this.params.sigalg\n });\n k.init(this.params.cakey);\n k.updateHex(j);\n var i = k.sign();\n this.params.sighex = i;\n };\n this.getPEM = function () {\n return hextopem(this.tohex(), \"X509 CRL\");\n };\n this.tohex = function () {\n var k = this.params;\n if (k.tbsobj == undefined) {\n k.tbsobj = new h(k);\n }\n if (k.sighex == undefined && k.cakey != undefined) {\n this.sign();\n }\n if (k.sighex == undefined) {\n throw new Error(\"sighex or cakey parameter not defined\");\n }\n var i = [];\n i.push(k.tbsobj);\n i.push(new d({\n name: k.sigalg\n }));\n i.push(new e({\n hex: \"00\" + k.sighex\n }));\n var j = new a({\n array: i\n });\n return j.tohex();\n };\n this.getEncodedHex = function () {\n return this.tohex();\n };\n if (g != undefined) {\n this.params = g;\n }\n};\nextendClass(KJUR.asn1.x509.CRL, KJUR.asn1.ASN1Object);\nKJUR.asn1.x509.TBSCertList = function (f) {\n KJUR.asn1.x509.TBSCertList.superclass.constructor.call(this);\n var b = KJUR,\n i = b.asn1,\n h = i.DERInteger,\n g = i.DERSequence,\n c = i.DERTaggedObject,\n k = i.DERObjectIdentifier,\n d = i.x509,\n l = d.AlgorithmIdentifier,\n e = d.Time,\n j = d.Extensions,\n a = d.X500Name;\n this.params = null;\n this.setByParam = function (m) {\n this.params = m;\n };\n this.getRevCertSequence = function () {\n var m = [];\n var n = this.params.revcert;\n for (var o = 0; o < n.length; o++) {\n var p = [new h(n[o].sn), new e(n[o].date)];\n if (n[o].ext != undefined) {\n p.push(new j(n[o].ext));\n }\n m.push(new g({\n array: p\n }));\n }\n return new g({\n array: m\n });\n };\n this.tohex = function () {\n var n = [];\n var r = this.params;\n if (r.version != undefined) {\n var m = r.version - 1;\n var p = new h({\n \"int\": m\n });\n n.push(p);\n }\n n.push(new l({\n name: r.sigalg\n }));\n n.push(new a(r.issuer));\n n.push(new e(r.thisupdate));\n if (r.nextupdate != undefined) {\n n.push(new e(r.nextupdate));\n }\n if (r.revcert != undefined) {\n n.push(this.getRevCertSequence());\n }\n if (r.ext != undefined) {\n var q = new j(r.ext);\n n.push(new c({\n tag: \"a0\",\n explicit: true,\n obj: q\n }));\n }\n var o = new g({\n array: n\n });\n return o.tohex();\n };\n this.getEncodedHex = function () {\n return this.tohex();\n };\n if (f !== undefined) {\n this.setByParam(f);\n }\n};\nextendClass(KJUR.asn1.x509.TBSCertList, KJUR.asn1.ASN1Object);\nKJUR.asn1.x509.CRLEntry = function (e) {\n KJUR.asn1.x509.CRLEntry.superclass.constructor.call(this);\n var d = null,\n c = null,\n b = KJUR,\n a = b.asn1;\n this.setCertSerial = function (f) {\n this.sn = new a.DERInteger(f);\n };\n this.setRevocationDate = function (f) {\n this.time = new a.x509.Time(f);\n };\n this.tohex = function () {\n var f = new a.DERSequence({\n array: [this.sn, this.time]\n });\n this.TLV = f.tohex();\n return this.TLV;\n };\n this.getEncodedHex = function () {\n return this.tohex();\n };\n if (e !== undefined) {\n if (e.time !== undefined) {\n this.setRevocationDate(e.time);\n }\n if (e.sn !== undefined) {\n this.setCertSerial(e.sn);\n }\n }\n};\nextendClass(KJUR.asn1.x509.CRLEntry, KJUR.asn1.ASN1Object);\nKJUR.asn1.x509.CRLNumber = function (a) {\n KJUR.asn1.x509.CRLNumber.superclass.constructor.call(this, a);\n this.params = undefined;\n this.getExtnValueHex = function () {\n this.asn1ExtnValue = new KJUR.asn1.DERInteger(this.params.num);\n return this.asn1ExtnValue.tohex();\n };\n this.oid = \"2.5.29.20\";\n if (a != undefined) {\n this.params = a;\n }\n};\nextendClass(KJUR.asn1.x509.CRLNumber, KJUR.asn1.x509.Extension);\nKJUR.asn1.x509.CRLReason = function (a) {\n KJUR.asn1.x509.CRLReason.superclass.constructor.call(this, a);\n this.params = undefined;\n this.getExtnValueHex = function () {\n this.asn1ExtnValue = new KJUR.asn1.DEREnumerated(this.params.code);\n return this.asn1ExtnValue.tohex();\n };\n this.oid = \"2.5.29.21\";\n if (a != undefined) {\n this.params = a;\n }\n};\nextendClass(KJUR.asn1.x509.CRLReason, KJUR.asn1.x509.Extension);\nKJUR.asn1.x509.OCSPNonce = function (a) {\n KJUR.asn1.x509.OCSPNonce.superclass.constructor.call(this, a);\n this.params = undefined;\n this.getExtnValueHex = function () {\n this.asn1ExtnValue = new KJUR.asn1.DEROctetString(this.params);\n return this.asn1ExtnValue.tohex();\n };\n this.oid = \"1.3.6.1.5.5.7.48.1.2\";\n if (a != undefined) {\n this.params = a;\n }\n};\nextendClass(KJUR.asn1.x509.OCSPNonce, KJUR.asn1.x509.Extension);\nKJUR.asn1.x509.OCSPNoCheck = function (a) {\n KJUR.asn1.x509.OCSPNoCheck.superclass.constructor.call(this, a);\n this.params = undefined;\n this.getExtnValueHex = function () {\n this.asn1ExtnValue = new KJUR.asn1.DERNull();\n return this.asn1ExtnValue.tohex();\n };\n this.oid = \"1.3.6.1.5.5.7.48.1.5\";\n if (a != undefined) {\n this.params = a;\n }\n};\nextendClass(KJUR.asn1.x509.OCSPNoCheck, KJUR.asn1.x509.Extension);\nKJUR.asn1.x509.AdobeTimeStamp = function (g) {\n KJUR.asn1.x509.AdobeTimeStamp.superclass.constructor.call(this, g);\n var c = KJUR,\n b = c.asn1,\n f = b.DERInteger,\n d = b.DERBoolean,\n a = b.DERSequence,\n e = b.x509.GeneralName;\n this.params = null;\n this.getExtnValueHex = function () {\n var i = this.params;\n var h = [new f(1)];\n h.push(new e({\n uri: i.uri\n }));\n if (i.reqauth != undefined) {\n h.push(new d(i.reqauth));\n }\n this.asn1ExtnValue = new a({\n array: h\n });\n return this.asn1ExtnValue.tohex();\n };\n this.oid = \"1.2.840.113583.1.1.9.1\";\n if (g !== undefined) {\n this.setByParam(g);\n }\n};\nextendClass(KJUR.asn1.x509.AdobeTimeStamp, KJUR.asn1.x509.Extension);\nKJUR.asn1.x509.X500Name = function (f) {\n KJUR.asn1.x509.X500Name.superclass.constructor.call(this);\n this.asn1Array = [];\n this.paramArray = [];\n this.sRule = \"utf8\";\n var c = KJUR,\n b = c.asn1,\n e = b.x509,\n d = e.RDN,\n a = pemtohex;\n this.setByString = function (g, l) {\n if (l !== undefined) {\n this.sRule = l;\n }\n var k = g.split(\"/\");\n k.shift();\n var j = [];\n for (var m = 0; m < k.length; m++) {\n if (k[m].match(/^[^=]+=.+$/)) {\n j.push(k[m]);\n } else {\n var h = j.length - 1;\n j[h] = j[h] + \"/\" + k[m];\n }\n }\n for (var m = 0; m < j.length; m++) {\n this.asn1Array.push(new d({\n str: j[m],\n rule: this.sRule\n }));\n }\n };\n this.setByLdapString = function (g, h) {\n if (h !== undefined) {\n this.sRule = h;\n }\n var i = e.X500Name.ldapToCompat(g);\n this.setByString(i, h);\n };\n this.setByObject = function (j, i) {\n if (i !== undefined) {\n this.sRule = i;\n }\n for (var g in j) {\n if (j.hasOwnProperty(g)) {\n var h = new d({\n str: g + \"=\" + j[g],\n rule: this.sRule\n });\n this.asn1Array ? this.asn1Array.push(h) : this.asn1Array = [h];\n }\n }\n };\n this.setByParam = function (h) {\n if (h.rule !== undefined) {\n this.sRule = h.rule;\n }\n if (h.array !== undefined) {\n this.paramArray = h.array;\n } else {\n if (h.str !== undefined) {\n this.setByString(h.str);\n } else {\n if (h.ldapstr !== undefined) {\n this.setByLdapString(h.ldapstr);\n } else {\n if (h.hex !== undefined) {\n this.hTLV = h.hex;\n } else {\n if (h.certissuer !== undefined) {\n var g = new X509();\n g.readCertPEM(h.certissuer);\n this.hTLV = g.getIssuerHex();\n } else {\n if (h.certsubject !== undefined) {\n var g = new X509();\n g.readCertPEM(h.certsubject);\n this.hTLV = g.getSubjectHex();\n } else {\n if (typeof h === \"object\" && h.certsubject === undefined && h.certissuer === undefined) {\n this.setByObject(h);\n }\n }\n }\n }\n }\n }\n }\n };\n this.tohex = function () {\n if (typeof this.hTLV == \"string\") {\n return this.hTLV;\n }\n if (this.asn1Array.length == 0 && this.paramArray.length > 0) {\n for (var g = 0; g < this.paramArray.length; g++) {\n var k = {\n array: this.paramArray[g]\n };\n if (this.sRule != \"utf8\") {\n k.rule = this.sRule;\n }\n var h = new d(k);\n this.asn1Array.push(h);\n }\n }\n var j = new b.DERSequence({\n array: this.asn1Array\n });\n this.hTLV = j.tohex();\n return this.hTLV;\n };\n this.getEncodedHex = function () {\n return this.tohex();\n };\n if (f !== undefined) {\n this.setByParam(f);\n }\n};\nextendClass(KJUR.asn1.x509.X500Name, KJUR.asn1.ASN1Object);\nKJUR.asn1.x509.X500Name.compatToLDAP = function (d) {\n if (d.substr(0, 1) !== \"/\") {\n throw \"malformed input\";\n }\n var b = \"\";\n d = d.substr(1);\n var c = d.split(\"/\");\n c.reverse();\n c = c.map(function (a) {\n return a.replace(/,/, \"\\\\,\");\n });\n return c.join(\",\");\n};\nKJUR.asn1.x509.X500Name.onelineToLDAP = function (a) {\n return KJUR.asn1.x509.X500Name.compatToLDAP(a);\n};\nKJUR.asn1.x509.X500Name.ldapToCompat = function (g) {\n var c = g.split(\",\");\n var e = false;\n var b = [];\n for (var f = 0; c.length > 0; f++) {\n var h = c.shift();\n if (e === true) {\n var d = b.pop();\n var j = (d + \",\" + h).replace(/\\\\,/g, \",\");\n b.push(j);\n e = false;\n } else {\n b.push(h);\n }\n if (h.substr(-1, 1) === \"\\\\\") {\n e = true;\n }\n }\n b = b.map(function (a) {\n return a.replace(\"/\", \"\\\\/\");\n });\n b.reverse();\n return \"/\" + b.join(\"/\");\n};\nKJUR.asn1.x509.X500Name.ldapToOneline = function (a) {\n return KJUR.asn1.x509.X500Name.ldapToCompat(a);\n};\nKJUR.asn1.x509.RDN = function (b) {\n KJUR.asn1.x509.RDN.superclass.constructor.call(this);\n this.asn1Array = [];\n this.paramArray = [];\n this.sRule = \"utf8\";\n var a = KJUR.asn1.x509.AttributeTypeAndValue;\n this.setByParam = function (c) {\n if (c.rule !== undefined) {\n this.sRule = c.rule;\n }\n if (c.str !== undefined) {\n this.addByMultiValuedString(c.str);\n }\n if (c.array !== undefined) {\n this.paramArray = c.array;\n }\n };\n this.addByString = function (c) {\n this.asn1Array.push(new KJUR.asn1.x509.AttributeTypeAndValue({\n str: c,\n rule: this.sRule\n }));\n };\n this.addByMultiValuedString = function (e) {\n var c = KJUR.asn1.x509.RDN.parseString(e);\n for (var d = 0; d < c.length; d++) {\n this.addByString(c[d]);\n }\n };\n this.tohex = function () {\n if (this.asn1Array.length == 0 && this.paramArray.length > 0) {\n for (var d = 0; d < this.paramArray.length; d++) {\n var f = this.paramArray[d];\n if (f.rule !== undefined && this.sRule != \"utf8\") {\n f.rule = this.sRule;\n }\n var c = new a(f);\n this.asn1Array.push(c);\n }\n }\n var e = new KJUR.asn1.DERSet({\n array: this.asn1Array\n });\n this.TLV = e.tohex();\n return this.TLV;\n };\n this.getEncodedHex = function () {\n return this.tohex();\n };\n if (b !== undefined) {\n this.setByParam(b);\n }\n};\nextendClass(KJUR.asn1.x509.RDN, KJUR.asn1.ASN1Object);\nKJUR.asn1.x509.RDN.parseString = function (m) {\n var j = m.split(/\\+/);\n var h = false;\n var c = [];\n for (var g = 0; j.length > 0; g++) {\n var k = j.shift();\n if (h === true) {\n var f = c.pop();\n var d = (f + \"+\" + k).replace(/\\\\\\+/g, \"+\");\n c.push(d);\n h = false;\n } else {\n c.push(k);\n }\n if (k.substr(-1, 1) === \"\\\\\") {\n h = true;\n }\n }\n var l = false;\n var b = [];\n for (var g = 0; c.length > 0; g++) {\n var k = c.shift();\n if (l === true) {\n var e = b.pop();\n if (k.match(/\"$/)) {\n var d = (e + \"+\" + k).replace(/^([^=]+)=\"(.*)\"$/, \"$1=$2\");\n b.push(d);\n l = false;\n } else {\n b.push(e + \"+\" + k);\n }\n } else {\n b.push(k);\n }\n if (k.match(/^[^=]+=\"/)) {\n l = true;\n }\n }\n return b;\n};\nKJUR.asn1.x509.AttributeTypeAndValue = function (c) {\n KJUR.asn1.x509.AttributeTypeAndValue.superclass.constructor.call(this);\n this.sRule = \"utf8\";\n this.sType = null;\n this.sValue = null;\n this.dsType = null;\n var a = KJUR,\n g = a.asn1,\n d = g.DERSequence,\n l = g.DERUTF8String,\n i = g.DERPrintableString,\n h = g.DERTeletexString,\n b = g.DERIA5String,\n e = g.DERVisibleString,\n k = g.DERBMPString,\n f = a.lang.String.isMail,\n j = a.lang.String.isPrintable;\n this.setByParam = function (o) {\n if (o.rule !== undefined) {\n this.sRule = o.rule;\n }\n if (o.ds !== undefined) {\n this.dsType = o.ds;\n }\n if (o.value === undefined && o.str !== undefined) {\n var n = o.str;\n var m = n.match(/^([^=]+)=(.+)$/);\n if (m) {\n this.sType = m[1];\n this.sValue = m[2];\n } else {\n throw new Error(\"malformed attrTypeAndValueStr: \" + attrTypeAndValueStr);\n }\n } else {\n this.sType = o.type;\n this.sValue = o.value;\n }\n };\n this.setByString = function (n, o) {\n if (o !== undefined) {\n this.sRule = o;\n }\n var m = n.match(/^([^=]+)=(.+)$/);\n if (m) {\n this.setByAttrTypeAndValueStr(m[1], m[2]);\n } else {\n throw new Error(\"malformed attrTypeAndValueStr: \" + attrTypeAndValueStr);\n }\n };\n this._getDsType = function () {\n var o = this.sType;\n var n = this.sValue;\n var m = this.sRule;\n if (m === \"prn\") {\n if (o == \"CN\" && f(n)) {\n return \"ia5\";\n }\n if (j(n)) {\n return \"prn\";\n }\n return \"utf8\";\n } else {\n if (m === \"utf8\") {\n if (o == \"CN\" && f(n)) {\n return \"ia5\";\n }\n if (o == \"C\") {\n return \"prn\";\n }\n return \"utf8\";\n }\n }\n return \"utf8\";\n };\n this.setByAttrTypeAndValueStr = function (o, n, m) {\n if (m !== undefined) {\n this.sRule = m;\n }\n this.sType = o;\n this.sValue = n;\n };\n this.getValueObj = function (n, m) {\n if (n == \"utf8\") {\n return new l({\n str: m\n });\n }\n if (n == \"prn\") {\n return new i({\n str: m\n });\n }\n if (n == \"tel\") {\n return new h({\n str: m\n });\n }\n if (n == \"ia5\") {\n return new b({\n str: m\n });\n }\n if (n == \"vis\") {\n return new e({\n str: m\n });\n }\n if (n == \"bmp\") {\n return new k({\n str: m\n });\n }\n throw new Error(\"unsupported directory string type: type=\" + n + \" value=\" + m);\n };\n this.tohex = function () {\n if (this.dsType == null) {\n this.dsType = this._getDsType();\n }\n var n = KJUR.asn1.x509.OID.atype2obj(this.sType);\n var m = this.getValueObj(this.dsType, this.sValue);\n var p = new d({\n array: [n, m]\n });\n this.TLV = p.tohex();\n return this.TLV;\n };\n this.getEncodedHex = function () {\n return this.tohex();\n };\n if (c !== undefined) {\n this.setByParam(c);\n }\n};\nextendClass(KJUR.asn1.x509.AttributeTypeAndValue, KJUR.asn1.ASN1Object);\nKJUR.asn1.x509.SubjectPublicKeyInfo = function (f) {\n KJUR.asn1.x509.SubjectPublicKeyInfo.superclass.constructor.call(this);\n var l = null,\n k = null,\n a = KJUR,\n j = a.asn1,\n i = j.DERInteger,\n b = j.DERBitString,\n m = j.DERObjectIdentifier,\n e = j.DERSequence,\n h = j.ASN1Util.newObject,\n d = j.x509,\n o = d.AlgorithmIdentifier,\n g = a.crypto,\n n = g.ECDSA,\n c = g.DSA;\n this.getASN1Object = function () {\n if (this.asn1AlgId == null || this.asn1SubjPKey == null) {\n throw \"algId and/or subjPubKey not set\";\n }\n var p = new e({\n array: [this.asn1AlgId, this.asn1SubjPKey]\n });\n return p;\n };\n this.tohex = function () {\n var p = this.getASN1Object();\n this.hTLV = p.tohex();\n return this.hTLV;\n };\n this.getEncodedHex = function () {\n return this.tohex();\n };\n this.setPubKey = function (q) {\n try {\n if (q instanceof RSAKey) {\n var u = h({\n seq: [{\n \"int\": {\n bigint: q.n\n }\n }, {\n \"int\": {\n \"int\": q.e\n }\n }]\n });\n var s = u.tohex();\n this.asn1AlgId = new o({\n name: \"rsaEncryption\"\n });\n this.asn1SubjPKey = new b({\n hex: \"00\" + s\n });\n }\n } catch (p) {}\n try {\n if (q instanceof KJUR.crypto.ECDSA) {\n var r = new m({\n name: q.curveName\n });\n this.asn1AlgId = new o({\n name: \"ecPublicKey\",\n asn1params: r\n });\n this.asn1SubjPKey = new b({\n hex: \"00\" + q.pubKeyHex\n });\n }\n } catch (p) {}\n try {\n if (q instanceof KJUR.crypto.DSA) {\n var r = new h({\n seq: [{\n \"int\": {\n bigint: q.p\n }\n }, {\n \"int\": {\n bigint: q.q\n }\n }, {\n \"int\": {\n bigint: q.g\n }\n }]\n });\n this.asn1AlgId = new o({\n name: \"dsa\",\n asn1params: r\n });\n var t = new i({\n bigint: q.y\n });\n this.asn1SubjPKey = new b({\n hex: \"00\" + t.tohex()\n });\n }\n } catch (p) {}\n };\n if (f !== undefined) {\n this.setPubKey(f);\n }\n};\nextendClass(KJUR.asn1.x509.SubjectPublicKeyInfo, KJUR.asn1.ASN1Object);\nKJUR.asn1.x509.Time = function (f) {\n KJUR.asn1.x509.Time.superclass.constructor.call(this);\n var e = null,\n a = null,\n d = KJUR,\n c = d.asn1,\n b = c.DERUTCTime,\n g = c.DERGeneralizedTime;\n this.params = null;\n this.type = null;\n this.setTimeParams = function (h) {\n this.timeParams = h;\n };\n this.setByParam = function (h) {\n this.params = h;\n };\n this.getType = function (h) {\n if (h.match(/^[0-9]{12}Z$/)) {\n return \"utc\";\n }\n if (h.match(/^[0-9]{14}Z$/)) {\n return \"gen\";\n }\n if (h.match(/^[0-9]{12}\\.[0-9]+Z$/)) {\n return \"utc\";\n }\n if (h.match(/^[0-9]{14}\\.[0-9]+Z$/)) {\n return \"gen\";\n }\n return null;\n };\n this.tohex = function () {\n var i = this.params;\n var h = null;\n if (typeof i == \"string\") {\n i = {\n str: i\n };\n }\n if (i != null && i.str && (i.type == null || i.type == undefined)) {\n i.type = this.getType(i.str);\n }\n if (i != null && i.str) {\n if (i.type == \"utc\") {\n h = new b(i.str);\n }\n if (i.type == \"gen\") {\n h = new g(i.str);\n }\n } else {\n if (this.type == \"gen\") {\n h = new g();\n } else {\n h = new b();\n }\n }\n if (h == null) {\n throw new Error(\"wrong setting for Time\");\n }\n this.TLV = h.tohex();\n return this.TLV;\n };\n this.getEncodedHex = function () {\n return this.tohex();\n };\n if (f != undefined) {\n this.setByParam(f);\n }\n};\nKJUR.asn1.x509.Time_bak = function (f) {\n KJUR.asn1.x509.Time_bak.superclass.constructor.call(this);\n var e = null,\n a = null,\n d = KJUR,\n c = d.asn1,\n b = c.DERUTCTime,\n g = c.DERGeneralizedTime;\n this.setTimeParams = function (h) {\n this.timeParams = h;\n };\n this.tohex = function () {\n var h = null;\n if (this.timeParams != null) {\n if (this.type == \"utc\") {\n h = new b(this.timeParams);\n } else {\n h = new g(this.timeParams);\n }\n } else {\n if (this.type == \"utc\") {\n h = new b();\n } else {\n h = new g();\n }\n }\n this.TLV = h.tohex();\n return this.TLV;\n };\n this.getEncodedHex = function () {\n return this.tohex();\n };\n this.type = \"utc\";\n if (f !== undefined) {\n if (f.type !== undefined) {\n this.type = f.type;\n } else {\n if (f.str !== undefined) {\n if (f.str.match(/^[0-9]{12}Z$/)) {\n this.type = \"utc\";\n }\n if (f.str.match(/^[0-9]{14}Z$/)) {\n this.type = \"gen\";\n }\n }\n }\n this.timeParams = f;\n }\n};\nextendClass(KJUR.asn1.x509.Time, KJUR.asn1.ASN1Object);\nKJUR.asn1.x509.AlgorithmIdentifier = function (e) {\n KJUR.asn1.x509.AlgorithmIdentifier.superclass.constructor.call(this);\n this.nameAlg = null;\n this.asn1Alg = null;\n this.asn1Params = null;\n this.paramEmpty = false;\n var b = KJUR,\n a = b.asn1,\n c = a.x509.AlgorithmIdentifier.PSSNAME2ASN1TLV;\n this.tohex = function () {\n if (this.nameAlg === null && this.asn1Alg === null) {\n throw new Error(\"algorithm not specified\");\n }\n if (this.nameAlg !== null) {\n var f = null;\n for (var h in c) {\n if (h === this.nameAlg) {\n f = c[h];\n }\n }\n if (f !== null) {\n this.hTLV = f;\n return this.hTLV;\n }\n }\n if (this.nameAlg !== null && this.asn1Alg === null) {\n this.asn1Alg = a.x509.OID.name2obj(this.nameAlg);\n }\n var g = [this.asn1Alg];\n if (this.asn1Params !== null) {\n g.push(this.asn1Params);\n }\n var i = new a.DERSequence({\n array: g\n });\n this.hTLV = i.tohex();\n return this.hTLV;\n };\n this.getEncodedHex = function () {\n return this.tohex();\n };\n if (e !== undefined) {\n if (e.name !== undefined) {\n this.nameAlg = e.name;\n }\n if (e.asn1params !== undefined) {\n this.asn1Params = e.asn1params;\n }\n if (e.paramempty !== undefined) {\n this.paramEmpty = e.paramempty;\n }\n }\n if (this.asn1Params === null && this.paramEmpty === false && this.nameAlg !== null) {\n if (this.nameAlg.name !== undefined) {\n this.nameAlg = this.nameAlg.name;\n }\n var d = this.nameAlg.toLowerCase();\n if (d.substr(-7, 7) !== \"withdsa\" && d.substr(-9, 9) !== \"withecdsa\") {\n this.asn1Params = new a.DERNull();\n }\n }\n};\nextendClass(KJUR.asn1.x509.AlgorithmIdentifier, KJUR.asn1.ASN1Object);\nKJUR.asn1.x509.AlgorithmIdentifier.PSSNAME2ASN1TLV = {\n SHAwithRSAandMGF1: \"300d06092a864886f70d01010a3000\",\n SHA256withRSAandMGF1: \"303d06092a864886f70d01010a3030a00d300b0609608648016503040201a11a301806092a864886f70d010108300b0609608648016503040201a203020120\",\n SHA384withRSAandMGF1: \"303d06092a864886f70d01010a3030a00d300b0609608648016503040202a11a301806092a864886f70d010108300b0609608648016503040202a203020130\",\n SHA512withRSAandMGF1: \"303d06092a864886f70d01010a3030a00d300b0609608648016503040203a11a301806092a864886f70d010108300b0609608648016503040203a203020140\"\n};\nKJUR.asn1.x509.GeneralName = function (f) {\n KJUR.asn1.x509.GeneralName.superclass.constructor.call(this);\n var l = {\n rfc822: \"81\",\n dns: \"82\",\n dn: \"a4\",\n uri: \"86\",\n ip: \"87\",\n otherName: \"a0\"\n },\n b = KJUR,\n h = b.asn1,\n d = h.x509,\n a = d.X500Name,\n g = d.OtherName,\n e = h.DERIA5String,\n i = h.DERPrintableString,\n k = h.DEROctetString,\n c = h.DERTaggedObject,\n m = h.ASN1Object,\n j = Error;\n this.params = null;\n this.setByParam = function (n) {\n this.params = n;\n };\n this.tohex = function () {\n var p = this.params;\n var A, y, q;\n var y = false;\n if (p.other !== undefined) {\n A = \"a0\", q = new g(p.other);\n } else {\n if (p.rfc822 !== undefined) {\n A = \"81\";\n q = new e({\n str: p.rfc822\n });\n } else {\n if (p.dns !== undefined) {\n A = \"82\";\n q = new e({\n str: p.dns\n });\n } else {\n if (p.dn !== undefined) {\n A = \"a4\";\n y = true;\n if (typeof p.dn === \"string\") {\n q = new a({\n str: p.dn\n });\n } else {\n if (p.dn instanceof KJUR.asn1.x509.X500Name) {\n q = p.dn;\n } else {\n q = new a(p.dn);\n }\n }\n } else {\n if (p.ldapdn !== undefined) {\n A = \"a4\";\n y = true;\n q = new a({\n ldapstr: p.ldapdn\n });\n } else {\n if (p.certissuer !== undefined || p.certsubj !== undefined) {\n A = \"a4\";\n y = true;\n var n, o;\n var z = null;\n if (p.certsubj !== undefined) {\n n = false;\n o = p.certsubj;\n } else {\n n = true;\n o = p.certissuer;\n }\n if (o.match(/^[0-9A-Fa-f]+$/)) {\n z == o;\n }\n if (o.indexOf(\"-----BEGIN \") != -1) {\n z = pemtohex(o);\n }\n if (z == null) {\n throw new Error(\"certsubj/certissuer not cert\");\n }\n var w = new X509();\n w.hex = z;\n var s;\n if (n) {\n s = w.getIssuerHex();\n } else {\n s = w.getSubjectHex();\n }\n q = new m();\n q.hTLV = s;\n } else {\n if (p.uri !== undefined) {\n A = \"86\";\n q = new e({\n str: p.uri\n });\n } else {\n if (p.ip !== undefined) {\n A = \"87\";\n var v;\n var t = p.ip;\n try {\n if (t.match(/^[0-9a-f]+$/)) {\n var r = t.length;\n if (r == 8 || r == 16 || r == 32 || r == 64) {\n v = t;\n } else {\n throw \"err\";\n }\n } else {\n v = iptohex(t);\n }\n } catch (u) {\n throw new j(\"malformed IP address: \" + p.ip + \":\" + u.message);\n }\n q = new k({\n hex: v\n });\n } else {\n throw new j(\"improper params\");\n }\n }\n }\n }\n }\n }\n }\n }\n var B = new c({\n tag: A,\n explicit: y,\n obj: q\n });\n return B.tohex();\n };\n this.getEncodedHex = function () {\n return this.tohex();\n };\n if (f !== undefined) {\n this.setByParam(f);\n }\n};\nextendClass(KJUR.asn1.x509.GeneralName, KJUR.asn1.ASN1Object);\nKJUR.asn1.x509.GeneralNames = function (d) {\n KJUR.asn1.x509.GeneralNames.superclass.constructor.call(this);\n var a = null,\n c = KJUR,\n b = c.asn1;\n this.setByParamArray = function (g) {\n for (var e = 0; e < g.length; e++) {\n var f = new b.x509.GeneralName(g[e]);\n this.asn1Array.push(f);\n }\n };\n this.tohex = function () {\n var e = new b.DERSequence({\n array: this.asn1Array\n });\n return e.tohex();\n };\n this.getEncodedHex = function () {\n return this.tohex();\n };\n this.asn1Array = new Array();\n if (typeof d != \"undefined\") {\n this.setByParamArray(d);\n }\n};\nextendClass(KJUR.asn1.x509.GeneralNames, KJUR.asn1.ASN1Object);\nKJUR.asn1.x509.OtherName = function (g) {\n KJUR.asn1.x509.OtherName.superclass.constructor.call(this);\n var f = null,\n e = null,\n d = KJUR,\n c = d.asn1,\n h = c.DERObjectIdentifier,\n a = c.DERSequence,\n b = c.ASN1Util.newObject;\n this.params = null;\n this.setByParam = function (i) {\n this.params = i;\n };\n this.tohex = function () {\n var k = this.params;\n if (k.oid == undefined || k.value == undefined) {\n throw new Error(\"oid or value not specified\");\n }\n var l = new h({\n oid: k.oid\n });\n var i = b({\n tag: {\n tag: \"a0\",\n explicit: true,\n obj: k.value\n }\n });\n var j = new a({\n array: [l, i]\n });\n return j.tohex();\n };\n this.getEncodedHex = function () {\n return this.tohex();\n };\n if (g !== undefined) {\n this.setByParam(g);\n }\n};\nextendClass(KJUR.asn1.x509.OtherName, KJUR.asn1.ASN1Object);\nKJUR.asn1.x509.OID = new function () {\n var a = KJUR.asn1.DERObjectIdentifier;\n this.name2oidList = {\n \"aes128-CBC\": \"2.16.840.1.101.3.4.1.2\",\n \"aes256-CBC\": \"2.16.840.1.101.3.4.1.42\",\n sha1: \"1.3.14.3.2.26\",\n sha256: \"2.16.840.1.101.3.4.2.1\",\n sha384: \"2.16.840.1.101.3.4.2.2\",\n sha512: \"2.16.840.1.101.3.4.2.3\",\n sha224: \"2.16.840.1.101.3.4.2.4\",\n md5: \"1.2.840.113549.2.5\",\n md2: \"1.3.14.7.2.2.1\",\n ripemd160: \"1.3.36.3.2.1\",\n hmacWithSHA1: \"1.2.840.113549.2.7\",\n hmacWithSHA224: \"1.2.840.113549.2.8\",\n hmacWithSHA256: \"1.2.840.113549.2.9\",\n hmacWithSHA384: \"1.2.840.113549.2.10\",\n hmacWithSHA512: \"1.2.840.113549.2.11\",\n MD2withRSA: \"1.2.840.113549.1.1.2\",\n MD4withRSA: \"1.2.840.113549.1.1.3\",\n MD5withRSA: \"1.2.840.113549.1.1.4\",\n SHA1withRSA: \"1.2.840.113549.1.1.5\",\n \"pkcs1-MGF\": \"1.2.840.113549.1.1.8\",\n rsaPSS: \"1.2.840.113549.1.1.10\",\n SHA224withRSA: \"1.2.840.113549.1.1.14\",\n SHA256withRSA: \"1.2.840.113549.1.1.11\",\n SHA384withRSA: \"1.2.840.113549.1.1.12\",\n SHA512withRSA: \"1.2.840.113549.1.1.13\",\n SHA1withECDSA: \"1.2.840.10045.4.1\",\n SHA224withECDSA: \"1.2.840.10045.4.3.1\",\n SHA256withECDSA: \"1.2.840.10045.4.3.2\",\n SHA384withECDSA: \"1.2.840.10045.4.3.3\",\n SHA512withECDSA: \"1.2.840.10045.4.3.4\",\n dsa: \"1.2.840.10040.4.1\",\n SHA1withDSA: \"1.2.840.10040.4.3\",\n SHA224withDSA: \"2.16.840.1.101.3.4.3.1\",\n SHA256withDSA: \"2.16.840.1.101.3.4.3.2\",\n rsaEncryption: \"1.2.840.113549.1.1.1\",\n commonName: \"2.5.4.3\",\n countryName: \"2.5.4.6\",\n localityName: \"2.5.4.7\",\n stateOrProvinceName: \"2.5.4.8\",\n streetAddress: \"2.5.4.9\",\n organizationName: \"2.5.4.10\",\n organizationalUnitName: \"2.5.4.11\",\n domainComponent: \"0.9.2342.19200300.100.1.25\",\n userId: \"0.9.2342.19200300.100.1.1\",\n surname: \"2.5.4.4\",\n givenName: \"2.5.4.42\",\n title: \"2.5.4.12\",\n distinguishedName: \"2.5.4.49\",\n emailAddress: \"1.2.840.113549.1.9.1\",\n description: \"2.5.4.13\",\n businessCategory: \"2.5.4.15\",\n postalCode: \"2.5.4.17\",\n uniqueIdentifier: \"2.5.4.45\",\n organizationIdentifier: \"2.5.4.97\",\n jurisdictionOfIncorporationL: \"1.3.6.1.4.1.311.60.2.1.1\",\n jurisdictionOfIncorporationSP: \"1.3.6.1.4.1.311.60.2.1.2\",\n jurisdictionOfIncorporationC: \"1.3.6.1.4.1.311.60.2.1.3\",\n subjectDirectoryAttributes: \"2.5.29.9\",\n subjectKeyIdentifier: \"2.5.29.14\",\n keyUsage: \"2.5.29.15\",\n subjectAltName: \"2.5.29.17\",\n issuerAltName: \"2.5.29.18\",\n basicConstraints: \"2.5.29.19\",\n cRLNumber: \"2.5.29.20\",\n cRLReason: \"2.5.29.21\",\n nameConstraints: \"2.5.29.30\",\n cRLDistributionPoints: \"2.5.29.31\",\n certificatePolicies: \"2.5.29.32\",\n anyPolicy: \"2.5.29.32.0\",\n policyMappings: \"2.5.29.33\",\n authorityKeyIdentifier: \"2.5.29.35\",\n policyConstraints: \"2.5.29.36\",\n extKeyUsage: \"2.5.29.37\",\n inhibitAnyPolicy: \"2.5.29.54\",\n authorityInfoAccess: \"1.3.6.1.5.5.7.1.1\",\n ocsp: \"1.3.6.1.5.5.7.48.1\",\n ocspBasic: \"1.3.6.1.5.5.7.48.1.1\",\n ocspNonce: \"1.3.6.1.5.5.7.48.1.2\",\n ocspNoCheck: \"1.3.6.1.5.5.7.48.1.5\",\n caIssuers: \"1.3.6.1.5.5.7.48.2\",\n anyExtendedKeyUsage: \"2.5.29.37.0\",\n serverAuth: \"1.3.6.1.5.5.7.3.1\",\n clientAuth: \"1.3.6.1.5.5.7.3.2\",\n codeSigning: \"1.3.6.1.5.5.7.3.3\",\n emailProtection: \"1.3.6.1.5.5.7.3.4\",\n timeStamping: \"1.3.6.1.5.5.7.3.8\",\n ocspSigning: \"1.3.6.1.5.5.7.3.9\",\n smtpUTF8Mailbox: \"1.3.6.1.5.5.7.8.9\",\n dateOfBirth: \"1.3.6.1.5.5.7.9.1\",\n placeOfBirth: \"1.3.6.1.5.5.7.9.2\",\n gender: \"1.3.6.1.5.5.7.9.3\",\n countryOfCitizenship: \"1.3.6.1.5.5.7.9.4\",\n countryOfResidence: \"1.3.6.1.5.5.7.9.5\",\n ecPublicKey: \"1.2.840.10045.2.1\",\n \"P-256\": \"1.2.840.10045.3.1.7\",\n secp256r1: \"1.2.840.10045.3.1.7\",\n secp256k1: \"1.3.132.0.10\",\n secp384r1: \"1.3.132.0.34\",\n secp521r1: \"1.3.132.0.35\",\n pkcs5PBES2: \"1.2.840.113549.1.5.13\",\n pkcs5PBKDF2: \"1.2.840.113549.1.5.12\",\n \"des-EDE3-CBC\": \"1.2.840.113549.3.7\",\n data: \"1.2.840.113549.1.7.1\",\n \"signed-data\": \"1.2.840.113549.1.7.2\",\n \"enveloped-data\": \"1.2.840.113549.1.7.3\",\n \"digested-data\": \"1.2.840.113549.1.7.5\",\n \"encrypted-data\": \"1.2.840.113549.1.7.6\",\n \"authenticated-data\": \"1.2.840.113549.1.9.16.1.2\",\n tstinfo: \"1.2.840.113549.1.9.16.1.4\",\n signingCertificate: \"1.2.840.113549.1.9.16.2.12\",\n timeStampToken: \"1.2.840.113549.1.9.16.2.14\",\n signaturePolicyIdentifier: \"1.2.840.113549.1.9.16.2.15\",\n etsArchiveTimeStamp: \"1.2.840.113549.1.9.16.2.27\",\n signingCertificateV2: \"1.2.840.113549.1.9.16.2.47\",\n etsArchiveTimeStampV2: \"1.2.840.113549.1.9.16.2.48\",\n extensionRequest: \"1.2.840.113549.1.9.14\",\n contentType: \"1.2.840.113549.1.9.3\",\n messageDigest: \"1.2.840.113549.1.9.4\",\n signingTime: \"1.2.840.113549.1.9.5\",\n counterSignature: \"1.2.840.113549.1.9.6\",\n archiveTimeStampV3: \"0.4.0.1733.2.4\",\n pdfRevocationInfoArchival: \"1.2.840.113583.1.1.8\",\n adobeTimeStamp: \"1.2.840.113583.1.1.9.1\",\n smimeMailboxLegacy: \"2.23.140.1.5.1.1\",\n smimeMailboxMulti: \"2.23.140.1.5.1.2\",\n smimeMailboxStrict: \"2.23.140.1.5.1.3\",\n smimeOrganizationLegacy: \"2.23.140.1.5.2.1\",\n smimeOrganizationMulti: \"2.23.140.1.5.2.2\",\n smimeOrganizationStrict: \"2.23.140.1.5.2.3\",\n smimeSponsorLegacy: \"2.23.140.1.5.3.1\",\n smimeSponsorMulti: \"2.23.140.1.5.3.2\",\n smimeSponsorStrict: \"2.23.140.1.5.3.3\",\n smimeIndividualLegacy: \"2.23.140.1.5.4.1\",\n smimeIndividualMulti: \"2.23.140.1.5.4.2\",\n smimeIndividualStrict: \"2.23.140.1.5.4.3\"\n };\n this.atype2oidList = {\n CN: \"2.5.4.3\",\n L: \"2.5.4.7\",\n ST: \"2.5.4.8\",\n O: \"2.5.4.10\",\n OU: \"2.5.4.11\",\n C: \"2.5.4.6\",\n STREET: \"2.5.4.9\",\n DC: \"0.9.2342.19200300.100.1.25\",\n UID: \"0.9.2342.19200300.100.1.1\",\n SN: \"2.5.4.4\",\n T: \"2.5.4.12\",\n GN: \"2.5.4.42\",\n DN: \"2.5.4.49\",\n E: \"1.2.840.113549.1.9.1\",\n description: \"2.5.4.13\",\n businessCategory: \"2.5.4.15\",\n postalCode: \"2.5.4.17\",\n serialNumber: \"2.5.4.5\",\n uniqueIdentifier: \"2.5.4.45\",\n organizationIdentifier: \"2.5.4.97\",\n jurisdictionOfIncorporationL: \"1.3.6.1.4.1.311.60.2.1.1\",\n jurisdictionOfIncorporationSP: \"1.3.6.1.4.1.311.60.2.1.2\",\n jurisdictionOfIncorporationC: \"1.3.6.1.4.1.311.60.2.1.3\"\n };\n this.objCache = {};\n this.name2obj = function (b) {\n if (typeof this.objCache[b] != \"undefined\") {\n return this.objCache[b];\n }\n if (typeof this.name2oidList[b] == \"undefined\") {\n throw \"Name of ObjectIdentifier not defined: \" + b;\n }\n var c = this.name2oidList[b];\n var d = new a({\n oid: c\n });\n this.objCache[b] = d;\n return d;\n };\n this.atype2obj = function (b) {\n if (this.objCache[b] !== undefined) {\n return this.objCache[b];\n }\n var c;\n if (b.match(/^\\d+\\.\\d+\\.[0-9.]+$/)) {\n c = b;\n } else {\n if (this.atype2oidList[b] !== undefined) {\n c = this.atype2oidList[b];\n } else {\n if (this.name2oidList[b] !== undefined) {\n c = this.name2oidList[b];\n } else {\n throw new Error(\"AttributeType name undefined: \" + b);\n }\n }\n }\n var d = new a({\n oid: c\n });\n this.objCache[b] = d;\n return d;\n };\n this.registerOIDs = function (b) {\n if (!this.checkOIDs(b)) {\n return;\n }\n for (var c in b) {\n this.name2oidList[c] = b[c];\n }\n };\n this.checkOIDs = function (b) {\n try {\n var d = Object.keys(b);\n if (d.length == 0) {\n return false;\n }\n d.map(function (g, e, h) {\n var f = this[g];\n if (!f.match(/^[0-2]\\.[0-9.]+$/)) {\n throw new Error(\"value is not OID\");\n }\n }, b);\n return true;\n } catch (c) {\n return false;\n }\n };\n}();\nKJUR.asn1.x509.OID.oid2name = function (b) {\n var c = KJUR.asn1.x509.OID.name2oidList;\n for (var a in c) {\n if (c[a] == b) {\n return a;\n }\n }\n return \"\";\n};\nKJUR.asn1.x509.OID.oid2atype = function (b) {\n var c = KJUR.asn1.x509.OID.atype2oidList;\n for (var a in c) {\n if (c[a] == b) {\n return a;\n }\n }\n return b;\n};\nKJUR.asn1.x509.OID.name2oid = function (a) {\n if (a.match(/^[0-9.]+$/)) {\n return a;\n }\n var b = KJUR.asn1.x509.OID.name2oidList;\n if (b[a] === undefined) {\n return \"\";\n }\n return b[a];\n};\nKJUR.asn1.x509.X509Util = {};\nKJUR.asn1.x509.X509Util.newCertPEM = function (e) {\n var d = KJUR.asn1.x509,\n b = d.TBSCertificate,\n a = d.Certificate;\n var c = new a(e);\n return c.getPEM();\n};\nif (typeof KJUR == \"undefined\" || !KJUR) {\n KJUR = {};\n}\nif (typeof KJUR.asn1 == \"undefined\" || !KJUR.asn1) {\n KJUR.asn1 = {};\n}\nif (typeof KJUR.asn1.cms == \"undefined\" || !KJUR.asn1.cms) {\n KJUR.asn1.cms = {};\n}\nKJUR.asn1.cms.Attribute = function (f) {\n var e = Error,\n d = KJUR,\n c = d.asn1,\n b = c.DERSequence,\n a = c.DERSet,\n g = c.DERObjectIdentifier;\n this.params = null;\n this.typeOid = null;\n this.setByParam = function (h) {\n this.params = h;\n };\n this.getValueArray = function () {\n throw new e(\"not yet implemented abstract\");\n };\n this.tohex = function () {\n var j = new g({\n oid: this.typeOid\n });\n var h = new a({\n array: this.getValueArray()\n });\n var i = new b({\n array: [j, h]\n });\n return i.tohex();\n };\n this.getEncodedHex = function () {\n return this.tohex();\n };\n};\nextendClass(KJUR.asn1.cms.Attribute, KJUR.asn1.ASN1Object);\nKJUR.asn1.cms.ContentType = function (c) {\n var b = KJUR,\n a = b.asn1;\n a.cms.ContentType.superclass.constructor.call(this);\n this.typeOid = \"1.2.840.113549.1.9.3\";\n this.getValueArray = function () {\n var d = new a.DERObjectIdentifier(this.params.type);\n return [d];\n };\n if (c != undefined) {\n this.setByParam(c);\n }\n};\nextendClass(KJUR.asn1.cms.ContentType, KJUR.asn1.cms.Attribute);\nKJUR.asn1.cms.MessageDigest = function (e) {\n var b = KJUR,\n a = b.asn1,\n c = a.DEROctetString,\n d = a.cms;\n d.MessageDigest.superclass.constructor.call(this);\n this.typeOid = \"1.2.840.113549.1.9.4\";\n this.getValueArray = function () {\n var f = new c(this.params);\n return [f];\n };\n if (e != undefined) {\n this.setByParam(e);\n }\n};\nextendClass(KJUR.asn1.cms.MessageDigest, KJUR.asn1.cms.Attribute);\nKJUR.asn1.cms.SigningTime = function (c) {\n var b = KJUR,\n a = b.asn1;\n a.cms.SigningTime.superclass.constructor.call(this);\n this.typeOid = \"1.2.840.113549.1.9.5\";\n this.getValueArray = function () {\n var d = new a.x509.Time(this.params);\n return [d];\n };\n if (c != undefined) {\n this.setByParam(c);\n }\n};\nextendClass(KJUR.asn1.cms.SigningTime, KJUR.asn1.cms.Attribute);\nKJUR.asn1.cms.SigningCertificate = function (h) {\n var e = Error,\n d = KJUR,\n c = d.asn1,\n b = c.DERSequence,\n g = c.cms,\n a = g.ESSCertID,\n f = d.crypto;\n g.SigningCertificate.superclass.constructor.call(this);\n this.typeOid = \"1.2.840.113549.1.9.16.2.12\";\n this.getValueArray = function () {\n if (this.params == null || this.params == undefined || this.params.array == undefined) {\n throw new e(\"parameter 'array' not specified\");\n }\n var o = this.params.array;\n var k = [];\n for (var l = 0; l < o.length; l++) {\n var n = o[l];\n if (h.hasis == false && typeof n == \"string\" && (n.indexOf(\"-----BEGIN\") != -1 || ASN1HEX.isASN1HEX(n))) {\n n = {\n cert: n\n };\n }\n if (n.hasis != false && h.hasis == false) {\n n.hasis = false;\n }\n k.push(new a(n));\n }\n var j = new b({\n array: k\n });\n var m = new b({\n array: [j]\n });\n return [m];\n };\n if (h != undefined) {\n this.setByParam(h);\n }\n};\nextendClass(KJUR.asn1.cms.SigningCertificate, KJUR.asn1.cms.Attribute);\nKJUR.asn1.cms.ESSCertID = function (g) {\n KJUR.asn1.cms.ESSCertID.superclass.constructor.call(this);\n var d = Error,\n c = KJUR,\n b = c.asn1,\n f = b.DEROctetString,\n a = b.DERSequence,\n e = b.cms.IssuerSerial;\n this.params = null;\n this.getCertHash = function (k, h) {\n if (k.hash != undefined) {\n return k.hash;\n }\n if (typeof k == \"string\" && k.indexOf(\"-----BEGIN\") == -1 && !ASN1HEX.isASN1HEX(k)) {\n return k;\n }\n var i;\n if (typeof k == \"string\") {\n i = k;\n } else {\n if (k.cert != undefined) {\n i = k.cert;\n } else {\n throw new d(\"hash nor cert unspecified\");\n }\n }\n var j;\n if (i.indexOf(\"-----BEGIN\") != -1) {\n j = pemtohex(i);\n } else {\n j = i;\n }\n if (typeof k == \"string\") {\n if (k.indexOf(\"-----BEGIN\") != -1) {\n j = pemtohex(k);\n } else {\n if (ASN1HEX.isASN1HEX(k)) {\n j = k;\n }\n }\n }\n var l;\n if (k.alg != undefined) {\n l = k.alg;\n } else {\n if (h != undefined) {\n l = h;\n } else {\n throw new d(\"hash alg unspecified\");\n }\n }\n return c.crypto.Util.hashHex(j, l);\n };\n this.tohex = function () {\n var k = this.params;\n var j = this.getCertHash(k, \"sha1\");\n var h = [];\n h.push(new f({\n hex: j\n }));\n if (typeof k == \"string\" && k.indexOf(\"-----BEGIN\") != -1 || k.cert != undefined && k.hasis != false || k.issuer != undefined && k.serial != undefined) {\n h.push(new e(k));\n }\n var i = new a({\n array: h\n });\n return i.tohex();\n };\n this.getEncodedHex = function () {\n return this.tohex();\n };\n if (g != undefined) {\n this.setByParam(g);\n }\n};\nextendClass(KJUR.asn1.cms.ESSCertID, KJUR.asn1.ASN1Object);\nKJUR.asn1.cms.SigningCertificateV2 = function (d) {\n var h = Error,\n a = KJUR,\n g = a.asn1,\n e = g.DERSequence,\n b = g.x509,\n i = g.cms,\n c = i.ESSCertIDv2,\n f = a.crypto;\n i.SigningCertificateV2.superclass.constructor.call(this);\n this.typeOid = \"1.2.840.113549.1.9.16.2.47\";\n this.getValueArray = function () {\n if (this.params == null || this.params == undefined || this.params.array == undefined) {\n throw new h(\"parameter 'array' not specified\");\n }\n var o = this.params.array;\n var l = [];\n for (var m = 0; m < o.length; m++) {\n var n = o[m];\n if ((d.alg != undefined || d.hasis == false) && typeof n == \"string\" && (n.indexOf(\"-----BEGIN\") != -1 || ASN1HEX.isASN1HEX(n))) {\n n = {\n cert: n\n };\n }\n if (n.alg == undefined && d.alg != undefined) {\n n.alg = d.alg;\n }\n if (n.hasis != false && d.hasis == false) {\n n.hasis = false;\n }\n l.push(new c(n));\n }\n var k = new e({\n array: l\n });\n var j = new e({\n array: [k]\n });\n return [j];\n };\n if (d != undefined) {\n this.setByParam(d);\n }\n};\nextendClass(KJUR.asn1.cms.SigningCertificateV2, KJUR.asn1.cms.Attribute);\nKJUR.asn1.cms.ESSCertIDv2 = function (h) {\n KJUR.asn1.cms.ESSCertIDv2.superclass.constructor.call(this);\n var d = Error,\n c = KJUR,\n b = c.asn1,\n f = b.DEROctetString,\n a = b.DERSequence,\n e = b.cms.IssuerSerial,\n g = b.x509.AlgorithmIdentifier;\n this.params = null;\n this.tohex = function () {\n var l = this.params;\n var k = this.getCertHash(l, \"sha256\");\n var i = [];\n if (l.alg != undefined && l.alg != \"sha256\") {\n i.push(new g({\n name: l.alg\n }));\n }\n i.push(new f({\n hex: k\n }));\n if (typeof l == \"string\" && l.indexOf(\"-----BEGIN\") != -1 || l.cert != undefined && l.hasis != false || l.issuer != undefined && l.serial != undefined) {\n i.push(new e(l));\n }\n var j = new a({\n array: i\n });\n return j.tohex();\n };\n this.getEncodedHex = function () {\n return this.tohex();\n };\n if (h != undefined) {\n this.setByParam(h);\n }\n};\nextendClass(KJUR.asn1.cms.ESSCertIDv2, KJUR.asn1.cms.ESSCertID);\nKJUR.asn1.cms.IssuerSerial = function (e) {\n var i = Error,\n c = KJUR,\n h = c.asn1,\n g = h.DERInteger,\n f = h.DERSequence,\n j = h.cms,\n d = h.x509,\n a = d.GeneralNames,\n b = X509;\n j.IssuerSerial.superclass.constructor.call(this);\n this.setByParam = function (k) {\n this.params = k;\n };\n this.tohex = function () {\n var p = this.params;\n var l, r;\n if (typeof p == \"string\" && p.indexOf(\"-----BEGIN\") != -1 || p.cert != undefined) {\n var n;\n if (p.cert != undefined) {\n n = p.cert;\n } else {\n n = p;\n }\n var k = new b();\n k.readCertPEM(n);\n l = k.getIssuer();\n r = {\n hex: k.getSerialNumberHex()\n };\n } else {\n if (p.issuer != undefined && p.serial) {\n l = p.issuer;\n r = p.serial;\n } else {\n throw new i(\"cert or issuer and serial parameter not specified\");\n }\n }\n var q = new a([{\n dn: l\n }]);\n var o = new g(r);\n var m = new f({\n array: [q, o]\n });\n return m.tohex();\n };\n this.getEncodedHex = function () {\n return this.tohex();\n };\n if (e != undefined) {\n this.setByParam(e);\n }\n};\nextendClass(KJUR.asn1.cms.IssuerSerial, KJUR.asn1.ASN1Object);\nKJUR.asn1.cms.SignerIdentifier = function (f) {\n var c = KJUR,\n i = c.asn1,\n h = i.DERInteger,\n g = i.DERSequence,\n l = i.cms,\n k = l.IssuerAndSerialNumber,\n d = l.SubjectKeyIdentifier,\n e = i.x509,\n a = e.X500Name,\n b = X509,\n j = Error;\n l.SignerIdentifier.superclass.constructor.call(this);\n this.params = null;\n this.tohex = function () {\n var o = this.params;\n if (o.type == \"isssn\") {\n var m = new k(o);\n return m.tohex();\n } else {\n if (o.type == \"skid\") {\n var n = new d(o);\n return n.tohex();\n } else {\n throw new Error(\"wrong property for isssn or skid\");\n }\n }\n };\n this.getEncodedHex = function () {\n return this.tohex();\n };\n if (f != undefined) {\n this.setByParam(f);\n }\n};\nextendClass(KJUR.asn1.cms.SignerIdentifier, KJUR.asn1.ASN1Object);\nKJUR.asn1.cms.IssuerAndSerialNumber = function (e) {\n var c = KJUR,\n h = c.asn1,\n g = h.DERInteger,\n f = h.DERSequence,\n j = h.cms,\n d = h.x509,\n a = d.X500Name,\n b = X509,\n i = Error;\n j.IssuerAndSerialNumber.superclass.constructor.call(this);\n this.params = null;\n this.tohex = function () {\n var p = this.params;\n var l, r;\n if (typeof p == \"string\" && p.indexOf(\"-----BEGIN\") != -1 || p.cert != undefined) {\n var n;\n if (p.cert != undefined) {\n n = p.cert;\n } else {\n n = p;\n }\n var k = new b();\n k.readCertPEM(n);\n l = k.getIssuer();\n r = {\n hex: k.getSerialNumberHex()\n };\n } else {\n if (p.issuer != undefined && p.serial) {\n l = p.issuer;\n r = p.serial;\n } else {\n throw new i(\"cert or issuer and serial parameter not specified\");\n }\n }\n var q = new a(l);\n var o = new g(r);\n var m = new f({\n array: [q, o]\n });\n return m.tohex();\n };\n this.getEncodedHex = function () {\n return this.tohex();\n };\n this.setByParam = function (k) {\n this.params = k;\n };\n if (e != undefined) {\n this.setByParam(e);\n }\n};\nextendClass(KJUR.asn1.cms.IssuerAndSerialNumber, KJUR.asn1.ASN1Object);\nKJUR.asn1.cms.SubjectKeyIdentifier = function (g) {\n var d = KJUR,\n k = d.asn1,\n i = k.DERInteger,\n h = k.DERSequence,\n j = k.ASN1Util.newObject,\n m = k.cms,\n f = m.IssuerAndSerialName,\n c = m.SubjectKeyIdentifier,\n e = k.x509,\n a = e.X500Name,\n b = X509,\n l = Error;\n m.SubjectKeyIdentifier.superclass.constructor.call(this);\n this.tohex = function () {\n var r = this.params;\n if (r.cert == undefined && r.skid == undefined) {\n throw new l(\"property cert nor skid undefined\");\n }\n var q;\n if (r.cert != undefined) {\n var n = new b(r.cert);\n var o = n.getExtSubjectKeyIdentifier();\n q = o.kid.hex;\n } else {\n if (r.skid != undefined) {\n q = r.skid;\n }\n }\n var p = j({\n tag: {\n tage: \"a0\",\n obj: {\n octstr: {\n hex: q\n }\n }\n }\n });\n return p.tohex();\n };\n this.getEncodedHex = function () {\n return this.tohex();\n };\n if (g != undefined) {\n this.setByParam(g);\n }\n};\nextendClass(KJUR.asn1.cms.SubjectKeyIdentifier, KJUR.asn1.ASN1Object);\nKJUR.asn1.cms.AttributeList = function (f) {\n var d = Error,\n c = KJUR,\n b = c.asn1,\n a = b.DERSet,\n e = b.cms;\n e.AttributeList.superclass.constructor.call(this);\n this.params = null;\n this.hTLV = null;\n this.setByParam = function (g) {\n this.params = g;\n };\n this.tohex = function () {\n var o = this.params;\n if (this.hTLV != null) {\n return this.hTLV;\n }\n var m = true;\n if (o.sortflag != undefined) {\n m = o.sortflag;\n }\n var j = o.array;\n var g = [];\n for (var l = 0; l < j.length; l++) {\n var n = j[l];\n var k = n.attr;\n if (k == \"contentType\") {\n g.push(new e.ContentType(n));\n } else {\n if (k == \"messageDigest\") {\n g.push(new e.MessageDigest(n));\n } else {\n if (k == \"signingTime\") {\n g.push(new e.SigningTime(n));\n } else {\n if (k == \"signingCertificate\") {\n g.push(new e.SigningCertificate(n));\n } else {\n if (k == \"signingCertificateV2\") {\n g.push(new e.SigningCertificateV2(n));\n } else {\n if (k == \"signaturePolicyIdentifier\") {\n g.push(new KJUR.asn1.cades.SignaturePolicyIdentifier(n));\n } else {\n if (k == \"signatureTimeStamp\" || k == \"timeStampToken\") {\n g.push(new KJUR.asn1.cades.SignatureTimeStamp(n));\n } else {\n throw new d(\"unknown attr: \" + k);\n }\n }\n }\n }\n }\n }\n }\n }\n var h = new a({\n array: g,\n sortflag: m\n });\n this.hTLV = h.tohex();\n return this.hTLV;\n };\n this.getEncodedHex = function () {\n return this.tohex();\n };\n if (f != undefined) {\n this.setByParam(f);\n }\n};\nextendClass(KJUR.asn1.cms.AttributeList, KJUR.asn1.ASN1Object);\nKJUR.asn1.cms.SignerInfo = function (q) {\n var n = Error,\n r = KJUR,\n i = r.asn1,\n c = i.DERInteger,\n f = i.DEROctetString,\n h = i.DERSequence,\n m = i.DERTaggedObject,\n k = i.cms,\n p = k.SignerIdentifier,\n l = k.AttributeList,\n g = k.ContentType,\n e = k.EncapsulatedContentInfo,\n d = k.MessageDigest,\n j = k.SignedData,\n a = i.x509,\n s = a.AlgorithmIdentifier,\n b = r.crypto,\n o = KEYUTIL;\n k.SignerInfo.superclass.constructor.call(this);\n this.params = null;\n this.sign = function () {\n var y = this.params;\n var x = y.sigalg;\n var u = new l(y.sattrs).tohex();\n var v = o.getKey(y.signkey);\n var w = new b.Signature({\n alg: x\n });\n w.init(v);\n w.updateHex(u);\n var t = w.sign();\n y.sighex = t;\n };\n this.tohex = function () {\n var w = this.params;\n var t = [];\n t.push(new c({\n \"int\": w.version\n }));\n t.push(new p(w.id));\n t.push(new s({\n name: w.hashalg\n }));\n if (w.sattrs != undefined) {\n var x = new l(w.sattrs);\n try {\n t.push(new m({\n tag: \"a0\",\n explicit: false,\n obj: x\n }));\n } catch (v) {\n throw new n(\"si sattr error: \" + v);\n }\n }\n if (w.sigalgfield != undefined) {\n t.push(new s({\n name: w.sigalgfield\n }));\n } else {\n t.push(new s({\n name: w.sigalg\n }));\n }\n if (w.sighex == undefined && w.signkey != undefined) {\n this.sign();\n }\n t.push(new f({\n hex: w.sighex\n }));\n if (w.uattrs != undefined) {\n var x = new l(w.uattrs);\n try {\n t.push(new m({\n tag: \"a1\",\n explicit: false,\n obj: x\n }));\n } catch (v) {\n throw new n(\"si uattr error: \" + v);\n }\n }\n var u = new h({\n array: t\n });\n return u.tohex();\n };\n this.getEncodedHex = function () {\n return this.tohex();\n };\n if (q != undefined) {\n this.setByParam(q);\n }\n};\nextendClass(KJUR.asn1.cms.SignerInfo, KJUR.asn1.ASN1Object);\nKJUR.asn1.cms.EncapsulatedContentInfo = function (g) {\n var c = KJUR,\n b = c.asn1,\n e = b.DERTaggedObject,\n a = b.DERSequence,\n h = b.DERObjectIdentifier,\n d = b.DEROctetString,\n f = b.cms;\n f.EncapsulatedContentInfo.superclass.constructor.call(this);\n this.params = null;\n this.tohex = function () {\n var m = this.params;\n var i = [];\n i.push(new h(m.type));\n if (m.content != undefined && (m.content.hex != undefined || m.content.str != undefined) && m.isDetached != true) {\n var k = new d(m.content);\n var l = new e({\n tag: \"a0\",\n explicit: true,\n obj: k\n });\n i.push(l);\n }\n var j = new a({\n array: i\n });\n return j.tohex();\n };\n this.getEncodedHex = function () {\n return this.tohex();\n };\n this.setByParam = function (i) {\n this.params = i;\n };\n if (g != undefined) {\n this.setByParam(g);\n }\n};\nextendClass(KJUR.asn1.cms.EncapsulatedContentInfo, KJUR.asn1.ASN1Object);\nKJUR.asn1.cms.ContentInfo = function (g) {\n var c = KJUR,\n b = c.asn1,\n d = b.DERTaggedObject,\n a = b.DERSequence,\n h = b.DERObjectIdentifier,\n f = b.x509,\n e = f.OID.name2obj;\n KJUR.asn1.cms.ContentInfo.superclass.constructor.call(this);\n this.params = null;\n this.tohex = function () {\n var l = this.params;\n var i = [];\n i.push(new h(l.type));\n var k = new d({\n tag: \"a0\",\n explicit: true,\n obj: l.obj\n });\n i.push(k);\n var j = new a({\n array: i\n });\n return j.tohex();\n };\n this.getEncodedHex = function () {\n return this.tohex();\n };\n this.setByParam = function (i) {\n this.params = i;\n };\n if (g != undefined) {\n this.setByParam(g);\n }\n};\nextendClass(KJUR.asn1.cms.ContentInfo, KJUR.asn1.ASN1Object);\nKJUR.asn1.cms.SignedData = function (e) {\n var j = Error,\n a = KJUR,\n h = a.asn1,\n m = h.ASN1Object,\n g = h.DERInteger,\n p = h.DERSet,\n f = h.DERSequence,\n b = h.DERTaggedObject,\n o = h.cms,\n l = o.EncapsulatedContentInfo,\n d = o.SignerInfo,\n q = o.ContentInfo,\n k = o.CertificateSet,\n i = o.RevocationInfoChoices,\n c = h.x509,\n n = c.AlgorithmIdentifier;\n KJUR.asn1.cms.SignedData.superclass.constructor.call(this);\n this.params = null;\n this.checkAndFixParam = function () {\n var r = this.params;\n this._setDigestAlgs(r);\n this._setContentTypeByEContent(r);\n this._setMessageDigestByEContent(r);\n this._setSignerInfoVersion(r);\n this._setSignedDataVersion(r);\n };\n this._setDigestAlgs = function (v) {\n var u = {};\n var t = v.sinfos;\n for (var r = 0; r < t.length; r++) {\n var s = t[r];\n u[s.hashalg] = 1;\n }\n v.hashalgs = Object.keys(u).sort();\n };\n this._setContentTypeByEContent = function (w) {\n var u = w.econtent.type;\n var v = w.sinfos;\n for (var r = 0; r < v.length; r++) {\n var t = v[r];\n var s = this._getAttrParamByName(t, \"contentType\");\n s.type = u;\n }\n };\n this._setMessageDigestByEContent = function (r) {\n var v = r.econtent;\n var y = r.econtent.type;\n var x = v.content.hex;\n if (x == undefined && v.type == \"data\" && v.content.str != undefined) {\n x = rstrtohex(v.content.str);\n }\n var A = r.sinfos;\n for (var u = 0; u < A.length; u++) {\n var t = A[u];\n var s = t.hashalg;\n var z = this._getAttrParamByName(t, \"messageDigest\");\n var w = KJUR.crypto.Util.hashHex(x, s);\n z.hex = w;\n }\n };\n this._getAttrParamByName = function (t, s) {\n var u = t.sattrs.array;\n for (var r = 0; r < u.length; r++) {\n if (u[r].attr == s) {\n return u[r];\n }\n }\n };\n this._setSignerInfoVersion = function (v) {\n var t = v.sinfos;\n for (var r = 0; r < t.length; r++) {\n var s = t[r];\n var u = 1;\n if (s.id.type == \"skid\") {\n u = 3;\n }\n s.version = u;\n }\n };\n this._setSignedDataVersion = function (s) {\n var r = this._getSignedDataVersion(s);\n s.version = r;\n };\n this._getSignedDataVersion = function (w) {\n if (w.revinfos != undefined) {\n var r = w.revinfos;\n for (var t = 0; t < r.length; t++) {\n var s = r[t];\n if (s.ocsp != undefined) {\n return 5;\n }\n }\n }\n var v = w.sinfos;\n for (var t = 0; t < v.length; t++) {\n var u = w.sinfos[t];\n if (u.version == 3) {\n return 3;\n }\n }\n if (w.econtent.type != \"data\") {\n return 3;\n }\n return 1;\n };\n this.tohex = function () {\n var y = this.params;\n if (this.getEncodedHexPrepare != undefined) {\n this.getEncodedHexPrepare();\n }\n if (y.fixed != true) {\n this.checkAndFixParam();\n }\n var r = [];\n r.push(new g({\n \"int\": y.version\n }));\n var w = [];\n for (var v = 0; v < y.hashalgs.length; v++) {\n var t = y.hashalgs[v];\n w.push(new n({\n name: t\n }));\n }\n r.push(new p({\n array: w\n }));\n r.push(new l(y.econtent));\n if (y.certs != undefined) {\n r.push(new k(y.certs));\n }\n if (y.revinfos != undefined) {\n r.push(new i(y.revinfos));\n }\n var u = [];\n for (var v = 0; v < y.sinfos.length; v++) {\n var x = y.sinfos[v];\n u.push(new d(x));\n }\n r.push(new p({\n array: u\n }));\n var s = new f({\n array: r\n });\n return s.tohex();\n };\n this.getEncodedHex = function () {\n return this.tohex();\n };\n this.getContentInfo = function () {\n var r = new q({\n type: \"signed-data\",\n obj: this\n });\n return r;\n };\n this.getContentInfoEncodedHex = function () {\n return this.getContentInfo().tohex();\n };\n if (e != undefined) {\n this.setByParam(e);\n }\n};\nextendClass(KJUR.asn1.cms.SignedData, KJUR.asn1.ASN1Object);\nKJUR.asn1.cms.CertificateSet = function (f) {\n KJUR.asn1.cms.CertificateSet.superclass.constructor.call(this);\n var c = Error,\n b = KJUR.asn1,\n e = b.DERTaggedObject,\n a = b.DERSet,\n d = b.ASN1Object;\n this.params = null;\n this.tohex = function () {\n var j = this.params;\n var p = [];\n var q;\n if (j instanceof Array) {\n q = j;\n } else {\n if (j.array != undefined) {\n q = j.array;\n } else {\n throw new c(\"cert array not specified\");\n }\n }\n for (var k = 0; k < q.length; k++) {\n var l = q[k];\n var n = pemtohex(l);\n var g = new d();\n g.hTLV = n;\n p.push(g);\n }\n var m = {\n array: p\n };\n if (j.sortflag == false) {\n m.sortflag = false;\n }\n var o = new a(m);\n var h = new e({\n tag: \"a0\",\n explicit: false,\n obj: o\n });\n return h.tohex();\n };\n this.getEncodedHex = function () {\n return this.tohex();\n };\n if (f != undefined) {\n this.setByParam(f);\n }\n};\nextendClass(KJUR.asn1.cms.CertificateSet, KJUR.asn1.ASN1Object);\nKJUR.asn1.cms.RevocationInfoChoices = function (a) {\n KJUR.asn1.cms.RevocationInfoChoices.superclass.constructor.call(this);\n this.params = null;\n this.tohex = function () {\n var e = this.params;\n if (!e instanceof Array) {\n throw new Error(\"params is not array\");\n }\n var b = [];\n for (var c = 0; c < e.length; c++) {\n b.push(new KJUR.asn1.cms.RevocationInfoChoice(e[c]));\n }\n var d = KJUR.asn1.ASN1Util.newObject({\n tag: {\n tagi: \"a1\",\n obj: {\n set: b\n }\n }\n });\n return d.tohex();\n };\n this.getEncodedHex = function () {\n return this.tohex();\n };\n if (a != undefined) {\n this.setByParam(a);\n }\n};\nextendClass(KJUR.asn1.cms.RevocationInfoChoices, KJUR.asn1.ASN1Object);\nKJUR.asn1.cms.RevocationInfoChoice = function (a) {\n KJUR.asn1.cms.RevocationInfoChoice.superclass.constructor.call(this);\n this.params = null;\n this.tohex = function () {\n var d = this.params;\n if (d.crl != undefined && typeof d.crl == \"string\") {\n var b = d.crl;\n if (d.crl.indexOf(\"-----BEGIN\") != -1) {\n b = pemtohex(d.crl);\n }\n return b;\n } else {\n if (d.ocsp != undefined) {\n var c = KJUR.asn1.ASN1Util.newObject({\n tag: {\n tagi: \"a1\",\n obj: new KJUR.asn1.cms.OtherRevocationFormat(d)\n }\n });\n return c.tohex();\n } else {\n throw new Error(\"property crl or ocsp undefined\");\n }\n }\n };\n this.getEncodedHex = function () {\n return this.tohex();\n };\n if (a != undefined) {\n this.setByParam(a);\n }\n};\nextendClass(KJUR.asn1.cms.RevocationInfoChoice, KJUR.asn1.ASN1Object);\nKJUR.asn1.cms.OtherRevocationFormat = function (f) {\n KJUR.asn1.cms.OtherRevocationFormat.superclass.constructor.call(this);\n var d = Error,\n c = KJUR,\n b = c.asn1,\n a = b.ASN1Util.newObject,\n e = c.lang.String.isHex;\n this.params = null;\n this.tohex = function () {\n var h = this.params;\n if (h.ocsp == undefined) {\n throw new d(\"property ocsp not specified\");\n }\n if (!e(h.ocsp) || !ASN1HEX.isASN1HEX(h.ocsp)) {\n throw new d(\"ocsp value not ASN.1 hex string\");\n }\n var g = a({\n seq: [{\n oid: \"1.3.6.1.5.5.7.16.2\"\n }, {\n asn1: {\n tlv: h.ocsp\n }\n }]\n });\n return g.tohex();\n };\n this.getEncodedHex = function () {\n return this.tohex();\n };\n if (f != undefined) {\n this.setByParam(f);\n }\n};\nextendClass(KJUR.asn1.cms.OtherRevocationFormat, KJUR.asn1.ASN1Object);\nKJUR.asn1.cms.CMSUtil = new function () {}();\nKJUR.asn1.cms.CMSUtil.newSignedData = function (a) {\n return new KJUR.asn1.cms.SignedData(a);\n};\nKJUR.asn1.cms.CMSUtil.verifySignedData = function (n) {\n var C = KJUR,\n p = C.asn1,\n s = p.cms,\n D = s.SignerInfo,\n q = s.SignedData,\n y = s.SigningTime,\n b = s.SigningCertificate,\n d = s.SigningCertificateV2,\n A = p.cades,\n u = A.SignaturePolicyIdentifier,\n i = C.lang.String.isHex,\n v = ASN1HEX,\n h = v.getVbyList,\n a = v.getTLVbyList,\n t = v.getIdxbyList,\n z = v.getChildIdx,\n c = v.getTLV,\n B = v.oidname,\n j = C.crypto.Util.hashHex;\n if (n.cms === undefined && !i(n.cms)) {}\n var E = n.cms;\n var g = function (J, H) {\n var G;\n for (var I = 3; I < 6; I++) {\n G = t(J, 0, [1, 0, I]);\n if (G !== undefined) {\n var F = J.substr(G, 2);\n if (F === \"a0\") {\n H.certsIdx = G;\n }\n if (F === \"a1\") {\n H.revinfosIdx = G;\n }\n if (F === \"31\") {\n H.signerinfosIdx = G;\n }\n }\n }\n };\n var l = function (I, F) {\n var H = F.signerinfosIdx;\n if (H === undefined) {\n return;\n }\n var L = z(I, H);\n F.signerInfoIdxList = L;\n for (var G = 0; G < L.length; G++) {\n var K = L[G];\n var J = {\n idx: K\n };\n k(I, J);\n F.signerInfos.push(J);\n }\n };\n var k = function (I, J) {\n var F = J.idx;\n J.signerid_issuer1 = a(I, F, [1, 0], \"30\");\n J.signerid_serial1 = h(I, F, [1, 1], \"02\");\n J.hashalg = B(h(I, F, [2, 0], \"06\"));\n var H = t(I, F, [3], \"a0\");\n J.idxSignedAttrs = H;\n f(I, J, H);\n var G = z(I, F);\n var K = G.length;\n if (K < 6) {\n throw \"malformed SignerInfo\";\n }\n J.sigalg = B(h(I, F, [K - 2, 0], \"06\"));\n J.sigval = h(I, F, [K - 1], \"04\");\n };\n var f = function (L, M, F) {\n var J = z(L, F);\n M.signedAttrIdxList = J;\n for (var K = 0; K < J.length; K++) {\n var I = J[K];\n var G = h(L, I, [0], \"06\");\n var H;\n if (G === \"2a864886f70d010905\") {\n H = hextoutf8(h(L, I, [1, 0]));\n M.saSigningTime = H;\n } else {\n if (G === \"2a864886f70d010904\") {\n H = h(L, I, [1, 0], \"04\");\n M.saMessageDigest = H;\n }\n }\n }\n };\n var w = function (G, F) {\n if (h(G, 0, [0], \"06\") !== \"2a864886f70d010702\") {\n return F;\n }\n F.cmsType = \"signedData\";\n F.econtent = h(G, 0, [1, 0, 2, 1, 0]);\n g(G, F);\n F.signerInfos = [];\n l(G, F);\n };\n var o = function (J, F) {\n var G = F.parse.signerInfos;\n var L = G.length;\n var K = true;\n for (var I = 0; I < L; I++) {\n var H = G[I];\n e(J, F, H, I);\n if (!H.isValid) {\n K = false;\n }\n }\n F.isValid = K;\n };\n var x = function (F, Q, J, P) {\n var N = Q.parse.certsIdx;\n var H;\n if (Q.certs === undefined) {\n H = [];\n Q.certkeys = [];\n var K = z(F, N);\n for (var I = 0; I < K.length; I++) {\n var M = c(F, K[I]);\n var O = new X509();\n O.readCertHex(M);\n H[I] = O;\n Q.certkeys[I] = O.getPublicKey();\n }\n Q.certs = H;\n } else {\n H = Q.certs;\n }\n Q.cccc = H.length;\n Q.cccci = K.length;\n for (var I = 0; I < H.length; I++) {\n var L = O.getIssuerHex();\n var G = O.getSerialNumberHex();\n if (J.signerid_issuer1 === L && J.signerid_serial1 === G) {\n J.certkey_idx = I;\n }\n }\n };\n var e = function (F, R, I, N) {\n I.verifyDetail = {};\n var Q = I.verifyDetail;\n var K = R.parse.econtent;\n var G = I.hashalg;\n var L = I.saMessageDigest;\n Q.validMessageDigest = false;\n if (j(K, G) === L) {\n Q.validMessageDigest = true;\n }\n x(F, R, I, N);\n Q.validSignatureValue = false;\n var H = I.sigalg;\n var M = \"31\" + c(F, I.idxSignedAttrs).substr(2);\n I.signedattrshex = M;\n var J = R.certs[I.certkey_idx].getPublicKey();\n var P = new KJUR.crypto.Signature({\n alg: H\n });\n P.init(J);\n P.updateHex(M);\n var O = P.verify(I.sigval);\n Q.validSignatureValue_isValid = O;\n if (O === true) {\n Q.validSignatureValue = true;\n }\n I.isValid = false;\n if (Q.validMessageDigest && Q.validSignatureValue) {\n I.isValid = true;\n }\n };\n var m = function () {};\n var r = {\n isValid: false,\n parse: {}\n };\n w(E, r.parse);\n o(E, r);\n return r;\n};\nKJUR.asn1.cms.CMSParser = function () {\n var g = Error,\n a = X509,\n h = new a(),\n l = ASN1HEX,\n i = l.getV,\n b = l.getTLV,\n f = l.getIdxbyList,\n c = l.getTLVbyList,\n d = l.getTLVbyListEx,\n e = l.getVbyList,\n k = l.getVbyListEx,\n j = l.getChildIdx;\n this.getCMSSignedData = function (m) {\n var o = c(m, 0, [1, 0]);\n var n = this.getSignedData(o);\n return n;\n };\n this.getSignedData = function (o) {\n var q = j(o, 0);\n var v = {};\n var p = i(o, q[0]);\n var n = parseInt(p, 16);\n v.version = n;\n var r = b(o, q[1]);\n v.hashalgs = this.getHashAlgArray(r);\n var t = b(o, q[2]);\n v.econtent = this.getEContent(t);\n var m = d(o, 0, [\"[0]\"]);\n if (m != null) {\n v.certs = this.getCertificateSet(m);\n }\n var u = d(o, 0, [\"[1]\"]);\n if (u != null) {}\n var s = d(o, 0, [3]);\n v.sinfos = this.getSignerInfos(s);\n return v;\n };\n this.getHashAlgArray = function (s) {\n var q = j(s, 0);\n var m = new a();\n var n = [];\n for (var r = 0; r < q.length; r++) {\n var p = b(s, q[r]);\n var o = m.getAlgorithmIdentifierName(p);\n n.push(o);\n }\n return n;\n };\n this.getEContent = function (m) {\n var n = {};\n var p = e(m, 0, [0]);\n var o = e(m, 0, [1, 0]);\n n.type = KJUR.asn1.x509.OID.oid2name(ASN1HEX.hextooidstr(p));\n n.content = {\n hex: o\n };\n return n;\n };\n this.getSignerInfos = function (p) {\n var r = [];\n var m = j(p, 0);\n for (var n = 0; n < m.length; n++) {\n var o = b(p, m[n]);\n var q = this.getSignerInfo(o);\n r.push(q);\n }\n return r;\n };\n this.getSignerInfo = function (s) {\n var y = {};\n var u = j(s, 0);\n var q = l.getInt(s, u[0], -1);\n if (q != -1) {\n y.version = q;\n }\n var t = b(s, u[1]);\n var p = this.getIssuerAndSerialNumber(t);\n y.id = p;\n var z = b(s, u[2]);\n var n = h.getAlgorithmIdentifierName(z);\n y.hashalg = n;\n var w = d(s, 0, [\"[0]\"]);\n if (w != null) {\n var A = this.getAttributeList(w);\n y.sattrs = A;\n }\n var m = d(s, 0, [3]);\n var x = h.getAlgorithmIdentifierName(m);\n y.sigalg = x;\n var o = k(s, 0, [4]);\n y.sighex = o;\n var r = d(s, 0, [\"[1]\"]);\n if (r != null) {\n var v = this.getAttributeList(r);\n y.uattrs = v;\n }\n return y;\n };\n this.getSignerIdentifier = function (m) {\n if (m.substr(0, 2) == \"30\") {\n return this.getIssuerAndSerialNumber(m);\n } else {\n throw new Error(\"SKID of signerIdentifier not supported\");\n }\n };\n this.getIssuerAndSerialNumber = function (n) {\n var o = {\n type: \"isssn\"\n };\n var m = j(n, 0);\n var p = b(n, m[0]);\n o.issuer = h.getX500Name(p);\n var q = i(n, m[1]);\n o.serial = {\n hex: q\n };\n return o;\n };\n this.getAttributeList = function (q) {\n var m = [];\n var n = j(q, 0);\n for (var o = 0; o < n.length; o++) {\n var p = b(q, n[o]);\n var r = this.getAttribute(p);\n m.push(r);\n }\n return {\n array: m\n };\n };\n this.getAttribute = function (p) {\n var t = {};\n var q = j(p, 0);\n var o = l.getOID(p, q[0]);\n var m = KJUR.asn1.x509.OID.oid2name(o);\n t.attr = m;\n var r = b(p, q[1]);\n var u = j(r, 0);\n if (u.length == 1) {\n t.valhex = b(r, u[0]);\n } else {\n var s = [];\n for (var n = 0; n < u.length; n++) {\n s.push(b(r, u[n]));\n }\n t.valhex = s;\n }\n if (m == \"contentType\") {\n this.setContentType(t);\n } else {\n if (m == \"messageDigest\") {\n this.setMessageDigest(t);\n } else {\n if (m == \"signingTime\") {\n this.setSigningTime(t);\n } else {\n if (m == \"signingCertificate\") {\n this.setSigningCertificate(t);\n } else {\n if (m == \"signingCertificateV2\") {\n this.setSigningCertificateV2(t);\n } else {\n if (m == \"signaturePolicyIdentifier\") {\n this.setSignaturePolicyIdentifier(t);\n }\n }\n }\n }\n }\n }\n return t;\n };\n this.setContentType = function (m) {\n var n = l.getOIDName(m.valhex, 0, null);\n if (n != null) {\n m.type = n;\n delete m.valhex;\n }\n };\n this.setSigningTime = function (o) {\n var n = i(o.valhex, 0);\n var m = hextoutf8(n);\n o.str = m;\n delete o.valhex;\n };\n this.setMessageDigest = function (m) {\n var n = i(m.valhex, 0);\n m.hex = n;\n delete m.valhex;\n };\n this.setSigningCertificate = function (n) {\n var q = j(n.valhex, 0);\n if (q.length > 0) {\n var m = b(n.valhex, q[0]);\n var p = j(m, 0);\n var t = [];\n for (var o = 0; o < p.length; o++) {\n var s = b(m, p[o]);\n var u = this.getESSCertID(s);\n t.push(u);\n }\n n.array = t;\n }\n if (q.length > 1) {\n var r = b(n.valhex, q[1]);\n n.polhex = r;\n }\n delete n.valhex;\n };\n this.setSignaturePolicyIdentifier = function (s) {\n var q = j(s.valhex, 0);\n if (q.length > 0) {\n var r = l.getOID(s.valhex, q[0]);\n s.oid = r;\n }\n if (q.length > 1) {\n var m = new a();\n var t = j(s.valhex, q[1]);\n var p = b(s.valhex, t[0]);\n var o = m.getAlgorithmIdentifierName(p);\n s.alg = o;\n var n = i(s.valhex, t[1]);\n s.hash = n;\n }\n delete s.valhex;\n };\n this.setSigningCertificateV2 = function (o) {\n var s = j(o.valhex, 0);\n if (s.length > 0) {\n var n = b(o.valhex, s[0]);\n var r = j(n, 0);\n var u = [];\n for (var q = 0; q < r.length; q++) {\n var m = b(n, r[q]);\n var p = this.getESSCertIDv2(m);\n u.push(p);\n }\n o.array = u;\n }\n if (s.length > 1) {\n var t = b(o.valhex, s[1]);\n o.polhex = t;\n }\n delete o.valhex;\n };\n this.getESSCertID = function (o) {\n var p = {};\n var n = j(o, 0);\n if (n.length > 0) {\n var q = i(o, n[0]);\n p.hash = q;\n }\n if (n.length > 1) {\n var m = b(o, n[1]);\n var r = this.getIssuerSerial(m);\n if (r.serial != undefined) {\n p.serial = r.serial;\n }\n if (r.issuer != undefined) {\n p.issuer = r.issuer;\n }\n }\n return p;\n };\n this.getESSCertIDv2 = function (q) {\n var s = {};\n var p = j(q, 0);\n if (p.length < 1 || 3 < p.length) {\n throw new g(\"wrong number of elements\");\n }\n var r = 0;\n if (q.substr(p[0], 2) == \"30\") {\n var o = b(q, p[0]);\n s.alg = h.getAlgorithmIdentifierName(o);\n r++;\n } else {\n s.alg = \"sha256\";\n }\n var n = i(q, p[r]);\n s.hash = n;\n if (p.length > r + 1) {\n var m = b(q, p[r + 1]);\n var t = this.getIssuerSerial(m);\n s.issuer = t.issuer;\n s.serial = t.serial;\n }\n return s;\n };\n this.getIssuerSerial = function (q) {\n var r = {};\n var n = j(q, 0);\n var m = b(q, n[0]);\n var p = h.getGeneralNames(m);\n var o = p[0].dn;\n r.issuer = o;\n var s = i(q, n[1]);\n r.serial = {\n hex: s\n };\n return r;\n };\n this.getCertificateSet = function (p) {\n var n = j(p, 0);\n var m = [];\n for (var o = 0; o < n.length; o++) {\n var r = b(p, n[o]);\n if (r.substr(0, 2) == \"30\") {\n var q = hextopem(r, \"CERTIFICATE\");\n m.push(q);\n }\n }\n return {\n array: m,\n sortflag: false\n };\n };\n};\nif (typeof KJUR == \"undefined\" || !KJUR) {\n KJUR = {};\n}\nif (typeof KJUR.asn1 == \"undefined\" || !KJUR.asn1) {\n KJUR.asn1 = {};\n}\nif (typeof KJUR.asn1.tsp == \"undefined\" || !KJUR.asn1.tsp) {\n KJUR.asn1.tsp = {};\n}\nKJUR.asn1.tsp.TimeStampToken = function (d) {\n var c = KJUR,\n b = c.asn1,\n a = b.tsp;\n a.TimeStampToken.superclass.constructor.call(this);\n this.params = null;\n this.getEncodedHexPrepare = function () {\n var e = new a.TSTInfo(this.params.econtent.content);\n this.params.econtent.content.hex = e.tohex();\n };\n if (d != undefined) {\n this.setByParam(d);\n }\n};\nextendClass(KJUR.asn1.tsp.TimeStampToken, KJUR.asn1.cms.SignedData);\nKJUR.asn1.tsp.TSTInfo = function (f) {\n var m = Error,\n c = KJUR,\n j = c.asn1,\n g = j.DERSequence,\n i = j.DERInteger,\n l = j.DERBoolean,\n h = j.DERGeneralizedTime,\n n = j.DERObjectIdentifier,\n e = j.DERTaggedObject,\n k = j.tsp,\n d = k.MessageImprint,\n b = k.Accuracy,\n a = j.x509.X500Name,\n o = j.x509.GeneralName;\n k.TSTInfo.superclass.constructor.call(this);\n this.dVersion = new i({\n \"int\": 1\n });\n this.dPolicy = null;\n this.dMessageImprint = null;\n this.dSerial = null;\n this.dGenTime = null;\n this.dAccuracy = null;\n this.dOrdering = null;\n this.dNonce = null;\n this.dTsa = null;\n this.tohex = function () {\n var p = [this.dVersion];\n if (this.dPolicy == null) {\n throw new Error(\"policy shall be specified.\");\n }\n p.push(this.dPolicy);\n if (this.dMessageImprint == null) {\n throw new Error(\"messageImprint shall be specified.\");\n }\n p.push(this.dMessageImprint);\n if (this.dSerial == null) {\n throw new Error(\"serialNumber shall be specified.\");\n }\n p.push(this.dSerial);\n if (this.dGenTime == null) {\n throw new Error(\"genTime shall be specified.\");\n }\n p.push(this.dGenTime);\n if (this.dAccuracy != null) {\n p.push(this.dAccuracy);\n }\n if (this.dOrdering != null) {\n p.push(this.dOrdering);\n }\n if (this.dNonce != null) {\n p.push(this.dNonce);\n }\n if (this.dTsa != null) {\n p.push(this.dTsa);\n }\n var q = new g({\n array: p\n });\n this.hTLV = q.tohex();\n return this.hTLV;\n };\n this.getEncodedHex = function () {\n return this.tohex();\n };\n if (f !== undefined) {\n if (typeof f.policy == \"string\") {\n if (!f.policy.match(/^[0-9.]+$/)) {\n throw \"policy shall be oid like 0.1.4.134\";\n }\n this.dPolicy = new n({\n oid: f.policy\n });\n }\n if (f.messageImprint !== undefined) {\n this.dMessageImprint = new d(f.messageImprint);\n }\n if (f.serial !== undefined) {\n this.dSerial = new i(f.serial);\n }\n if (f.genTime !== undefined) {\n this.dGenTime = new h(f.genTime);\n }\n if (f.accuracy !== undefined) {\n this.dAccuracy = new b(f.accuracy);\n }\n if (f.ordering !== undefined && f.ordering == true) {\n this.dOrdering = new l();\n }\n if (f.nonce !== undefined) {\n this.dNonce = new i(f.nonce);\n }\n if (f.tsa !== undefined) {\n this.dTsa = new e({\n tag: \"a0\",\n explicit: true,\n obj: new o({\n dn: f.tsa\n })\n });\n }\n }\n};\nextendClass(KJUR.asn1.tsp.TSTInfo, KJUR.asn1.ASN1Object);\nKJUR.asn1.tsp.Accuracy = function (d) {\n var c = KJUR,\n b = c.asn1,\n a = b.ASN1Util.newObject;\n b.tsp.Accuracy.superclass.constructor.call(this);\n this.params = null;\n this.tohex = function () {\n var f = this.params;\n var e = [];\n if (f.seconds != undefined && typeof f.seconds == \"number\") {\n e.push({\n \"int\": f.seconds\n });\n }\n if (f.millis != undefined && typeof f.millis == \"number\") {\n e.push({\n tag: {\n tagi: \"80\",\n obj: {\n \"int\": f.millis\n }\n }\n });\n }\n if (f.micros != undefined && typeof f.micros == \"number\") {\n e.push({\n tag: {\n tagi: \"81\",\n obj: {\n \"int\": f.micros\n }\n }\n });\n }\n return a({\n seq: e\n }).tohex();\n };\n this.getEncodedHex = function () {\n return this.tohex();\n };\n if (d != undefined) {\n this.setByParam(d);\n }\n};\nextendClass(KJUR.asn1.tsp.Accuracy, KJUR.asn1.ASN1Object);\nKJUR.asn1.tsp.MessageImprint = function (g) {\n var c = KJUR,\n b = c.asn1,\n a = b.DERSequence,\n d = b.DEROctetString,\n f = b.x509,\n e = f.AlgorithmIdentifier;\n b.tsp.MessageImprint.superclass.constructor.call(this);\n this.params = null;\n this.tohex = function () {\n var k = this.params;\n var j = new e({\n name: k.alg\n });\n var h = new d({\n hex: k.hash\n });\n var i = new a({\n array: [j, h]\n });\n return i.tohex();\n };\n this.getEncodedHex = function () {\n return this.tohex();\n };\n if (g !== undefined) {\n this.setByParam(g);\n }\n};\nextendClass(KJUR.asn1.tsp.MessageImprint, KJUR.asn1.ASN1Object);\nKJUR.asn1.tsp.TimeStampReq = function (c) {\n var a = KJUR,\n f = a.asn1,\n d = f.DERSequence,\n e = f.DERInteger,\n h = f.DERBoolean,\n j = f.ASN1Object,\n i = f.DERObjectIdentifier,\n g = f.tsp,\n b = g.MessageImprint;\n g.TimeStampReq.superclass.constructor.call(this);\n this.params = null;\n this.tohex = function () {\n var m = this.params;\n var k = [];\n k.push(new e({\n \"int\": 1\n }));\n if (m.messageImprint instanceof KJUR.asn1.ASN1Object) {\n k.push(m.messageImprint);\n } else {\n k.push(new b(m.messageImprint));\n }\n if (m.policy != undefined) {\n k.push(new i(m.policy));\n }\n if (m.nonce != undefined) {\n k.push(new e(m.nonce));\n }\n if (m.certreq == true) {\n k.push(new h());\n }\n var l = new d({\n array: k\n });\n return l.tohex();\n };\n this.getEncodedHex = function () {\n return this.tohex();\n };\n if (c != undefined) {\n this.setByParam(c);\n }\n};\nextendClass(KJUR.asn1.tsp.TimeStampReq, KJUR.asn1.ASN1Object);\nKJUR.asn1.tsp.TimeStampResp = function (g) {\n var e = KJUR,\n d = e.asn1,\n c = d.DERSequence,\n f = d.ASN1Object,\n a = d.tsp,\n b = a.PKIStatusInfo;\n a.TimeStampResp.superclass.constructor.call(this);\n this.params = null;\n this.tohex = function () {\n var j = this.params;\n var h = [];\n if (j.econtent != undefined || j.tst != undefined) {\n if (j.statusinfo != undefined) {\n h.push(new b(j.statusinfo));\n } else {\n h.push(new b(\"granted\"));\n }\n if (j.econtent != undefined) {\n h.push(new a.TimeStampToken(j).getContentInfo());\n } else {\n if (j.tst instanceof d.ASN1Object) {\n h.push(j.tst);\n } else {\n throw new Error(\"improper member tst value\");\n }\n }\n } else {\n if (j.statusinfo != undefined) {\n h.push(new b(j.statusinfo));\n } else {\n throw new Error(\"parameter for token nor statusinfo not specified\");\n }\n }\n var i = new c({\n array: h\n });\n return i.tohex();\n };\n this.getEncodedHex = function () {\n return this.tohex();\n };\n if (g != undefined) {\n this.setByParam(g);\n }\n};\nextendClass(KJUR.asn1.tsp.TimeStampResp, KJUR.asn1.ASN1Object);\nKJUR.asn1.tsp.PKIStatusInfo = function (d) {\n var h = Error,\n a = KJUR,\n g = a.asn1,\n e = g.DERSequence,\n i = g.tsp,\n f = i.PKIStatus,\n c = i.PKIFreeText,\n b = i.PKIFailureInfo;\n i.PKIStatusInfo.superclass.constructor.call(this);\n this.params = null;\n this.tohex = function () {\n var l = this.params;\n var j = [];\n if (typeof l == \"string\") {\n j.push(new f(l));\n } else {\n if (l.status == undefined) {\n throw new h(\"property 'status' unspecified\");\n }\n j.push(new f(l.status));\n if (l.statusstr != undefined) {\n j.push(new c(l.statusstr));\n }\n if (l.failinfo != undefined) {\n j.push(new b(l.failinfo));\n }\n }\n var k = new e({\n array: j\n });\n return k.tohex();\n };\n this.getEncodedHex = function () {\n return this.tohex();\n };\n if (d != undefined) {\n this.setByParam(d);\n }\n};\nextendClass(KJUR.asn1.tsp.PKIStatusInfo, KJUR.asn1.ASN1Object);\nKJUR.asn1.tsp.PKIStatus = function (g) {\n var e = Error,\n d = KJUR,\n c = d.asn1,\n f = c.DERInteger,\n b = c.tsp;\n b.PKIStatus.superclass.constructor.call(this);\n var a = {\n granted: 0,\n grantedWithMods: 1,\n rejection: 2,\n waiting: 3,\n revocationWarning: 4,\n revocationNotification: 5\n };\n this.params = null;\n this.tohex = function () {\n var k = this.params;\n var h, j;\n if (typeof k == \"string\") {\n try {\n j = a[k];\n } catch (i) {\n throw new e(\"undefined name: \" + k);\n }\n } else {\n if (typeof k == \"number\") {\n j = k;\n } else {\n throw new e(\"unsupported params\");\n }\n }\n return new f({\n \"int\": j\n }).tohex();\n };\n this.getEncodedHex = function () {\n return this.tohex();\n };\n if (g != undefined) {\n this.setByParam(g);\n }\n};\nextendClass(KJUR.asn1.tsp.PKIStatus, KJUR.asn1.ASN1Object);\nKJUR.asn1.tsp.PKIFreeText = function (g) {\n var f = Error,\n e = KJUR,\n d = e.asn1,\n b = d.DERSequence,\n c = d.DERUTF8String,\n a = d.tsp;\n a.PKIFreeText.superclass.constructor.call(this);\n this.params = null;\n this.tohex = function () {\n var l = this.params;\n if (!l instanceof Array) {\n throw new f(\"wrong params: not array\");\n }\n var h = [];\n for (var k = 0; k < l.length; k++) {\n h.push(new c({\n str: l[k]\n }));\n }\n var j = new b({\n array: h\n });\n return j.tohex();\n };\n this.getEncodedHex = function () {\n return this.tohex();\n };\n if (g != undefined) {\n this.setByParam(g);\n }\n};\nextendClass(KJUR.asn1.tsp.PKIFreeText, KJUR.asn1.ASN1Object);\nKJUR.asn1.tsp.PKIFailureInfo = function (h) {\n var f = Error,\n e = KJUR,\n d = e.asn1,\n g = d.DERBitString,\n b = d.tsp,\n c = b.PKIFailureInfo;\n var a = {\n badAlg: 0,\n badRequest: 2,\n badDataFormat: 5,\n timeNotAvailable: 14,\n unacceptedPolicy: 15,\n unacceptedExtension: 16,\n addInfoNotAvailable: 17,\n systemFailure: 25\n };\n c.superclass.constructor.call(this);\n this.params = null;\n this.getBinValue = function () {\n var n = this.params;\n var m = 0;\n if (typeof n == \"number\" && 0 <= n && n <= 25) {\n m |= 1 << n;\n var k = m.toString(2);\n var l = \"\";\n for (var j = k.length - 1; j >= 0; j--) {\n l += k[j];\n }\n return l;\n } else {\n if (typeof n == \"string\" && a[n] != undefined) {\n return namearraytobinstr([n], a);\n } else {\n if (typeof n == \"object\" && n.length != undefined) {\n return namearraytobinstr(n, a);\n } else {\n throw new f(\"wrong params\");\n }\n }\n }\n return;\n };\n this.tohex = function () {\n var j = this.params;\n var i = this.getBinValue();\n return new g({\n bin: i\n }).tohex();\n };\n this.getEncodedHex = function () {\n return this.tohex();\n };\n if (h != undefined) {\n this.setByParam(h);\n }\n};\nextendClass(KJUR.asn1.tsp.PKIFailureInfo, KJUR.asn1.ASN1Object);\nKJUR.asn1.tsp.AbstractTSAAdapter = function (a) {\n this.getTSTHex = function (c, b) {\n throw \"not implemented yet\";\n };\n};\nKJUR.asn1.tsp.SimpleTSAAdapter = function (e) {\n var d = KJUR,\n c = d.asn1,\n a = c.tsp,\n b = d.crypto.Util.hashHex;\n a.SimpleTSAAdapter.superclass.constructor.call(this);\n this.params = null;\n this.serial = 0;\n this.getTSTHex = function (g, f) {\n var i = b(g, f);\n this.params.econtent.content.messageImprint = {\n alg: f,\n hash: i\n };\n this.params.econtent.content.serial = {\n \"int\": this.serial++\n };\n var h = Math.floor(Math.random() * 1000000000);\n this.params.econtent.content.nonce = {\n \"int\": h\n };\n var j = new a.TimeStampToken(this.params);\n return j.getContentInfoEncodedHex();\n };\n if (e !== undefined) {\n this.params = e;\n }\n};\nextendClass(KJUR.asn1.tsp.SimpleTSAAdapter, KJUR.asn1.tsp.AbstractTSAAdapter);\nKJUR.asn1.tsp.FixedTSAAdapter = function (e) {\n var d = KJUR,\n c = d.asn1,\n a = c.tsp,\n b = d.crypto.Util.hashHex;\n a.FixedTSAAdapter.superclass.constructor.call(this);\n this.params = null;\n this.getTSTHex = function (g, f) {\n var h = b(g, f);\n this.params.econtent.content.messageImprint = {\n alg: f,\n hash: h\n };\n var i = new a.TimeStampToken(this.params);\n return i.getContentInfoEncodedHex();\n };\n if (e !== undefined) {\n this.params = e;\n }\n};\nextendClass(KJUR.asn1.tsp.FixedTSAAdapter, KJUR.asn1.tsp.AbstractTSAAdapter);\nKJUR.asn1.tsp.TSPUtil = new function () {}();\nKJUR.asn1.tsp.TSPUtil.newTimeStampToken = function (a) {\n return new KJUR.asn1.tsp.TimeStampToken(a);\n};\nKJUR.asn1.tsp.TSPUtil.parseTimeStampReq = function (a) {\n var b = new KJUR.asn1.tsp.TSPParser();\n return b.getTimeStampReq(a);\n};\nKJUR.asn1.tsp.TSPUtil.parseMessageImprint = function (a) {\n var b = new KJUR.asn1.tsp.TSPParser();\n return b.getMessageImprint(a);\n};\nKJUR.asn1.tsp.TSPParser = function () {\n var e = Error,\n a = X509,\n f = new a(),\n k = ASN1HEX,\n g = k.getV,\n b = k.getTLV,\n d = k.getIdxbyList,\n c = k.getTLVbyListEx,\n i = k.getChildIdx;\n var j = [\"granted\", \"grantedWithMods\", \"rejection\", \"waiting\", \"revocationWarning\", \"revocationNotification\"];\n var h = {\n 0: \"badAlg\",\n 2: \"badRequest\",\n 5: \"badDataFormat\",\n 14: \"timeNotAvailable\",\n 15: \"unacceptedPolicy\",\n 16: \"unacceptedExtension\",\n 17: \"addInfoNotAvailable\",\n 25: \"systemFailure\"\n };\n this.getResponse = function (n) {\n var l = i(n, 0);\n if (l.length == 1) {\n return this.getPKIStatusInfo(b(n, l[0]));\n } else {\n if (l.length > 1) {\n var o = this.getPKIStatusInfo(b(n, l[0]));\n var m = b(n, l[1]);\n var p = this.getToken(m);\n p.statusinfo = o;\n return p;\n }\n }\n };\n this.getToken = function (m) {\n var l = new KJUR.asn1.cms.CMSParser();\n var n = l.getCMSSignedData(m);\n this.setTSTInfo(n);\n return n;\n };\n this.setTSTInfo = function (l) {\n var o = l.econtent;\n if (o.type == \"tstinfo\") {\n var n = o.content.hex;\n var m = this.getTSTInfo(n);\n o.content = m;\n }\n };\n this.getTSTInfo = function (r) {\n var x = {};\n var s = i(r, 0);\n var p = g(r, s[1]);\n x.policy = hextooid(p);\n var o = b(r, s[2]);\n x.messageImprint = this.getMessageImprint(o);\n var u = g(r, s[3]);\n x.serial = {\n hex: u\n };\n var y = g(r, s[4]);\n x.genTime = {\n str: hextoutf8(y)\n };\n var q = 0;\n if (s.length > 5 && r.substr(s[5], 2) == \"30\") {\n var v = b(r, s[5]);\n x.accuracy = this.getAccuracy(v);\n q++;\n }\n if (s.length > 5 + q && r.substr(s[5 + q], 2) == \"01\") {\n var z = g(r, s[5 + q]);\n if (z == \"ff\") {\n x.ordering = true;\n }\n q++;\n }\n if (s.length > 5 + q && r.substr(s[5 + q], 2) == \"02\") {\n var n = g(r, s[5 + q]);\n x.nonce = {\n hex: n\n };\n q++;\n }\n if (s.length > 5 + q && r.substr(s[5 + q], 2) == \"a0\") {\n var m = b(r, s[5 + q]);\n m = \"30\" + m.substr(2);\n pGeneralNames = f.getGeneralNames(m);\n var t = pGeneralNames[0].dn;\n x.tsa = t;\n q++;\n }\n if (s.length > 5 + q && r.substr(s[5 + q], 2) == \"a1\") {\n var l = b(r, s[5 + q]);\n l = \"30\" + l.substr(2);\n var w = f.getExtParamArray(l);\n x.ext = w;\n q++;\n }\n return x;\n };\n this.getAccuracy = function (q) {\n var r = {};\n var o = i(q, 0);\n for (var p = 0; p < o.length; p++) {\n var m = q.substr(o[p], 2);\n var l = g(q, o[p]);\n var n = parseInt(l, 16);\n if (m == \"02\") {\n r.seconds = n;\n } else {\n if (m == \"80\") {\n r.millis = n;\n } else {\n if (m == \"81\") {\n r.micros = n;\n }\n }\n }\n }\n return r;\n };\n this.getMessageImprint = function (n) {\n if (n.substr(0, 2) != \"30\") {\n throw new Error(\"head of messageImprint hex shall be x30\");\n }\n var s = {};\n var l = i(n, 0);\n var t = d(n, 0, [0, 0]);\n var o = g(n, t);\n var p = k.hextooidstr(o);\n var r = KJUR.asn1.x509.OID.oid2name(p);\n if (r == \"\") {\n throw new Error(\"hashAlg name undefined: \" + p);\n }\n var m = r;\n var q = d(n, 0, [1]);\n s.alg = m;\n s.hash = g(n, q);\n return s;\n };\n this.getPKIStatusInfo = function (o) {\n var t = {};\n var r = i(o, 0);\n var n = 0;\n try {\n var l = g(o, r[0]);\n var p = parseInt(l, 16);\n t.status = j[p];\n } catch (s) {}\n if (r.length > 1 && o.substr(r[1], 2) == \"30\") {\n var m = b(o, r[1]);\n t.statusstr = this.getPKIFreeText(m);\n n++;\n }\n if (r.length > n && o.substr(r[1 + n], 2) == \"03\") {\n var q = b(o, r[1 + n]);\n t.failinfo = this.getPKIFailureInfo(q);\n }\n return t;\n };\n this.getPKIFreeText = function (n) {\n var o = [];\n var l = i(n, 0);\n for (var m = 0; m < l.length; m++) {\n o.push(k.getString(n, l[m]));\n }\n return o;\n };\n this.getPKIFailureInfo = function (l) {\n var m = k.getInt(l, 0);\n if (h[m] != undefined) {\n return h[m];\n } else {\n return m;\n }\n };\n this.getTimeStampReq = function (q) {\n var p = {};\n p.certreq = false;\n var s = i(q, 0);\n if (s.length < 2) {\n throw new Error(\"TimeStampReq must have at least 2 items\");\n }\n var n = b(q, s[1]);\n p.messageImprint = KJUR.asn1.tsp.TSPUtil.parseMessageImprint(n);\n for (var o = 2; o < s.length; o++) {\n var m = s[o];\n var l = q.substr(m, 2);\n if (l == \"06\") {\n var r = g(q, m);\n p.policy = k.hextooidstr(r);\n }\n if (l == \"02\") {\n p.nonce = g(q, m);\n }\n if (l == \"01\") {\n p.certreq = true;\n }\n }\n return p;\n };\n};\nif (typeof KJUR == \"undefined\" || !KJUR) {\n KJUR = {};\n}\nif (typeof KJUR.asn1 == \"undefined\" || !KJUR.asn1) {\n KJUR.asn1 = {};\n}\nif (typeof KJUR.asn1.cades == \"undefined\" || !KJUR.asn1.cades) {\n KJUR.asn1.cades = {};\n}\nKJUR.asn1.cades.SignaturePolicyIdentifier = function (e) {\n var c = KJUR,\n b = c.asn1,\n a = b.cades,\n d = a.SignaturePolicyId;\n a.SignaturePolicyIdentifier.superclass.constructor.call(this);\n this.typeOid = \"1.2.840.113549.1.9.16.2.15\";\n this.params = null;\n this.getValueArray = function () {\n return [new d(this.params)];\n };\n this.setByParam = function (f) {\n this.params = f;\n };\n if (e != undefined) {\n this.setByParam(e);\n }\n};\nextendClass(KJUR.asn1.cades.SignaturePolicyIdentifier, KJUR.asn1.cms.Attribute);\nKJUR.asn1.cades.SignaturePolicyId = function (e) {\n var a = KJUR,\n g = a.asn1,\n f = g.DERSequence,\n i = g.DERObjectIdentifier,\n d = g.x509,\n j = d.AlgorithmIdentifier,\n c = g.cades,\n h = c.SignaturePolicyId,\n b = c.OtherHashAlgAndValue;\n h.superclass.constructor.call(this);\n this.params = null;\n this.tohex = function () {\n var m = this.params;\n var k = [];\n k.push(new i(m.oid));\n k.push(new b(m));\n var l = new f({\n array: k\n });\n return l.tohex();\n };\n this.getEncodedHex = function () {\n return this.tohex();\n };\n this.setByParam = function (k) {\n this.params = k;\n };\n if (e != undefined) {\n this.setByParam(e);\n }\n};\nextendClass(KJUR.asn1.cades.SignaturePolicyId, KJUR.asn1.ASN1Object);\nKJUR.asn1.cades.OtherHashAlgAndValue = function (e) {\n var h = Error,\n a = KJUR,\n g = a.asn1,\n f = g.DERSequence,\n i = g.DEROctetString,\n d = g.x509,\n j = d.AlgorithmIdentifier,\n c = g.cades,\n b = c.OtherHashAlgAndValue;\n b.superclass.constructor.call(this);\n this.params = null;\n this.tohex = function () {\n var o = this.params;\n if (o.alg == undefined) {\n throw new h(\"property 'alg' not specified\");\n }\n if (o.hash == undefined && o.cert == undefined) {\n throw new h(\"property 'hash' nor 'cert' not specified\");\n }\n var m = null;\n if (o.hash != undefined) {\n m = o.hash;\n } else {\n if (o.cert != undefined) {\n if (typeof o.cert != \"string\") {\n throw new h(\"cert not string\");\n }\n var n = o.cert;\n if (o.cert.indexOf(\"-----BEGIN\") != -1) {\n n = pemtohex(o.cert);\n }\n m = KJUR.crypto.Util.hashHex(n, o.alg);\n }\n }\n var k = [];\n k.push(new j({\n name: o.alg\n }));\n k.push(new i({\n hex: m\n }));\n var l = new f({\n array: k\n });\n return l.tohex();\n };\n this.getEncodedHex = function () {\n return this.tohex();\n };\n if (e != undefined) {\n this.setByParam(e);\n }\n};\nextendClass(KJUR.asn1.cades.OtherHashAlgAndValue, KJUR.asn1.ASN1Object);\nKJUR.asn1.cades.OtherHashValue = function (g) {\n KJUR.asn1.cades.OtherHashValue.superclass.constructor.call(this);\n var d = Error,\n c = KJUR,\n f = c.lang.String.isHex,\n b = c.asn1,\n e = b.DEROctetString,\n a = c.crypto.Util.hashHex;\n this.params = null;\n this.tohex = function () {\n var j = this.params;\n if (j.hash == undefined && j.cert == undefined) {\n throw new d(\"hash or cert not specified\");\n }\n var h = null;\n if (j.hash != undefined) {\n h = j.hash;\n } else {\n if (j.cert != undefined) {\n if (typeof j.cert != \"string\") {\n throw new d(\"cert not string\");\n }\n var i = j.cert;\n if (j.cert.indexOf(\"-----BEGIN\") != -1) {\n i = pemtohex(j.cert);\n }\n h = KJUR.crypto.Util.hashHex(i, \"sha1\");\n }\n }\n return new e({\n hex: h\n }).tohex();\n };\n this.getEncodedHex = function () {\n return this.tohex();\n };\n if (g != undefined) {\n this.setByParam(g);\n }\n};\nextendClass(KJUR.asn1.cades.OtherHashValue, KJUR.asn1.ASN1Object);\nKJUR.asn1.cades.SignatureTimeStamp = function (h) {\n var d = Error,\n c = KJUR,\n f = c.lang.String.isHex,\n b = c.asn1,\n e = b.ASN1Object,\n g = b.x509,\n a = b.cades;\n a.SignatureTimeStamp.superclass.constructor.call(this);\n this.typeOid = \"1.2.840.113549.1.9.16.2.14\";\n this.params = null;\n this.getValueArray = function () {\n var l = this.params;\n if (l.tst != undefined) {\n if (f(l.tst)) {\n var j = new e();\n j.hTLV = l.tst;\n return [j];\n } else {\n if (l.tst instanceof e) {\n return [l.tst];\n } else {\n throw new d(\"params.tst has wrong value\");\n }\n }\n } else {\n if (l.res != undefined) {\n var k = l.res;\n if (k instanceof e) {\n k = k.tohex();\n }\n if (typeof k != \"string\" || !f(k)) {\n throw new d(\"params.res has wrong value\");\n }\n var i = ASN1HEX.getTLVbyList(k, 0, [1]);\n var j = new e();\n j.hTLV = l.tst;\n return [j];\n }\n }\n };\n if (h != null) {\n this.setByParam(h);\n }\n};\nextendClass(KJUR.asn1.cades.SignatureTimeStamp, KJUR.asn1.cms.Attribute);\nKJUR.asn1.cades.CompleteCertificateRefs = function (h) {\n var f = Error,\n e = KJUR,\n d = e.asn1,\n b = d.DERSequence,\n c = d.cades,\n a = c.OtherCertID,\n g = e.lang.String.isHex;\n c.CompleteCertificateRefs.superclass.constructor.call(this);\n this.typeOid = \"1.2.840.113549.1.9.16.2.21\";\n this.params = null;\n this.getValueArray = function () {\n var o = this.params;\n var k = [];\n for (var m = 0; m < o.array.length; m++) {\n var n = o.array[m];\n if (typeof n == \"string\") {\n if (n.indexOf(\"-----BEGIN\") != -1) {\n n = {\n cert: n\n };\n } else {\n if (g(n)) {\n n = {\n hash: n\n };\n } else {\n throw new f(\"unsupported value: \" + n);\n }\n }\n }\n if (o.alg != undefined && n.alg == undefined) {\n n.alg = o.alg;\n }\n if (o.hasis != undefined && n.hasis == undefined) {\n n.hasis = o.hasis;\n }\n var j = new a(n);\n k.push(j);\n }\n var l = new b({\n array: k\n });\n return [l];\n };\n if (h != undefined) {\n this.setByParam(h);\n }\n};\nextendClass(KJUR.asn1.cades.CompleteCertificateRefs, KJUR.asn1.cms.Attribute);\nKJUR.asn1.cades.OtherCertID = function (e) {\n var a = KJUR,\n h = a.asn1,\n f = h.DERSequence,\n i = h.cms,\n g = i.IssuerSerial,\n c = h.cades,\n d = c.OtherHashValue,\n b = c.OtherHashAlgAndValue;\n c.OtherCertID.superclass.constructor.call(this);\n this.params = e;\n this.tohex = function () {\n var n = this.params;\n if (typeof n == \"string\") {\n if (n.indexOf(\"-----BEGIN\") != -1) {\n n = {\n cert: n\n };\n } else {\n if (_isHex(n)) {\n n = {\n hash: n\n };\n }\n }\n }\n var j = [];\n var m = null;\n if (n.alg != undefined) {\n m = new b(n);\n } else {\n m = new d(n);\n }\n j.push(m);\n if (n.cert != undefined && n.hasis == true || n.issuer != undefined && n.serial != undefined) {\n var l = new g(n);\n j.push(l);\n }\n var k = new f({\n array: j\n });\n return k.tohex();\n };\n this.getEncodedHex = function () {\n return this.tohex();\n };\n if (e != undefined) {\n this.setByParam(e);\n }\n};\nextendClass(KJUR.asn1.cades.OtherCertID, KJUR.asn1.ASN1Object);\nKJUR.asn1.cades.OtherHash = function (g) {\n var i = Error,\n a = KJUR,\n h = a.asn1,\n j = h.cms,\n c = h.cades,\n b = c.OtherHashAlgAndValue,\n e = c.OtherHashValue,\n d = a.crypto.Util.hashHex,\n f = a.lang.String.isHex;\n c.OtherHash.superclass.constructor.call(this);\n this.params = null;\n this.tohex = function () {\n var l = this.params;\n if (typeof l == \"string\") {\n if (l.indexOf(\"-----BEGIN\") != -1) {\n l = {\n cert: l\n };\n } else {\n if (f(l)) {\n l = {\n hash: l\n };\n }\n }\n }\n var k = null;\n if (l.alg != undefined) {\n k = new b(l);\n } else {\n k = new e(l);\n }\n return k.tohex();\n };\n this.getEncodedHex = function () {\n return this.tohex();\n };\n if (g != undefined) {\n this.setByParam(g);\n }\n};\nextendClass(KJUR.asn1.cades.OtherHash, KJUR.asn1.ASN1Object);\nKJUR.asn1.cades.CAdESUtil = new function () {}();\nKJUR.asn1.cades.CAdESUtil.parseSignedDataForAddingUnsigned = function (a) {\n var c = new KJUR.asn1.cms.CMSParser();\n var b = c.getCMSSignedData(a);\n return b;\n};\nKJUR.asn1.cades.CAdESUtil.parseSignerInfoForAddingUnsigned = function (g, q, c) {\n var p = ASN1HEX,\n s = p.getChildIdx,\n a = p.getTLV,\n l = p.getV,\n v = KJUR,\n h = v.asn1,\n n = h.ASN1Object,\n j = h.cms,\n k = j.AttributeList,\n w = j.SignerInfo;\n var o = {};\n var t = s(g, q);\n if (t.length != 6) {\n throw \"not supported items for SignerInfo (!=6)\";\n }\n var d = t.shift();\n o.version = a(g, d);\n var e = t.shift();\n o.si = a(g, e);\n var m = t.shift();\n o.digalg = a(g, m);\n var f = t.shift();\n o.sattrs = a(g, f);\n var i = t.shift();\n o.sigalg = a(g, i);\n var b = t.shift();\n o.sig = a(g, b);\n o.sigval = l(g, b);\n var u = null;\n o.obj = new w();\n u = new n();\n u.hTLV = o.version;\n o.obj.dCMSVersion = u;\n u = new n();\n u.hTLV = o.si;\n o.obj.dSignerIdentifier = u;\n u = new n();\n u.hTLV = o.digalg;\n o.obj.dDigestAlgorithm = u;\n u = new n();\n u.hTLV = o.sattrs;\n o.obj.dSignedAttrs = u;\n u = new n();\n u.hTLV = o.sigalg;\n o.obj.dSigAlg = u;\n u = new n();\n u.hTLV = o.sig;\n o.obj.dSig = u;\n o.obj.dUnsignedAttrs = new k();\n return o;\n};\nif (typeof KJUR.asn1.csr == \"undefined\" || !KJUR.asn1.csr) {\n KJUR.asn1.csr = {};\n}\nKJUR.asn1.csr.CertificationRequest = function (g) {\n var d = KJUR,\n c = d.asn1,\n e = c.DERBitString,\n b = c.DERSequence,\n a = c.csr,\n f = c.x509,\n h = a.CertificationRequestInfo;\n a.CertificationRequest.superclass.constructor.call(this);\n this.setByParam = function (i) {\n this.params = i;\n };\n this.sign = function () {\n var j = new h(this.params).tohex();\n var k = new KJUR.crypto.Signature({\n alg: this.params.sigalg\n });\n k.init(this.params.sbjprvkey);\n k.updateHex(j);\n var i = k.sign();\n this.params.sighex = i;\n };\n this.getPEM = function () {\n return hextopem(this.tohex(), \"CERTIFICATE REQUEST\");\n };\n this.tohex = function () {\n var l = this.params;\n var j = new KJUR.asn1.csr.CertificationRequestInfo(this.params);\n var m = new KJUR.asn1.x509.AlgorithmIdentifier({\n name: l.sigalg\n });\n if (l.sighex == undefined && l.sbjprvkey != undefined) {\n this.sign();\n }\n if (l.sighex == undefined) {\n throw new Error(\"sighex or sbjprvkey parameter not defined\");\n }\n var k = new e({\n hex: \"00\" + l.sighex\n });\n var i = new b({\n array: [j, m, k]\n });\n return i.tohex();\n };\n this.getEncodedHex = function () {\n return this.tohex();\n };\n if (g !== undefined) {\n this.setByParam(g);\n }\n};\nextendClass(KJUR.asn1.csr.CertificationRequest, KJUR.asn1.ASN1Object);\nKJUR.asn1.csr.CertificationRequestInfo = function (f) {\n var b = KJUR,\n j = b.asn1,\n c = j.DERBitString,\n g = j.DERSequence,\n i = j.DERInteger,\n p = j.DERUTF8String,\n d = j.DERTaggedObject,\n h = j.ASN1Util.newObject,\n n = j.csr,\n e = j.x509,\n a = e.X500Name,\n l = e.Extensions,\n o = e.SubjectPublicKeyInfo,\n k = n.AttributeList;\n n.CertificationRequestInfo.superclass.constructor.call(this);\n this.params = null;\n this.setByParam = function (q) {\n if (q != undefined) {\n this.params = q;\n }\n };\n this.tohex = function () {\n var v = this.params;\n var r = [];\n r.push(new i({\n \"int\": 0\n }));\n r.push(new a(v.subject));\n r.push(new o(KEYUTIL.getKey(v.sbjpubkey)));\n if (v.attrs != undefined) {\n var u = m(v.attrs);\n var t = h({\n tag: {\n tage: \"a0\",\n obj: u\n }\n });\n r.push(t);\n } else {\n if (v.extreq != undefined) {\n var q = new l(v.extreq);\n var t = h({\n tag: {\n tage: \"a0\",\n obj: {\n seq: [{\n oid: \"1.2.840.113549.1.9.14\"\n }, {\n set: [q]\n }]\n }\n }\n });\n r.push(t);\n } else {\n r.push(new d({\n tag: \"a0\",\n explicit: false,\n obj: new p({\n str: \"\"\n })\n }));\n }\n }\n var s = new g({\n array: r\n });\n return s.tohex();\n };\n this.getEncodedHex = function () {\n return this.tohex();\n };\n function m(s) {\n var w = Error,\n v = KJUR.asn1.x509.Extensions;\n var y = [];\n for (var u = 0; u < s.length; u++) {\n var r = s[u];\n var x = r.attr;\n if (x == \"extensionRequest\") {\n var t = new v(r.ext);\n var q = {\n seq: [{\n oid: \"1.2.840.113549.1.9.14\"\n }, {\n set: [t]\n }]\n };\n y.push(q);\n } else {\n if (x == \"unstructuredName\") {\n var q = {\n seq: [{\n oid: \"1.2.840.113549.1.9.2\"\n }, {\n set: r.names\n }]\n };\n y.push(q);\n } else {\n if (x == \"challengePassword\") {\n var q = {\n seq: [{\n oid: \"1.2.840.113549.1.9.7\"\n }, {\n set: [{\n utf8str: r.password\n }]\n }]\n };\n y.push(q);\n } else {\n throw new w(\"unknown CSR attribute\");\n }\n }\n }\n }\n return {\n set: y\n };\n }\n if (f != undefined) {\n this.setByParam(f);\n }\n};\nextendClass(KJUR.asn1.csr.CertificationRequestInfo, KJUR.asn1.ASN1Object);\nKJUR.asn1.csr.AttributeList = function (b) {\n function a(c) {}\n};\nextendClass(KJUR.asn1.csr.AttributeList, KJUR.asn1.ASN1Object);\nKJUR.asn1.csr.CSRUtil = new function () {}();\nKJUR.asn1.csr.CSRUtil.newCSRPEM = function (e) {\n var b = KEYUTIL,\n a = KJUR.asn1.csr;\n var c = new a.CertificationRequest(e);\n var d = c.getPEM();\n return d;\n};\nKJUR.asn1.csr.CSRUtil.getParam = function (d, a) {\n var m = ASN1HEX,\n i = m.getV,\n j = m.getIdxbyList,\n b = m.getTLVbyList,\n o = m.getTLVbyListEx,\n n = m.getVbyListEx;\n var l = function (u) {\n var t = j(u, 0, [0, 3, 0, 0], \"06\");\n if (i(u, t) != \"2a864886f70d01090e\") {\n return null;\n }\n return b(u, 0, [0, 3, 0, 1, 0], \"30\");\n };\n var g = {};\n if (d.indexOf(\"-----BEGIN CERTIFICATE REQUEST\") == -1) {\n throw new Error(\"argument is not PEM file\");\n }\n var e = pemtohex(d, \"CERTIFICATE REQUEST\");\n if (a) {\n g.tbs = b(e, 0, [0]);\n }\n try {\n var p = o(e, 0, [0, 1]);\n if (p == \"3000\") {\n g.subject = {};\n } else {\n var f = new X509();\n g.subject = f.getX500Name(p);\n }\n } catch (q) {}\n var k = o(e, 0, [0, 2]);\n var r = KEYUTIL.getKey(k, null, \"pkcs8pub\");\n g.sbjpubkey = KEYUTIL.getPEM(r, \"PKCS8PUB\");\n var c = l(e);\n var f = new X509();\n if (c != null) {\n g.extreq = f.getExtParamArray(c);\n }\n try {\n var h = o(e, 0, [1], \"30\");\n var f = new X509();\n g.sigalg = f.getAlgorithmIdentifierName(h);\n } catch (q) {}\n try {\n var s = n(e, 0, [2]);\n g.sighex = s;\n } catch (q) {}\n return g;\n};\nKJUR.asn1.csr.CSRUtil.verifySignature = function (b) {\n try {\n var c = null;\n if (typeof b == \"string\" && b.indexOf(\"-----BEGIN CERTIFICATE REQUEST\") != -1) {\n c = KJUR.asn1.csr.CSRUtil.getParam(b, true);\n } else {\n if (typeof b == \"object\" && b.sbjpubkey != undefined && b.sigalg != undefined && b.sighex != undefined && b.tbs != undefined) {\n c = b;\n }\n }\n if (c == null) {\n return false;\n }\n var d = new KJUR.crypto.Signature({\n alg: c.sigalg\n });\n d.init(c.sbjpubkey);\n d.updateHex(c.tbs);\n return d.verify(c.sighex);\n } catch (a) {\n alert(a);\n return false;\n }\n};\nif (typeof KJUR == \"undefined\" || !KJUR) {\n KJUR = {};\n}\nif (typeof KJUR.asn1 == \"undefined\" || !KJUR.asn1) {\n KJUR.asn1 = {};\n}\nif (typeof KJUR.asn1.ocsp == \"undefined\" || !KJUR.asn1.ocsp) {\n KJUR.asn1.ocsp = {};\n}\nKJUR.asn1.ocsp.DEFAULT_HASH = \"sha1\";\nKJUR.asn1.ocsp.OCSPResponse = function (e) {\n KJUR.asn1.ocsp.OCSPResponse.superclass.constructor.call(this);\n var a = KJUR.asn1.DEREnumerated,\n b = KJUR.asn1.ASN1Util.newObject,\n c = KJUR.asn1.ocsp.ResponseBytes;\n var d = [\"successful\", \"malformedRequest\", \"internalError\", \"tryLater\", \"_not_used_\", \"sigRequired\", \"unauthorized\"];\n this.params = null;\n this._getStatusCode = function () {\n var f = this.params.resstatus;\n if (typeof f == \"number\") {\n return f;\n }\n if (typeof f != \"string\") {\n return -1;\n }\n return d.indexOf(f);\n };\n this.setByParam = function (f) {\n this.params = f;\n };\n this.tohex = function () {\n var h = this.params;\n var g = this._getStatusCode();\n if (g == -1) {\n throw new Error(\"responseStatus not supported: \" + h.resstatus);\n }\n if (g != 0) {\n return b({\n seq: [{\n \"enum\": {\n \"int\": g\n }\n }]\n }).tohex();\n }\n var f = new c(h);\n return b({\n seq: [{\n \"enum\": {\n \"int\": 0\n }\n }, {\n tag: {\n tag: \"a0\",\n explicit: true,\n obj: f\n }\n }]\n }).tohex();\n };\n this.getEncodedHex = function () {\n return this.tohex();\n };\n if (e !== undefined) {\n this.setByParam(e);\n }\n};\nextendClass(KJUR.asn1.ocsp.OCSPResponse, KJUR.asn1.ASN1Object);\nKJUR.asn1.ocsp.ResponseBytes = function (e) {\n KJUR.asn1.ocsp.ResponseBytes.superclass.constructor.call(this);\n var b = KJUR.asn1,\n a = b.DERSequence,\n f = b.DERObjectIdentifier,\n c = b.DEROctetString,\n d = b.ocsp.BasicOCSPResponse;\n this.params = null;\n this.setByParam = function (g) {\n this.params = g;\n };\n this.tohex = function () {\n var j = this.params;\n if (j.restype != \"ocspBasic\") {\n throw new Error(\"not supported responseType: \" + j.restype);\n }\n var i = new d(j);\n var g = [];\n g.push(new f({\n name: \"ocspBasic\"\n }));\n g.push(new c({\n hex: i.tohex()\n }));\n var h = new a({\n array: g\n });\n return h.tohex();\n };\n this.getEncodedHex = function () {\n return this.tohex();\n };\n if (e !== undefined) {\n this.setByParam(e);\n }\n};\nextendClass(KJUR.asn1.ocsp.ResponseBytes, KJUR.asn1.ASN1Object);\nKJUR.asn1.ocsp.BasicOCSPResponse = function (d) {\n KJUR.asn1.ocsp.BasicOCSPResponse.superclass.constructor.call(this);\n var i = Error,\n g = KJUR.asn1,\n j = g.ASN1Object,\n e = g.DERSequence,\n f = g.DERGeneralizedTime,\n c = g.DERTaggedObject,\n b = g.DERBitString,\n h = g.x509.Extensions,\n k = g.x509.AlgorithmIdentifier,\n l = g.ocsp,\n a = l.ResponderID;\n _SingleResponseList = l.SingleResponseList, _ResponseData = l.ResponseData;\n this.params = null;\n this.setByParam = function (m) {\n this.params = m;\n };\n this.sign = function () {\n var o = this.params;\n var m = o.tbsresp.tohex();\n var n = new KJUR.crypto.Signature({\n alg: o.sigalg\n });\n n.init(o.reskey);\n n.updateHex(m);\n o.sighex = n.sign();\n };\n this.tohex = function () {\n var t = this.params;\n if (t.tbsresp == undefined) {\n t.tbsresp = new _ResponseData(t);\n }\n if (t.sighex == undefined && t.reskey != undefined) {\n this.sign();\n }\n var n = [];\n n.push(t.tbsresp);\n n.push(new k({\n name: t.sigalg\n }));\n n.push(new b({\n hex: \"00\" + t.sighex\n }));\n if (t.certs != undefined && t.certs.length != undefined) {\n var m = [];\n for (var q = 0; q < t.certs.length; q++) {\n var s = t.certs[q];\n var r = null;\n if (ASN1HEX.isASN1HEX(s)) {\n r = s;\n } else {\n if (s.match(/-----BEGIN/)) {\n r = pemtohex(s);\n } else {\n throw new i(\"certs[\" + q + \"] not hex or PEM\");\n }\n }\n m.push(new j({\n tlv: r\n }));\n }\n var p = new e({\n array: m\n });\n n.push(new c({\n tag: \"a0\",\n explicit: true,\n obj: p\n }));\n }\n var o = new e({\n array: n\n });\n return o.tohex();\n };\n this.getEncodedHex = function () {\n return this.tohex();\n };\n if (d !== undefined) {\n this.setByParam(d);\n }\n};\nextendClass(KJUR.asn1.ocsp.BasicOCSPResponse, KJUR.asn1.ASN1Object);\nKJUR.asn1.ocsp.ResponseData = function (c) {\n KJUR.asn1.ocsp.ResponseData.superclass.constructor.call(this);\n var h = Error,\n f = KJUR.asn1,\n d = f.DERSequence,\n e = f.DERGeneralizedTime,\n b = f.DERTaggedObject,\n g = f.x509.Extensions,\n i = f.ocsp,\n a = i.ResponderID;\n _SingleResponseList = i.SingleResponseList;\n this.params = null;\n this.tohex = function () {\n var m = this.params;\n if (m.respid != undefined) {\n new h(\"respid not specified\");\n }\n if (m.prodat != undefined) {\n new h(\"prodat not specified\");\n }\n if (m.array != undefined) {\n new h(\"array not specified\");\n }\n var j = [];\n j.push(new a(m.respid));\n j.push(new e(m.prodat));\n j.push(new _SingleResponseList(m.array));\n if (m.ext != undefined) {\n var l = new g(m.ext);\n j.push(new b({\n tag: \"a1\",\n explicit: true,\n obj: l\n }));\n }\n var k = new d({\n array: j\n });\n return k.tohex();\n };\n this.getEncodedHex = function () {\n return this.tohex();\n };\n this.setByParam = function (j) {\n this.params = j;\n };\n if (c !== undefined) {\n this.setByParam(c);\n }\n};\nextendClass(KJUR.asn1.ocsp.ResponseData, KJUR.asn1.ASN1Object);\nKJUR.asn1.ocsp.ResponderID = function (g) {\n KJUR.asn1.ocsp.ResponderID.superclass.constructor.call(this);\n var d = KJUR,\n c = d.asn1,\n b = c.ASN1Util.newObject,\n f = c.x509.X500Name,\n e = d.lang.String.isHex,\n a = Error;\n this.params = null;\n this.tohex = function () {\n var m = this.params;\n if (m.key != undefined) {\n var l = null;\n if (typeof m.key == \"string\") {\n if (e(m.key)) {\n l = m.key;\n }\n if (m.key.match(/-----BEGIN CERTIFICATE/)) {\n var h = new X509(m.key);\n var k = h.getExtSubjectKeyIdentifier();\n if (k != null) {\n l = k.kid.hex;\n }\n }\n } else {\n if (m.key instanceof X509) {\n var k = m.key.getExtSubjectKeyIdentifier();\n if (k != null) {\n l = k.kid.hex;\n }\n }\n }\n if (l == null) {\n throw new a(\"wrong key member value\");\n }\n var j = b({\n tag: {\n tag: \"a2\",\n explicit: true,\n obj: {\n octstr: {\n hex: l\n }\n }\n }\n });\n return j.tohex();\n } else {\n if (m.name != undefined) {\n var i = null;\n if (typeof m.name == \"string\" && m.name.match(/-----BEGIN CERTIFICATE/)) {\n var h = new X509(m.name);\n i = h.getSubject();\n } else {\n if (m.name instanceof X509) {\n i = m.name.getSubject();\n } else {\n if (typeof m.name == \"object\" && (m.name.array != undefined || m.name.str != undefined)) {\n i = m.name;\n }\n }\n }\n if (i == null) {\n throw new a(\"wrong name member value\");\n }\n var j = b({\n tag: {\n tag: \"a1\",\n explicit: true,\n obj: new f(i)\n }\n });\n return j.tohex();\n }\n }\n throw new a(\"key or name not specified\");\n };\n this.getEncodedHex = function () {\n return this.tohex();\n };\n this.setByParam = function (h) {\n this.params = h;\n };\n if (g !== undefined) {\n this.setByParam(g);\n }\n};\nextendClass(KJUR.asn1.ocsp.ResponderID, KJUR.asn1.ASN1Object);\nKJUR.asn1.ocsp.SingleResponseList = function (d) {\n KJUR.asn1.ocsp.SingleResponseList.superclass.constructor.call(this);\n var c = KJUR.asn1,\n b = c.DERSequence,\n a = c.ocsp.SingleResponse;\n this.params = null;\n this.tohex = function () {\n var h = this.params;\n if (typeof h != \"object\" || h.length == undefined) {\n throw new Error(\"params not specified properly\");\n }\n var e = [];\n for (var g = 0; g < h.length; g++) {\n e.push(new a(h[g]));\n }\n var f = new b({\n array: e\n });\n return f.tohex();\n };\n this.getEncodedHex = function () {\n return this.tohex();\n };\n this.setByParam = function (e) {\n this.params = e;\n };\n if (d !== undefined) {\n this.setByParam(d);\n }\n};\nextendClass(KJUR.asn1.ocsp.SingleResponseList, KJUR.asn1.ASN1Object);\nKJUR.asn1.ocsp.SingleResponse = function (e) {\n var k = Error,\n a = KJUR,\n i = a.asn1,\n f = i.DERSequence,\n g = i.DERGeneralizedTime,\n b = i.DERTaggedObject,\n l = i.ocsp,\n h = l.CertID,\n c = l.CertStatus,\n d = i.x509,\n j = d.Extensions;\n l.SingleResponse.superclass.constructor.call(this);\n this.params = null;\n this.tohex = function () {\n var q = this.params;\n var n = [];\n if (q.certid == undefined) {\n throw new k(\"certid unspecified\");\n }\n if (q.status == undefined) {\n throw new k(\"status unspecified\");\n }\n if (q.thisupdate == undefined) {\n throw new k(\"thisupdate unspecified\");\n }\n n.push(new h(q.certid));\n n.push(new c(q.status));\n n.push(new g(q.thisupdate));\n if (q.nextupdate != undefined) {\n var m = new g(q.nextupdate);\n n.push(new b({\n tag: \"a0\",\n explicit: true,\n obj: m\n }));\n }\n if (q.ext != undefined) {\n var p = new j(q.ext);\n n.push(new b({\n tag: \"a1\",\n explicit: true,\n obj: p\n }));\n }\n var o = new f({\n array: n\n });\n return o.tohex();\n };\n this.getEncodedHex = function () {\n return this.tohex();\n };\n this.setByParam = function (m) {\n this.params = m;\n };\n if (e !== undefined) {\n this.setByParam(e);\n }\n};\nextendClass(KJUR.asn1.ocsp.SingleResponse, KJUR.asn1.ASN1Object);\nKJUR.asn1.ocsp.CertID = function (e) {\n var b = KJUR,\n i = b.asn1,\n l = i.DEROctetString,\n h = i.DERInteger,\n f = i.DERSequence,\n d = i.x509,\n m = d.AlgorithmIdentifier,\n n = i.ocsp,\n k = n.DEFAULT_HASH,\n g = b.crypto,\n c = g.Util.hashHex,\n a = X509,\n o = ASN1HEX,\n j = o.getVbyList;\n n.CertID.superclass.constructor.call(this);\n this.DEFAULT_HASH = \"sha1\";\n this.params = null;\n this.setByValue = function (s, r, p, q) {\n if (q == undefined) {\n q = this.DEFAULT_HASH;\n }\n this.params = {\n alg: q,\n issname: s,\n isskey: r,\n sbjsn: p\n };\n };\n this.setByCert = function (p, q, r) {\n if (r == undefined) {\n r = this.DEFAULT_HASH;\n }\n this.params = {\n alg: r,\n issuerCert: p,\n subjectCert: q\n };\n };\n this.getParamByCerts = function (y, x, t) {\n if (t == undefined) {\n t = this.DEFAULT_HASH;\n }\n var q = new a(y);\n var v = new a(x);\n var s = c(q.getSubjectHex(), t);\n var u = q.getPublicKeyHex();\n var p = c(j(u, 0, [1], \"03\", true), t);\n var w = v.getSerialNumberHex();\n var r = {\n alg: t,\n issname: s,\n isskey: p,\n sbjsn: w\n };\n return r;\n };\n this.tohex = function () {\n if (typeof this.params != \"object\") {\n throw new Error(\"params not set\");\n }\n var s = this.params;\n var u, r, y, q;\n if (s.alg == undefined) {\n q = this.DEFAULT_HASH;\n } else {\n q = s.alg;\n }\n if (s.issuerCert != undefined && s.subjectCert != undefined) {\n var t = this.getParamByCerts(s.issuerCert, s.subjectCert, q);\n u = t.issname;\n r = t.isskey;\n y = t.sbjsn;\n } else {\n if (s.issname != undefined && s.isskey != undefined && s.sbjsn != undefined) {\n u = s.issname;\n r = s.isskey;\n y = s.sbjsn;\n } else {\n throw new Error(\"required param members not defined\");\n }\n }\n var A = new m({\n name: q\n });\n var v = new l({\n hex: u\n });\n var x = new l({\n hex: r\n });\n var w = new h({\n hex: y\n });\n var z = new f({\n array: [A, v, x, w]\n });\n this.hTLV = z.tohex();\n return this.hTLV;\n };\n this.getEncodedHex = function () {\n return this.tohex();\n };\n if (e !== undefined) {\n this.setByParam(e);\n }\n};\nextendClass(KJUR.asn1.ocsp.CertID, KJUR.asn1.ASN1Object);\nKJUR.asn1.ocsp.CertStatus = function (a) {\n KJUR.asn1.ocsp.CertStatus.superclass.constructor.call(this);\n this.params = null;\n this.tohex = function () {\n var d = this.params;\n if (d.status == \"good\") {\n return \"8000\";\n }\n if (d.status == \"unknown\") {\n return \"8200\";\n }\n if (d.status == \"revoked\") {\n var c = [{\n gentime: {\n str: d.time\n }\n }];\n if (d.reason != undefined) {\n c.push({\n tag: {\n tag: \"a0\",\n explicit: true,\n obj: {\n \"enum\": {\n \"int\": d.reason\n }\n }\n }\n });\n }\n var b = {\n tag: \"a1\",\n explicit: false,\n obj: {\n seq: c\n }\n };\n return KJUR.asn1.ASN1Util.newObject({\n tag: b\n }).tohex();\n }\n throw new Error(\"bad status\");\n };\n this.getEncodedHex = function () {\n return this.tohex();\n };\n this.setByParam = function (b) {\n this.params = b;\n };\n if (a !== undefined) {\n this.setByParam(a);\n }\n};\nextendClass(KJUR.asn1.ocsp.CertStatus, KJUR.asn1.ASN1Object);\nKJUR.asn1.ocsp.Request = function (f) {\n var c = KJUR,\n b = c.asn1,\n a = b.DERSequence,\n d = b.ocsp;\n d.Request.superclass.constructor.call(this);\n this.dReqCert = null;\n this.dExt = null;\n this.tohex = function () {\n var g = [];\n if (this.dReqCert === null) {\n throw \"reqCert not set\";\n }\n g.push(this.dReqCert);\n var h = new a({\n array: g\n });\n this.hTLV = h.tohex();\n return this.hTLV;\n };\n this.getEncodedHex = function () {\n return this.tohex();\n };\n if (typeof f !== \"undefined\") {\n var e = new d.CertID(f);\n this.dReqCert = e;\n }\n};\nextendClass(KJUR.asn1.ocsp.Request, KJUR.asn1.ASN1Object);\nKJUR.asn1.ocsp.TBSRequest = function (e) {\n var c = KJUR,\n b = c.asn1,\n a = b.DERSequence,\n d = b.ocsp;\n d.TBSRequest.superclass.constructor.call(this);\n this.version = 0;\n this.dRequestorName = null;\n this.dRequestList = [];\n this.dRequestExt = null;\n this.setRequestListByParam = function (h) {\n var f = [];\n for (var g = 0; g < h.length; g++) {\n var j = new d.Request(h[0]);\n f.push(j);\n }\n this.dRequestList = f;\n };\n this.tohex = function () {\n var f = [];\n if (this.version !== 0) {\n throw \"not supported version: \" + this.version;\n }\n if (this.dRequestorName !== null) {\n throw \"requestorName not supported\";\n }\n var h = new a({\n array: this.dRequestList\n });\n f.push(h);\n if (this.dRequestExt !== null) {\n throw \"requestExtensions not supported\";\n }\n var g = new a({\n array: f\n });\n this.hTLV = g.tohex();\n return this.hTLV;\n };\n this.getEncodedHex = function () {\n return this.tohex();\n };\n if (e !== undefined) {\n if (e.reqList !== undefined) {\n this.setRequestListByParam(e.reqList);\n }\n }\n};\nextendClass(KJUR.asn1.ocsp.TBSRequest, KJUR.asn1.ASN1Object);\nKJUR.asn1.ocsp.OCSPRequest = function (f) {\n var c = KJUR,\n b = c.asn1,\n a = b.DERSequence,\n d = b.ocsp;\n d.OCSPRequest.superclass.constructor.call(this);\n this.dTbsRequest = null;\n this.dOptionalSignature = null;\n this.tohex = function () {\n var g = [];\n if (this.dTbsRequest !== null) {\n g.push(this.dTbsRequest);\n } else {\n throw \"tbsRequest not set\";\n }\n if (this.dOptionalSignature !== null) {\n throw \"optionalSignature not supported\";\n }\n var h = new a({\n array: g\n });\n this.hTLV = h.tohex();\n return this.hTLV;\n };\n this.getEncodedHex = function () {\n return this.tohex();\n };\n if (f !== undefined) {\n if (f.reqList !== undefined) {\n var e = new d.TBSRequest(f);\n this.dTbsRequest = e;\n }\n }\n};\nextendClass(KJUR.asn1.ocsp.OCSPRequest, KJUR.asn1.ASN1Object);\nKJUR.asn1.ocsp.OCSPUtil = {};\nKJUR.asn1.ocsp.OCSPUtil.getRequestHex = function (a, b, h) {\n var d = KJUR,\n c = d.asn1,\n e = c.ocsp;\n if (h === undefined) {\n h = e.DEFAULT_HASH;\n }\n var g = {\n alg: h,\n issuerCert: a,\n subjectCert: b\n };\n var f = new e.OCSPRequest({\n reqList: [g]\n });\n return f.tohex();\n};\nKJUR.asn1.ocsp.OCSPUtil.getOCSPResponseInfo = function (b) {\n var m = ASN1HEX,\n c = m.getVbyList,\n k = m.getVbyListEx,\n e = m.getIdxbyList,\n d = m.getIdxbyListEx,\n g = m.getV;\n var n = {};\n try {\n var j = k(b, 0, [0], \"0a\");\n n.responseStatus = parseInt(j, 16);\n } catch (f) {}\n if (n.responseStatus !== 0) {\n return n;\n }\n try {\n var i = e(b, 0, [1, 0, 1, 0, 0, 2, 0, 1]);\n if (b.substr(i, 2) === \"80\") {\n n.certStatus = \"good\";\n } else {\n if (b.substr(i, 2) === \"a1\") {\n n.certStatus = \"revoked\";\n n.revocationTime = hextoutf8(c(b, i, [0]));\n } else {\n if (b.substr(i, 2) === \"82\") {\n n.certStatus = \"unknown\";\n }\n }\n }\n } catch (f) {}\n try {\n var a = e(b, 0, [1, 0, 1, 0, 0, 2, 0, 2]);\n n.thisUpdate = hextoutf8(g(b, a));\n } catch (f) {}\n try {\n var l = e(b, 0, [1, 0, 1, 0, 0, 2, 0, 3]);\n if (b.substr(l, 2) === \"a0\") {\n n.nextUpdate = hextoutf8(c(b, l, [0]));\n }\n } catch (f) {}\n return n;\n};\nKJUR.asn1.ocsp.OCSPParser = function () {\n var g = Error,\n a = X509,\n h = new a(),\n l = ASN1HEX,\n i = l.getV,\n b = l.getTLV,\n f = l.getIdxbyList,\n e = l.getVbyList,\n c = l.getTLVbyList,\n k = l.getVbyListEx,\n d = l.getTLVbyListEx,\n j = l.getChildIdx;\n this.getOCSPRequest = function (o) {\n var n = j(o, 0);\n if (n.length != 1 && n.length != 2) {\n throw new g(\"wrong number elements: \" + n.length);\n }\n var m = this.getTBSRequest(b(o, n[0]));\n return m;\n };\n this.getTBSRequest = function (o) {\n var m = {};\n var n = d(o, 0, [0], \"30\");\n m.array = this.getRequestList(n);\n var p = d(o, 0, [\"[2]\", 0], \"30\");\n if (p != null) {\n m.ext = h.getExtParamArray(p);\n }\n return m;\n };\n this.getRequestList = function (p) {\n var m = [];\n var n = j(p, 0);\n for (var o = 0; o < n.length; o++) {\n var p = b(p, n[o]);\n m.push(this.getRequest(p));\n }\n return m;\n };\n this.getRequest = function (n) {\n var m = j(n, 0);\n if (m.length != 1 && m.length != 2) {\n throw new g(\"wrong number elements: \" + m.length);\n }\n var p = this.getCertID(b(n, m[0]));\n if (m.length == 2) {\n var o = f(n, 0, [1, 0]);\n p.ext = h.getExtParamArray(b(n, o));\n }\n return p;\n };\n this.getCertID = function (p) {\n var o = j(p, 0);\n if (o.length != 4) {\n throw new g(\"wrong number elements: \" + o.length);\n }\n var n = new a();\n var m = {};\n m.alg = n.getAlgorithmIdentifierName(b(p, o[0]));\n m.issname = i(p, o[1]);\n m.isskey = i(p, o[2]);\n m.sbjsn = i(p, o[3]);\n return m;\n };\n this.getOCSPResponse = function (r) {\n var o = j(r, 0);\n var m;\n var q = i(r, o[0]);\n var p = parseInt(q);\n if (o.length == 1) {\n return {\n resstatus: p\n };\n }\n var n = c(r, 0, [1, 0]);\n m = this.getResponseBytes(n);\n m.resstatus = p;\n return m;\n };\n this.getResponseBytes = function (p) {\n var o = j(p, 0);\n var n;\n var q = c(p, 0, [1, 0]);\n n = this.getBasicOCSPResponse(q);\n var m = i(p, o[0]);\n n.restype = KJUR.asn1.x509.OID.oid2name(hextooid(m));\n return n;\n };\n this.getBasicOCSPResponse = function (q) {\n var t = j(q, 0);\n var v;\n v = this.getResponseData(b(q, t[0]));\n var u = new X509();\n v.alg = u.getAlgorithmIdentifierName(b(q, t[1]));\n var n = i(q, t[2]);\n v.sighex = n.substr(2);\n var m = k(q, 0, [\"[0]\"]);\n if (m != null) {\n var r = j(m, 0);\n var o = [];\n for (var p = 0; p < r.length; p++) {\n var s = b(m, r[p]);\n o.push(s);\n }\n v.certs = o;\n }\n return v;\n };\n this.getResponseData = function (q) {\n var p = j(q, 0);\n var r = p.length;\n var o = {};\n var n = 0;\n if (q.substr(p[0], 2) == \"a0\") {\n n++;\n }\n o.respid = this.getResponderID(b(q, p[n++]));\n var t = i(q, p[n++]);\n o.prodat = hextoutf8(t);\n o.array = this.getSingleResponseList(b(q, p[n++]));\n if (q.substr(p[r - 1], 2) == \"a1\") {\n var s = c(q, p[r - 1], [0]);\n var m = new X509();\n o.ext = m.getExtParamArray(s);\n }\n return o;\n };\n this.getResponderID = function (o) {\n var n = {};\n if (o.substr(0, 2) == \"a2\") {\n var p = e(o, 0, [0]);\n n.key = p;\n }\n if (o.substr(0, 2) == \"a1\") {\n var q = c(o, 0, [0]);\n var m = new X509();\n n.name = m.getX500Name(q);\n }\n return n;\n };\n this.getSingleResponseList = function (q) {\n var n = j(q, 0);\n var m = [];\n for (var o = 0; o < n.length; o++) {\n var r = this.getSingleResponse(b(q, n[o]));\n m.push(r);\n }\n return m;\n };\n this.getSingleResponse = function (p) {\n var t = j(p, 0);\n var v = {};\n var r = this.getCertID(b(p, t[0]));\n v.certid = r;\n var u = this.getCertStatus(b(p, t[1]));\n v.status = u;\n if (p.substr(t[2], 2) == \"18\") {\n var q = i(p, t[2]);\n v.thisupdate = hextoutf8(q);\n }\n for (var o = 3; o < t.length; o++) {\n if (p.substr(t[o], 2) == \"a0\") {\n var m = e(p, t[o], [0], \"18\");\n v.nextupdate = hextoutf8(m);\n }\n if (p.substr(t[o], 2) == \"a1\") {\n var s = new X509();\n var n = c(p, 0, [o, 0]);\n v.ext = s.getExtParamArray(n);\n }\n }\n return v;\n };\n this.getCertStatus = function (p) {\n var m = {};\n if (p == \"8000\") {\n return {\n status: \"good\"\n };\n }\n if (p == \"8200\") {\n return {\n status: \"unknown\"\n };\n }\n if (p.substr(0, 2) == \"a1\") {\n m.status = \"revoked\";\n var o = e(p, 0, [0]);\n var n = hextoutf8(o);\n m.time = n;\n }\n return m;\n };\n};\nvar KJUR;\nif (typeof KJUR == \"undefined\" || !KJUR) {\n KJUR = {};\n}\nif (typeof KJUR.lang == \"undefined\" || !KJUR.lang) {\n KJUR.lang = {};\n}\nKJUR.lang.String = function () {};\nfunction Base64x() {}\nfunction stoBA(d) {\n var b = new Array();\n for (var c = 0; c < d.length; c++) {\n b[c] = d.charCodeAt(c);\n }\n return b;\n}\nfunction BAtos(b) {\n var d = \"\";\n for (var c = 0; c < b.length; c++) {\n d = d + String.fromCharCode(b[c]);\n }\n return d;\n}\nfunction BAtohex(b) {\n var e = \"\";\n for (var d = 0; d < b.length; d++) {\n var c = b[d].toString(16);\n if (c.length == 1) {\n c = \"0\" + c;\n }\n e = e + c;\n }\n return e;\n}\nfunction stohex(a) {\n return BAtohex(stoBA(a));\n}\nfunction stob64(a) {\n return hex2b64(stohex(a));\n}\nfunction stob64u(a) {\n return b64tob64u(hex2b64(stohex(a)));\n}\nfunction b64utos(a) {\n return BAtos(b64toBA(b64utob64(a)));\n}\nfunction b64tob64u(a) {\n a = a.replace(/\\=/g, \"\");\n a = a.replace(/\\+/g, \"-\");\n a = a.replace(/\\//g, \"_\");\n return a;\n}\nfunction b64utob64(a) {\n if (a.length % 4 == 2) {\n a = a + \"==\";\n } else {\n if (a.length % 4 == 3) {\n a = a + \"=\";\n }\n }\n a = a.replace(/-/g, \"+\");\n a = a.replace(/_/g, \"/\");\n return a;\n}\nfunction hextob64u(a) {\n if (a.length % 2 == 1) {\n a = \"0\" + a;\n }\n return b64tob64u(hex2b64(a));\n}\nfunction b64utohex(a) {\n return b64tohex(b64utob64(a));\n}\nvar utf8tob64u, b64utoutf8;\nif (typeof Buffer === \"function\") {\n utf8tob64u = function (a) {\n return b64tob64u(Buffer.from(a, \"utf8\").toString(\"base64\"));\n };\n b64utoutf8 = function (a) {\n return Buffer.from(b64utob64(a), \"base64\").toString(\"utf8\");\n };\n} else {\n utf8tob64u = function (a) {\n return hextob64u(uricmptohex(encodeURIComponentAll(a)));\n };\n b64utoutf8 = function (a) {\n return decodeURIComponent(hextouricmp(b64utohex(a)));\n };\n}\nfunction utf8tob64(a) {\n return hex2b64(uricmptohex(encodeURIComponentAll(a)));\n}\nfunction b64toutf8(a) {\n return decodeURIComponent(hextouricmp(b64tohex(a)));\n}\nfunction utf8tohex(a) {\n return uricmptohex(encodeURIComponentAll(a)).toLowerCase();\n}\nfunction hextoutf8(b) {\n try {\n return decodeURIComponent(hextouricmp(b));\n } catch (a) {\n return null;\n }\n}\nfunction iso88591hextoutf8(a) {\n return hextoutf8(iso88591hextoutf8hex(a));\n}\nfunction utf8toiso88591hex(a) {\n return utf8hextoiso88591hex(utf8tohex(a));\n}\nfunction iso88591hextoutf8hex(e) {\n var c = e.match(/.{1,2}/g);\n var b = [];\n for (var d = 0; d < c.length; d++) {\n var f = parseInt(c[d], 16);\n if (161 <= f && f <= 191) {\n b.push(\"c2\");\n b.push(c[d]);\n } else {\n if (192 <= f && f <= 255) {\n b.push(\"c3\");\n b.push((f - 64).toString(16));\n } else {\n b.push(c[d]);\n }\n }\n }\n return b.join(\"\");\n}\nfunction utf8hextoiso88591hex(f) {\n var c = f.match(/.{1,2}/g);\n var b = [];\n for (var e = 0; e < c.length; e++) {\n if (c[e] == \"c2\") {\n e++;\n b.push(c[e]);\n } else {\n if (c[e] == \"c3\") {\n e++;\n var d = c[e];\n var g = parseInt(c[e], 16) + 64;\n b.push(g.toString(16));\n } else {\n b.push(c[e]);\n }\n }\n }\n return b.join(\"\");\n}\nfunction hextorstr(c) {\n var b = \"\";\n for (var a = 0; a < c.length - 1; a += 2) {\n b += String.fromCharCode(parseInt(c.substr(a, 2), 16));\n }\n return b;\n}\nfunction rstrtohex(c) {\n var a = \"\";\n for (var b = 0; b < c.length; b++) {\n a += (\"0\" + c.charCodeAt(b).toString(16)).slice(-2);\n }\n return a;\n}\nfunction hextob64(a) {\n return hex2b64(a);\n}\nfunction hextob64nl(a) {\n return foldnl(hextob64(a), 64);\n}\nfunction foldnl(a, b) {\n a = a.replace(new RegExp(\"(.{\" + b + \"})\", \"g\"), \"$1\\r\\n\");\n a = a.replace(/\\s+$/, \"\");\n return a;\n}\nfunction b64nltohex(b) {\n var a = b.replace(/[^0-9A-Za-z\\/+=]*/g, \"\");\n var c = b64tohex(a);\n return c;\n}\nfunction b64topem(b, a) {\n return \"-----BEGIN \" + a + \"-----\\r\\n\" + foldnl(b, 64) + \"\\r\\n-----END \" + a + \"-----\\r\\n\";\n}\nfunction hextopem(a, b) {\n return \"-----BEGIN \" + b + \"-----\\r\\n\" + foldnl(hextob64(a), 64) + \"\\r\\n-----END \" + b + \"-----\\r\\n\";\n}\nfunction pemtohex(a, b) {\n if (a.indexOf(\"-----BEGIN \") == -1) {\n throw new Error(\"can't find PEM header\");\n }\n if (b !== undefined) {\n a = a.replace(new RegExp(\"^[^]*-----BEGIN \" + b + \"-----\"), \"\");\n a = a.replace(new RegExp(\"-----END \" + b + \"-----[^]*$\"), \"\");\n } else {\n a = a.replace(/^[^]*-----BEGIN [^-]+-----/, \"\");\n a = a.replace(/-----END [^-]+-----[^]*$/, \"\");\n }\n return b64nltohex(a);\n}\nfunction pemtob64(a) {\n if (a.indexOf(\"-----BEGIN \") == -1 || a.indexOf(\"-----END \") == -1) {\n return null;\n }\n a = a.replace(/^[\\s\\S]*?-----BEGIN [^-]+-----/m, \"\");\n a = a.replace(/-----END [\\s\\S]+$/m, \"\");\n a = a.replace(/\\s+/g, \"\");\n return a.match(/^[0-9a-zA-Z+/=]+$/) ? a : null;\n}\nfunction hextoArrayBuffer(d) {\n if (d.length % 2 != 0) {\n throw \"input is not even length\";\n }\n if (d.match(/^[0-9A-Fa-f]+$/) == null) {\n throw \"input is not hexadecimal\";\n }\n var b = new ArrayBuffer(d.length / 2);\n var a = new DataView(b);\n for (var c = 0; c < d.length / 2; c++) {\n a.setUint8(c, parseInt(d.substr(c * 2, 2), 16));\n }\n return b;\n}\nfunction ArrayBuffertohex(b) {\n var d = \"\";\n var a = new DataView(b);\n for (var c = 0; c < b.byteLength; c++) {\n d += (\"00\" + a.getUint8(c).toString(16)).slice(-2);\n }\n return d;\n}\nfunction zulutomsec(n) {\n var l, j, m, e, f, i, b, k;\n var a, h, g, c;\n n = timetogen(n);\n c = n.match(/^(\\d{4})(\\d\\d)(\\d\\d)(\\d\\d)(\\d\\d)(\\d\\d)(|\\.\\d+)Z$/);\n if (c) {\n l = parseInt(c[1]);\n j = parseInt(c[2]) - 1;\n m = parseInt(c[3]);\n e = parseInt(c[4]);\n f = parseInt(c[5]);\n i = parseInt(c[6]);\n b = 0;\n h = c[7];\n if (h !== \"\") {\n g = (h.substr(1) + \"00\").substr(0, 3);\n b = parseInt(g);\n }\n return Date.UTC(l, j, m, e, f, i, b);\n }\n throw new Error(\"unsupported zulu format: \" + n);\n}\nfunction msectozulu(b) {\n var h = new Date(b),\n i = (\"0000\" + h.getUTCFullYear()).slice(-4),\n c = (\"00\" + (h.getUTCMonth() + 1)).slice(-2),\n j = (\"00\" + h.getUTCDate()).slice(-2),\n e = (\"00\" + h.getUTCHours()).slice(-2),\n f = (\"00\" + h.getUTCMinutes()).slice(-2),\n g = (\"00\" + h.getUTCSeconds()).slice(-2),\n a = (\"000\" + h.getUTCMilliseconds()).slice(-3);\n a = a.replace(/0+$/, \"\");\n a = a != \"\" ? \".\" + a : a;\n return i + c + j + e + f + g + a + \"Z\";\n}\nfunction zulutosec(a) {\n return Math.round(zulutomsec(a) / 1000);\n}\nfunction zulutodate(a) {\n return new Date(zulutomsec(a));\n}\nfunction datetozulu(g, e, f) {\n var b;\n var a = g.getUTCFullYear();\n if (e) {\n if (a < 1950 || 2049 < a) {\n throw \"not proper year for UTCTime: \" + a;\n }\n b = (\"\" + a).slice(-2);\n } else {\n b = (\"000\" + a).slice(-4);\n }\n b += (\"0\" + (g.getUTCMonth() + 1)).slice(-2);\n b += (\"0\" + g.getUTCDate()).slice(-2);\n b += (\"0\" + g.getUTCHours()).slice(-2);\n b += (\"0\" + g.getUTCMinutes()).slice(-2);\n b += (\"0\" + g.getUTCSeconds()).slice(-2);\n if (f) {\n var c = g.getUTCMilliseconds();\n if (c !== 0) {\n c = (\"00\" + c).slice(-3);\n c = c.replace(/0+$/g, \"\");\n b += \".\" + c;\n }\n }\n b += \"Z\";\n return b;\n}\nfunction timetogen(a) {\n if (a.match(/^[0-9]{12}Z$/) || a.match(/^[0-9]{12}[.][0-9]*Z$/)) {\n return a.match(/^[0-4]/) ? \"20\" + a : \"19\" + a;\n }\n return a;\n}\nfunction uricmptohex(a) {\n return a.replace(/%/g, \"\");\n}\nfunction hextouricmp(a) {\n return a.replace(/(..)/g, \"%$1\");\n}\nfunction ipv6tohex(g) {\n var b = \"malformed IPv6 address\";\n if (!g.match(/^[0-9A-Fa-f:]+$/)) {\n throw b;\n }\n g = g.toLowerCase();\n var d = g.split(\":\").length - 1;\n if (d < 2) {\n throw b;\n }\n var e = \":\".repeat(7 - d + 2);\n g = g.replace(\"::\", e);\n var c = g.split(\":\");\n if (c.length != 8) {\n throw b;\n }\n for (var f = 0; f < 8; f++) {\n c[f] = (\"0000\" + c[f]).slice(-4);\n }\n return c.join(\"\");\n}\nfunction hextoipv6(d) {\n if (!d.match(/^[0-9A-Fa-f]{32}$/)) {\n throw new Error(\"malformed IPv6 address: \" + d);\n }\n d = d.toLowerCase();\n var b = d.match(/.{1,4}/g);\n b = b.map(function (a) {\n return a.replace(/^0+/, \"\");\n });\n b = b.map(function (a) {\n return a == \"\" ? \"0\" : a;\n });\n d = \":\" + b.join(\":\") + \":\";\n var c = d.match(/:(0:){2,}/g);\n if (c == null) {\n return d.slice(1, -1);\n }\n var e = c.sort().slice(-1)[0];\n d = d.replace(e.substr(0, e.length - 1), \":\");\n if (d.substr(0, 2) != \"::\") {\n d = d.substr(1);\n }\n if (d.substr(-2, 2) != \"::\") {\n d = d.substr(0, d.length - 1);\n }\n return d;\n}\nfunction hextoip(b) {\n var c = new Error(\"malformed hex value\");\n if (!b.match(/^([0-9A-Fa-f][0-9A-Fa-f]){1,}$/)) {\n throw c;\n }\n if (b.length == 8) {\n var d;\n try {\n d = parseInt(b.substr(0, 2), 16) + \".\" + parseInt(b.substr(2, 2), 16) + \".\" + parseInt(b.substr(4, 2), 16) + \".\" + parseInt(b.substr(6, 2), 16);\n return d;\n } catch (a) {\n throw c;\n }\n } else {\n if (b.length == 16) {\n try {\n return hextoip(b.substr(0, 8)) + \"/\" + ipprefixlen(b.substr(8));\n } catch (a) {\n throw c;\n }\n } else {\n if (b.length == 32) {\n return hextoipv6(b);\n } else {\n if (b.length == 64) {\n try {\n return hextoipv6(b.substr(0, 32)) + \"/\" + ipprefixlen(b.substr(32));\n } catch (a) {\n throw c;\n }\n return;\n } else {\n return b;\n }\n }\n }\n }\n}\nfunction ipprefixlen(c) {\n var d = new Error(\"malformed mask\");\n var a;\n try {\n a = new BigInteger(c, 16).toString(2);\n } catch (b) {\n throw d;\n }\n if (!a.match(/^1*0*$/)) {\n throw d;\n }\n return a.replace(/0+$/, \"\").length;\n}\nfunction iptohex(g) {\n var j = new Error(\"malformed IP address\");\n g = g.toLowerCase(g);\n if (!g.match(/^[0-9a-f.:/]+$/)) {\n throw j;\n }\n if (g.match(/^[0-9.]+$/)) {\n var b = g.split(\".\");\n if (b.length !== 4) {\n throw j;\n }\n var h = \"\";\n try {\n for (var f = 0; f < 4; f++) {\n var k = parseInt(b[f]);\n h += (\"0\" + k.toString(16)).slice(-2);\n }\n return h;\n } catch (e) {\n throw j;\n }\n } else {\n if (g.match(/^[0-9.]+\\/[0-9]+$/)) {\n var c = g.split(\"/\");\n return iptohex(c[0]) + ipnetmask(parseInt(c[1]), 32);\n } else {\n if (g.match(/^[0-9a-f:]+$/) && g.indexOf(\":\") !== -1) {\n return ipv6tohex(g);\n } else {\n if (g.match(/^[0-9a-f:]+\\/[0-9]+$/) && g.indexOf(\":\") !== -1) {\n var c = g.split(\"/\");\n return ipv6tohex(c[0]) + ipnetmask(parseInt(c[1]), 128);\n } else {\n throw j;\n }\n }\n }\n }\n}\nfunction ipnetmask(d, c) {\n if (c == 32 && d == 0) {\n return \"00000000\";\n }\n if (c == 128 && d == 0) {\n return \"00000000000000000000000000000000\";\n }\n var a = Array(d + 1).join(\"1\") + Array(c - d + 1).join(\"0\");\n return new BigInteger(a, 2).toString(16);\n}\nfunction ucs2hextoutf8(d) {\n function e(f) {\n var h = parseInt(f.substr(0, 2), 16);\n var a = parseInt(f.substr(2), 16);\n if (h == 0 & a < 128) {\n return String.fromCharCode(a);\n }\n if (h < 8) {\n var j = 192 | (h & 7) << 3 | (a & 192) >> 6;\n var i = 128 | a & 63;\n return hextoutf8(j.toString(16) + i.toString(16));\n }\n var j = 224 | (h & 240) >> 4;\n var i = 128 | (h & 15) << 2 | (a & 192) >> 6;\n var g = 128 | a & 63;\n return hextoutf8(j.toString(16) + i.toString(16) + g.toString(16));\n }\n var c = d.match(/.{4}/g);\n var b = c.map(e);\n return b.join(\"\");\n}\nfunction encodeURIComponentAll(a) {\n var d = encodeURIComponent(a);\n var b = \"\";\n for (var c = 0; c < d.length; c++) {\n if (d[c] == \"%\") {\n b = b + d.substr(c, 3);\n c = c + 2;\n } else {\n b = b + \"%\" + stohex(d[c]);\n }\n }\n return b;\n}\nfunction newline_toUnix(a) {\n a = a.replace(/\\r\\n/mg, \"\\n\");\n return a;\n}\nfunction newline_toDos(a) {\n a = a.replace(/\\r\\n/mg, \"\\n\");\n a = a.replace(/\\n/mg, \"\\r\\n\");\n return a;\n}\nKJUR.lang.String.isInteger = function (a) {\n if (a.match(/^[0-9]+$/)) {\n return true;\n } else {\n if (a.match(/^-[0-9]+$/)) {\n return true;\n } else {\n return false;\n }\n }\n};\nKJUR.lang.String.isHex = function (a) {\n return ishex(a);\n};\nfunction ishex(a) {\n if (a.length % 2 == 0 && (a.match(/^[0-9a-f]+$/) || a.match(/^[0-9A-F]+$/))) {\n return true;\n } else {\n return false;\n }\n}\nKJUR.lang.String.isBase64 = function (a) {\n a = a.replace(/\\s+/g, \"\");\n if (a.match(/^[0-9A-Za-z+\\/]+={0,3}$/) && a.length % 4 == 0) {\n return true;\n } else {\n return false;\n }\n};\nKJUR.lang.String.isBase64URL = function (a) {\n if (a.match(/[+/=]/)) {\n return false;\n }\n a = b64utob64(a);\n return KJUR.lang.String.isBase64(a);\n};\nfunction isBase64URLDot(a) {\n if (a.match(/^[0-9A-Za-z-_.]+$/)) {\n return true;\n }\n return false;\n}\nKJUR.lang.String.isIntegerArray = function (a) {\n a = a.replace(/\\s+/g, \"\");\n if (a.match(/^\\[[0-9,]+\\]$/)) {\n return true;\n } else {\n return false;\n }\n};\nKJUR.lang.String.isPrintable = function (a) {\n if (a.match(/^[0-9A-Za-z '()+,-./:=?]*$/) !== null) {\n return true;\n }\n return false;\n};\nKJUR.lang.String.isIA5 = function (a) {\n if (a.match(/^[\\x20-\\x21\\x23-\\x7f]*$/) !== null) {\n return true;\n }\n return false;\n};\nKJUR.lang.String.isMail = function (a) {\n if (a.match(/^[A-Za-z0-9]{1}[A-Za-z0-9_.-]*@{1}[A-Za-z0-9_.-]{1,}\\.[A-Za-z0-9]{1,}$/) !== null) {\n return true;\n }\n return false;\n};\nfunction hextoposhex(a) {\n if (a.length % 2 == 1) {\n return \"0\" + a;\n }\n if (a.substr(0, 1) > \"7\") {\n return \"00\" + a;\n }\n return a;\n}\nfunction intarystrtohex(b) {\n b = b.replace(/^\\s*\\[\\s*/, \"\");\n b = b.replace(/\\s*\\]\\s*$/, \"\");\n b = b.replace(/\\s*/g, \"\");\n try {\n var c = b.split(/,/).map(function (g, e, h) {\n var f = parseInt(g);\n if (f < 0 || 255 < f) {\n throw \"integer not in range 0-255\";\n }\n var d = (\"00\" + f.toString(16)).slice(-2);\n return d;\n }).join(\"\");\n return c;\n } catch (a) {\n throw \"malformed integer array string: \" + a;\n }\n}\nvar strdiffidx = function (c, a) {\n var d = c.length;\n if (c.length > a.length) {\n d = a.length;\n }\n for (var b = 0; b < d; b++) {\n if (c.charCodeAt(b) != a.charCodeAt(b)) {\n return b;\n }\n }\n if (c.length != a.length) {\n return d;\n }\n return -1;\n};\nfunction oidtohex(g) {\n var f = function (a) {\n var l = a.toString(16);\n if (l.length == 1) {\n l = \"0\" + l;\n }\n return l;\n };\n var e = function (p) {\n var o = \"\";\n var l = parseInt(p, 10);\n var a = l.toString(2);\n var m = 7 - a.length % 7;\n if (m == 7) {\n m = 0;\n }\n var r = \"\";\n for (var n = 0; n < m; n++) {\n r += \"0\";\n }\n a = r + a;\n for (var n = 0; n < a.length - 1; n += 7) {\n var q = a.substr(n, 7);\n if (n != a.length - 7) {\n q = \"1\" + q;\n }\n o += f(parseInt(q, 2));\n }\n return o;\n };\n try {\n if (!g.match(/^[0-9.]+$/)) {\n return null;\n }\n var j = \"\";\n var b = g.split(\".\");\n var k = parseInt(b[0], 10) * 40 + parseInt(b[1], 10);\n j += f(k);\n b.splice(0, 2);\n for (var d = 0; d < b.length; d++) {\n j += e(b[d]);\n }\n return j;\n } catch (c) {\n return null;\n }\n}\nfunction hextooid(g) {\n if (!ishex(g)) {\n return null;\n }\n try {\n var m = [];\n var p = g.substr(0, 2);\n var e = parseInt(p, 16);\n m[0] = new String(Math.floor(e / 40));\n m[1] = new String(e % 40);\n var n = g.substr(2);\n var l = [];\n for (var f = 0; f < n.length / 2; f++) {\n l.push(parseInt(n.substr(f * 2, 2), 16));\n }\n var k = [];\n var d = \"\";\n for (var f = 0; f < l.length; f++) {\n if (l[f] & 128) {\n d = d + strpad((l[f] & 127).toString(2), 7);\n } else {\n d = d + strpad((l[f] & 127).toString(2), 7);\n k.push(new String(parseInt(d, 2)));\n d = \"\";\n }\n }\n var o = m.join(\".\");\n if (k.length > 0) {\n o = o + \".\" + k.join(\".\");\n }\n return o;\n } catch (j) {\n return null;\n }\n}\nfunction inttohex(b) {\n var a = new BigInteger(String(b), 10);\n return twoscompl(a);\n}\nfunction twoscompl(b) {\n var g = b.toString(16);\n if (g.substr(0, 1) != \"-\") {\n if (g.length % 2 == 1) {\n g = \"0\" + g;\n } else {\n if (!g.match(/^[0-7]/)) {\n g = \"00\" + g;\n }\n }\n return g;\n }\n var a = g.substr(1);\n var f = a.length;\n if (f % 2 == 1) {\n f += 1;\n } else {\n if (!g.match(/^[0-7]/)) {\n f += 2;\n }\n }\n var j = \"\";\n for (var e = 0; e < f; e++) {\n j += \"f\";\n }\n var d = new BigInteger(j, 16);\n var c = d.xor(b).add(BigInteger.ONE);\n g = c.toString(16).replace(/^-/, \"\");\n return g;\n}\nvar strpad = function (c, b, a) {\n if (a == undefined) {\n a = \"0\";\n }\n if (c.length >= b) {\n return c;\n }\n return new Array(b - c.length + 1).join(a) + c;\n};\nfunction bitstrtoint(e) {\n if (e.length % 2 != 0) {\n return -1;\n }\n e = e.toLowerCase();\n if (e.match(/^[0-9a-f]+$/) == null) {\n return -1;\n }\n try {\n var a = e.substr(0, 2);\n if (a == \"00\") {\n return parseInt(e.substr(2), 16);\n }\n var b = parseInt(a, 16);\n if (b > 7) {\n return -1;\n }\n var g = e.substr(2);\n var d = parseInt(g, 16).toString(2);\n if (d == \"0\") {\n d = \"00000000\";\n }\n d = d.slice(0, 0 - b);\n var f = parseInt(d, 2);\n if (f == NaN) {\n return -1;\n }\n return f;\n } catch (c) {\n return -1;\n }\n}\nfunction inttobitstr(e) {\n if (typeof e != \"number\") {\n return null;\n }\n if (e < 0) {\n return null;\n }\n var c = Number(e).toString(2);\n var b = 8 - c.length % 8;\n if (b == 8) {\n b = 0;\n }\n c = c + strpad(\"\", b, \"0\");\n var d = parseInt(c, 2).toString(16);\n if (d.length % 2 == 1) {\n d = \"0\" + d;\n }\n var a = \"0\" + b;\n return a + d;\n}\nfunction bitstrtobinstr(g) {\n if (typeof g != \"string\") {\n return null;\n }\n if (g.length % 2 != 0) {\n return null;\n }\n if (!g.match(/^[0-9a-f]+$/)) {\n return null;\n }\n try {\n var c = parseInt(g.substr(0, 2), 16);\n if (c < 0 || 7 < c) {\n return null;\n }\n var j = g.substr(2);\n var f = \"\";\n for (var e = 0; e < j.length; e += 2) {\n var b = j.substr(e, 2);\n var a = parseInt(b, 16).toString(2);\n a = (\"0000000\" + a).slice(-8);\n f += a;\n }\n return f.substr(0, f.length - c);\n } catch (d) {\n return null;\n }\n}\nfunction binstrtobitstr(b) {\n if (typeof b != \"string\") {\n return null;\n }\n if (b.match(/^[01]+$/) == null) {\n return null;\n }\n try {\n var c = parseInt(b, 2);\n return inttobitstr(c);\n } catch (a) {\n return null;\n }\n}\nfunction namearraytobinstr(e, g) {\n var f = 0;\n for (var a = 0; a < e.length; a++) {\n f |= 1 << g[e[a]];\n }\n var b = f.toString(2);\n var c = \"\";\n for (var a = b.length - 1; a >= 0; a--) {\n c += b[a];\n }\n return c;\n}\nfunction aryval(e, c, d) {\n if (typeof e != \"object\") {\n return undefined;\n }\n var c = String(c).split(\".\");\n for (var b = 0; b < c.length && e; b++) {\n var a = c[b];\n if (a.match(/^[0-9]+$/)) {\n a = parseInt(a);\n }\n e = e[a];\n }\n return e || e === false ? e : d;\n}\nfunction extendClass(c, a) {\n var b = function () {};\n b.prototype = a.prototype;\n c.prototype = new b();\n c.prototype.constructor = c;\n c.superclass = a.prototype;\n if (a.prototype.constructor == Object.prototype.constructor) {\n a.prototype.constructor = a;\n }\n}\n;\nif (typeof KJUR == \"undefined\" || !KJUR) {\n KJUR = {};\n}\nif (typeof KJUR.crypto == \"undefined\" || !KJUR.crypto) {\n KJUR.crypto = {};\n}\nKJUR.crypto.Util = new function () {\n this.DIGESTINFOHEAD = {\n sha1: \"3021300906052b0e03021a05000414\",\n sha224: \"302d300d06096086480165030402040500041c\",\n sha256: \"3031300d060960864801650304020105000420\",\n sha384: \"3041300d060960864801650304020205000430\",\n sha512: \"3051300d060960864801650304020305000440\",\n md2: \"3020300c06082a864886f70d020205000410\",\n md5: \"3020300c06082a864886f70d020505000410\",\n ripemd160: \"3021300906052b2403020105000414\"\n };\n this.DEFAULTPROVIDER = {\n md5: \"cryptojs\",\n sha1: \"cryptojs\",\n sha224: \"cryptojs\",\n sha256: \"cryptojs\",\n sha384: \"cryptojs\",\n sha512: \"cryptojs\",\n ripemd160: \"cryptojs\",\n hmacmd5: \"cryptojs\",\n hmacsha1: \"cryptojs\",\n hmacsha224: \"cryptojs\",\n hmacsha256: \"cryptojs\",\n hmacsha384: \"cryptojs\",\n hmacsha512: \"cryptojs\",\n hmacripemd160: \"cryptojs\",\n MD5withRSA: \"cryptojs/jsrsa\",\n SHA1withRSA: \"cryptojs/jsrsa\",\n SHA224withRSA: \"cryptojs/jsrsa\",\n SHA256withRSA: \"cryptojs/jsrsa\",\n SHA384withRSA: \"cryptojs/jsrsa\",\n SHA512withRSA: \"cryptojs/jsrsa\",\n RIPEMD160withRSA: \"cryptojs/jsrsa\",\n MD5withECDSA: \"cryptojs/jsrsa\",\n SHA1withECDSA: \"cryptojs/jsrsa\",\n SHA224withECDSA: \"cryptojs/jsrsa\",\n SHA256withECDSA: \"cryptojs/jsrsa\",\n SHA384withECDSA: \"cryptojs/jsrsa\",\n SHA512withECDSA: \"cryptojs/jsrsa\",\n RIPEMD160withECDSA: \"cryptojs/jsrsa\",\n SHA1withDSA: \"cryptojs/jsrsa\",\n SHA224withDSA: \"cryptojs/jsrsa\",\n SHA256withDSA: \"cryptojs/jsrsa\",\n MD5withRSAandMGF1: \"cryptojs/jsrsa\",\n SHAwithRSAandMGF1: \"cryptojs/jsrsa\",\n SHA1withRSAandMGF1: \"cryptojs/jsrsa\",\n SHA224withRSAandMGF1: \"cryptojs/jsrsa\",\n SHA256withRSAandMGF1: \"cryptojs/jsrsa\",\n SHA384withRSAandMGF1: \"cryptojs/jsrsa\",\n SHA512withRSAandMGF1: \"cryptojs/jsrsa\",\n RIPEMD160withRSAandMGF1: \"cryptojs/jsrsa\"\n };\n this.CRYPTOJSMESSAGEDIGESTNAME = {\n md5: CryptoJS.algo.MD5,\n sha1: CryptoJS.algo.SHA1,\n sha224: CryptoJS.algo.SHA224,\n sha256: CryptoJS.algo.SHA256,\n sha384: CryptoJS.algo.SHA384,\n sha512: CryptoJS.algo.SHA512,\n ripemd160: CryptoJS.algo.RIPEMD160\n };\n this.getDigestInfoHex = function (a, b) {\n if (typeof this.DIGESTINFOHEAD[b] == \"undefined\") {\n throw \"alg not supported in Util.DIGESTINFOHEAD: \" + b;\n }\n return this.DIGESTINFOHEAD[b] + a;\n };\n this.getPaddedDigestInfoHex = function (h, a, j) {\n var c = this.getDigestInfoHex(h, a);\n var d = j / 4;\n if (c.length + 22 > d) {\n throw \"key is too short for SigAlg: keylen=\" + j + \",\" + a;\n }\n var b = \"0001\";\n var k = \"00\" + c;\n var g = \"\";\n var l = d - b.length - k.length;\n for (var f = 0; f < l; f += 2) {\n g += \"ff\";\n }\n var e = b + g + k;\n return e;\n };\n this.hashString = function (a, c) {\n var b = new KJUR.crypto.MessageDigest({\n alg: c\n });\n return b.digestString(a);\n };\n this.hashHex = function (b, c) {\n var a = new KJUR.crypto.MessageDigest({\n alg: c\n });\n return a.digestHex(b);\n };\n this.sha1 = function (a) {\n return this.hashString(a, \"sha1\");\n };\n this.sha256 = function (a) {\n return this.hashString(a, \"sha256\");\n };\n this.sha256Hex = function (a) {\n return this.hashHex(a, \"sha256\");\n };\n this.sha512 = function (a) {\n return this.hashString(a, \"sha512\");\n };\n this.sha512Hex = function (a) {\n return this.hashHex(a, \"sha512\");\n };\n this.isKey = function (a) {\n if (a instanceof RSAKey || a instanceof KJUR.crypto.DSA || a instanceof KJUR.crypto.ECDSA) {\n return true;\n } else {\n return false;\n }\n };\n}();\nKJUR.crypto.Util.md5 = function (a) {\n var b = new KJUR.crypto.MessageDigest({\n alg: \"md5\",\n prov: \"cryptojs\"\n });\n return b.digestString(a);\n};\nKJUR.crypto.Util.ripemd160 = function (a) {\n var b = new KJUR.crypto.MessageDigest({\n alg: \"ripemd160\",\n prov: \"cryptojs\"\n });\n return b.digestString(a);\n};\nKJUR.crypto.Util.SECURERANDOMGEN = new SecureRandom();\nKJUR.crypto.Util.getRandomHexOfNbytes = function (b) {\n var a = new Array(b);\n KJUR.crypto.Util.SECURERANDOMGEN.nextBytes(a);\n return BAtohex(a);\n};\nKJUR.crypto.Util.getRandomBigIntegerOfNbytes = function (a) {\n return new BigInteger(KJUR.crypto.Util.getRandomHexOfNbytes(a), 16);\n};\nKJUR.crypto.Util.getRandomHexOfNbits = function (d) {\n var c = d % 8;\n var a = (d - c) / 8;\n var b = new Array(a + 1);\n KJUR.crypto.Util.SECURERANDOMGEN.nextBytes(b);\n b[0] = (255 << c & 255 ^ 255) & b[0];\n return BAtohex(b);\n};\nKJUR.crypto.Util.getRandomBigIntegerOfNbits = function (a) {\n return new BigInteger(KJUR.crypto.Util.getRandomHexOfNbits(a), 16);\n};\nKJUR.crypto.Util.getRandomBigIntegerZeroToMax = function (b) {\n var a = b.bitLength();\n while (1) {\n var c = KJUR.crypto.Util.getRandomBigIntegerOfNbits(a);\n if (b.compareTo(c) != -1) {\n return c;\n }\n }\n};\nKJUR.crypto.Util.getRandomBigIntegerMinToMax = function (e, b) {\n var c = e.compareTo(b);\n if (c == 1) {\n throw \"biMin is greater than biMax\";\n }\n if (c == 0) {\n return e;\n }\n var a = b.subtract(e);\n var d = KJUR.crypto.Util.getRandomBigIntegerZeroToMax(a);\n return d.add(e);\n};\nKJUR.crypto.MessageDigest = function (c) {\n var b = null;\n var a = null;\n var d = null;\n this.setAlgAndProvider = function (g, f) {\n g = KJUR.crypto.MessageDigest.getCanonicalAlgName(g);\n if (g !== null && f === undefined) {\n f = KJUR.crypto.Util.DEFAULTPROVIDER[g];\n }\n if (\":md5:sha1:sha224:sha256:sha384:sha512:ripemd160:\".indexOf(g) != -1 && f == \"cryptojs\") {\n try {\n this.md = KJUR.crypto.Util.CRYPTOJSMESSAGEDIGESTNAME[g].create();\n } catch (e) {\n throw \"setAlgAndProvider hash alg set fail alg=\" + g + \"/\" + e;\n }\n this.updateString = function (h) {\n this.md.update(h);\n };\n this.updateHex = function (h) {\n var i = CryptoJS.enc.Hex.parse(h);\n this.md.update(i);\n };\n this.digest = function () {\n var h = this.md.finalize();\n return h.toString(CryptoJS.enc.Hex);\n };\n this.digestString = function (h) {\n this.updateString(h);\n return this.digest();\n };\n this.digestHex = function (h) {\n this.updateHex(h);\n return this.digest();\n };\n }\n if (\":sha256:\".indexOf(g) != -1 && f == \"sjcl\") {\n try {\n this.md = new sjcl.hash.sha256();\n } catch (e) {\n throw \"setAlgAndProvider hash alg set fail alg=\" + g + \"/\" + e;\n }\n this.updateString = function (h) {\n this.md.update(h);\n };\n this.updateHex = function (i) {\n var h = sjcl.codec.hex.toBits(i);\n this.md.update(h);\n };\n this.digest = function () {\n var h = this.md.finalize();\n return sjcl.codec.hex.fromBits(h);\n };\n this.digestString = function (h) {\n this.updateString(h);\n return this.digest();\n };\n this.digestHex = function (h) {\n this.updateHex(h);\n return this.digest();\n };\n }\n };\n this.updateString = function (e) {\n throw \"updateString(str) not supported for this alg/prov: \" + this.algName + \"/\" + this.provName;\n };\n this.updateHex = function (e) {\n throw \"updateHex(hex) not supported for this alg/prov: \" + this.algName + \"/\" + this.provName;\n };\n this.digest = function () {\n throw \"digest() not supported for this alg/prov: \" + this.algName + \"/\" + this.provName;\n };\n this.digestString = function (e) {\n throw \"digestString(str) not supported for this alg/prov: \" + this.algName + \"/\" + this.provName;\n };\n this.digestHex = function (e) {\n throw \"digestHex(hex) not supported for this alg/prov: \" + this.algName + \"/\" + this.provName;\n };\n if (c !== undefined) {\n if (c.alg !== undefined) {\n this.algName = c.alg;\n if (c.prov === undefined) {\n this.provName = KJUR.crypto.Util.DEFAULTPROVIDER[this.algName];\n }\n this.setAlgAndProvider(this.algName, this.provName);\n }\n }\n};\nKJUR.crypto.MessageDigest.getCanonicalAlgName = function (a) {\n if (typeof a === \"string\") {\n a = a.toLowerCase();\n a = a.replace(/-/, \"\");\n }\n return a;\n};\nKJUR.crypto.MessageDigest.getHashLength = function (c) {\n var b = KJUR.crypto.MessageDigest;\n var a = b.getCanonicalAlgName(c);\n if (b.HASHLENGTH[a] === undefined) {\n throw \"not supported algorithm: \" + c;\n }\n return b.HASHLENGTH[a];\n};\nKJUR.crypto.MessageDigest.HASHLENGTH = {\n md5: 16,\n sha1: 20,\n sha224: 28,\n sha256: 32,\n sha384: 48,\n sha512: 64,\n ripemd160: 20\n};\nKJUR.crypto.Mac = function (d) {\n var f = null;\n var c = null;\n var a = null;\n var e = null;\n var b = null;\n this.setAlgAndProvider = function (k, i) {\n k = k.toLowerCase();\n if (k == null) {\n k = \"hmacsha1\";\n }\n k = k.toLowerCase();\n if (k.substr(0, 4) != \"hmac\") {\n throw \"setAlgAndProvider unsupported HMAC alg: \" + k;\n }\n if (i === undefined) {\n i = KJUR.crypto.Util.DEFAULTPROVIDER[k];\n }\n this.algProv = k + \"/\" + i;\n var g = k.substr(4);\n if (\":md5:sha1:sha224:sha256:sha384:sha512:ripemd160:\".indexOf(g) != -1 && i == \"cryptojs\") {\n try {\n var j = KJUR.crypto.Util.CRYPTOJSMESSAGEDIGESTNAME[g];\n this.mac = CryptoJS.algo.HMAC.create(j, this.pass);\n } catch (h) {\n throw \"setAlgAndProvider hash alg set fail hashAlg=\" + g + \"/\" + h;\n }\n this.updateString = function (l) {\n this.mac.update(l);\n };\n this.updateHex = function (l) {\n var m = CryptoJS.enc.Hex.parse(l);\n this.mac.update(m);\n };\n this.doFinal = function () {\n var l = this.mac.finalize();\n return l.toString(CryptoJS.enc.Hex);\n };\n this.doFinalString = function (l) {\n this.updateString(l);\n return this.doFinal();\n };\n this.doFinalHex = function (l) {\n this.updateHex(l);\n return this.doFinal();\n };\n }\n };\n this.updateString = function (g) {\n throw \"updateString(str) not supported for this alg/prov: \" + this.algProv;\n };\n this.updateHex = function (g) {\n throw \"updateHex(hex) not supported for this alg/prov: \" + this.algProv;\n };\n this.doFinal = function () {\n throw \"digest() not supported for this alg/prov: \" + this.algProv;\n };\n this.doFinalString = function (g) {\n throw \"digestString(str) not supported for this alg/prov: \" + this.algProv;\n };\n this.doFinalHex = function (g) {\n throw \"digestHex(hex) not supported for this alg/prov: \" + this.algProv;\n };\n this.setPassword = function (h) {\n if (typeof h == \"string\") {\n var g = h;\n if (h.length % 2 == 1 || !h.match(/^[0-9A-Fa-f]+$/)) {\n g = rstrtohex(h);\n }\n this.pass = CryptoJS.enc.Hex.parse(g);\n return;\n }\n if (typeof h != \"object\") {\n throw \"KJUR.crypto.Mac unsupported password type: \" + h;\n }\n var g = null;\n if (h.hex !== undefined) {\n if (h.hex.length % 2 != 0 || !h.hex.match(/^[0-9A-Fa-f]+$/)) {\n throw \"Mac: wrong hex password: \" + h.hex;\n }\n g = h.hex;\n }\n if (h.utf8 !== undefined) {\n g = utf8tohex(h.utf8);\n }\n if (h.rstr !== undefined) {\n g = rstrtohex(h.rstr);\n }\n if (h.b64 !== undefined) {\n g = b64tohex(h.b64);\n }\n if (h.b64u !== undefined) {\n g = b64utohex(h.b64u);\n }\n if (g == null) {\n throw \"KJUR.crypto.Mac unsupported password type: \" + h;\n }\n this.pass = CryptoJS.enc.Hex.parse(g);\n };\n if (d !== undefined) {\n if (d.pass !== undefined) {\n this.setPassword(d.pass);\n }\n if (d.alg !== undefined) {\n this.algName = d.alg;\n if (d.prov === undefined) {\n this.provName = KJUR.crypto.Util.DEFAULTPROVIDER[this.algName];\n }\n this.setAlgAndProvider(this.algName, this.provName);\n }\n }\n};\nKJUR.crypto.Signature = function (o) {\n var q = null;\n var n = null;\n var r = null;\n var c = null;\n var l = null;\n var d = null;\n var k = null;\n var h = null;\n var p = null;\n var e = null;\n var b = -1;\n var g = null;\n var j = null;\n var a = null;\n var i = null;\n var f = null;\n this._setAlgNames = function () {\n var s = this.algName.match(/^(.+)with(.+)$/);\n if (s) {\n this.mdAlgName = s[1].toLowerCase();\n this.pubkeyAlgName = s[2].toLowerCase();\n if (this.pubkeyAlgName == \"rsaandmgf1\" && this.mdAlgName == \"sha\") {\n this.mdAlgName = \"sha1\";\n }\n }\n };\n this._zeroPaddingOfSignature = function (x, w) {\n var v = \"\";\n var t = w / 4 - x.length;\n for (var u = 0; u < t; u++) {\n v = v + \"0\";\n }\n return v + x;\n };\n this.setAlgAndProvider = function (u, t) {\n this._setAlgNames();\n if (t != \"cryptojs/jsrsa\") {\n throw new Error(\"provider not supported: \" + t);\n }\n if (\":md5:sha1:sha224:sha256:sha384:sha512:ripemd160:\".indexOf(this.mdAlgName) != -1) {\n try {\n this.md = new KJUR.crypto.MessageDigest({\n alg: this.mdAlgName\n });\n } catch (s) {\n throw new Error(\"setAlgAndProvider hash alg set fail alg=\" + this.mdAlgName + \"/\" + s);\n }\n this.init = function (w, x) {\n var y = null;\n try {\n if (x === undefined) {\n y = KEYUTIL.getKey(w);\n } else {\n y = KEYUTIL.getKey(w, x);\n }\n } catch (v) {\n throw \"init failed:\" + v;\n }\n if (y.isPrivate === true) {\n this.prvKey = y;\n this.state = \"SIGN\";\n } else {\n if (y.isPublic === true) {\n this.pubKey = y;\n this.state = \"VERIFY\";\n } else {\n throw \"init failed.:\" + y;\n }\n }\n };\n this.updateString = function (v) {\n this.md.updateString(v);\n };\n this.updateHex = function (v) {\n this.md.updateHex(v);\n };\n this.sign = function () {\n this.sHashHex = this.md.digest();\n if (this.prvKey === undefined && this.ecprvhex !== undefined && this.eccurvename !== undefined && KJUR.crypto.ECDSA !== undefined) {\n this.prvKey = new KJUR.crypto.ECDSA({\n curve: this.eccurvename,\n prv: this.ecprvhex\n });\n }\n if (this.prvKey instanceof RSAKey && this.pubkeyAlgName === \"rsaandmgf1\") {\n this.hSign = this.prvKey.signWithMessageHashPSS(this.sHashHex, this.mdAlgName, this.pssSaltLen);\n } else {\n if (this.prvKey instanceof RSAKey && this.pubkeyAlgName === \"rsa\") {\n this.hSign = this.prvKey.signWithMessageHash(this.sHashHex, this.mdAlgName);\n } else {\n if (this.prvKey instanceof KJUR.crypto.ECDSA) {\n this.hSign = this.prvKey.signWithMessageHash(this.sHashHex);\n } else {\n if (this.prvKey instanceof KJUR.crypto.DSA) {\n this.hSign = this.prvKey.signWithMessageHash(this.sHashHex);\n } else {\n throw \"Signature: unsupported private key alg: \" + this.pubkeyAlgName;\n }\n }\n }\n }\n return this.hSign;\n };\n this.signString = function (v) {\n this.updateString(v);\n return this.sign();\n };\n this.signHex = function (v) {\n this.updateHex(v);\n return this.sign();\n };\n this.verify = function (v) {\n this.sHashHex = this.md.digest();\n if (this.pubKey === undefined && this.ecpubhex !== undefined && this.eccurvename !== undefined && KJUR.crypto.ECDSA !== undefined) {\n this.pubKey = new KJUR.crypto.ECDSA({\n curve: this.eccurvename,\n pub: this.ecpubhex\n });\n }\n if (this.pubKey instanceof RSAKey && this.pubkeyAlgName === \"rsaandmgf1\") {\n return this.pubKey.verifyWithMessageHashPSS(this.sHashHex, v, this.mdAlgName, this.pssSaltLen);\n } else {\n if (this.pubKey instanceof RSAKey && this.pubkeyAlgName === \"rsa\") {\n return this.pubKey.verifyWithMessageHash(this.sHashHex, v);\n } else {\n if (KJUR.crypto.ECDSA !== undefined && this.pubKey instanceof KJUR.crypto.ECDSA) {\n return this.pubKey.verifyWithMessageHash(this.sHashHex, v);\n } else {\n if (KJUR.crypto.DSA !== undefined && this.pubKey instanceof KJUR.crypto.DSA) {\n return this.pubKey.verifyWithMessageHash(this.sHashHex, v);\n } else {\n throw \"Signature: unsupported public key alg: \" + this.pubkeyAlgName;\n }\n }\n }\n }\n };\n }\n };\n this.init = function (s, t) {\n throw \"init(key, pass) not supported for this alg:prov=\" + this.algProvName;\n };\n this.updateString = function (s) {\n throw \"updateString(str) not supported for this alg:prov=\" + this.algProvName;\n };\n this.updateHex = function (s) {\n throw \"updateHex(hex) not supported for this alg:prov=\" + this.algProvName;\n };\n this.sign = function () {\n throw \"sign() not supported for this alg:prov=\" + this.algProvName;\n };\n this.signString = function (s) {\n throw \"digestString(str) not supported for this alg:prov=\" + this.algProvName;\n };\n this.signHex = function (s) {\n throw \"digestHex(hex) not supported for this alg:prov=\" + this.algProvName;\n };\n this.verify = function (s) {\n throw \"verify(hSigVal) not supported for this alg:prov=\" + this.algProvName;\n };\n this.initParams = o;\n if (o !== undefined) {\n if (o.alg !== undefined) {\n this.algName = o.alg;\n if (o.prov === undefined) {\n this.provName = KJUR.crypto.Util.DEFAULTPROVIDER[this.algName];\n } else {\n this.provName = o.prov;\n }\n this.algProvName = this.algName + \":\" + this.provName;\n this.setAlgAndProvider(this.algName, this.provName);\n this._setAlgNames();\n }\n if (o.psssaltlen !== undefined) {\n this.pssSaltLen = o.psssaltlen;\n }\n if (o.prvkeypem !== undefined) {\n if (o.prvkeypas !== undefined) {\n throw \"both prvkeypem and prvkeypas parameters not supported\";\n } else {\n try {\n var q = KEYUTIL.getKey(o.prvkeypem);\n this.init(q);\n } catch (m) {\n throw \"fatal error to load pem private key: \" + m;\n }\n }\n }\n }\n};\nKJUR.crypto.Cipher = function (a) {};\nKJUR.crypto.Cipher.encrypt = function (j, i, b, c) {\n if (aryval(c, \"enclag\") != undefined) {\n b = c.encalg;\n }\n if (typeof b == \"string\" && b.substr(-4) == \"-CBC\") {\n var g = i;\n var e = j;\n if (aryval(c, \"key\") != undefined) {\n g = c.key;\n }\n if (aryval(c, \"enc\") != undefined) {\n hEnc = c.enc;\n }\n var h = CryptoJS.enc.Hex.parse(g);\n var a = CryptoJS.enc.Hex.parse(e);\n var f = CryptoJS.enc.Hex.parse(c.iv);\n var d;\n if (b == \"des-EDE3-CBC\") {\n d = CryptoJS.TripleDES.encrypt(a, h, {\n iv: f\n });\n } else {\n if (b == \"aes128-CBC\" || b == \"aes256-CBC\") {\n d = CryptoJS.AES.encrypt(a, h, {\n iv: f\n });\n } else {\n throw new Error(\"unsupported algorithm: \" + b);\n }\n }\n return d + \"\";\n } else {\n throw new Error(\"Cipher.encrypt: unsupported key or algorithm\");\n }\n};\nKJUR.crypto.Cipher.decrypt = function (c, j, a, b) {\n if (aryval(b, \"enclag\") != undefined) {\n a = b.encalg;\n }\n if (typeof a == \"string\" && a.substr(-4) == \"-CBC\") {\n var h = j;\n var e = c;\n if (aryval(b, \"key\") != undefined) {\n h = b.key;\n }\n if (aryval(b, \"enc\") != undefined) {\n e = b.enc;\n }\n var i = CryptoJS.enc.Hex.parse(h);\n var f = CryptoJS.enc.Hex.parse(e);\n var g = CryptoJS.enc.Hex.parse(b.iv);\n var d;\n if (a == \"des-EDE3-CBC\") {\n d = CryptoJS.TripleDES.decrypt({\n ciphertext: f\n }, i, {\n iv: g\n });\n } else {\n if (a == \"aes128-CBC\" || a == \"aes256-CBC\") {\n d = CryptoJS.AES.decrypt({\n ciphertext: f\n }, i, {\n iv: g\n });\n } else {\n throw new Error(\"unsupported algorithm: \" + a);\n }\n }\n return CryptoJS.enc.Hex.stringify(d);\n } else {\n throw new Error(\"Cipher.decrypt: unsupported key or algorithm\");\n }\n};\nKJUR.crypto.OID = new function () {\n this.oidhex2name = {\n \"2a864886f70d010101\": \"rsaEncryption\",\n \"2a8648ce3d0201\": \"ecPublicKey\",\n \"2a8648ce380401\": \"dsa\",\n \"2a8648ce3d030107\": \"secp256r1\",\n \"2b8104001f\": \"secp192k1\",\n \"2b81040021\": \"secp224r1\",\n \"2b8104000a\": \"secp256k1\",\n \"2b81040022\": \"secp384r1\",\n \"2b81040023\": \"secp521r1\",\n \"2a8648ce380403\": \"SHA1withDSA\",\n \"608648016503040301\": \"SHA224withDSA\",\n \"608648016503040302\": \"SHA256withDSA\"\n };\n}();\nif (typeof KJUR == \"undefined\" || !KJUR) {\n KJUR = {};\n}\nif (typeof KJUR.crypto == \"undefined\" || !KJUR.crypto) {\n KJUR.crypto = {};\n}\nKJUR.crypto.ECDSA = function (e) {\n var g = \"secp256r1\";\n var p = null;\n var b = null;\n var i = null;\n var j = Error,\n f = BigInteger,\n h = ECPointFp,\n m = KJUR.crypto.ECDSA,\n c = KJUR.crypto.ECParameterDB,\n d = m.getName,\n q = ASN1HEX,\n n = q.getVbyListEx,\n k = q.isASN1HEX;\n var a = new SecureRandom();\n var o = null;\n this.type = \"EC\";\n this.isPrivate = false;\n this.isPublic = false;\n function l(x, t, w, s) {\n var r = Math.max(t.bitLength(), s.bitLength());\n var y = x.add2D(w);\n var v = x.curve.getInfinity();\n for (var u = r - 1; u >= 0; --u) {\n v = v.twice2D();\n v.z = f.ONE;\n if (t.testBit(u)) {\n if (s.testBit(u)) {\n v = v.add2D(y);\n } else {\n v = v.add2D(x);\n }\n } else {\n if (s.testBit(u)) {\n v = v.add2D(w);\n }\n }\n }\n return v;\n }\n this.getBigRandom = function (r) {\n return new f(r.bitLength(), a).mod(r.subtract(f.ONE)).add(f.ONE);\n };\n this.setNamedCurve = function (r) {\n this.ecparams = c.getByName(r);\n this.prvKeyHex = null;\n this.pubKeyHex = null;\n this.curveName = r;\n };\n this.setPrivateKeyHex = function (r) {\n this.isPrivate = true;\n this.prvKeyHex = r;\n };\n this.setPublicKeyHex = function (r) {\n this.isPublic = true;\n this.pubKeyHex = r;\n };\n this.getPublicKeyXYHex = function () {\n var t = this.pubKeyHex;\n if (t.substr(0, 2) !== \"04\") {\n throw \"this method supports uncompressed format(04) only\";\n }\n var s = this.ecparams.keycharlen;\n if (t.length !== 2 + s * 2) {\n throw \"malformed public key hex length\";\n }\n var r = {};\n r.x = t.substr(2, s);\n r.y = t.substr(2 + s);\n return r;\n };\n this.getShortNISTPCurveName = function () {\n var r = this.curveName;\n if (r === \"secp256r1\" || r === \"NIST P-256\" || r === \"P-256\" || r === \"prime256v1\") {\n return \"P-256\";\n }\n if (r === \"secp384r1\" || r === \"NIST P-384\" || r === \"P-384\") {\n return \"P-384\";\n }\n if (r === \"secp521r1\" || r === \"NIST P-521\" || r === \"P-521\") {\n return \"P-521\";\n }\n return null;\n };\n this.generateKeyPairHex = function () {\n var s = this.ecparams.n;\n var u = this.getBigRandom(s);\n var r = this.ecparams.keycharlen;\n var t = (\"0000000000\" + u.toString(16)).slice(-r);\n this.setPrivateKeyHex(t);\n var v = this.generatePublicKeyHex();\n return {\n ecprvhex: t,\n ecpubhex: v\n };\n };\n this.generatePublicKeyHex = function () {\n var u = new f(this.prvKeyHex, 16);\n var w = this.ecparams.G.multiply(u);\n var t = w.getX().toBigInteger();\n var s = w.getY().toBigInteger();\n var r = this.ecparams.keycharlen;\n var y = (\"0000000000\" + t.toString(16)).slice(-r);\n var v = (\"0000000000\" + s.toString(16)).slice(-r);\n var x = \"04\" + y + v;\n this.setPublicKeyHex(x);\n return x;\n };\n this.signWithMessageHash = function (r) {\n return this.signHex(r, this.prvKeyHex);\n };\n this.signHex = function (x, u) {\n var A = new f(u, 16);\n var v = this.ecparams.n;\n var z = new f(x.substring(0, this.ecparams.keycharlen), 16);\n do {\n var w = this.getBigRandom(v);\n var B = this.ecparams.G;\n var y = B.multiply(w);\n var t = y.getX().toBigInteger().mod(v);\n } while (t.compareTo(f.ZERO) <= 0);\n var C = w.modInverse(v).multiply(z.add(A.multiply(t))).mod(v);\n return m.biRSSigToASN1Sig(t, C);\n };\n this.sign = function (w, B) {\n var z = B;\n var u = this.ecparams.n;\n var y = f.fromByteArrayUnsigned(w);\n do {\n var v = this.getBigRandom(u);\n var A = this.ecparams.G;\n var x = A.multiply(v);\n var t = x.getX().toBigInteger().mod(u);\n } while (t.compareTo(BigInteger.ZERO) <= 0);\n var C = v.modInverse(u).multiply(y.add(z.multiply(t))).mod(u);\n return this.serializeSig(t, C);\n };\n this.verifyWithMessageHash = function (s, r) {\n return this.verifyHex(s, r, this.pubKeyHex);\n };\n this.verifyHex = function (v, y, u) {\n try {\n var t, B;\n var w = m.parseSigHex(y);\n t = w.r;\n B = w.s;\n var x = h.decodeFromHex(this.ecparams.curve, u);\n var z = new f(v.substring(0, this.ecparams.keycharlen), 16);\n return this.verifyRaw(z, t, B, x);\n } catch (A) {\n return false;\n }\n };\n this.verify = function (z, A, u) {\n var w, t;\n if (Bitcoin.Util.isArray(A)) {\n var y = this.parseSig(A);\n w = y.r;\n t = y.s;\n } else {\n if (\"object\" === typeof A && A.r && A.s) {\n w = A.r;\n t = A.s;\n } else {\n throw \"Invalid value for signature\";\n }\n }\n var v;\n if (u instanceof ECPointFp) {\n v = u;\n } else {\n if (Bitcoin.Util.isArray(u)) {\n v = h.decodeFrom(this.ecparams.curve, u);\n } else {\n throw \"Invalid format for pubkey value, must be byte array or ECPointFp\";\n }\n }\n var x = f.fromByteArrayUnsigned(z);\n return this.verifyRaw(x, w, t, v);\n };\n this.verifyRaw = function (z, t, E, y) {\n var x = this.ecparams.n;\n var D = this.ecparams.G;\n if (t.compareTo(f.ONE) < 0 || t.compareTo(x) >= 0) {\n return false;\n }\n if (E.compareTo(f.ONE) < 0 || E.compareTo(x) >= 0) {\n return false;\n }\n var A = E.modInverse(x);\n var w = z.multiply(A).mod(x);\n var u = t.multiply(A).mod(x);\n var B = D.multiply(w).add(y.multiply(u));\n var C = B.getX().toBigInteger().mod(x);\n return C.equals(t);\n };\n this.serializeSig = function (v, u) {\n var w = v.toByteArraySigned();\n var t = u.toByteArraySigned();\n var x = [];\n x.push(2);\n x.push(w.length);\n x = x.concat(w);\n x.push(2);\n x.push(t.length);\n x = x.concat(t);\n x.unshift(x.length);\n x.unshift(48);\n return x;\n };\n this.parseSig = function (y) {\n var x;\n if (y[0] != 48) {\n throw new Error(\"Signature not a valid DERSequence\");\n }\n x = 2;\n if (y[x] != 2) {\n throw new Error(\"First element in signature must be a DERInteger\");\n }\n var w = y.slice(x + 2, x + 2 + y[x + 1]);\n x += 2 + y[x + 1];\n if (y[x] != 2) {\n throw new Error(\"Second element in signature must be a DERInteger\");\n }\n var t = y.slice(x + 2, x + 2 + y[x + 1]);\n x += 2 + y[x + 1];\n var v = f.fromByteArrayUnsigned(w);\n var u = f.fromByteArrayUnsigned(t);\n return {\n r: v,\n s: u\n };\n };\n this.parseSigCompact = function (w) {\n if (w.length !== 65) {\n throw \"Signature has the wrong length\";\n }\n var t = w[0] - 27;\n if (t < 0 || t > 7) {\n throw \"Invalid signature type\";\n }\n var x = this.ecparams.n;\n var v = f.fromByteArrayUnsigned(w.slice(1, 33)).mod(x);\n var u = f.fromByteArrayUnsigned(w.slice(33, 65)).mod(x);\n return {\n r: v,\n s: u,\n i: t\n };\n };\n this.readPKCS5PrvKeyHex = function (u) {\n if (k(u) === false) {\n throw new Error(\"not ASN.1 hex string\");\n }\n var r, t, v;\n try {\n r = n(u, 0, [\"[0]\", 0], \"06\");\n t = n(u, 0, [1], \"04\");\n try {\n v = n(u, 0, [\"[1]\", 0], \"03\");\n } catch (s) {}\n } catch (s) {\n throw new Error(\"malformed PKCS#1/5 plain ECC private key\");\n }\n this.curveName = d(r);\n if (this.curveName === undefined) {\n throw \"unsupported curve name\";\n }\n this.setNamedCurve(this.curveName);\n this.setPublicKeyHex(v);\n this.setPrivateKeyHex(t);\n this.isPublic = false;\n };\n this.readPKCS8PrvKeyHex = function (v) {\n if (k(v) === false) {\n throw new j(\"not ASN.1 hex string\");\n }\n var t, r, u, w;\n try {\n t = n(v, 0, [1, 0], \"06\");\n r = n(v, 0, [1, 1], \"06\");\n u = n(v, 0, [2, 0, 1], \"04\");\n try {\n w = n(v, 0, [2, 0, \"[1]\", 0], \"03\");\n } catch (s) {}\n } catch (s) {\n throw new j(\"malformed PKCS#8 plain ECC private key\");\n }\n this.curveName = d(r);\n if (this.curveName === undefined) {\n throw new j(\"unsupported curve name\");\n }\n this.setNamedCurve(this.curveName);\n this.setPublicKeyHex(w);\n this.setPrivateKeyHex(u);\n this.isPublic = false;\n };\n this.readPKCS8PubKeyHex = function (u) {\n if (k(u) === false) {\n throw new j(\"not ASN.1 hex string\");\n }\n var t, r, v;\n try {\n t = n(u, 0, [0, 0], \"06\");\n r = n(u, 0, [0, 1], \"06\");\n v = n(u, 0, [1], \"03\");\n } catch (s) {\n throw new j(\"malformed PKCS#8 ECC public key\");\n }\n this.curveName = d(r);\n if (this.curveName === null) {\n throw new j(\"unsupported curve name\");\n }\n this.setNamedCurve(this.curveName);\n this.setPublicKeyHex(v);\n };\n this.readCertPubKeyHex = function (t, v) {\n if (k(t) === false) {\n throw new j(\"not ASN.1 hex string\");\n }\n var r, u;\n try {\n r = n(t, 0, [0, 5, 0, 1], \"06\");\n u = n(t, 0, [0, 5, 1], \"03\");\n } catch (s) {\n throw new j(\"malformed X.509 certificate ECC public key\");\n }\n this.curveName = d(r);\n if (this.curveName === null) {\n throw new j(\"unsupported curve name\");\n }\n this.setNamedCurve(this.curveName);\n this.setPublicKeyHex(u);\n };\n if (e !== undefined) {\n if (e.curve !== undefined) {\n this.curveName = e.curve;\n }\n }\n if (this.curveName === undefined) {\n this.curveName = g;\n }\n this.setNamedCurve(this.curveName);\n if (e !== undefined) {\n if (e.prv !== undefined) {\n this.setPrivateKeyHex(e.prv);\n }\n if (e.pub !== undefined) {\n this.setPublicKeyHex(e.pub);\n }\n }\n};\nKJUR.crypto.ECDSA.parseSigHex = function (a) {\n var b = KJUR.crypto.ECDSA.parseSigHexInHexRS(a);\n var d = new BigInteger(b.r, 16);\n var c = new BigInteger(b.s, 16);\n return {\n r: d,\n s: c\n };\n};\nKJUR.crypto.ECDSA.parseSigHexInHexRS = function (f) {\n var j = ASN1HEX,\n i = j.getChildIdx,\n g = j.getV;\n j.checkStrictDER(f, 0);\n if (f.substr(0, 2) != \"30\") {\n throw new Error(\"signature is not a ASN.1 sequence\");\n }\n var h = i(f, 0);\n if (h.length != 2) {\n throw new Error(\"signature shall have two elements\");\n }\n var e = h[0];\n var d = h[1];\n if (f.substr(e, 2) != \"02\") {\n throw new Error(\"1st item not ASN.1 integer\");\n }\n if (f.substr(d, 2) != \"02\") {\n throw new Error(\"2nd item not ASN.1 integer\");\n }\n var c = g(f, e);\n var b = g(f, d);\n return {\n r: c,\n s: b\n };\n};\nKJUR.crypto.ECDSA.asn1SigToConcatSig = function (d) {\n var e = KJUR.crypto.ECDSA.parseSigHexInHexRS(d);\n var b = e.r;\n var a = e.s;\n if (b.length >= 130 && b.length <= 134) {\n if (b.length % 2 != 0) {\n throw Error(\"unknown ECDSA sig r length error\");\n }\n if (a.length % 2 != 0) {\n throw Error(\"unknown ECDSA sig s length error\");\n }\n if (b.substr(0, 2) == \"00\") {\n b = b.substr(2);\n }\n if (a.substr(0, 2) == \"00\") {\n a = a.substr(2);\n }\n var c = Math.max(b.length, a.length);\n b = (\"000000\" + b).slice(-c);\n a = (\"000000\" + a).slice(-c);\n return b + a;\n }\n if (b.substr(0, 2) == \"00\" && b.length % 32 == 2) {\n b = b.substr(2);\n }\n if (a.substr(0, 2) == \"00\" && a.length % 32 == 2) {\n a = a.substr(2);\n }\n if (b.length % 32 == 30) {\n b = \"00\" + b;\n }\n if (a.length % 32 == 30) {\n a = \"00\" + a;\n }\n if (b.length % 32 != 0) {\n throw Error(\"unknown ECDSA sig r length error\");\n }\n if (a.length % 32 != 0) {\n throw Error(\"unknown ECDSA sig s length error\");\n }\n return b + a;\n};\nKJUR.crypto.ECDSA.concatSigToASN1Sig = function (a) {\n if (a.length % 4 != 0) {\n throw Error(\"unknown ECDSA concatinated r-s sig length error\");\n }\n var c = a.substr(0, a.length / 2);\n var b = a.substr(a.length / 2);\n return KJUR.crypto.ECDSA.hexRSSigToASN1Sig(c, b);\n};\nKJUR.crypto.ECDSA.hexRSSigToASN1Sig = function (b, a) {\n var d = new BigInteger(b, 16);\n var c = new BigInteger(a, 16);\n return KJUR.crypto.ECDSA.biRSSigToASN1Sig(d, c);\n};\nKJUR.crypto.ECDSA.biRSSigToASN1Sig = function (f, d) {\n var c = KJUR.asn1;\n var b = new c.DERInteger({\n bigint: f\n });\n var a = new c.DERInteger({\n bigint: d\n });\n var e = new c.DERSequence({\n array: [b, a]\n });\n return e.tohex();\n};\nKJUR.crypto.ECDSA.getName = function (a) {\n if (a === \"2b8104001f\") {\n return \"secp192k1\";\n }\n if (a === \"2a8648ce3d030107\") {\n return \"secp256r1\";\n }\n if (a === \"2b8104000a\") {\n return \"secp256k1\";\n }\n if (a === \"2b81040021\") {\n return \"secp224r1\";\n }\n if (a === \"2b81040022\") {\n return \"secp384r1\";\n }\n if (a === \"2b81040023\") {\n return \"secp521r1\";\n }\n if (\"|secp256r1|NIST P-256|P-256|prime256v1|\".indexOf(a) !== -1) {\n return \"secp256r1\";\n }\n if (\"|secp256k1|\".indexOf(a) !== -1) {\n return \"secp256k1\";\n }\n if (\"|secp224r1|NIST P-224|P-224|\".indexOf(a) !== -1) {\n return \"secp224r1\";\n }\n if (\"|secp384r1|NIST P-384|P-384|\".indexOf(a) !== -1) {\n return \"secp384r1\";\n }\n if (\"|secp521r1|NIST P-521|P-521|\".indexOf(a) !== -1) {\n return \"secp521r1\";\n }\n return null;\n};\nif (typeof KJUR == \"undefined\" || !KJUR) {\n KJUR = {};\n}\nif (typeof KJUR.crypto == \"undefined\" || !KJUR.crypto) {\n KJUR.crypto = {};\n}\nKJUR.crypto.ECParameterDB = new function () {\n var b = {};\n var c = {};\n function a(d) {\n return new BigInteger(d, 16);\n }\n this.getByName = function (e) {\n var d = e;\n if (typeof c[d] != \"undefined\") {\n d = c[e];\n }\n if (typeof b[d] != \"undefined\") {\n return b[d];\n }\n throw \"unregistered EC curve name: \" + d;\n };\n this.regist = function (A, l, o, g, m, e, j, f, k, u, d, x) {\n b[A] = {};\n var s = a(o);\n var z = a(g);\n var y = a(m);\n var t = a(e);\n var w = a(j);\n var r = new ECCurveFp(s, z, y);\n var q = r.decodePointHex(\"04\" + f + k);\n b[A][\"name\"] = A;\n b[A][\"keylen\"] = l;\n b[A][\"keycharlen\"] = Math.ceil(l / 8) * 2;\n b[A][\"curve\"] = r;\n b[A][\"G\"] = q;\n b[A][\"n\"] = t;\n b[A][\"h\"] = w;\n b[A][\"oid\"] = d;\n b[A][\"info\"] = x;\n for (var v = 0; v < u.length; v++) {\n c[u[v]] = A;\n }\n };\n}();\nKJUR.crypto.ECParameterDB.regist(\"secp128r1\", 128, \"FFFFFFFDFFFFFFFFFFFFFFFFFFFFFFFF\", \"FFFFFFFDFFFFFFFFFFFFFFFFFFFFFFFC\", \"E87579C11079F43DD824993C2CEE5ED3\", \"FFFFFFFE0000000075A30D1B9038A115\", \"1\", \"161FF7528B899B2D0C28607CA52C5B86\", \"CF5AC8395BAFEB13C02DA292DDED7A83\", [], \"\", \"secp128r1 : SECG curve over a 128 bit prime field\");\nKJUR.crypto.ECParameterDB.regist(\"secp160k1\", 160, \"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFAC73\", \"0\", \"7\", \"0100000000000000000001B8FA16DFAB9ACA16B6B3\", \"1\", \"3B4C382CE37AA192A4019E763036F4F5DD4D7EBB\", \"938CF935318FDCED6BC28286531733C3F03C4FEE\", [], \"\", \"secp160k1 : SECG curve over a 160 bit prime field\");\nKJUR.crypto.ECParameterDB.regist(\"secp160r1\", 160, \"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFF\", \"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFC\", \"1C97BEFC54BD7A8B65ACF89F81D4D4ADC565FA45\", \"0100000000000000000001F4C8F927AED3CA752257\", \"1\", \"4A96B5688EF573284664698968C38BB913CBFC82\", \"23A628553168947D59DCC912042351377AC5FB32\", [], \"\", \"secp160r1 : SECG curve over a 160 bit prime field\");\nKJUR.crypto.ECParameterDB.regist(\"secp192k1\", 192, \"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFEE37\", \"0\", \"3\", \"FFFFFFFFFFFFFFFFFFFFFFFE26F2FC170F69466A74DEFD8D\", \"1\", \"DB4FF10EC057E9AE26B07D0280B7F4341DA5D1B1EAE06C7D\", \"9B2F2F6D9C5628A7844163D015BE86344082AA88D95E2F9D\", []);\nKJUR.crypto.ECParameterDB.regist(\"secp192r1\", 192, \"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFF\", \"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFC\", \"64210519E59C80E70FA7E9AB72243049FEB8DEECC146B9B1\", \"FFFFFFFFFFFFFFFFFFFFFFFF99DEF836146BC9B1B4D22831\", \"1\", \"188DA80EB03090F67CBF20EB43A18800F4FF0AFD82FF1012\", \"07192B95FFC8DA78631011ED6B24CDD573F977A11E794811\", []);\nKJUR.crypto.ECParameterDB.regist(\"secp224r1\", 224, \"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000001\", \"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFE\", \"B4050A850C04B3ABF54132565044B0B7D7BFD8BA270B39432355FFB4\", \"FFFFFFFFFFFFFFFFFFFFFFFFFFFF16A2E0B8F03E13DD29455C5C2A3D\", \"1\", \"B70E0CBD6BB4BF7F321390B94A03C1D356C21122343280D6115C1D21\", \"BD376388B5F723FB4C22DFE6CD4375A05A07476444D5819985007E34\", []);\nKJUR.crypto.ECParameterDB.regist(\"secp256k1\", 256, \"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F\", \"0\", \"7\", \"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141\", \"1\", \"79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798\", \"483ADA7726A3C4655DA4FBFC0E1108A8FD17B448A68554199C47D08FFB10D4B8\", []);\nKJUR.crypto.ECParameterDB.regist(\"secp256r1\", 256, \"FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF\", \"FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC\", \"5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B\", \"FFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551\", \"1\", \"6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296\", \"4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5\", [\"NIST P-256\", \"P-256\", \"prime256v1\"]);\nKJUR.crypto.ECParameterDB.regist(\"secp384r1\", 384, \"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFF0000000000000000FFFFFFFF\", \"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFF0000000000000000FFFFFFFC\", \"B3312FA7E23EE7E4988E056BE3F82D19181D9C6EFE8141120314088F5013875AC656398D8A2ED19D2A85C8EDD3EC2AEF\", \"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7634D81F4372DDF581A0DB248B0A77AECEC196ACCC52973\", \"1\", \"AA87CA22BE8B05378EB1C71EF320AD746E1D3B628BA79B9859F741E082542A385502F25DBF55296C3A545E3872760AB7\", \"3617de4a96262c6f5d9e98bf9292dc29f8f41dbd289a147ce9da3113b5f0b8c00a60b1ce1d7e819d7a431d7c90ea0e5f\", [\"NIST P-384\", \"P-384\"]);\nKJUR.crypto.ECParameterDB.regist(\"secp521r1\", 521, \"1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\", \"1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC\", \"051953EB9618E1C9A1F929A21A0B68540EEA2DA725B99B315F3B8B489918EF109E156193951EC7E937B1652C0BD3BB1BF073573DF883D2C34F1EF451FD46B503F00\", \"1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA51868783BF2F966B7FCC0148F709A5D03BB5C9B8899C47AEBB6FB71E91386409\", \"1\", \"00C6858E06B70404E9CD9E3ECB662395B4429C648139053FB521F828AF606B4D3DBAA14B5E77EFE75928FE1DC127A2FFA8DE3348B3C1856A429BF97E7E31C2E5BD66\", \"011839296a789a3bc0045c8a5fb42c7d1bd998f54449579b446817afbd17273e662c97ee72995ef42640c550b9013fad0761353c7086a272c24088be94769fd16650\", [\"NIST P-521\", \"P-521\"]);\nif (typeof KJUR == \"undefined\" || !KJUR) {\n KJUR = {};\n}\nif (typeof KJUR.crypto == \"undefined\" || !KJUR.crypto) {\n KJUR.crypto = {};\n}\nKJUR.crypto.DSA = function () {\n var b = ASN1HEX,\n e = b.getVbyList,\n d = b.getVbyListEx,\n a = b.isASN1HEX,\n c = BigInteger;\n this.p = null;\n this.q = null;\n this.g = null;\n this.y = null;\n this.x = null;\n this.type = \"DSA\";\n this.isPrivate = false;\n this.isPublic = false;\n this.setPrivate = function (j, i, h, k, f) {\n this.isPrivate = true;\n this.p = j;\n this.q = i;\n this.g = h;\n this.y = k;\n this.x = f;\n };\n this.setPrivateHex = function (i, g, k, n, o) {\n var h, f, j, l, m;\n h = new BigInteger(i, 16);\n f = new BigInteger(g, 16);\n j = new BigInteger(k, 16);\n if (typeof n === \"string\" && n.length > 1) {\n l = new BigInteger(n, 16);\n } else {\n l = null;\n }\n m = new BigInteger(o, 16);\n this.setPrivate(h, f, j, l, m);\n };\n this.setPublic = function (i, h, f, j) {\n this.isPublic = true;\n this.p = i;\n this.q = h;\n this.g = f;\n this.y = j;\n this.x = null;\n };\n this.setPublicHex = function (k, j, i, l) {\n var g, f, m, h;\n g = new BigInteger(k, 16);\n f = new BigInteger(j, 16);\n m = new BigInteger(i, 16);\n h = new BigInteger(l, 16);\n this.setPublic(g, f, m, h);\n };\n this.signWithMessageHash = function (j) {\n var i = this.p;\n var h = this.q;\n var m = this.g;\n var o = this.y;\n var t = this.x;\n var l = KJUR.crypto.Util.getRandomBigIntegerMinToMax(BigInteger.ONE.add(BigInteger.ONE), h.subtract(BigInteger.ONE));\n var u = j.substr(0, h.bitLength() / 4);\n var n = new BigInteger(u, 16);\n var f = m.modPow(l, i).mod(h);\n var w = l.modInverse(h).multiply(n.add(t.multiply(f))).mod(h);\n var v = KJUR.asn1.ASN1Util.jsonToASN1HEX({\n seq: [{\n \"int\": {\n bigint: f\n }\n }, {\n \"int\": {\n bigint: w\n }\n }]\n });\n return v;\n };\n this.verifyWithMessageHash = function (m, l) {\n var j = this.p;\n var h = this.q;\n var o = this.g;\n var u = this.y;\n var n = this.parseASN1Signature(l);\n var f = n[0];\n var C = n[1];\n var B = m.substr(0, h.bitLength() / 4);\n var t = new BigInteger(B, 16);\n if (BigInteger.ZERO.compareTo(f) > 0 || f.compareTo(h) > 0) {\n throw \"invalid DSA signature\";\n }\n if (BigInteger.ZERO.compareTo(C) >= 0 || C.compareTo(h) > 0) {\n throw \"invalid DSA signature\";\n }\n var x = C.modInverse(h);\n var k = t.multiply(x).mod(h);\n var i = f.multiply(x).mod(h);\n var A = o.modPow(k, j).multiply(u.modPow(i, j)).mod(j).mod(h);\n return A.compareTo(f) == 0;\n };\n this.parseASN1Signature = function (f) {\n try {\n var i = new c(d(f, 0, [0], \"02\"), 16);\n var h = new c(d(f, 0, [1], \"02\"), 16);\n return [i, h];\n } catch (g) {\n throw new Error(\"malformed ASN.1 DSA signature\");\n }\n };\n this.readPKCS5PrvKeyHex = function (j) {\n var k, i, g, l, m;\n if (a(j) === false) {\n throw new Error(\"not ASN.1 hex string\");\n }\n try {\n k = d(j, 0, [1], \"02\");\n i = d(j, 0, [2], \"02\");\n g = d(j, 0, [3], \"02\");\n l = d(j, 0, [4], \"02\");\n m = d(j, 0, [5], \"02\");\n } catch (f) {\n throw new Error(\"malformed PKCS#1/5 plain DSA private key\");\n }\n this.setPrivateHex(k, i, g, l, m);\n };\n this.readPKCS8PrvKeyHex = function (j) {\n var k, i, g, l;\n if (a(j) === false) {\n throw new Error(\"not ASN.1 hex string\");\n }\n try {\n k = d(j, 0, [1, 1, 0], \"02\");\n i = d(j, 0, [1, 1, 1], \"02\");\n g = d(j, 0, [1, 1, 2], \"02\");\n l = d(j, 0, [2, 0], \"02\");\n } catch (f) {\n throw new Error(\"malformed PKCS#8 plain DSA private key\");\n }\n this.setPrivateHex(k, i, g, null, l);\n };\n this.readPKCS8PubKeyHex = function (j) {\n var k, i, g, l;\n if (a(j) === false) {\n throw new Error(\"not ASN.1 hex string\");\n }\n try {\n k = d(j, 0, [0, 1, 0], \"02\");\n i = d(j, 0, [0, 1, 1], \"02\");\n g = d(j, 0, [0, 1, 2], \"02\");\n l = d(j, 0, [1, 0], \"02\");\n } catch (f) {\n throw new Error(\"malformed PKCS#8 DSA public key\");\n }\n this.setPublicHex(k, i, g, l);\n };\n this.readCertPubKeyHex = function (j, m) {\n var k, i, g, l;\n if (a(j) === false) {\n throw new Error(\"not ASN.1 hex string\");\n }\n try {\n k = d(j, 0, [0, 5, 0, 1, 0], \"02\");\n i = d(j, 0, [0, 5, 0, 1, 1], \"02\");\n g = d(j, 0, [0, 5, 0, 1, 2], \"02\");\n l = d(j, 0, [0, 5, 1, 0], \"02\");\n } catch (f) {\n throw new Error(\"malformed X.509 certificate DSA public key\");\n }\n this.setPublicHex(k, i, g, l);\n };\n};\nvar KEYUTIL = function () {\n var d = function (p, r, q) {\n return k(CryptoJS.AES, p, r, q);\n };\n var e = function (p, r, q) {\n return k(CryptoJS.TripleDES, p, r, q);\n };\n var a = function (p, r, q) {\n return k(CryptoJS.DES, p, r, q);\n };\n var k = function (s, x, u, q) {\n var r = CryptoJS.enc.Hex.parse(x);\n var w = CryptoJS.enc.Hex.parse(u);\n var p = CryptoJS.enc.Hex.parse(q);\n var t = {};\n t.key = w;\n t.iv = p;\n t.ciphertext = r;\n var v = s.decrypt(t, w, {\n iv: p\n });\n return CryptoJS.enc.Hex.stringify(v);\n };\n var l = function (p, r, q) {\n return g(CryptoJS.AES, p, r, q);\n };\n var o = function (p, r, q) {\n return g(CryptoJS.TripleDES, p, r, q);\n };\n var f = function (p, r, q) {\n return g(CryptoJS.DES, p, r, q);\n };\n var g = function (t, y, v, q) {\n var s = CryptoJS.enc.Hex.parse(y);\n var x = CryptoJS.enc.Hex.parse(v);\n var p = CryptoJS.enc.Hex.parse(q);\n var w = t.encrypt(s, x, {\n iv: p\n });\n var r = CryptoJS.enc.Hex.parse(w.toString());\n var u = CryptoJS.enc.Base64.stringify(r);\n return u;\n };\n var i = {\n \"AES-256-CBC\": {\n proc: d,\n eproc: l,\n keylen: 32,\n ivlen: 16\n },\n \"AES-192-CBC\": {\n proc: d,\n eproc: l,\n keylen: 24,\n ivlen: 16\n },\n \"AES-128-CBC\": {\n proc: d,\n eproc: l,\n keylen: 16,\n ivlen: 16\n },\n \"DES-EDE3-CBC\": {\n proc: e,\n eproc: o,\n keylen: 24,\n ivlen: 8\n },\n \"DES-CBC\": {\n proc: a,\n eproc: f,\n keylen: 8,\n ivlen: 8\n }\n };\n var c = function (p) {\n return i[p][\"proc\"];\n };\n var m = function (p) {\n var r = CryptoJS.lib.WordArray.random(p);\n var q = CryptoJS.enc.Hex.stringify(r);\n return q;\n };\n var n = function (v) {\n var w = {};\n var q = v.match(new RegExp(\"DEK-Info: ([^,]+),([0-9A-Fa-f]+)\", \"m\"));\n if (q) {\n w.cipher = q[1];\n w.ivsalt = q[2];\n }\n var p = v.match(new RegExp(\"-----BEGIN ([A-Z]+) PRIVATE KEY-----\"));\n if (p) {\n w.type = p[1];\n }\n var u = -1;\n var x = 0;\n if (v.indexOf(\"\\r\\n\\r\\n\") != -1) {\n u = v.indexOf(\"\\r\\n\\r\\n\");\n x = 2;\n }\n if (v.indexOf(\"\\n\\n\") != -1) {\n u = v.indexOf(\"\\n\\n\");\n x = 1;\n }\n var t = v.indexOf(\"-----END\");\n if (u != -1 && t != -1) {\n var r = v.substring(u + x * 2, t - x);\n r = r.replace(/\\s+/g, \"\");\n w.data = r;\n }\n return w;\n };\n var j = function (q, y, p) {\n var v = p.substring(0, 16);\n var t = CryptoJS.enc.Hex.parse(v);\n var r = CryptoJS.enc.Utf8.parse(y);\n var u = i[q][\"keylen\"] + i[q][\"ivlen\"];\n var x = \"\";\n var w = null;\n for (;;) {\n var s = CryptoJS.algo.MD5.create();\n if (w != null) {\n s.update(w);\n }\n s.update(r);\n s.update(t);\n w = s.finalize();\n x = x + CryptoJS.enc.Hex.stringify(w);\n if (x.length >= u * 2) {\n break;\n }\n }\n var z = {};\n z.keyhex = x.substr(0, i[q][\"keylen\"] * 2);\n z.ivhex = x.substr(i[q][\"keylen\"] * 2, i[q][\"ivlen\"] * 2);\n return z;\n };\n var b = function (p, v, r, w) {\n var s = CryptoJS.enc.Base64.parse(p);\n var q = CryptoJS.enc.Hex.stringify(s);\n var u = i[v][\"proc\"];\n var t = u(q, r, w);\n return t;\n };\n var h = function (p, s, q, u) {\n var r = i[s][\"eproc\"];\n var t = r(p, q, u);\n return t;\n };\n return {\n version: \"1.0.0\",\n parsePKCS5PEM: function (p) {\n return n(p);\n },\n getKeyAndUnusedIvByPasscodeAndIvsalt: function (q, p, r) {\n return j(q, p, r);\n },\n decryptKeyB64: function (p, r, q, s) {\n return b(p, r, q, s);\n },\n getDecryptedKeyHex: function (y, x) {\n var q = n(y);\n var t = q.type;\n var r = q.cipher;\n var p = q.ivsalt;\n var s = q.data;\n var w = j(r, x, p);\n var v = w.keyhex;\n var u = b(s, r, v, p);\n return u;\n },\n getEncryptedPKCS5PEMFromPrvKeyHex: function (x, s, A, t, r) {\n var p = \"\";\n if (typeof t == \"undefined\" || t == null) {\n t = \"AES-256-CBC\";\n }\n if (typeof i[t] == \"undefined\") {\n throw new Error(\"KEYUTIL unsupported algorithm: \" + t);\n }\n if (typeof r == \"undefined\" || r == null) {\n var v = i[t][\"ivlen\"];\n var u = m(v);\n r = u.toUpperCase();\n }\n var z = j(t, A, r);\n var y = z.keyhex;\n var w = h(s, t, y, r);\n var q = w.replace(/(.{64})/g, \"$1\\r\\n\");\n var p = \"-----BEGIN \" + x + \" PRIVATE KEY-----\\r\\n\";\n p += \"Proc-Type: 4,ENCRYPTED\\r\\n\";\n p += \"DEK-Info: \" + t + \",\" + r + \"\\r\\n\";\n p += \"\\r\\n\";\n p += q;\n p += \"\\r\\n-----END \" + x + \" PRIVATE KEY-----\\r\\n\";\n return p;\n },\n getEncryptedPKCS8PEM: function (r, p, s) {\n var q = this.getEncryptedPKCS8Hex(r, p, s);\n return hextopem(q, \"ENCRYPTED PRIVATE KEY\");\n },\n getEncryptedPKCS8Hex: function (r, p, t) {\n var q;\n if (t == undefined || t == null) {\n q = {};\n } else {\n q = JSON.parse(JSON.stringify(t));\n }\n q.plain = r;\n this.initPBES2Param(q);\n this.encryptPBES2Param(q, p);\n var s = this.generatePBES2ASN1Param(q);\n return KJUR.asn1.ASN1Util.newObject(s).tohex();\n },\n initPBES2Param: function (p) {\n if (aryval(p, \"encalg\") == undefined) {\n p.encalg = \"aes256-CBC\";\n }\n if (aryval(p, \"iter\") == undefined) {\n p.iter = 2048;\n }\n if (aryval(p, \"prf\") == undefined) {\n p.prf = \"hmacWithSHA256\";\n }\n if (aryval(p, \"salt\") == undefined) {\n p.salt = CryptoJS.enc.Hex.stringify(CryptoJS.lib.WordArray.random(8));\n }\n if (aryval(p, \"enciv\") == undefined) {\n var q;\n if (p.encalg == \"des-EDE3-CBC\") {\n q = 8;\n }\n if (p.encalg == \"aes128-CBC\") {\n q = 16;\n }\n if (p.encalg == \"aes256-CBC\") {\n q = 16;\n }\n p.enciv = CryptoJS.enc.Hex.stringify(CryptoJS.lib.WordArray.random(q));\n }\n },\n encryptPBES2Param: function (p, q) {\n var t = KEYUTIL.getDKFromPBES2Param(p, q);\n try {\n var s = KJUR.crypto.Cipher.encrypt(p.plain, t, p.encalg, {\n iv: p.enciv\n });\n } catch (r) {\n throw new Error(\"encrypt error: \" + p.plain + \" \" + t + \" \" + p.encalg + \" \" + p.enciv);\n }\n p.enc = s;\n },\n generatePBES2ASN1Param: function (p) {\n var q = {\n seq: [{\n seq: [{\n oid: \"pkcs5PBES2\"\n }, {\n seq: [{\n seq: [{\n oid: \"pkcs5PBKDF2\"\n }, {\n seq: [{\n octstr: {\n hex: p.salt\n }\n }, {\n \"int\": {\n hex: inttohex(p.iter)\n }\n }]\n }]\n }, {\n seq: [{\n oid: p.encalg\n }, {\n octstr: {\n hex: p.enciv\n }\n }]\n }]\n }]\n }, {\n octstr: {\n hex: p.enc\n }\n }]\n };\n if (p.prf != \"hmacWithSHA1\") {\n q.seq[0].seq[1].seq[0].seq[1].seq.push({\n seq: [{\n oid: p.prf\n }, {\n \"null\": \"\"\n }]\n });\n }\n return q;\n },\n parseHexOfEncryptedPKCS8: function (y) {\n var B = ASN1HEX;\n var z = B.getChildIdx;\n var w = B.getV;\n var t = {};\n var r = z(y, 0);\n if (r.length != 2) {\n throw new Error(\"malformed format: SEQUENCE(0).items != 2: \" + r.length);\n }\n t.ciphertext = w(y, r[1]);\n var A = z(y, r[0]);\n if (A.length != 2) {\n throw new Error(\"malformed format: SEQUENCE(0.0).items != 2: \" + A.length);\n }\n if (w(y, A[0]) != \"2a864886f70d01050d\") {\n throw new Error(\"this only supports pkcs5PBES2\");\n }\n var p = z(y, A[1]);\n if (A.length != 2) {\n throw new Error(\"malformed format: SEQUENCE(0.0.1).items != 2: \" + p.length);\n }\n var q = z(y, p[1]);\n if (q.length != 2) {\n throw new Error(\"malformed format: SEQUENCE(0.0.1.1).items != 2: \" + q.length);\n }\n if (w(y, q[0]) != \"2a864886f70d0307\") {\n throw \"this only supports TripleDES\";\n }\n t.encryptionSchemeAlg = \"TripleDES\";\n t.encryptionSchemeIV = w(y, q[1]);\n var s = z(y, p[0]);\n if (s.length != 2) {\n throw new Error(\"malformed format: SEQUENCE(0.0.1.0).items != 2: \" + s.length);\n }\n if (w(y, s[0]) != \"2a864886f70d01050c\") {\n throw new Error(\"this only supports pkcs5PBKDF2\");\n }\n var x = z(y, s[1]);\n if (x.length < 2) {\n throw new Error(\"malformed format: SEQUENCE(0.0.1.0.1).items < 2: \" + x.length);\n }\n t.pbkdf2Salt = w(y, x[0]);\n var u = w(y, x[1]);\n try {\n t.pbkdf2Iter = parseInt(u, 16);\n } catch (v) {\n throw new Error(\"malformed format pbkdf2Iter: \" + u);\n }\n return t;\n },\n getPBKDF2KeyHexFromParam: function (u, p) {\n var t = CryptoJS.enc.Hex.parse(u.pbkdf2Salt);\n var q = u.pbkdf2Iter;\n var s = CryptoJS.PBKDF2(p, t, {\n keySize: 192 / 32,\n iterations: q\n });\n var r = CryptoJS.enc.Hex.stringify(s);\n return r;\n },\n _getPlainPKCS8HexFromEncryptedPKCS8PEM: function (x, y) {\n var r = pemtohex(x, \"ENCRYPTED PRIVATE KEY\");\n var p = this.parseHexOfEncryptedPKCS8(r);\n var u = KEYUTIL.getPBKDF2KeyHexFromParam(p, y);\n var v = {};\n v.ciphertext = CryptoJS.enc.Hex.parse(p.ciphertext);\n var t = CryptoJS.enc.Hex.parse(u);\n var s = CryptoJS.enc.Hex.parse(p.encryptionSchemeIV);\n var w = CryptoJS.TripleDES.decrypt(v, t, {\n iv: s\n });\n var q = CryptoJS.enc.Hex.stringify(w);\n return q;\n },\n parsePBES2: function (z) {\n var v = ASN1HEX.parse(z);\n if (aryval(v, \"seq.0.seq.0.oid\") != \"pkcs5PBES2\" || aryval(v, \"seq.0.seq.1.seq.0.seq.0.oid\") != \"pkcs5PBKDF2\") {\n throw new Error(\"not pkcs5PBES2 and pkcs5PBKDF2 used\");\n }\n var y = aryval(v, \"seq.0.seq.1.seq.0.seq.1.seq\");\n if (y == undefined) {\n throw new Error(\"PBKDF2 parameter not found\");\n }\n var t = aryval(y, \"0.octstr.hex\");\n var p = aryval(y, \"1.int.hex\");\n var q = aryval(y, \"2.seq.0.oid\", \"hmacWithSHA1\");\n var x = -1;\n try {\n x = parseInt(p, 16);\n } catch (w) {\n throw new Error(\"iter not proper value\");\n }\n var u = aryval(v, \"seq.0.seq.1.seq.1.seq.0.oid\");\n var s = aryval(v, \"seq.0.seq.1.seq.1.seq.1.octstr.hex\");\n var r = aryval(v, \"seq.1.octstr.hex\");\n if (u == undefined || s == undefined || r == undefined) {\n throw new Error(\"encalg, enciv or enc is undefined\");\n }\n var A = {\n salt: t,\n iter: x,\n prf: q,\n encalg: u,\n enciv: s,\n enc: r\n };\n return A;\n },\n getDKFromPBES2Param: function (p, w) {\n var x = {\n hmacWithSHA1: CryptoJS.algo.SHA1,\n hmacWithSHA224: CryptoJS.algo.SHA224,\n hmacWithSHA256: CryptoJS.algo.SHA256,\n hmacWithSHA384: CryptoJS.algo.SHA384,\n hmacWithSHA512: CryptoJS.algo.SHA512\n };\n var q = {\n \"des-EDE3-CBC\": 192 / 32,\n \"aes128-CBC\": 128 / 32,\n \"aes256-CBC\": 256 / 32\n };\n var y = x[p.prf];\n if (y == undefined) {\n throw new Error(\"unsupported prf\");\n }\n var r = q[p.encalg];\n if (r == undefined) {\n throw new Error(\"unsupported encalg\");\n }\n var s = CryptoJS.enc.Hex.parse(p.salt);\n var u = p.iter;\n try {\n var v = CryptoJS.PBKDF2(w, s, {\n keySize: r,\n iterations: u,\n hasher: y\n });\n return CryptoJS.enc.Hex.stringify(v);\n } catch (t) {\n throw new Error(\"PBKDF2 error: \" + t + \" \" + JSON.stringify(p) + \" \" + w);\n }\n },\n getPlainHexFromEncryptedPKCS8PEM: function (t, q) {\n if (t.indexOf(\"BEGIN ENCRYPTED PRIVATE KEY\") == -1) {\n throw new Error(\"not Encrypted PKCS#8 PEM string\");\n }\n var u = pemtohex(t);\n var p;\n try {\n p = KEYUTIL.parsePBES2(u);\n } catch (r) {\n throw new Error(\"malformed PBES2 format: \" + r.message);\n }\n var s = KEYUTIL.getDKFromPBES2Param(p, q);\n return KJUR.crypto.Cipher.decrypt(p.enc, s, p.encalg, {\n iv: p.enciv\n });\n },\n getKeyFromEncryptedPKCS8PEM: function (s, q) {\n var p = this.getPlainHexFromEncryptedPKCS8PEM(s, q);\n var r = this.getKeyFromPlainPrivatePKCS8Hex(p);\n return r;\n },\n parsePlainPrivatePKCS8Hex: function (s) {\n var v = ASN1HEX;\n var u = v.getChildIdx;\n var t = v.getV;\n var q = {};\n q.algparam = null;\n if (s.substr(0, 2) != \"30\") {\n throw new Error(\"malformed plain PKCS8 private key(code:001)\");\n }\n var r = u(s, 0);\n if (r.length < 3) {\n throw new Error(\"malformed plain PKCS8 private key(code:002)\");\n }\n if (s.substr(r[1], 2) != \"30\") {\n throw new Error(\"malformed PKCS8 private key(code:003)\");\n }\n var p = u(s, r[1]);\n if (p.length != 2) {\n throw new Error(\"malformed PKCS8 private key(code:004)\");\n }\n if (s.substr(p[0], 2) != \"06\") {\n throw new Error(\"malformed PKCS8 private key(code:005)\");\n }\n q.algoid = t(s, p[0]);\n if (s.substr(p[1], 2) == \"06\") {\n q.algparam = t(s, p[1]);\n }\n if (s.substr(r[2], 2) != \"04\") {\n throw new Error(\"malformed PKCS8 private key(code:006)\");\n }\n q.keyidx = v.getVidx(s, r[2]);\n return q;\n },\n getKeyFromPlainPrivatePKCS8PEM: function (q) {\n var p = pemtohex(q, \"PRIVATE KEY\");\n var r = this.getKeyFromPlainPrivatePKCS8Hex(p);\n return r;\n },\n getKeyFromPlainPrivatePKCS8Hex: function (p) {\n var q = this.parsePlainPrivatePKCS8Hex(p);\n var r;\n if (q.algoid == \"2a864886f70d010101\") {\n r = new RSAKey();\n } else {\n if (q.algoid == \"2a8648ce380401\") {\n r = new KJUR.crypto.DSA();\n } else {\n if (q.algoid == \"2a8648ce3d0201\") {\n r = new KJUR.crypto.ECDSA();\n } else {\n throw new Error(\"unsupported private key algorithm\");\n }\n }\n }\n r.readPKCS8PrvKeyHex(p);\n return r;\n },\n _getKeyFromPublicPKCS8Hex: function (q) {\n var p;\n var r = ASN1HEX.getVbyList(q, 0, [0, 0], \"06\");\n if (r === \"2a864886f70d010101\") {\n p = new RSAKey();\n } else {\n if (r === \"2a8648ce380401\") {\n p = new KJUR.crypto.DSA();\n } else {\n if (r === \"2a8648ce3d0201\") {\n p = new KJUR.crypto.ECDSA();\n } else {\n throw new Error(\"unsupported PKCS#8 public key hex\");\n }\n }\n }\n p.readPKCS8PubKeyHex(q);\n return p;\n },\n parsePublicRawRSAKeyHex: function (r) {\n var u = ASN1HEX;\n var t = u.getChildIdx;\n var s = u.getV;\n var p = {};\n if (r.substr(0, 2) != \"30\") {\n throw new Error(\"malformed RSA key(code:001)\");\n }\n var q = t(r, 0);\n if (q.length != 2) {\n throw new Error(\"malformed RSA key(code:002)\");\n }\n if (r.substr(q[0], 2) != \"02\") {\n throw new Error(\"malformed RSA key(code:003)\");\n }\n p.n = s(r, q[0]);\n if (r.substr(q[1], 2) != \"02\") {\n throw new Error(\"malformed RSA key(code:004)\");\n }\n p.e = s(r, q[1]);\n return p;\n },\n parsePublicPKCS8Hex: function (t) {\n var v = ASN1HEX;\n var u = v.getChildIdx;\n var s = v.getV;\n var q = {};\n q.algparam = null;\n var r = u(t, 0);\n if (r.length != 2) {\n throw new Error(\"outer DERSequence shall have 2 elements: \" + r.length);\n }\n var w = r[0];\n if (t.substr(w, 2) != \"30\") {\n throw new Error(\"malformed PKCS8 public key(code:001)\");\n }\n var p = u(t, w);\n if (p.length != 2) {\n throw new Error(\"malformed PKCS8 public key(code:002)\");\n }\n if (t.substr(p[0], 2) != \"06\") {\n throw new Error(\"malformed PKCS8 public key(code:003)\");\n }\n q.algoid = s(t, p[0]);\n if (t.substr(p[1], 2) == \"06\") {\n q.algparam = s(t, p[1]);\n } else {\n if (t.substr(p[1], 2) == \"30\") {\n q.algparam = {};\n q.algparam.p = v.getVbyList(t, p[1], [0], \"02\");\n q.algparam.q = v.getVbyList(t, p[1], [1], \"02\");\n q.algparam.g = v.getVbyList(t, p[1], [2], \"02\");\n }\n }\n if (t.substr(r[1], 2) != \"03\") {\n throw new Error(\"malformed PKCS8 public key(code:004)\");\n }\n q.key = s(t, r[1]).substr(2);\n return q;\n }\n };\n}();\nKEYUTIL.getKey = function (l, k, n) {\n var G = ASN1HEX,\n L = G.getChildIdx,\n v = G.getV,\n d = G.getVbyList,\n c = KJUR.crypto,\n i = c.ECDSA,\n C = c.DSA,\n w = RSAKey,\n M = pemtohex,\n F = KEYUTIL;\n if (typeof w != \"undefined\" && l instanceof w) {\n return l;\n }\n if (typeof i != \"undefined\" && l instanceof i) {\n return l;\n }\n if (typeof C != \"undefined\" && l instanceof C) {\n return l;\n }\n if (l.curve !== undefined && l.xy !== undefined && l.d === undefined) {\n return new i({\n pub: l.xy,\n curve: l.curve\n });\n }\n if (l.curve !== undefined && l.d !== undefined) {\n return new i({\n prv: l.d,\n curve: l.curve\n });\n }\n if (l.kty === undefined && l.n !== undefined && l.e !== undefined && l.d === undefined) {\n var P = new w();\n P.setPublic(l.n, l.e);\n return P;\n }\n if (l.kty === undefined && l.n !== undefined && l.e !== undefined && l.d !== undefined && l.p !== undefined && l.q !== undefined && l.dp !== undefined && l.dq !== undefined && l.co !== undefined && l.qi === undefined) {\n var P = new w();\n P.setPrivateEx(l.n, l.e, l.d, l.p, l.q, l.dp, l.dq, l.co);\n return P;\n }\n if (l.kty === undefined && l.n !== undefined && l.e !== undefined && l.d !== undefined && l.p === undefined) {\n var P = new w();\n P.setPrivate(l.n, l.e, l.d);\n return P;\n }\n if (l.p !== undefined && l.q !== undefined && l.g !== undefined && l.y !== undefined && l.x === undefined) {\n var P = new C();\n P.setPublic(l.p, l.q, l.g, l.y);\n return P;\n }\n if (l.p !== undefined && l.q !== undefined && l.g !== undefined && l.y !== undefined && l.x !== undefined) {\n var P = new C();\n P.setPrivate(l.p, l.q, l.g, l.y, l.x);\n return P;\n }\n if (l.kty === \"RSA\" && l.n !== undefined && l.e !== undefined && l.d === undefined) {\n var P = new w();\n P.setPublic(b64utohex(l.n), b64utohex(l.e));\n return P;\n }\n if (l.kty === \"RSA\" && l.n !== undefined && l.e !== undefined && l.d !== undefined && l.p !== undefined && l.q !== undefined && l.dp !== undefined && l.dq !== undefined && l.qi !== undefined) {\n var P = new w();\n P.setPrivateEx(b64utohex(l.n), b64utohex(l.e), b64utohex(l.d), b64utohex(l.p), b64utohex(l.q), b64utohex(l.dp), b64utohex(l.dq), b64utohex(l.qi));\n return P;\n }\n if (l.kty === \"RSA\" && l.n !== undefined && l.e !== undefined && l.d !== undefined) {\n var P = new w();\n P.setPrivate(b64utohex(l.n), b64utohex(l.e), b64utohex(l.d));\n return P;\n }\n if (l.kty === \"EC\" && l.crv !== undefined && l.x !== undefined && l.y !== undefined && l.d === undefined) {\n var j = new i({\n curve: l.crv\n });\n var t = j.ecparams.keycharlen;\n var B = (\"0000000000\" + b64utohex(l.x)).slice(-t);\n var z = (\"0000000000\" + b64utohex(l.y)).slice(-t);\n var u = \"04\" + B + z;\n j.setPublicKeyHex(u);\n return j;\n }\n if (l.kty === \"EC\" && l.crv !== undefined && l.x !== undefined && l.y !== undefined && l.d !== undefined) {\n var j = new i({\n curve: l.crv\n });\n var t = j.ecparams.keycharlen;\n var B = (\"0000000000\" + b64utohex(l.x)).slice(-t);\n var z = (\"0000000000\" + b64utohex(l.y)).slice(-t);\n var u = \"04\" + B + z;\n var b = (\"0000000000\" + b64utohex(l.d)).slice(-t);\n j.setPublicKeyHex(u);\n j.setPrivateKeyHex(b);\n return j;\n }\n if (n === \"pkcs5prv\") {\n var J = l,\n G = ASN1HEX,\n N,\n P;\n N = L(J, 0);\n if (N.length === 9) {\n P = new w();\n P.readPKCS5PrvKeyHex(J);\n } else {\n if (N.length === 6) {\n P = new C();\n P.readPKCS5PrvKeyHex(J);\n } else {\n if (N.length > 2 && J.substr(N[1], 2) === \"04\") {\n P = new i();\n P.readPKCS5PrvKeyHex(J);\n } else {\n throw new Error(\"unsupported PKCS#1/5 hexadecimal key\");\n }\n }\n }\n return P;\n }\n if (n === \"pkcs8prv\") {\n var P = F.getKeyFromPlainPrivatePKCS8Hex(l);\n return P;\n }\n if (n === \"pkcs8pub\") {\n return F._getKeyFromPublicPKCS8Hex(l);\n }\n if (n === \"x509pub\") {\n return X509.getPublicKeyFromCertHex(l);\n }\n if (l.indexOf(\"-END CERTIFICATE-\", 0) != -1 || l.indexOf(\"-END X509 CERTIFICATE-\", 0) != -1 || l.indexOf(\"-END TRUSTED CERTIFICATE-\", 0) != -1) {\n return X509.getPublicKeyFromCertPEM(l);\n }\n if (l.indexOf(\"-END PUBLIC KEY-\") != -1) {\n var O = pemtohex(l, \"PUBLIC KEY\");\n return F._getKeyFromPublicPKCS8Hex(O);\n }\n if (l.indexOf(\"-END RSA PRIVATE KEY-\") != -1 && l.indexOf(\"4,ENCRYPTED\") == -1) {\n var m = M(l, \"RSA PRIVATE KEY\");\n return F.getKey(m, null, \"pkcs5prv\");\n }\n if (l.indexOf(\"-END DSA PRIVATE KEY-\") != -1 && l.indexOf(\"4,ENCRYPTED\") == -1) {\n var I = M(l, \"DSA PRIVATE KEY\");\n var E = d(I, 0, [1], \"02\");\n var D = d(I, 0, [2], \"02\");\n var K = d(I, 0, [3], \"02\");\n var r = d(I, 0, [4], \"02\");\n var s = d(I, 0, [5], \"02\");\n var P = new C();\n P.setPrivate(new BigInteger(E, 16), new BigInteger(D, 16), new BigInteger(K, 16), new BigInteger(r, 16), new BigInteger(s, 16));\n return P;\n }\n if (l.indexOf(\"-END EC PRIVATE KEY-\") != -1 && l.indexOf(\"4,ENCRYPTED\") == -1) {\n var m = M(l, \"EC PRIVATE KEY\");\n return F.getKey(m, null, \"pkcs5prv\");\n }\n if (l.indexOf(\"-END PRIVATE KEY-\") != -1) {\n return F.getKeyFromPlainPrivatePKCS8PEM(l);\n }\n if (l.indexOf(\"-END RSA PRIVATE KEY-\") != -1 && l.indexOf(\"4,ENCRYPTED\") != -1) {\n var o = F.getDecryptedKeyHex(l, k);\n var H = new RSAKey();\n H.readPKCS5PrvKeyHex(o);\n return H;\n }\n if (l.indexOf(\"-END EC PRIVATE KEY-\") != -1 && l.indexOf(\"4,ENCRYPTED\") != -1) {\n var I = F.getDecryptedKeyHex(l, k);\n var P = d(I, 0, [1], \"04\");\n var f = d(I, 0, [2, 0], \"06\");\n var A = d(I, 0, [3, 0], \"03\").substr(2);\n var e = \"\";\n if (KJUR.crypto.OID.oidhex2name[f] !== undefined) {\n e = KJUR.crypto.OID.oidhex2name[f];\n } else {\n throw new Error(\"undefined OID(hex) in KJUR.crypto.OID: \" + f);\n }\n var j = new i({\n curve: e\n });\n j.setPublicKeyHex(A);\n j.setPrivateKeyHex(P);\n j.isPublic = false;\n return j;\n }\n if (l.indexOf(\"-END DSA PRIVATE KEY-\") != -1 && l.indexOf(\"4,ENCRYPTED\") != -1) {\n var I = F.getDecryptedKeyHex(l, k);\n var E = d(I, 0, [1], \"02\");\n var D = d(I, 0, [2], \"02\");\n var K = d(I, 0, [3], \"02\");\n var r = d(I, 0, [4], \"02\");\n var s = d(I, 0, [5], \"02\");\n var P = new C();\n P.setPrivate(new BigInteger(E, 16), new BigInteger(D, 16), new BigInteger(K, 16), new BigInteger(r, 16), new BigInteger(s, 16));\n return P;\n }\n if (l.indexOf(\"-END ENCRYPTED PRIVATE KEY-\") != -1) {\n return F.getKeyFromEncryptedPKCS8PEM(l, k);\n }\n throw new Error(\"not supported argument\");\n};\nKEYUTIL.generateKeypair = function (a, c) {\n if (a == \"RSA\") {\n var b = c;\n var h = new RSAKey();\n h.generate(b, \"10001\");\n h.isPrivate = true;\n h.isPublic = true;\n var f = new RSAKey();\n var e = h.n.toString(16);\n var i = h.e.toString(16);\n f.setPublic(e, i);\n f.isPrivate = false;\n f.isPublic = true;\n var k = {};\n k.prvKeyObj = h;\n k.pubKeyObj = f;\n return k;\n } else {\n if (a == \"EC\") {\n var d = c;\n var g = new KJUR.crypto.ECDSA({\n curve: d\n });\n var j = g.generateKeyPairHex();\n var h = new KJUR.crypto.ECDSA({\n curve: d\n });\n h.setPublicKeyHex(j.ecpubhex);\n h.setPrivateKeyHex(j.ecprvhex);\n h.isPrivate = true;\n h.isPublic = false;\n var f = new KJUR.crypto.ECDSA({\n curve: d\n });\n f.setPublicKeyHex(j.ecpubhex);\n f.isPrivate = false;\n f.isPublic = true;\n var k = {};\n k.prvKeyObj = h;\n k.pubKeyObj = f;\n return k;\n } else {\n throw new Error(\"unknown algorithm: \" + a);\n }\n }\n};\nKEYUTIL.getPEM = function (b, C, x, m, p, j) {\n var E = KJUR,\n k = E.asn1,\n y = k.DERObjectIdentifier,\n e = k.DERInteger,\n l = k.ASN1Util.newObject,\n a = k.x509,\n B = a.SubjectPublicKeyInfo,\n d = E.crypto,\n t = d.DSA,\n q = d.ECDSA,\n n = RSAKey;\n function z(s) {\n var G = l({\n seq: [{\n \"int\": 0\n }, {\n \"int\": {\n bigint: s.n\n }\n }, {\n \"int\": s.e\n }, {\n \"int\": {\n bigint: s.d\n }\n }, {\n \"int\": {\n bigint: s.p\n }\n }, {\n \"int\": {\n bigint: s.q\n }\n }, {\n \"int\": {\n bigint: s.dmp1\n }\n }, {\n \"int\": {\n bigint: s.dmq1\n }\n }, {\n \"int\": {\n bigint: s.coeff\n }\n }]\n });\n return G;\n }\n function A(G) {\n var s = l({\n seq: [{\n \"int\": 1\n }, {\n octstr: {\n hex: G.prvKeyHex\n }\n }, {\n tag: [\"a0\", true, {\n oid: {\n name: G.curveName\n }\n }]\n }, {\n tag: [\"a1\", true, {\n bitstr: {\n hex: \"00\" + G.pubKeyHex\n }\n }]\n }]\n });\n return s;\n }\n function w(s) {\n var G = l({\n seq: [{\n \"int\": 0\n }, {\n \"int\": {\n bigint: s.p\n }\n }, {\n \"int\": {\n bigint: s.q\n }\n }, {\n \"int\": {\n bigint: s.g\n }\n }, {\n \"int\": {\n bigint: s.y\n }\n }, {\n \"int\": {\n bigint: s.x\n }\n }]\n });\n return G;\n }\n if ((n !== undefined && b instanceof n || t !== undefined && b instanceof t || q !== undefined && b instanceof q) && b.isPublic == true && (C === undefined || C == \"PKCS8PUB\")) {\n var D = new B(b);\n var v = D.tohex();\n return hextopem(v, \"PUBLIC KEY\");\n }\n if (C == \"PKCS1PRV\" && n !== undefined && b instanceof n && (x === undefined || x == null) && b.isPrivate == true) {\n var D = z(b);\n var v = D.tohex();\n return hextopem(v, \"RSA PRIVATE KEY\");\n }\n if (C == \"PKCS1PRV\" && q !== undefined && b instanceof q && (x === undefined || x == null) && b.isPrivate == true) {\n var i = new y({\n name: b.curveName\n });\n var u = i.tohex();\n var h = A(b);\n var r = h.tohex();\n var o = \"\";\n o += hextopem(u, \"EC PARAMETERS\");\n o += hextopem(r, \"EC PRIVATE KEY\");\n return o;\n }\n if (C == \"PKCS1PRV\" && t !== undefined && b instanceof t && (x === undefined || x == null) && b.isPrivate == true) {\n var D = w(b);\n var v = D.tohex();\n return hextopem(v, \"DSA PRIVATE KEY\");\n }\n if (C == \"PKCS5PRV\" && n !== undefined && b instanceof n && x !== undefined && x != null && b.isPrivate == true) {\n var D = z(b);\n var v = D.tohex();\n if (m === undefined) {\n m = \"DES-EDE3-CBC\";\n }\n return this.getEncryptedPKCS5PEMFromPrvKeyHex(\"RSA\", v, x, m, j);\n }\n if (C == \"PKCS5PRV\" && q !== undefined && b instanceof q && x !== undefined && x != null && b.isPrivate == true) {\n var D = A(b);\n var v = D.tohex();\n if (m === undefined) {\n m = \"DES-EDE3-CBC\";\n }\n return this.getEncryptedPKCS5PEMFromPrvKeyHex(\"EC\", v, x, m, j);\n }\n if (C == \"PKCS5PRV\" && t !== undefined && b instanceof t && x !== undefined && x != null && b.isPrivate == true) {\n var D = w(b);\n var v = D.tohex();\n if (m === undefined) {\n m = \"DES-EDE3-CBC\";\n }\n return this.getEncryptedPKCS5PEMFromPrvKeyHex(\"DSA\", v, x, m, j);\n }\n var f = function (G, H) {\n if (typeof H == \"string\") {\n return KEYUTIL.getEncryptedPKCS8PEM(G, H);\n } else {\n if (typeof H == \"object\" && aryval(H, \"passcode\") != undefined) {\n var I = JSON.parse(JSON.stringify(H));\n var s = I.passcode;\n delete I.passcode;\n return KEYUTIL.getEncryptedPKCS8PEM(G, s, I);\n }\n }\n };\n if (C == \"PKCS8PRV\" && n != undefined && b instanceof n && b.isPrivate == true) {\n var g = z(b);\n var c = g.tohex();\n var D = l({\n seq: [{\n \"int\": 0\n }, {\n seq: [{\n oid: {\n name: \"rsaEncryption\"\n }\n }, {\n \"null\": true\n }]\n }, {\n octstr: {\n hex: c\n }\n }]\n });\n var v = D.tohex();\n if (x === undefined || x == null) {\n return hextopem(v, \"PRIVATE KEY\");\n } else {\n return f(v, x);\n }\n }\n if (C == \"PKCS8PRV\" && q !== undefined && b instanceof q && b.isPrivate == true) {\n var F = {\n seq: [{\n \"int\": 1\n }, {\n octstr: {\n hex: b.prvKeyHex\n }\n }]\n };\n if (typeof b.pubKeyHex == \"string\") {\n F.seq.push({\n tag: [\"a1\", true, {\n bitstr: {\n hex: \"00\" + b.pubKeyHex\n }\n }]\n });\n }\n var g = new l(F);\n var c = g.tohex();\n var D = l({\n seq: [{\n \"int\": 0\n }, {\n seq: [{\n oid: {\n name: \"ecPublicKey\"\n }\n }, {\n oid: {\n name: b.curveName\n }\n }]\n }, {\n octstr: {\n hex: c\n }\n }]\n });\n var v = D.tohex();\n if (x === undefined || x == null) {\n return hextopem(v, \"PRIVATE KEY\");\n } else {\n return f(v, x);\n }\n }\n if (C == \"PKCS8PRV\" && t !== undefined && b instanceof t && b.isPrivate == true) {\n var g = new e({\n bigint: b.x\n });\n var c = g.tohex();\n var D = l({\n seq: [{\n \"int\": 0\n }, {\n seq: [{\n oid: {\n name: \"dsa\"\n }\n }, {\n seq: [{\n \"int\": {\n bigint: b.p\n }\n }, {\n \"int\": {\n bigint: b.q\n }\n }, {\n \"int\": {\n bigint: b.g\n }\n }]\n }]\n }, {\n octstr: {\n hex: c\n }\n }]\n });\n var v = D.tohex();\n if (x === undefined || x == null) {\n return hextopem(v, \"PRIVATE KEY\");\n } else {\n return f(v, x);\n }\n }\n throw new Error(\"unsupported object nor format\");\n};\nKEYUTIL.getKeyFromCSRPEM = function (b) {\n var a = pemtohex(b, \"CERTIFICATE REQUEST\");\n var c = KEYUTIL.getKeyFromCSRHex(a);\n return c;\n};\nKEYUTIL.getKeyFromCSRHex = function (a) {\n var c = KEYUTIL.parseCSRHex(a);\n var b = KEYUTIL.getKey(c.p8pubkeyhex, null, \"pkcs8pub\");\n return b;\n};\nKEYUTIL.parseCSRHex = function (d) {\n var i = ASN1HEX;\n var f = i.getChildIdx;\n var c = i.getTLV;\n var b = {};\n var g = d;\n if (g.substr(0, 2) != \"30\") {\n throw new Error(\"malformed CSR(code:001)\");\n }\n var e = f(g, 0);\n if (e.length < 1) {\n throw new Error(\"malformed CSR(code:002)\");\n }\n if (g.substr(e[0], 2) != \"30\") {\n throw new Error(\"malformed CSR(code:003)\");\n }\n var a = f(g, e[0]);\n if (a.length < 3) {\n throw new Error(\"malformed CSR(code:004)\");\n }\n b.p8pubkeyhex = c(g, a[2]);\n return b;\n};\nKEYUTIL.getKeyID = function (f) {\n var c = KEYUTIL;\n var e = ASN1HEX;\n if (typeof f === \"string\" && f.indexOf(\"BEGIN \") != -1) {\n f = c.getKey(f);\n }\n var d = pemtohex(c.getPEM(f));\n var b = e.getIdxbyList(d, 0, [1]);\n var a = e.getV(d, b).substring(2);\n return KJUR.crypto.Util.hashHex(a, \"sha1\");\n};\nKEYUTIL.getJWK = function (d, h, g, b, f) {\n var i;\n var k = {};\n var e;\n var c = KJUR.crypto.Util.hashHex;\n if (typeof d == \"string\") {\n i = KEYUTIL.getKey(d);\n if (d.indexOf(\"CERTIFICATE\") != -1) {\n e = pemtohex(d);\n }\n } else {\n if (typeof d == \"object\") {\n if (d instanceof X509) {\n i = d.getPublicKey();\n e = d.hex;\n } else {\n i = d;\n }\n } else {\n throw new Error(\"unsupported keyinfo type\");\n }\n }\n if (i instanceof RSAKey && i.isPrivate) {\n k.kty = \"RSA\";\n k.n = hextob64u(i.n.toString(16));\n k.e = hextob64u(i.e.toString(16));\n k.d = hextob64u(i.d.toString(16));\n k.p = hextob64u(i.p.toString(16));\n k.q = hextob64u(i.q.toString(16));\n k.dp = hextob64u(i.dmp1.toString(16));\n k.dq = hextob64u(i.dmq1.toString(16));\n k.qi = hextob64u(i.coeff.toString(16));\n } else {\n if (i instanceof RSAKey && i.isPublic) {\n k.kty = \"RSA\";\n k.n = hextob64u(i.n.toString(16));\n k.e = hextob64u(i.e.toString(16));\n } else {\n if (i instanceof KJUR.crypto.ECDSA && i.isPrivate) {\n var a = i.getShortNISTPCurveName();\n if (a !== \"P-256\" && a !== \"P-384\" && a !== \"P-521\") {\n throw new Error(\"unsupported curve name for JWT: \" + a);\n }\n var j = i.getPublicKeyXYHex();\n k.kty = \"EC\";\n k.crv = a;\n k.x = hextob64u(j.x);\n k.y = hextob64u(j.y);\n k.d = hextob64u(i.prvKeyHex);\n } else {\n if (i instanceof KJUR.crypto.ECDSA && i.isPublic) {\n var a = i.getShortNISTPCurveName();\n if (a !== \"P-256\" && a !== \"P-384\" && a !== \"P-521\") {\n throw new Error(\"unsupported curve name for JWT: \" + a);\n }\n var j = i.getPublicKeyXYHex();\n k.kty = \"EC\";\n k.crv = a;\n k.x = hextob64u(j.x);\n k.y = hextob64u(j.y);\n }\n }\n }\n }\n if (k.kty == undefined) {\n throw new Error(\"unsupported keyinfo\");\n }\n if (!i.isPrivate && h != true) {\n k.kid = KJUR.jws.JWS.getJWKthumbprint(k);\n }\n if (e != undefined && g != true) {\n k.x5c = [hex2b64(e)];\n }\n if (e != undefined && b != true) {\n k.x5t = b64tob64u(hex2b64(c(e, \"sha1\")));\n }\n if (e != undefined && f != true) {\n k[\"x5t#S256\"] = b64tob64u(hex2b64(c(e, \"sha256\")));\n }\n return k;\n};\nKEYUTIL.getJWKFromKey = function (a) {\n return KEYUTIL.getJWK(a, true, true, true, true);\n};\nRSAKey.getPosArrayOfChildrenFromHex = function (a) {\n return ASN1HEX.getChildIdx(a, 0);\n};\nRSAKey.getHexValueArrayOfChildrenFromHex = function (f) {\n var n = ASN1HEX;\n var i = n.getV;\n var k = RSAKey.getPosArrayOfChildrenFromHex(f);\n var e = i(f, k[0]);\n var j = i(f, k[1]);\n var b = i(f, k[2]);\n var c = i(f, k[3]);\n var h = i(f, k[4]);\n var g = i(f, k[5]);\n var m = i(f, k[6]);\n var l = i(f, k[7]);\n var d = i(f, k[8]);\n var k = new Array();\n k.push(e, j, b, c, h, g, m, l, d);\n return k;\n};\nRSAKey.prototype.readPrivateKeyFromPEMString = function (d) {\n var c = pemtohex(d);\n var b = RSAKey.getHexValueArrayOfChildrenFromHex(c);\n this.setPrivateEx(b[1], b[2], b[3], b[4], b[5], b[6], b[7], b[8]);\n};\nRSAKey.prototype.readPKCS5PrvKeyHex = function (c) {\n var b = RSAKey.getHexValueArrayOfChildrenFromHex(c);\n this.setPrivateEx(b[1], b[2], b[3], b[4], b[5], b[6], b[7], b[8]);\n};\nRSAKey.prototype.readPKCS8PrvKeyHex = function (e) {\n var c, i, k, b, a, f, d, j;\n var m = ASN1HEX;\n var l = m.getVbyListEx;\n if (m.isASN1HEX(e) === false) {\n throw new Error(\"not ASN.1 hex string\");\n }\n try {\n c = l(e, 0, [2, 0, 1], \"02\");\n i = l(e, 0, [2, 0, 2], \"02\");\n k = l(e, 0, [2, 0, 3], \"02\");\n b = l(e, 0, [2, 0, 4], \"02\");\n a = l(e, 0, [2, 0, 5], \"02\");\n f = l(e, 0, [2, 0, 6], \"02\");\n d = l(e, 0, [2, 0, 7], \"02\");\n j = l(e, 0, [2, 0, 8], \"02\");\n } catch (g) {\n throw new Error(\"malformed PKCS#8 plain RSA private key\");\n }\n this.setPrivateEx(c, i, k, b, a, f, d, j);\n};\nRSAKey.prototype.readPKCS5PubKeyHex = function (c) {\n var e = ASN1HEX;\n var b = e.getV;\n if (e.isASN1HEX(c) === false) {\n throw new Error(\"keyHex is not ASN.1 hex string\");\n }\n var a = e.getChildIdx(c, 0);\n if (a.length !== 2 || c.substr(a[0], 2) !== \"02\" || c.substr(a[1], 2) !== \"02\") {\n throw new Error(\"wrong hex for PKCS#5 public key\");\n }\n var f = b(c, a[0]);\n var d = b(c, a[1]);\n this.setPublic(f, d);\n};\nRSAKey.prototype.readPKCS8PubKeyHex = function (b) {\n var c = ASN1HEX;\n if (c.isASN1HEX(b) === false) {\n throw new Error(\"not ASN.1 hex string\");\n }\n if (c.getTLVbyListEx(b, 0, [0, 0]) !== \"06092a864886f70d010101\") {\n throw new Error(\"not PKCS8 RSA public key\");\n }\n var a = c.getTLVbyListEx(b, 0, [1, 0]);\n this.readPKCS5PubKeyHex(a);\n};\nRSAKey.prototype.readCertPubKeyHex = function (b, d) {\n var a, c;\n a = new X509();\n a.readCertHex(b);\n c = a.getPublicKeyHex();\n this.readPKCS8PubKeyHex(c);\n};\nvar _RE_HEXDECONLY = new RegExp(\"[^0-9a-f]\", \"gi\");\nfunction _rsasign_getHexPaddedDigestInfoForString(d, e, a) {\n var b = function (f) {\n return KJUR.crypto.Util.hashString(f, a);\n };\n var c = b(d);\n return KJUR.crypto.Util.getPaddedDigestInfoHex(c, a, e);\n}\nfunction _zeroPaddingOfSignature(e, d) {\n var c = \"\";\n var a = d / 4 - e.length;\n for (var b = 0; b < a; b++) {\n c = c + \"0\";\n }\n return c + e;\n}\nRSAKey.prototype.sign = function (d, a) {\n var b = function (e) {\n return KJUR.crypto.Util.hashString(e, a);\n };\n var c = b(d);\n return this.signWithMessageHash(c, a);\n};\nRSAKey.prototype.signWithMessageHash = function (e, c) {\n var f = KJUR.crypto.Util.getPaddedDigestInfoHex(e, c, this.n.bitLength());\n var b = parseBigInt(f, 16);\n var d = this.doPrivate(b);\n var a = d.toString(16);\n return _zeroPaddingOfSignature(a, this.n.bitLength());\n};\nfunction pss_mgf1_str(c, a, e) {\n var b = \"\",\n d = 0;\n while (b.length < a) {\n b += hextorstr(e(rstrtohex(c + String.fromCharCode.apply(String, [(d & 4278190080) >> 24, (d & 16711680) >> 16, (d & 65280) >> 8, d & 255]))));\n d += 1;\n }\n return b;\n}\nRSAKey.prototype.signPSS = function (e, a, d) {\n var c = function (f) {\n return KJUR.crypto.Util.hashHex(f, a);\n };\n var b = c(rstrtohex(e));\n if (d === undefined) {\n d = -1;\n }\n return this.signWithMessageHashPSS(b, a, d);\n};\nRSAKey.prototype.signWithMessageHashPSS = function (l, a, k) {\n var b = hextorstr(l);\n var g = b.length;\n var m = this.n.bitLength() - 1;\n var c = Math.ceil(m / 8);\n var d;\n var o = function (i) {\n return KJUR.crypto.Util.hashHex(i, a);\n };\n if (k === -1 || k === undefined) {\n k = g;\n } else {\n if (k === -2) {\n k = c - g - 2;\n } else {\n if (k < -2) {\n throw new Error(\"invalid salt length\");\n }\n }\n }\n if (c < g + k + 2) {\n throw new Error(\"data too long\");\n }\n var f = \"\";\n if (k > 0) {\n f = new Array(k);\n new SecureRandom().nextBytes(f);\n f = String.fromCharCode.apply(String, f);\n }\n var n = hextorstr(o(rstrtohex(\"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\" + b + f)));\n var j = [];\n for (d = 0; d < c - k - g - 2; d += 1) {\n j[d] = 0;\n }\n var e = String.fromCharCode.apply(String, j) + \"\\x01\" + f;\n var h = pss_mgf1_str(n, e.length, o);\n var q = [];\n for (d = 0; d < e.length; d += 1) {\n q[d] = e.charCodeAt(d) ^ h.charCodeAt(d);\n }\n var p = 65280 >> 8 * c - m & 255;\n q[0] &= ~p;\n for (d = 0; d < g; d++) {\n q.push(n.charCodeAt(d));\n }\n q.push(188);\n return _zeroPaddingOfSignature(this.doPrivate(new BigInteger(q)).toString(16), this.n.bitLength());\n};\nfunction _rsasign_getDecryptSignatureBI(a, d, c) {\n var b = new RSAKey();\n b.setPublic(d, c);\n var e = b.doPublic(a);\n return e;\n}\nfunction _rsasign_getHexDigestInfoFromSig(a, c, b) {\n var e = _rsasign_getDecryptSignatureBI(a, c, b);\n var d = e.toString(16).replace(/^1f+00/, \"\");\n return d;\n}\nfunction _rsasign_getAlgNameAndHashFromHexDisgestInfo(f) {\n for (var e in KJUR.crypto.Util.DIGESTINFOHEAD) {\n var d = KJUR.crypto.Util.DIGESTINFOHEAD[e];\n var b = d.length;\n if (f.substring(0, b) == d) {\n var c = [e, f.substring(b)];\n return c;\n }\n }\n return [];\n}\nRSAKey.prototype.verify = function (f, l) {\n l = l.toLowerCase();\n if (l.match(/^[0-9a-f]+$/) == null) {\n return false;\n }\n var b = parseBigInt(l, 16);\n var k = this.n.bitLength();\n if (b.bitLength() > k) {\n return false;\n }\n var j = this.doPublic(b);\n var i = j.toString(16);\n if (i.length + 3 != k / 4) {\n return false;\n }\n var e = i.replace(/^1f+00/, \"\");\n var g = _rsasign_getAlgNameAndHashFromHexDisgestInfo(e);\n if (g.length == 0) {\n return false;\n }\n var d = g[0];\n var h = g[1];\n var a = function (m) {\n return KJUR.crypto.Util.hashString(m, d);\n };\n var c = a(f);\n return h == c;\n};\nRSAKey.prototype.verifyWithMessageHash = function (e, a) {\n if (a.length != Math.ceil(this.n.bitLength() / 4)) {\n return false;\n }\n var b = parseBigInt(a, 16);\n if (b.bitLength() > this.n.bitLength()) {\n return 0;\n }\n var h = this.doPublic(b);\n var g = h.toString(16).replace(/^1f+00/, \"\");\n var c = _rsasign_getAlgNameAndHashFromHexDisgestInfo(g);\n if (c.length == 0) {\n return false;\n }\n var d = c[0];\n var f = c[1];\n return f == e;\n};\nRSAKey.prototype.verifyPSS = function (c, b, a, f) {\n var e = function (g) {\n return KJUR.crypto.Util.hashHex(g, a);\n };\n var d = e(rstrtohex(c));\n if (f === undefined) {\n f = -1;\n }\n return this.verifyWithMessageHashPSS(d, b, a, f);\n};\nRSAKey.prototype.verifyWithMessageHashPSS = function (f, s, l, c) {\n if (s.length != Math.ceil(this.n.bitLength() / 4)) {\n return false;\n }\n var k = new BigInteger(s, 16);\n var r = function (i) {\n return KJUR.crypto.Util.hashHex(i, l);\n };\n var j = hextorstr(f);\n var h = j.length;\n var g = this.n.bitLength() - 1;\n var m = Math.ceil(g / 8);\n var q;\n if (c === -1 || c === undefined) {\n c = h;\n } else {\n if (c === -2) {\n c = m - h - 2;\n } else {\n if (c < -2) {\n throw new Error(\"invalid salt length\");\n }\n }\n }\n if (m < h + c + 2) {\n throw new Error(\"data too long\");\n }\n var a = this.doPublic(k).toByteArray();\n for (q = 0; q < a.length; q += 1) {\n a[q] &= 255;\n }\n while (a.length < m) {\n a.unshift(0);\n }\n if (a[m - 1] !== 188) {\n throw new Error(\"encoded message does not end in 0xbc\");\n }\n a = String.fromCharCode.apply(String, a);\n var d = a.substr(0, m - h - 1);\n var e = a.substr(d.length, h);\n var p = 65280 >> 8 * m - g & 255;\n if ((d.charCodeAt(0) & p) !== 0) {\n throw new Error(\"bits beyond keysize not zero\");\n }\n var n = pss_mgf1_str(e, d.length, r);\n var o = [];\n for (q = 0; q < d.length; q += 1) {\n o[q] = d.charCodeAt(q) ^ n.charCodeAt(q);\n }\n o[0] &= ~p;\n var b = m - h - c - 2;\n for (q = 0; q < b; q += 1) {\n if (o[q] !== 0) {\n throw new Error(\"leftmost octets not zero\");\n }\n }\n if (o[b] !== 1) {\n throw new Error(\"0x01 marker not found\");\n }\n return e === hextorstr(r(rstrtohex(\"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\" + j + String.fromCharCode.apply(String, o.slice(-c)))));\n};\nRSAKey.SALT_LEN_HLEN = -1;\nRSAKey.SALT_LEN_MAX = -2;\nRSAKey.SALT_LEN_RECOVER = -2;\nfunction X509(v) {\n var o = ASN1HEX,\n s = o.getChildIdx,\n k = o.getV,\n y = o.dump,\n j = o.parse,\n b = o.getTLV,\n c = o.getVbyList,\n p = o.getVbyListEx,\n a = o.getTLVbyList,\n q = o.getTLVbyListEx,\n l = o.getIdxbyList,\n f = o.getIdxbyListEx,\n n = o.getVidx,\n x = o.getInt,\n u = o.oidname,\n r = o.hextooidstr,\n d = X509,\n w = pemtohex,\n g,\n m = Error;\n try {\n g = KJUR.asn1.x509.AlgorithmIdentifier.PSSNAME2ASN1TLV;\n } catch (t) {}\n this.HEX2STAG = {\n \"0c\": \"utf8\",\n \"13\": \"prn\",\n \"16\": \"ia5\",\n \"1a\": \"vis\",\n \"1e\": \"bmp\"\n };\n this.hex = null;\n this.version = 0;\n this.foffset = 0;\n this.aExtInfo = null;\n this.getVersion = function () {\n if (this.hex === null || this.version !== 0) {\n return this.version;\n }\n var A = a(this.hex, 0, [0, 0]);\n if (A.substr(0, 2) == \"a0\") {\n var B = a(A, 0, [0]);\n var z = x(B, 0);\n if (z < 0 || 2 < z) {\n throw new Error(\"malformed version field\");\n }\n this.version = z + 1;\n return this.version;\n } else {\n this.version = 1;\n this.foffset = -1;\n return 1;\n }\n };\n this.getSerialNumberHex = function () {\n return p(this.hex, 0, [0, 0], \"02\");\n };\n this.getSignatureAlgorithmField = function () {\n var z = q(this.hex, 0, [0, 1]);\n return this.getAlgorithmIdentifierName(z);\n };\n this.getAlgorithmIdentifierName = function (z) {\n for (var A in g) {\n if (z === g[A]) {\n return A;\n }\n }\n return u(p(z, 0, [0], \"06\"));\n };\n this.getIssuer = function (A, z) {\n return this.getX500Name(this.getIssuerHex(), A, z);\n };\n this.getIssuerHex = function () {\n return a(this.hex, 0, [0, 3 + this.foffset], \"30\");\n };\n this.getIssuerString = function () {\n var z = this.getIssuer();\n return z.str;\n };\n this.getSubject = function (A, z) {\n return this.getX500Name(this.getSubjectHex(), A, z);\n };\n this.getSubjectHex = function () {\n return a(this.hex, 0, [0, 5 + this.foffset], \"30\");\n };\n this.getSubjectString = function () {\n var z = this.getSubject();\n return z.str;\n };\n this.getNotBefore = function () {\n var z = c(this.hex, 0, [0, 4 + this.foffset, 0]);\n z = z.replace(/(..)/g, \"%$1\");\n z = decodeURIComponent(z);\n return z;\n };\n this.getNotAfter = function () {\n var z = c(this.hex, 0, [0, 4 + this.foffset, 1]);\n z = z.replace(/(..)/g, \"%$1\");\n z = decodeURIComponent(z);\n return z;\n };\n this.getPublicKeyHex = function () {\n return this.getSPKI();\n };\n this.getSPKI = function () {\n return a(this.hex, 0, [0, 6 + this.foffset], \"30\");\n };\n this.getSPKIValue = function () {\n var z = this.getSPKI();\n if (z == null) {\n return null;\n }\n return c(z, 0, [1], \"03\", true);\n };\n this.getPublicKeyIdx = function () {\n return l(this.hex, 0, [0, 6 + this.foffset], \"30\");\n };\n this.getPublicKeyContentIdx = function () {\n var z = this.getPublicKeyIdx();\n return l(this.hex, z, [1, 0], \"30\");\n };\n this.getPublicKey = function () {\n return KEYUTIL.getKey(this.getPublicKeyHex(), null, \"pkcs8pub\");\n };\n this.getSignatureAlgorithmName = function () {\n var z = a(this.hex, 0, [1], \"30\");\n return this.getAlgorithmIdentifierName(z);\n };\n this.getSignatureValueHex = function () {\n return c(this.hex, 0, [2], \"03\", true);\n };\n this.verifySignature = function (B) {\n var C = this.getSignatureAlgorithmField();\n var z = this.getSignatureValueHex();\n var A = a(this.hex, 0, [0], \"30\");\n var D = new KJUR.crypto.Signature({\n alg: C\n });\n D.init(B);\n D.updateHex(A);\n return D.verify(z);\n };\n this.parseExt = function (I) {\n var B, z, D;\n if (I === undefined) {\n D = this.hex;\n if (this.version !== 3) {\n return -1;\n }\n B = l(D, 0, [0, 7, 0], \"30\");\n z = s(D, B);\n } else {\n D = pemtohex(I);\n var E = l(D, 0, [0, 3, 0, 0], \"06\");\n if (k(D, E) != \"2a864886f70d01090e\") {\n this.aExtInfo = new Array();\n return;\n }\n B = l(D, 0, [0, 3, 0, 1, 0], \"30\");\n z = s(D, B);\n this.hex = D;\n }\n this.aExtInfo = new Array();\n for (var C = 0; C < z.length; C++) {\n var G = {};\n G.critical = false;\n var F = s(D, z[C]);\n var A = 0;\n if (F.length === 3) {\n G.critical = true;\n A = 1;\n }\n G.oid = o.hextooidstr(c(D, z[C], [0], \"06\"));\n var H = l(D, z[C], [1 + A]);\n G.vidx = n(D, H);\n this.aExtInfo.push(G);\n }\n };\n this.getExtInfo = function (B) {\n var z = this.aExtInfo;\n var C = B;\n if (!B.match(/^[0-9.]+$/)) {\n C = KJUR.asn1.x509.OID.name2oid(B);\n }\n if (C === \"\") {\n return undefined;\n }\n for (var A = 0; A < z.length; A++) {\n if (z[A].oid === C) {\n return z[A];\n }\n }\n return undefined;\n };\n this.getCriticalExtV = function (C, z, B) {\n if (z != undefined) {\n return [z, B];\n }\n var A = this.getExtInfo(C);\n if (A == undefined) {\n return [null, null];\n }\n return [b(this.hex, A.vidx), A.critical];\n };\n this.getExtBasicConstraints = function (A, E) {\n if (A === undefined && E === undefined) {\n var C = this.getExtInfo(\"basicConstraints\");\n if (C === undefined) {\n return undefined;\n }\n A = b(this.hex, C.vidx);\n E = C.critical;\n }\n var z = {\n extname: \"basicConstraints\"\n };\n if (E) {\n z.critical = true;\n }\n if (A === \"3000\") {\n return z;\n }\n if (A === \"30030101ff\") {\n z.cA = true;\n return z;\n }\n if (A.substr(0, 12) === \"30060101ff02\") {\n var D = k(A, 10);\n var B = parseInt(D, 16);\n z.cA = true;\n z.pathLen = B;\n return z;\n }\n throw new Error(\"hExtV parse error: \" + A);\n };\n this.getExtNameConstraints = function (I, G) {\n var A = this.getCriticalExtV(\"nameConstraints\", I, G);\n I = A[0];\n G = A[1];\n if (I == null) {\n return undefined;\n }\n var K = {\n extname: \"nameConstraints\"\n };\n if (G) {\n K.critical = true;\n }\n var F = s(I, 0);\n for (var D = 0; D < F.length; D++) {\n var E = [];\n var B = s(I, F[D]);\n for (var C = 0; C < B.length; C++) {\n var H = b(I, B[C]);\n var z = this.getGeneralSubtree(H);\n E.push(z);\n }\n var J = I.substr(F[D], 2);\n if (J == \"a0\") {\n K.permit = E;\n } else {\n if (J == \"a1\") {\n K.exclude = E;\n }\n }\n }\n return K;\n };\n this.getGeneralSubtree = function (F) {\n var D = s(F, 0);\n var C = D.length;\n if (C < 1 || 2 < C) {\n throw new Error(\"wrong num elements\");\n }\n var B = this.getGeneralName(b(F, D[0]));\n for (var E = 1; E < C; E++) {\n var A = F.substr(D[E], 2);\n var z = k(F, D[E]);\n var G = parseInt(z, 16);\n if (A == \"80\") {\n B.min = G;\n }\n if (A == \"81\") {\n B.max = G;\n }\n }\n return B;\n };\n this.getExtKeyUsage = function (A, C) {\n var B = this.getCriticalExtV(\"keyUsage\", A, C);\n A = B[0];\n C = B[1];\n if (A == null) {\n return undefined;\n }\n var z = {\n extname: \"keyUsage\"\n };\n if (C) {\n z.critical = true;\n }\n z.names = this.getExtKeyUsageString(A).split(\",\");\n return z;\n };\n this.getExtKeyUsageBin = function (A) {\n if (A === undefined) {\n var B = this.getExtInfo(\"keyUsage\");\n if (B === undefined) {\n return \"\";\n }\n A = b(this.hex, B.vidx);\n }\n if (A.length != 8 && A.length != 10) {\n throw new Error(\"malformed key usage value: \" + A);\n }\n var z = \"000000000000000\" + parseInt(A.substr(6), 16).toString(2);\n if (A.length == 8) {\n z = z.slice(-8);\n }\n if (A.length == 10) {\n z = z.slice(-16);\n }\n z = z.replace(/0+$/, \"\");\n if (z == \"\") {\n z = \"0\";\n }\n return z;\n };\n this.getExtKeyUsageString = function (B) {\n var C = this.getExtKeyUsageBin(B);\n var z = new Array();\n for (var A = 0; A < C.length; A++) {\n if (C.substr(A, 1) == \"1\") {\n z.push(X509.KEYUSAGE_NAME[A]);\n }\n }\n return z.join(\",\");\n };\n this.getExtSubjectKeyIdentifier = function (B, D) {\n if (B === undefined && D === undefined) {\n var C = this.getExtInfo(\"subjectKeyIdentifier\");\n if (C === undefined) {\n return undefined;\n }\n B = b(this.hex, C.vidx);\n D = C.critical;\n }\n var z = {\n extname: \"subjectKeyIdentifier\"\n };\n if (D) {\n z.critical = true;\n }\n var A = k(B, 0);\n z.kid = {\n hex: A\n };\n return z;\n };\n this.getExtAuthorityKeyIdentifier = function (F, D) {\n if (F === undefined && D === undefined) {\n var z = this.getExtInfo(\"authorityKeyIdentifier\");\n if (z === undefined) {\n return undefined;\n }\n F = b(this.hex, z.vidx);\n D = z.critical;\n }\n var G = {\n extname: \"authorityKeyIdentifier\"\n };\n if (D) {\n G.critical = true;\n }\n var E = s(F, 0);\n for (var A = 0; A < E.length; A++) {\n var H = F.substr(E[A], 2);\n if (H === \"80\") {\n G.kid = {\n hex: k(F, E[A])\n };\n }\n if (H === \"a1\") {\n var C = b(F, E[A]);\n var B = this.getGeneralNames(C);\n G.issuer = B[0][\"dn\"];\n }\n if (H === \"82\") {\n G.sn = {\n hex: k(F, E[A])\n };\n }\n }\n return G;\n };\n this.getExtExtKeyUsage = function (C, E) {\n if (C === undefined && E === undefined) {\n var D = this.getExtInfo(\"extKeyUsage\");\n if (D === undefined) {\n return undefined;\n }\n C = b(this.hex, D.vidx);\n E = D.critical;\n }\n var z = {\n extname: \"extKeyUsage\",\n array: []\n };\n if (E) {\n z.critical = true;\n }\n var A = s(C, 0);\n for (var B = 0; B < A.length; B++) {\n z.array.push(u(k(C, A[B])));\n }\n return z;\n };\n this.getExtExtKeyUsageName = function () {\n var D = this.getExtInfo(\"extKeyUsage\");\n if (D === undefined) {\n return D;\n }\n var z = new Array();\n var C = b(this.hex, D.vidx);\n if (C === \"\") {\n return z;\n }\n var A = s(C, 0);\n for (var B = 0; B < A.length; B++) {\n z.push(u(k(C, A[B])));\n }\n return z;\n };\n this.getExtSubjectAltName = function (A, C) {\n if (A === undefined && C === undefined) {\n var B = this.getExtInfo(\"subjectAltName\");\n if (B === undefined) {\n return undefined;\n }\n A = b(this.hex, B.vidx);\n C = B.critical;\n }\n var z = {\n extname: \"subjectAltName\",\n array: []\n };\n if (C) {\n z.critical = true;\n }\n z.array = this.getGeneralNames(A);\n return z;\n };\n this.getExtIssuerAltName = function (A, C) {\n if (A === undefined && C === undefined) {\n var B = this.getExtInfo(\"issuerAltName\");\n if (B === undefined) {\n return undefined;\n }\n A = b(this.hex, B.vidx);\n C = B.critical;\n }\n var z = {\n extname: \"issuerAltName\",\n array: []\n };\n if (C) {\n z.critical = true;\n }\n z.array = this.getGeneralNames(A);\n return z;\n };\n this.getGeneralNames = function (D) {\n var B = s(D, 0);\n var z = [];\n for (var C = 0; C < B.length; C++) {\n var A = this.getGeneralName(b(D, B[C]));\n if (A !== undefined) {\n z.push(A);\n }\n }\n return z;\n };\n this.getGeneralName = function (A) {\n var z = A.substr(0, 2);\n var C = k(A, 0);\n var B = hextorstr(C);\n if (z == \"81\") {\n return {\n rfc822: B\n };\n }\n if (z == \"82\") {\n return {\n dns: B\n };\n }\n if (z == \"86\") {\n return {\n uri: B\n };\n }\n if (z == \"87\") {\n return {\n ip: hextoip(C)\n };\n }\n if (z == \"a4\") {\n return {\n dn: this.getX500Name(C)\n };\n }\n if (z == \"a0\") {\n return {\n other: this.getOtherName(A)\n };\n }\n return undefined;\n };\n this.getExtSubjectAltName2 = function () {\n var D, G, F;\n var E = this.getExtInfo(\"subjectAltName\");\n if (E === undefined) {\n return E;\n }\n var z = new Array();\n var C = b(this.hex, E.vidx);\n var A = s(C, 0);\n for (var B = 0; B < A.length; B++) {\n F = C.substr(A[B], 2);\n D = k(C, A[B]);\n if (F === \"81\") {\n G = hextoutf8(D);\n z.push([\"MAIL\", G]);\n }\n if (F === \"82\") {\n G = hextoutf8(D);\n z.push([\"DNS\", G]);\n }\n if (F === \"84\") {\n G = X509.hex2dn(D, 0);\n z.push([\"DN\", G]);\n }\n if (F === \"86\") {\n G = hextoutf8(D);\n z.push([\"URI\", G]);\n }\n if (F === \"87\") {\n G = hextoip(D);\n z.push([\"IP\", G]);\n }\n }\n return z;\n };\n this.getExtCRLDistributionPoints = function (D, F) {\n if (D === undefined && F === undefined) {\n var E = this.getExtInfo(\"cRLDistributionPoints\");\n if (E === undefined) {\n return undefined;\n }\n D = b(this.hex, E.vidx);\n F = E.critical;\n }\n var A = {\n extname: \"cRLDistributionPoints\",\n array: []\n };\n if (F) {\n A.critical = true;\n }\n var B = s(D, 0);\n for (var C = 0; C < B.length; C++) {\n var z = b(D, B[C]);\n A.array.push(this.getDistributionPoint(z));\n }\n return A;\n };\n this.getDistributionPoint = function (E) {\n var B = {};\n var C = s(E, 0);\n for (var D = 0; D < C.length; D++) {\n var A = E.substr(C[D], 2);\n var z = b(E, C[D]);\n if (A == \"a0\") {\n B.dpname = this.getDistributionPointName(z);\n }\n }\n return B;\n };\n this.getDistributionPointName = function (E) {\n var B = {};\n var C = s(E, 0);\n for (var D = 0; D < C.length; D++) {\n var A = E.substr(C[D], 2);\n var z = b(E, C[D]);\n if (A == \"a0\") {\n B.full = this.getGeneralNames(z);\n }\n }\n return B;\n };\n this.getExtCRLDistributionPointsURI = function () {\n var D = this.getExtCRLDistributionPoints();\n if (D == undefined) {\n return D;\n }\n var A = D.array;\n var z = [];\n for (var C = 0; C < A.length; C++) {\n try {\n if (A[C].dpname.full[0].uri != undefined) {\n z.push(A[C].dpname.full[0].uri);\n }\n } catch (B) {}\n }\n return z;\n };\n this.getExtAIAInfo = function () {\n var D = this.getExtInfo(\"authorityInfoAccess\");\n if (D === undefined) {\n return D;\n }\n var z = {\n ocsp: [],\n caissuer: []\n };\n var A = s(this.hex, D.vidx);\n for (var B = 0; B < A.length; B++) {\n var E = c(this.hex, A[B], [0], \"06\");\n var C = c(this.hex, A[B], [1], \"86\");\n if (E === \"2b06010505073001\") {\n z.ocsp.push(hextoutf8(C));\n }\n if (E === \"2b06010505073002\") {\n z.caissuer.push(hextoutf8(C));\n }\n }\n return z;\n };\n this.getExtAuthorityInfoAccess = function (G, E) {\n if (G === undefined && E === undefined) {\n var z = this.getExtInfo(\"authorityInfoAccess\");\n if (z === undefined) {\n return undefined;\n }\n G = b(this.hex, z.vidx);\n E = z.critical;\n }\n var H = {\n extname: \"authorityInfoAccess\",\n array: []\n };\n if (E) {\n H.critical = true;\n }\n var F = s(G, 0);\n for (var A = 0; A < F.length; A++) {\n var D = p(G, F[A], [0], \"06\");\n var B = c(G, F[A], [1], \"86\");\n var C = hextoutf8(B);\n if (D == \"2b06010505073001\") {\n H.array.push({\n ocsp: C\n });\n } else {\n if (D == \"2b06010505073002\") {\n H.array.push({\n caissuer: C\n });\n } else {\n throw new Error(\"unknown method: \" + D);\n }\n }\n }\n return H;\n };\n this.getExtCertificatePolicies = function (D, G) {\n if (D === undefined && G === undefined) {\n var F = this.getExtInfo(\"certificatePolicies\");\n if (F === undefined) {\n return undefined;\n }\n D = b(this.hex, F.vidx);\n G = F.critical;\n }\n var z = {\n extname: \"certificatePolicies\",\n array: []\n };\n if (G) {\n z.critical = true;\n }\n var A = s(D, 0);\n for (var B = 0; B < A.length; B++) {\n var E = b(D, A[B]);\n var C = this.getPolicyInformation(E);\n z.array.push(C);\n }\n return z;\n };\n this.getPolicyInformation = function (D) {\n var z = {};\n var F = c(D, 0, [0], \"06\");\n z.policyoid = u(F);\n var G = f(D, 0, [1], \"30\");\n if (G != -1) {\n z.array = [];\n var A = s(D, G);\n for (var B = 0; B < A.length; B++) {\n var E = b(D, A[B]);\n var C = this.getPolicyQualifierInfo(E);\n z.array.push(C);\n }\n }\n return z;\n };\n this.getOtherName = function (B) {\n var z = {};\n var A = s(B, 0);\n var D = c(B, A[0], [], \"06\");\n var C = c(B, A[1], []);\n z.oid = u(D);\n z.value = j(C);\n return z;\n };\n this.getPolicyQualifierInfo = function (A) {\n var z = {};\n var B = c(A, 0, [0], \"06\");\n if (B === \"2b06010505070201\") {\n var D = p(A, 0, [1], \"16\");\n z.cps = hextorstr(D);\n } else {\n if (B === \"2b06010505070202\") {\n var C = a(A, 0, [1], \"30\");\n z.unotice = this.getUserNotice(C);\n }\n }\n return z;\n };\n this.getUserNotice = function (B) {\n var D = null;\n var z = {};\n try {\n D = o.parse(B);\n var C = this._asn1ToUnotice(D);\n return C;\n } catch (A) {\n return undefined;\n }\n };\n this._asn1ToUnotice = function (E) {\n try {\n var z = {};\n var A = aryval(E, \"seq\");\n for (var C = 0; C < A.length; C++) {\n var D = this._asn1ToNoticeRef(A[C]);\n if (D != undefined) {\n z.noticeref = D;\n }\n var F = this.asn1ToDisplayText(A[C]);\n if (F != undefined) {\n z.exptext = F;\n }\n }\n if (Object.keys(z).length > 0) {\n return z;\n }\n return undefined;\n } catch (B) {\n return undefined;\n }\n };\n this._asn1ToNoticeRef = function (F) {\n try {\n var A = {};\n var B = aryval(F, \"seq\");\n for (var D = 0; D < B.length; D++) {\n var E = this._asn1ToNoticeNum(B[D]);\n if (E != undefined) {\n A.noticenum = E;\n }\n var z = this.asn1ToDisplayText(B[D]);\n if (z != undefined) {\n A.org = z;\n }\n }\n if (Object.keys(A).length > 0) {\n return A;\n }\n return undefined;\n } catch (C) {\n return undefined;\n }\n };\n this._asn1ToNoticeNum = function (E) {\n try {\n var A = aryval(E, \"seq\");\n var z = [];\n for (var C = 0; C < A.length; C++) {\n var D = A[C];\n z.push(parseInt(aryval(D, \"int.hex\"), 16));\n }\n return z;\n } catch (B) {\n return undefined;\n }\n };\n this.getDisplayText = function (A) {\n var B = {\n \"0c\": \"utf8\",\n \"16\": \"ia5\",\n \"1a\": \"vis\",\n \"1e\": \"bmp\"\n };\n var z = {};\n z.type = B[A.substr(0, 2)];\n z.str = hextorstr(k(A, 0));\n return z;\n };\n this.asn1ToDisplayText = function (z) {\n if (z.utf8str != undefined) {\n return {\n type: \"utf8\",\n str: z.utf8str.str\n };\n }\n if (z.ia5str != undefined) {\n return {\n type: \"ia5\",\n str: z.ia5str.str\n };\n }\n if (z.visstr != undefined) {\n return {\n type: \"vis\",\n str: z.visstr.str\n };\n }\n if (z.bmpstr != undefined) {\n return {\n type: \"bmp\",\n str: z.bmpstr.str\n };\n }\n if (z.prnstr != undefined) {\n return {\n type: \"prn\",\n str: z.prnstr.str\n };\n }\n return undefined;\n };\n this.getExtPolicyMappings = function (G, E) {\n var z = this.getCriticalExtV(\"policyMappings\", G, E);\n G = z[0];\n E = z[1];\n if (G == null) {\n return undefined;\n }\n var I = {\n extname: \"policyMappings\"\n };\n if (E) {\n I.critical = true;\n }\n try {\n var A = j(G);\n var B = A.seq;\n var F = [];\n for (var C = 0; C < B.length; C++) {\n var H = B[C].seq;\n F.push([H[0].oid, H[1].oid]);\n }\n I.array = F;\n } catch (D) {\n throw new m(\"malformed policyMappings\");\n }\n return I;\n };\n this.getExtPolicyConstraints = function (G, D) {\n var z = this.getCriticalExtV(\"policyConstraints\", G, D);\n G = z[0];\n D = z[1];\n if (G == null) {\n return undefined;\n }\n var H = {\n extname: \"policyConstraints\"\n };\n if (D) {\n H.critical = true;\n }\n var A = j(G);\n try {\n var F = A.seq;\n for (var B = 0; B < F.length; B++) {\n var E = F[B].tag;\n if (E.explicit != false) {\n continue;\n }\n if (E.tag == \"80\") {\n H.reqexp = parseInt(E.hex, 16);\n }\n if (E.tag == \"81\") {\n H.inhibit = parseInt(E.hex, 16);\n }\n }\n } catch (C) {\n return new m(\"malformed policyConstraints value\");\n }\n return H;\n };\n this.getExtInhibitAnyPolicy = function (A, D) {\n var C = this.getCriticalExtV(\"inhibitAnyPolicy\", A, D);\n A = C[0];\n D = C[1];\n if (A == null) {\n return undefined;\n }\n var z = {\n extname: \"inhibitAnyPolicy\"\n };\n if (D) {\n z.critical = true;\n }\n var B = x(A, 0);\n if (B == -1) {\n return new m(\"wrong value\");\n }\n z.skip = B;\n return z;\n };\n this.getExtCRLNumber = function (A, B) {\n var z = {\n extname: \"cRLNumber\"\n };\n if (B) {\n z.critical = true;\n }\n if (A.substr(0, 2) == \"02\") {\n z.num = {\n hex: k(A, 0)\n };\n return z;\n }\n throw new m(\"hExtV parse error: \" + A);\n };\n this.getExtCRLReason = function (A, B) {\n var z = {\n extname: \"cRLReason\"\n };\n if (B) {\n z.critical = true;\n }\n if (A.substr(0, 2) == \"0a\") {\n z.code = parseInt(k(A, 0), 16);\n return z;\n }\n throw new Error(\"hExtV parse error: \" + A);\n };\n this.getExtOcspNonce = function (A, C) {\n var z = {\n extname: \"ocspNonce\"\n };\n if (C) {\n z.critical = true;\n }\n var B = k(A, 0);\n z.hex = B;\n return z;\n };\n this.getExtOcspNoCheck = function (A, B) {\n var z = {\n extname: \"ocspNoCheck\"\n };\n if (B) {\n z.critical = true;\n }\n return z;\n };\n this.getExtAdobeTimeStamp = function (C, F) {\n if (C === undefined && F === undefined) {\n var E = this.getExtInfo(\"adobeTimeStamp\");\n if (E === undefined) {\n return undefined;\n }\n C = b(this.hex, E.vidx);\n F = E.critical;\n }\n var z = {\n extname: \"adobeTimeStamp\"\n };\n if (F) {\n z.critical = true;\n }\n var B = s(C, 0);\n if (B.length > 1) {\n var G = b(C, B[1]);\n var A = this.getGeneralName(G);\n if (A.uri != undefined) {\n z.uri = A.uri;\n }\n }\n if (B.length > 2) {\n var D = b(C, B[2]);\n if (D == \"0101ff\") {\n z.reqauth = true;\n }\n if (D == \"010100\") {\n z.reqauth = false;\n }\n }\n return z;\n };\n this.getExtSubjectDirectoryAttributes = function (I, H) {\n if (I === undefined && H === undefined) {\n var B = this.getExtInfo(\"subjectDirectoryAttributes\");\n if (B === undefined) {\n return undefined;\n }\n I = b(this.hex, B.vidx);\n H = B.critical;\n }\n var J = {\n extname: \"subjectDirectoryAttributes\"\n };\n if (H) {\n J.critical = true;\n }\n try {\n var z = j(I);\n var D = [];\n for (var E = 0; E < z.seq.length; E++) {\n var A = z.seq[E];\n var C = aryval(A, \"seq.0.oid\");\n var F = aryval(A, \"seq.1.set\");\n if (C == undefined || F == undefined) {\n throw \"error\";\n }\n D.push({\n attr: C,\n array: F\n });\n }\n J.array = D;\n return J;\n } catch (G) {\n throw new Error(\"malformed subjectDirectoryAttributes extension value\");\n }\n };\n var e = function (E) {\n var z = {};\n try {\n var B = E.seq[0].oid;\n var D = KJUR.asn1.x509.OID.name2oid(B);\n z.type = KJUR.asn1.x509.OID.oid2atype(D);\n var A = E.seq[1];\n if (A.utf8str != undefined) {\n z.ds = \"utf8\";\n z.value = A.utf8str.str;\n } else {\n if (A.numstr != undefined) {\n z.ds = \"num\";\n z.value = A.numstr.str;\n } else {\n if (A.telstr != undefined) {\n z.ds = \"tel\";\n z.value = A.telstr.str;\n } else {\n if (A.prnstr != undefined) {\n z.ds = \"prn\";\n z.value = A.prnstr.str;\n } else {\n if (A.ia5str != undefined) {\n z.ds = \"ia5\";\n z.value = A.ia5str.str;\n } else {\n if (A.visstr != undefined) {\n z.ds = \"vis\";\n z.value = A.visstr.str;\n } else {\n if (A.bmpstr != undefined) {\n z.ds = \"bmp\";\n z.value = A.bmpstr.str;\n } else {\n throw \"error\";\n }\n }\n }\n }\n }\n }\n }\n return z;\n } catch (C) {\n throw new Erorr(\"improper ASN.1 parsed AttrTypeAndValue\");\n }\n };\n var i = function (A) {\n try {\n return A.set.map(function (B) {\n return e(B);\n });\n } catch (z) {\n throw new Error(\"improper ASN.1 parsed RDN: \" + z);\n }\n };\n var h = function (A) {\n try {\n return A.seq.map(function (B) {\n return i(B);\n });\n } catch (z) {\n throw new Error(\"improper ASN.1 parsed X500Name: \" + z);\n }\n };\n this.getX500NameRule = function (z) {\n var G = true;\n var K = true;\n var J = false;\n var A = \"\";\n var D = \"\";\n var M = null;\n var H = [];\n for (var C = 0; C < z.length; C++) {\n var E = z[C];\n for (var B = 0; B < E.length; B++) {\n H.push(E[B]);\n }\n }\n for (var C = 0; C < H.length; C++) {\n var L = H[C];\n var N = L.ds;\n var I = L.value;\n var F = L.type;\n A += \":\" + N;\n if (N != \"prn\" && N != \"utf8\" && N != \"ia5\") {\n return \"mixed\";\n }\n if (N == \"ia5\") {\n if (F != \"CN\") {\n return \"mixed\";\n } else {\n if (!KJUR.lang.String.isMail(I)) {\n return \"mixed\";\n } else {\n continue;\n }\n }\n }\n if (F == \"C\") {\n if (N == \"prn\") {\n continue;\n } else {\n return \"mixed\";\n }\n }\n D += \":\" + N;\n if (M == null) {\n M = N;\n } else {\n if (M !== N) {\n return \"mixed\";\n }\n }\n }\n if (M == null) {\n return \"prn\";\n } else {\n return M;\n }\n };\n this.getAttrTypeAndValue = function (z) {\n var A = j(z);\n return e(A);\n };\n this.getRDN = function (z) {\n var A = j(z);\n return i(A);\n };\n this.getX500NameArray = function (z) {\n var A = j(z);\n return h(A);\n };\n this.getX500Name = function (C, E, D) {\n var A = this.getX500NameArray(C);\n var B = this.dnarraytostr(A);\n var z = {\n str: B\n };\n z.array = A;\n if (D == true) {\n z.hex = C;\n }\n if (E == true) {\n z.canon = this.c14nRDNArray(A);\n }\n return z;\n };\n this.readCertPEM = function (z) {\n this.readCertHex(w(z));\n };\n this.readCertHex = function (z) {\n this.hex = z;\n this.getVersion();\n try {\n l(this.hex, 0, [0, 7], \"a3\");\n this.parseExt();\n } catch (A) {}\n };\n this.getParam = function (A) {\n var z = {};\n if (A == undefined) {\n A = {};\n }\n z.version = this.getVersion();\n z.serial = {\n hex: this.getSerialNumberHex()\n };\n z.sigalg = this.getSignatureAlgorithmField();\n z.issuer = this.getIssuer(A.dncanon, A.dnhex);\n z.notbefore = this.getNotBefore();\n z.notafter = this.getNotAfter();\n z.subject = this.getSubject(A.dncanon, A.dnhex);\n z.sbjpubkey = hextopem(this.getPublicKeyHex(), \"PUBLIC KEY\");\n if (this.aExtInfo != undefined && this.aExtInfo.length > 0) {\n z.ext = this.getExtParamArray();\n }\n z.sighex = this.getSignatureValueHex();\n if (A.tbshex == true) {\n z.tbshex = a(this.hex, 0, [0]);\n }\n if (A.nodnarray == true) {\n delete z.issuer.array;\n delete z.subject.array;\n }\n return z;\n };\n this.getExtParamArray = function (A) {\n if (A == undefined) {\n var C = f(this.hex, 0, [0, \"[3]\"]);\n if (C != -1) {\n A = q(this.hex, 0, [0, \"[3]\", 0], \"30\");\n }\n }\n var z = [];\n var B = s(A, 0);\n for (var D = 0; D < B.length; D++) {\n var F = b(A, B[D]);\n var E = this.getExtParam(F);\n if (E != null) {\n z.push(E);\n }\n }\n return z;\n };\n this.getExtParam = function (A) {\n var I = {};\n var C = s(A, 0);\n var E = C.length;\n if (E != 2 && E != 3) {\n throw new Error(\"wrong number elements in Extension: \" + E + \" \" + A);\n }\n var B = r(c(A, 0, [0], \"06\"));\n var G = false;\n if (E == 3 && a(A, 0, [1]) == \"0101ff\") {\n G = true;\n }\n var H = a(A, 0, [E - 1, 0]);\n var F = undefined;\n if (B == \"2.5.29.14\") {\n F = this.getExtSubjectKeyIdentifier(H, G);\n } else {\n if (B == \"2.5.29.15\") {\n F = this.getExtKeyUsage(H, G);\n } else {\n if (B == \"2.5.29.17\") {\n F = this.getExtSubjectAltName(H, G);\n } else {\n if (B == \"2.5.29.18\") {\n F = this.getExtIssuerAltName(H, G);\n } else {\n if (B == \"2.5.29.19\") {\n F = this.getExtBasicConstraints(H, G);\n } else {\n if (B == \"2.5.29.30\") {\n F = this.getExtNameConstraints(H, G);\n } else {\n if (B == \"2.5.29.31\") {\n F = this.getExtCRLDistributionPoints(H, G);\n } else {\n if (B == \"2.5.29.32\") {\n F = this.getExtCertificatePolicies(H, G);\n } else {\n if (B == \"2.5.29.33\") {\n F = this.getExtPolicyMappings(H, G);\n } else {\n if (B == \"2.5.29.35\") {\n F = this.getExtAuthorityKeyIdentifier(H, G);\n } else {\n if (B == \"2.5.29.36\") {\n F = this.getExtPolicyConstraints(H, G);\n } else {\n if (B == \"2.5.29.37\") {\n F = this.getExtExtKeyUsage(H, G);\n } else {\n if (B == \"2.5.29.54\") {\n F = this.getExtInhibitAnyPolicy(H, G);\n } else {\n if (B == \"1.3.6.1.5.5.7.1.1\") {\n F = this.getExtAuthorityInfoAccess(H, G);\n } else {\n if (B == \"2.5.29.20\") {\n F = this.getExtCRLNumber(H, G);\n } else {\n if (B == \"2.5.29.21\") {\n F = this.getExtCRLReason(H, G);\n } else {\n if (B == \"2.5.29.9\") {\n F = this.getExtSubjectDirectoryAttributes(H, G);\n } else {\n if (B == \"1.3.6.1.5.5.7.48.1.2\") {\n F = this.getExtOcspNonce(H, G);\n } else {\n if (B == \"1.3.6.1.5.5.7.48.1.5\") {\n F = this.getExtOcspNoCheck(H, G);\n } else {\n if (B == \"1.2.840.113583.1.1.9.1\") {\n F = this.getExtAdobeTimeStamp(H, G);\n } else {\n if (X509.EXT_PARSER[B] != undefined) {\n F = X509.EXT_PARSER[B](B, G, H);\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n if (F != undefined) {\n return F;\n }\n var z = {\n extname: B,\n extn: H\n };\n try {\n z.extn = j(H);\n } catch (D) {}\n if (G) {\n z.critical = true;\n }\n return z;\n };\n this.findExt = function (A, B) {\n for (var z = 0; z < A.length; z++) {\n if (A[z].extname == B) {\n return A[z];\n }\n }\n return null;\n };\n this.updateExtCDPFullURI = function (D, z) {\n var C = this.findExt(D, \"cRLDistributionPoints\");\n if (C == null) {\n return;\n }\n if (C.array == undefined) {\n return;\n }\n var F = C.array;\n for (var B = 0; B < F.length; B++) {\n if (F[B].dpname == undefined) {\n continue;\n }\n if (F[B].dpname.full == undefined) {\n continue;\n }\n var G = F[B].dpname.full;\n for (var A = 0; A < G.length; A++) {\n var E = G[B];\n if (E.uri == undefined) {\n continue;\n }\n E.uri = z;\n }\n }\n };\n this.updateExtAIAOCSP = function (D, A) {\n var C = this.findExt(D, \"authorityInfoAccess\");\n if (C == null) {\n return;\n }\n if (C.array == undefined) {\n return;\n }\n var z = C.array;\n for (var B = 0; B < z.length; B++) {\n if (z[B].ocsp != undefined) {\n z[B].ocsp = A;\n }\n }\n };\n this.updateExtAIACAIssuer = function (D, A) {\n var C = this.findExt(D, \"authorityInfoAccess\");\n if (C == null) {\n return;\n }\n if (C.array == undefined) {\n return;\n }\n var z = C.array;\n for (var B = 0; B < z.length; B++) {\n if (z[B].caissuer != undefined) {\n z[B].caissuer = A;\n }\n }\n };\n this.dnarraytostr = function (B) {\n function z(C) {\n return C.map(function (D) {\n return A(D).replace(/\\+/, \"\\\\+\");\n }).join(\"+\");\n }\n function A(C) {\n return C.type + \"=\" + C.value;\n }\n return \"/\" + B.map(function (C) {\n return z(C).replace(/\\//, \"\\\\/\");\n }).join(\"/\");\n };\n this.setCanonicalizedDN = function (A) {\n var C;\n if (A.str != undefined && A.array == undefined) {\n var B = new KJUR.asn1.x509.X500Name({\n str: A.str\n });\n var z = B.tohex();\n C = this.getX500NameArray(z);\n } else {\n C = A.array;\n }\n if (A.canon == undefined) {\n A.canon = this.c14nRDNArray(C);\n }\n };\n this.c14nRDNArray = function (G) {\n var A = [];\n for (var C = 0; C < G.length; C++) {\n var E = G[C];\n var z = [];\n for (var B = 0; B < E.length; B++) {\n var D = E[B];\n var F = D.value;\n F = F.replace(/^\\s*/, \"\");\n F = F.replace(/\\s*$/, \"\");\n F = F.replace(/\\s+/g, \" \");\n F = F.toLowerCase();\n z.push(D.type.toLowerCase() + \"=\" + F);\n }\n A.push(z.join(\"+\"));\n }\n return \"/\" + A.join(\"/\");\n };\n this.getInfo = function () {\n var A = function (W) {\n var ac = \"\";\n var U = \" \";\n var Y = \"\\n\";\n var Z = W.array;\n for (var X = 0; X < Z.length; X++) {\n var V = Z[X];\n if (V.dn != undefined) {\n ac += U + \"dn: \" + V.dn.str + Y;\n }\n if (V.ip != undefined) {\n ac += U + \"ip: \" + V.ip + Y;\n }\n if (V.rfc822 != undefined) {\n ac += U + \"rfc822: \" + V.rfc822 + Y;\n }\n if (V.dns != undefined) {\n ac += U + \"dns: \" + V.dns + Y;\n }\n if (V.uri != undefined) {\n ac += U + \"uri: \" + V.uri + Y;\n }\n if (V.other != undefined) {\n var ab = V.other.oid;\n var aa = JSON.stringify(V.other.value).replace(/\\\"/g, \"\");\n ac += U + \"other: \" + ab + \"=\" + aa + Y;\n }\n }\n ac = ac.replace(/\\n$/, \"\");\n return ac;\n };\n var H = function (aa) {\n var Y = \"\";\n var U = aa.array;\n for (var X = 0; X < U.length; X++) {\n var Z = U[X];\n Y += \" policy oid: \" + Z.policyoid + \"\\n\";\n if (Z.array === undefined) {\n continue;\n }\n for (var W = 0; W < Z.array.length; W++) {\n var V = Z.array[W];\n if (V.cps !== undefined) {\n Y += \" cps: \" + V.cps + \"\\n\";\n }\n }\n }\n return Y;\n };\n var K = function (Y) {\n var X = \"\";\n var U = Y.array;\n for (var W = 0; W < U.length; W++) {\n var Z = U[W];\n try {\n if (Z.dpname.full[0].uri !== undefined) {\n X += \" \" + Z.dpname.full[0].uri + \"\\n\";\n }\n } catch (V) {}\n try {\n if (Z.dname.full[0].dn.hex !== undefined) {\n X += \" \" + X509.hex2dn(Z.dpname.full[0].dn.hex) + \"\\n\";\n }\n } catch (V) {}\n }\n return X;\n };\n var I = function (Y) {\n var X = \"\";\n var U = Y.array;\n for (var V = 0; V < U.length; V++) {\n var W = U[V];\n if (W.caissuer !== undefined) {\n X += \" caissuer: \" + W.caissuer + \"\\n\";\n }\n if (W.ocsp !== undefined) {\n X += \" ocsp: \" + W.ocsp + \"\\n\";\n }\n }\n return X;\n };\n var B = X509;\n var M, L, T;\n M = \"Basic Fields\\n\";\n M += \" serial number: \" + this.getSerialNumberHex() + \"\\n\";\n M += \" signature algorithm: \" + this.getSignatureAlgorithmField() + \"\\n\";\n M += \" issuer: \" + this.getIssuerString() + \"\\n\";\n M += \" notBefore: \" + this.getNotBefore() + \"\\n\";\n M += \" notAfter: \" + this.getNotAfter() + \"\\n\";\n M += \" subject: \" + this.getSubjectString() + \"\\n\";\n M += \" subject public key info: \\n\";\n L = this.getPublicKey();\n M += \" key algorithm: \" + L.type + \"\\n\";\n if (L.type === \"RSA\") {\n M += \" n=\" + hextoposhex(L.n.toString(16)).substr(0, 16) + \"...\\n\";\n M += \" e=\" + hextoposhex(L.e.toString(16)) + \"\\n\";\n }\n T = this.aExtInfo;\n if (T !== undefined && T !== null) {\n M += \"X509v3 Extensions:\\n\";\n for (var P = 0; P < T.length; P++) {\n var R = T[P];\n var z = KJUR.asn1.x509.OID.oid2name(R.oid);\n if (z === \"\") {\n z = R.oid;\n }\n var O = \"\";\n if (R.critical === true) {\n O = \"CRITICAL\";\n }\n M += \" \" + z + \" \" + O + \":\\n\";\n if (z === \"basicConstraints\") {\n var C = this.getExtBasicConstraints();\n if (C.cA === undefined) {\n M += \" {}\\n\";\n } else {\n M += \" cA=true\";\n if (C.pathLen !== undefined) {\n M += \", pathLen=\" + C.pathLen;\n }\n M += \"\\n\";\n }\n } else {\n if (z == \"policyMappings\") {\n var S = this.getExtPolicyMappings().array;\n var G = S.map(function (U) {\n var V = U;\n return V[0] + \":\" + V[1];\n }).join(\", \");\n M += \" \" + G + \"\\n\";\n } else {\n if (z == \"policyConstraints\") {\n var N = this.getExtPolicyConstraints();\n M += \" \";\n if (N.reqexp != undefined) {\n M += \" reqexp=\" + N.reqexp;\n }\n if (N.inhibit != undefined) {\n M += \" inhibit=\" + N.inhibit;\n }\n M += \"\\n\";\n } else {\n if (z == \"inhibitAnyPolicy\") {\n var N = this.getExtInhibitAnyPolicy();\n M += \" skip=\" + N.skip + \"\\n\";\n } else {\n if (z == \"keyUsage\") {\n M += \" \" + this.getExtKeyUsageString() + \"\\n\";\n } else {\n if (z == \"subjectKeyIdentifier\") {\n M += \" \" + this.getExtSubjectKeyIdentifier().kid.hex + \"\\n\";\n } else {\n if (z == \"authorityKeyIdentifier\") {\n var D = this.getExtAuthorityKeyIdentifier();\n if (D.kid !== undefined) {\n M += \" kid=\" + D.kid.hex + \"\\n\";\n }\n } else {\n if (z == \"extKeyUsage\") {\n var Q = this.getExtExtKeyUsage().array;\n M += \" \" + Q.join(\", \") + \"\\n\";\n } else {\n if (z == \"subjectAltName\") {\n var E = A(this.getExtSubjectAltName());\n M += E + \"\\n\";\n } else {\n if (z == \"cRLDistributionPoints\") {\n var J = this.getExtCRLDistributionPoints();\n M += K(J);\n } else {\n if (z == \"authorityInfoAccess\") {\n var F = this.getExtAuthorityInfoAccess();\n M += I(F);\n } else {\n if (z == \"certificatePolicies\") {\n M += H(this.getExtCertificatePolicies());\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n M += \"signature algorithm: \" + this.getSignatureAlgorithmName() + \"\\n\";\n M += \"signature: \" + this.getSignatureValueHex().substr(0, 16) + \"...\\n\";\n return M;\n };\n if (typeof v == \"string\") {\n if (v.indexOf(\"-----BEGIN\") != -1) {\n this.readCertPEM(v);\n } else {\n if (KJUR.lang.String.isHex(v)) {\n this.readCertHex(v);\n }\n }\n }\n}\nX509.EXT_PARSER = {};\nX509.registExtParser = function (b, a) {\n X509.EXT_PARSER[b] = a;\n};\nX509.hex2dn = function (e, b) {\n if (b === undefined) {\n b = 0;\n }\n var a = new X509();\n var c = ASN1HEX.getTLV(e, b);\n var d = a.getX500Name(e);\n return d.str;\n};\nX509.hex2rdn = function (f, b) {\n if (b === undefined) {\n b = 0;\n }\n if (f.substr(b, 2) !== \"31\") {\n throw new Error(\"malformed RDN\");\n }\n var c = new Array();\n var d = ASN1HEX.getChildIdx(f, b);\n for (var e = 0; e < d.length; e++) {\n c.push(X509.hex2attrTypeValue(f, d[e]));\n }\n c = c.map(function (a) {\n return a.replace(\"+\", \"\\\\+\");\n });\n return c.join(\"+\");\n};\nX509.hex2attrTypeValue = function (d, i) {\n var j = ASN1HEX;\n var h = j.getV;\n if (i === undefined) {\n i = 0;\n }\n if (d.substr(i, 2) !== \"30\") {\n throw new Error(\"malformed attribute type and value\");\n }\n var g = j.getChildIdx(d, i);\n if (g.length !== 2 || d.substr(g[0], 2) !== \"06\") {\n \"malformed attribute type and value\";\n }\n var b = h(d, g[0]);\n var f = KJUR.asn1.ASN1Util.oidHexToInt(b);\n var e = KJUR.asn1.x509.OID.oid2atype(f);\n var a = h(d, g[1]);\n var c = hextorstr(a);\n return e + \"=\" + c;\n};\nX509.getPublicKeyFromCertHex = function (b) {\n var a = new X509();\n a.readCertHex(b);\n return a.getPublicKey();\n};\nX509.getPublicKeyFromCertPEM = function (b) {\n var a = new X509();\n a.readCertPEM(b);\n return a.getPublicKey();\n};\nX509.getPublicKeyInfoPropOfCertPEM = function (c) {\n var e = ASN1HEX;\n var g = e.getVbyList;\n var b = {};\n var a, f, d;\n b.algparam = null;\n a = new X509();\n a.readCertPEM(c);\n f = a.getPublicKeyHex();\n b.keyhex = g(f, 0, [1], \"03\").substr(2);\n b.algoid = g(f, 0, [0, 0], \"06\");\n if (b.algoid === \"2a8648ce3d0201\") {\n b.algparam = g(f, 0, [0, 1], \"06\");\n }\n return b;\n};\nX509.KEYUSAGE_NAME = [\"digitalSignature\", \"nonRepudiation\", \"keyEncipherment\", \"dataEncipherment\", \"keyAgreement\", \"keyCertSign\", \"cRLSign\", \"encipherOnly\", \"decipherOnly\"];\nvar X509CRL = function (e) {\n var a = KJUR,\n f = a.lang.String.isHex,\n m = ASN1HEX,\n k = m.getV,\n b = m.getTLV,\n h = m.getVbyList,\n c = m.getTLVbyList,\n d = m.getTLVbyListEx,\n i = m.getIdxbyList,\n g = m.getIdxbyListEx,\n l = m.getChildIdx,\n j = new X509();\n this.hex = null;\n this.posSigAlg = null;\n this.posRevCert = null;\n this.parsed = null;\n this._setPos = function () {\n var o = i(this.hex, 0, [0, 0]);\n var n = this.hex.substr(o, 2);\n if (n == \"02\") {\n this.posSigAlg = 1;\n } else {\n if (n == \"30\") {\n this.posSigAlg = 0;\n } else {\n throw new Error(\"malformed 1st item of TBSCertList: \" + n);\n }\n }\n var s = i(this.hex, 0, [0, this.posSigAlg + 3]);\n var r = this.hex.substr(s, 2);\n if (r == \"17\" || r == \"18\") {\n var q, p;\n q = i(this.hex, 0, [0, this.posSigAlg + 4]);\n this.posRevCert = null;\n if (q != -1) {\n p = this.hex.substr(q, 2);\n if (p == \"30\") {\n this.posRevCert = this.posSigAlg + 4;\n }\n }\n } else {\n if (r == \"30\") {\n this.posRevCert = this.posSigAlg + 3;\n } else {\n if (r == \"a0\") {\n this.posRevCert = null;\n } else {\n throw new Error(\"malformed nextUpdate or revCert tag: \" + r);\n }\n }\n }\n };\n this.getVersion = function () {\n if (this.posSigAlg == 0) {\n return null;\n }\n return parseInt(h(this.hex, 0, [0, 0], \"02\"), 16) + 1;\n };\n this.getSignatureAlgorithmField = function () {\n var n = c(this.hex, 0, [0, this.posSigAlg], \"30\");\n return j.getAlgorithmIdentifierName(n);\n };\n this.getIssuer = function () {\n return j.getX500Name(this.getIssuerHex());\n };\n this.getIssuerHex = function () {\n return c(this.hex, 0, [0, this.posSigAlg + 1], \"30\");\n };\n this.getThisUpdate = function () {\n var n = h(this.hex, 0, [0, this.posSigAlg + 2]);\n return result = hextorstr(n);\n };\n this.getNextUpdate = function () {\n var o = i(this.hex, 0, [0, this.posSigAlg + 3]);\n var n = this.hex.substr(o, 2);\n if (n != \"17\" && n != \"18\") {\n return null;\n }\n return hextorstr(k(this.hex, o));\n };\n this.getRevCertArray = function () {\n if (this.posRevCert == null) {\n return null;\n }\n var o = [];\n var n = i(this.hex, 0, [0, this.posRevCert]);\n var p = l(this.hex, n);\n for (var q = 0; q < p.length; q++) {\n var r = b(this.hex, p[q]);\n o.push(this.getRevCert(r));\n }\n return o;\n };\n this.getRevCert = function (p) {\n var o = {};\n var n = l(p, 0);\n o.sn = {\n hex: h(p, 0, [0], \"02\")\n };\n o.date = hextorstr(h(p, 0, [1]));\n if (n.length == 3) {\n o.ext = j.getExtParamArray(c(p, 0, [2]));\n }\n return o;\n };\n this.findRevCert = function (p) {\n var n = new X509(p);\n var o = n.getSerialNumberHex();\n return this.findRevCertBySN(o);\n };\n this.findRevCertBySN = function (o) {\n if (this.parsed == null) {\n this.getParam();\n }\n if (this.parsed.revcert == null) {\n return null;\n }\n var n = this.parsed.revcert;\n for (var p = 0; p < n.length; p++) {\n if (o == n[p].sn.hex) {\n return n[p];\n }\n }\n return null;\n };\n this.getSignatureValueHex = function () {\n return h(this.hex, 0, [2], \"03\", true);\n };\n this.verifySignature = function (o) {\n var p = this.getSignatureAlgorithmField();\n var n = this.getSignatureValueHex();\n var q = c(this.hex, 0, [0], \"30\");\n var r = new KJUR.crypto.Signature({\n alg: p\n });\n r.init(o);\n r.updateHex(q);\n return r.verify(n);\n };\n this.getParam = function (r) {\n var n = {};\n var p = this.getVersion();\n if (p != null) {\n n.version = p;\n }\n n.sigalg = this.getSignatureAlgorithmField();\n n.issuer = this.getIssuer();\n n.thisupdate = this.getThisUpdate();\n var q = this.getNextUpdate();\n if (q != null) {\n n.nextupdate = q;\n }\n var t = this.getRevCertArray();\n if (t != null) {\n n.revcert = t;\n }\n var s = g(this.hex, 0, [0, \"[0]\"]);\n if (s != -1) {\n var o = d(this.hex, 0, [0, \"[0]\", 0]);\n n.ext = j.getExtParamArray(o);\n }\n n.sighex = this.getSignatureValueHex();\n this.parsed = n;\n if (typeof r == \"object\") {\n if (r.tbshex == true) {\n n.tbshex = c(this.hex, 0, [0]);\n }\n if (r.nodnarray == true) {\n delete n.issuer.array;\n }\n }\n return n;\n };\n if (typeof e == \"string\") {\n if (f(e)) {\n this.hex = e;\n } else {\n if (e.match(/-----BEGIN X509 CRL/)) {\n this.hex = pemtohex(e);\n }\n }\n this._setPos();\n }\n};\nif (typeof KJUR == \"undefined\" || !KJUR) {\n KJUR = {};\n}\nif (typeof KJUR.jws == \"undefined\" || !KJUR.jws) {\n KJUR.jws = {};\n}\nKJUR.jws.JWS = function () {\n var b = KJUR,\n a = b.jws.JWS,\n c = a.isSafeJSONString;\n this.parseJWS = function (g, j) {\n if (this.parsedJWS !== undefined && (j || this.parsedJWS.sigvalH !== undefined)) {\n return;\n }\n var i = g.match(/^([^.]+)\\.([^.]+)\\.([^.]+)$/);\n if (i == null) {\n throw \"JWS signature is not a form of 'Head.Payload.SigValue'.\";\n }\n var k = i[1];\n var e = i[2];\n var l = i[3];\n var n = k + \".\" + e;\n this.parsedJWS = {};\n this.parsedJWS.headB64U = k;\n this.parsedJWS.payloadB64U = e;\n this.parsedJWS.sigvalB64U = l;\n this.parsedJWS.si = n;\n if (!j) {\n var h = b64utohex(l);\n var f = parseBigInt(h, 16);\n this.parsedJWS.sigvalH = h;\n this.parsedJWS.sigvalBI = f;\n }\n var d = b64utoutf8(k);\n var m = b64utoutf8(e);\n this.parsedJWS.headS = d;\n this.parsedJWS.payloadS = m;\n if (!c(d, this.parsedJWS, \"headP\")) {\n throw \"malformed JSON string for JWS Head: \" + d;\n }\n };\n};\nKJUR.jws.JWS.sign = function (j, w, z, A, a) {\n var x = KJUR,\n n = x.jws,\n r = n.JWS,\n h = r.readSafeJSONString,\n q = r.isSafeJSONString,\n d = x.crypto,\n l = d.ECDSA,\n p = d.Mac,\n c = d.Signature,\n u = JSON;\n var t, k, o;\n if (typeof w != \"string\" && typeof w != \"object\") {\n throw \"spHeader must be JSON string or object: \" + w;\n }\n if (typeof w == \"object\") {\n k = w;\n t = u.stringify(k);\n }\n if (typeof w == \"string\") {\n t = w;\n if (!q(t)) {\n throw \"JWS Head is not safe JSON string: \" + t;\n }\n k = h(t);\n }\n o = z;\n if (typeof z == \"object\") {\n o = u.stringify(z);\n }\n if ((j == \"\" || j == null) && k.alg !== undefined) {\n j = k.alg;\n }\n if (j != \"\" && j != null && k.alg === undefined) {\n k.alg = j;\n t = u.stringify(k);\n }\n if (j !== k.alg) {\n throw \"alg and sHeader.alg doesn't match: \" + j + \"!=\" + k.alg;\n }\n var s = null;\n if (r.jwsalg2sigalg[j] === undefined) {\n throw \"unsupported alg name: \" + j;\n } else {\n s = r.jwsalg2sigalg[j];\n }\n var e = utf8tob64u(t);\n var m = utf8tob64u(o);\n var b = e + \".\" + m;\n var y = \"\";\n if (s.substr(0, 4) == \"Hmac\") {\n if (A === undefined) {\n throw \"mac key shall be specified for HS* alg\";\n }\n var i = new p({\n alg: s,\n prov: \"cryptojs\",\n pass: A\n });\n i.updateString(b);\n y = i.doFinal();\n } else {\n if (s.indexOf(\"withECDSA\") != -1) {\n var f = new c({\n alg: s\n });\n f.init(A, a);\n f.updateString(b);\n var g = f.sign();\n y = KJUR.crypto.ECDSA.asn1SigToConcatSig(g);\n } else {\n if (s != \"none\") {\n var f = new c({\n alg: s\n });\n f.init(A, a);\n f.updateString(b);\n y = f.sign();\n }\n }\n }\n var v = hextob64u(y);\n return b + \".\" + v;\n};\nKJUR.jws.JWS.verify = function (w, B, n) {\n var x = KJUR,\n q = x.jws,\n t = q.JWS,\n i = t.readSafeJSONString,\n e = x.crypto,\n p = e.ECDSA,\n s = e.Mac,\n d = e.Signature,\n m;\n if (typeof RSAKey !== undefined) {\n m = RSAKey;\n }\n if (!isBase64URLDot(w)) {\n return false;\n }\n var y = w.split(\".\");\n if (y.length !== 3) {\n return false;\n }\n var f = y[0];\n var r = y[1];\n var c = f + \".\" + r;\n var A = b64utohex(y[2]);\n var l = i(b64utoutf8(y[0]));\n var k = null;\n var z = null;\n if (l.alg === undefined) {\n throw \"algorithm not specified in header\";\n } else {\n k = l.alg;\n z = k.substr(0, 2);\n }\n if (n != null && Object.prototype.toString.call(n) === \"[object Array]\" && n.length > 0) {\n var b = \":\" + n.join(\":\") + \":\";\n if (b.indexOf(\":\" + k + \":\") == -1) {\n throw \"algorithm '\" + k + \"' not accepted in the list\";\n }\n }\n if (k != \"none\" && B === null) {\n throw \"key shall be specified to verify.\";\n }\n if (typeof B == \"string\" && B.indexOf(\"-----BEGIN \") != -1) {\n B = KEYUTIL.getKey(B);\n }\n if (z == \"RS\" || z == \"PS\") {\n if (!(B instanceof m)) {\n throw \"key shall be a RSAKey obj for RS* and PS* algs\";\n }\n }\n if (z == \"ES\") {\n if (!(B instanceof p)) {\n throw \"key shall be a ECDSA obj for ES* algs\";\n }\n }\n if (k == \"none\") {}\n var u = null;\n if (t.jwsalg2sigalg[l.alg] === undefined) {\n throw \"unsupported alg name: \" + k;\n } else {\n u = t.jwsalg2sigalg[k];\n }\n if (u == \"none\") {\n throw \"not supported\";\n } else {\n if (u.substr(0, 4) == \"Hmac\") {\n var o = null;\n if (B === undefined) {\n throw \"hexadecimal key shall be specified for HMAC\";\n }\n var j = new s({\n alg: u,\n pass: B\n });\n j.updateString(c);\n o = j.doFinal();\n return A == o;\n } else {\n if (u.indexOf(\"withECDSA\") != -1) {\n var h = null;\n try {\n h = p.concatSigToASN1Sig(A);\n } catch (v) {\n return false;\n }\n var g = new d({\n alg: u\n });\n g.init(B);\n g.updateString(c);\n return g.verify(h);\n } else {\n var g = new d({\n alg: u\n });\n g.init(B);\n g.updateString(c);\n return g.verify(A);\n }\n }\n }\n};\nKJUR.jws.JWS.parse = function (g) {\n var c = g.split(\".\");\n var b = {};\n var f, e, d;\n if (c.length != 2 && c.length != 3) {\n throw \"malformed sJWS: wrong number of '.' splitted elements\";\n }\n f = c[0];\n e = c[1];\n if (c.length == 3) {\n d = c[2];\n }\n b.headerObj = KJUR.jws.JWS.readSafeJSONString(b64utoutf8(f));\n b.payloadObj = KJUR.jws.JWS.readSafeJSONString(b64utoutf8(e));\n b.headerPP = JSON.stringify(b.headerObj, null, \" \");\n if (b.payloadObj == null) {\n b.payloadPP = b64utoutf8(e);\n } else {\n b.payloadPP = JSON.stringify(b.payloadObj, null, \" \");\n }\n if (d !== undefined) {\n b.sigHex = b64utohex(d);\n }\n return b;\n};\nKJUR.jws.JWS.verifyJWT = function (e, l, r) {\n var d = KJUR,\n j = d.jws,\n o = j.JWS,\n n = o.readSafeJSONString,\n p = o.inArray,\n f = o.includedArray;\n if (!isBase64URLDot(e)) {\n return false;\n }\n var k = e.split(\".\");\n if (k.length != 3) {\n return false;\n }\n var c = k[0];\n var i = k[1];\n var q = c + \".\" + i;\n var m = b64utohex(k[2]);\n var h = n(b64utoutf8(c));\n var g = n(b64utoutf8(i));\n if (h.alg === undefined) {\n return false;\n }\n if (r.alg === undefined) {\n throw \"acceptField.alg shall be specified\";\n }\n if (!p(h.alg, r.alg)) {\n return false;\n }\n if (g.iss !== undefined && typeof r.iss === \"object\") {\n if (!p(g.iss, r.iss)) {\n return false;\n }\n }\n if (g.sub !== undefined && typeof r.sub === \"object\") {\n if (!p(g.sub, r.sub)) {\n return false;\n }\n }\n if (g.aud !== undefined && typeof r.aud === \"object\") {\n if (typeof g.aud == \"string\") {\n if (!p(g.aud, r.aud)) {\n return false;\n }\n } else {\n if (typeof g.aud == \"object\") {\n if (!f(g.aud, r.aud)) {\n return false;\n }\n }\n }\n }\n var b = j.IntDate.getNow();\n if (r.verifyAt !== undefined && typeof r.verifyAt === \"number\") {\n b = r.verifyAt;\n }\n if (r.gracePeriod === undefined || typeof r.gracePeriod !== \"number\") {\n r.gracePeriod = 0;\n }\n if (g.exp !== undefined && typeof g.exp == \"number\") {\n if (g.exp + r.gracePeriod < b) {\n return false;\n }\n }\n if (g.nbf !== undefined && typeof g.nbf == \"number\") {\n if (b < g.nbf - r.gracePeriod) {\n return false;\n }\n }\n if (g.iat !== undefined && typeof g.iat == \"number\") {\n if (b < g.iat - r.gracePeriod) {\n return false;\n }\n }\n if (g.jti !== undefined && r.jti !== undefined) {\n if (g.jti !== r.jti) {\n return false;\n }\n }\n if (!o.verify(e, l, r.alg)) {\n return false;\n }\n return true;\n};\nKJUR.jws.JWS.includedArray = function (b, a) {\n var c = KJUR.jws.JWS.inArray;\n if (b === null) {\n return false;\n }\n if (typeof b !== \"object\") {\n return false;\n }\n if (typeof b.length !== \"number\") {\n return false;\n }\n for (var d = 0; d < b.length; d++) {\n if (!c(b[d], a)) {\n return false;\n }\n }\n return true;\n};\nKJUR.jws.JWS.inArray = function (d, b) {\n if (b === null) {\n return false;\n }\n if (typeof b !== \"object\") {\n return false;\n }\n if (typeof b.length !== \"number\") {\n return false;\n }\n for (var c = 0; c < b.length; c++) {\n if (b[c] == d) {\n return true;\n }\n }\n return false;\n};\nKJUR.jws.JWS.jwsalg2sigalg = {\n HS256: \"HmacSHA256\",\n HS384: \"HmacSHA384\",\n HS512: \"HmacSHA512\",\n RS256: \"SHA256withRSA\",\n RS384: \"SHA384withRSA\",\n RS512: \"SHA512withRSA\",\n ES256: \"SHA256withECDSA\",\n ES384: \"SHA384withECDSA\",\n ES512: \"SHA512withECDSA\",\n PS256: \"SHA256withRSAandMGF1\",\n PS384: \"SHA384withRSAandMGF1\",\n PS512: \"SHA512withRSAandMGF1\",\n none: \"none\"\n};\nKJUR.jws.JWS.isSafeJSONString = function (c, b, d) {\n var e = null;\n try {\n e = jsonParse(c);\n if (typeof e != \"object\") {\n return 0;\n }\n if (e.constructor === Array) {\n return 0;\n }\n if (b) {\n b[d] = e;\n }\n return 1;\n } catch (a) {\n return 0;\n }\n};\nKJUR.jws.JWS.readSafeJSONString = function (b) {\n var c = null;\n try {\n c = jsonParse(b);\n if (typeof c != \"object\") {\n return null;\n }\n if (c.constructor === Array) {\n return null;\n }\n return c;\n } catch (a) {\n return null;\n }\n};\nKJUR.jws.JWS.getEncodedSignatureValueFromJWS = function (b) {\n var a = b.match(/^[^.]+\\.[^.]+\\.([^.]+)$/);\n if (a == null) {\n throw \"JWS signature is not a form of 'Head.Payload.SigValue'.\";\n }\n return a[1];\n};\nKJUR.jws.JWS.getJWKthumbprint = function (d) {\n if (d.kty !== \"RSA\" && d.kty !== \"EC\" && d.kty !== \"oct\") {\n throw \"unsupported algorithm for JWK Thumprint\";\n }\n var a = \"{\";\n if (d.kty === \"RSA\") {\n if (typeof d.n != \"string\" || typeof d.e != \"string\") {\n throw \"wrong n and e value for RSA key\";\n }\n a += '\"e\":\"' + d.e + '\",';\n a += '\"kty\":\"' + d.kty + '\",';\n a += '\"n\":\"' + d.n + '\"}';\n } else {\n if (d.kty === \"EC\") {\n if (typeof d.crv != \"string\" || typeof d.x != \"string\" || typeof d.y != \"string\") {\n throw \"wrong crv, x and y value for EC key\";\n }\n a += '\"crv\":\"' + d.crv + '\",';\n a += '\"kty\":\"' + d.kty + '\",';\n a += '\"x\":\"' + d.x + '\",';\n a += '\"y\":\"' + d.y + '\"}';\n } else {\n if (d.kty === \"oct\") {\n if (typeof d.k != \"string\") {\n throw \"wrong k value for oct(symmetric) key\";\n }\n a += '\"kty\":\"' + d.kty + '\",';\n a += '\"k\":\"' + d.k + '\"}';\n }\n }\n }\n var b = rstrtohex(a);\n var c = KJUR.crypto.Util.hashHex(b, \"sha256\");\n var e = hextob64u(c);\n return e;\n};\nKJUR.jws.IntDate = {};\nKJUR.jws.IntDate.get = function (c) {\n var b = KJUR.jws.IntDate,\n d = b.getNow,\n a = b.getZulu;\n if (c == \"now\") {\n return d();\n } else {\n if (c == \"now + 1hour\") {\n return d() + 60 * 60;\n } else {\n if (c == \"now + 1day\") {\n return d() + 60 * 60 * 24;\n } else {\n if (c == \"now + 1month\") {\n return d() + 60 * 60 * 24 * 30;\n } else {\n if (c == \"now + 1year\") {\n return d() + 60 * 60 * 24 * 365;\n } else {\n if (c.match(/Z$/)) {\n return a(c);\n } else {\n if (c.match(/^[0-9]+$/)) {\n return parseInt(c);\n }\n }\n }\n }\n }\n }\n }\n throw \"unsupported format: \" + c;\n};\nKJUR.jws.IntDate.getZulu = function (a) {\n return zulutosec(a);\n};\nKJUR.jws.IntDate.getNow = function () {\n var a = ~~(new Date() / 1000);\n return a;\n};\nKJUR.jws.IntDate.intDate2UTCString = function (a) {\n var b = new Date(a * 1000);\n return b.toUTCString();\n};\nKJUR.jws.IntDate.intDate2Zulu = function (e) {\n var i = new Date(e * 1000),\n h = (\"0000\" + i.getUTCFullYear()).slice(-4),\n g = (\"00\" + (i.getUTCMonth() + 1)).slice(-2),\n b = (\"00\" + i.getUTCDate()).slice(-2),\n a = (\"00\" + i.getUTCHours()).slice(-2),\n c = (\"00\" + i.getUTCMinutes()).slice(-2),\n f = (\"00\" + i.getUTCSeconds()).slice(-2);\n return h + g + b + a + c + f + \"Z\";\n};\nif (typeof KJUR == \"undefined\" || !KJUR) {\n KJUR = {};\n}\nif (typeof KJUR.jws == \"undefined\" || !KJUR.jws) {\n KJUR.jws = {};\n}\nKJUR.jws.JWSJS = function () {\n var c = KJUR,\n b = c.jws,\n a = b.JWS,\n d = a.readSafeJSONString;\n this.aHeader = [];\n this.sPayload = \"\";\n this.aSignature = [];\n this.init = function () {\n this.aHeader = [];\n this.sPayload = undefined;\n this.aSignature = [];\n };\n this.initWithJWS = function (f) {\n this.init();\n var e = f.split(\".\");\n if (e.length != 3) {\n throw \"malformed input JWS\";\n }\n this.aHeader.push(e[0]);\n this.sPayload = e[1];\n this.aSignature.push(e[2]);\n };\n this.addSignature = function (e, h, m, k) {\n if (this.sPayload === undefined || this.sPayload === null) {\n throw \"there's no JSON-JS signature to add.\";\n }\n var l = this.aHeader.length;\n if (this.aHeader.length != this.aSignature.length) {\n throw \"aHeader.length != aSignature.length\";\n }\n try {\n var f = KJUR.jws.JWS.sign(e, h, this.sPayload, m, k);\n var j = f.split(\".\");\n var n = j[0];\n var g = j[2];\n this.aHeader.push(j[0]);\n this.aSignature.push(j[2]);\n } catch (i) {\n if (this.aHeader.length > l) {\n this.aHeader.pop();\n }\n if (this.aSignature.length > l) {\n this.aSignature.pop();\n }\n throw \"addSignature failed: \" + i;\n }\n };\n this.verifyAll = function (h) {\n if (this.aHeader.length !== h.length || this.aSignature.length !== h.length) {\n return false;\n }\n for (var g = 0; g < h.length; g++) {\n var f = h[g];\n if (f.length !== 2) {\n return false;\n }\n var e = this.verifyNth(g, f[0], f[1]);\n if (e === false) {\n return false;\n }\n }\n return true;\n };\n this.verifyNth = function (f, j, g) {\n if (this.aHeader.length <= f || this.aSignature.length <= f) {\n return false;\n }\n var h = this.aHeader[f];\n var k = this.aSignature[f];\n var l = h + \".\" + this.sPayload + \".\" + k;\n var e = false;\n try {\n e = a.verify(l, j, g);\n } catch (i) {\n return false;\n }\n return e;\n };\n this.readJWSJS = function (g) {\n if (typeof g === \"string\") {\n var f = d(g);\n if (f == null) {\n throw \"argument is not safe JSON object string\";\n }\n this.aHeader = f.headers;\n this.sPayload = f.payload;\n this.aSignature = f.signatures;\n } else {\n try {\n if (g.headers.length > 0) {\n this.aHeader = g.headers;\n } else {\n throw \"malformed header\";\n }\n if (typeof g.payload === \"string\") {\n this.sPayload = g.payload;\n } else {\n throw \"malformed signatures\";\n }\n if (g.signatures.length > 0) {\n this.aSignature = g.signatures;\n } else {\n throw \"malformed signatures\";\n }\n } catch (e) {\n throw \"malformed JWS-JS JSON object: \" + e;\n }\n }\n };\n this.getJSON = function () {\n return {\n headers: this.aHeader,\n payload: this.sPayload,\n signatures: this.aSignature\n };\n };\n this.isEmpty = function () {\n if (this.aHeader.length == 0) {\n return 1;\n }\n return 0;\n };\n};\nexports.SecureRandom = SecureRandom;\nexports.rng_seed_time = rng_seed_time;\nexports.BigInteger = BigInteger;\nexports.RSAKey = RSAKey;\nexports.ECDSA = KJUR.crypto.ECDSA;\nexports.DSA = KJUR.crypto.DSA;\nexports.Signature = KJUR.crypto.Signature;\nexports.MessageDigest = KJUR.crypto.MessageDigest;\nexports.Mac = KJUR.crypto.Mac;\n//exports.Cipher = KJUR.crypto.Cipher;\nexports.KEYUTIL = KEYUTIL;\nexports.ASN1HEX = ASN1HEX;\nexports.X509 = X509;\nexports.X509CRL = X509CRL;\nexports.CryptoJS = CryptoJS;\n\n// ext/base64.js\nexports.b64tohex = b64tohex;\nexports.b64toBA = b64toBA;\n\n// ext/ec*.js\nexports.ECFieldElementFp = ECFieldElementFp;\nexports.ECPointFp = ECPointFp;\nexports.ECCurveFp = ECCurveFp;\n\n// base64x.js\nexports.stoBA = stoBA;\nexports.BAtos = BAtos;\nexports.BAtohex = BAtohex;\nexports.stohex = stohex;\nexports.stob64 = stob64;\nexports.stob64u = stob64u;\nexports.b64utos = b64utos;\nexports.b64tob64u = b64tob64u;\nexports.b64utob64 = b64utob64;\nexports.hex2b64 = hex2b64;\nexports.hextob64u = hextob64u;\nexports.b64utohex = b64utohex;\nexports.utf8tob64u = utf8tob64u;\nexports.b64utoutf8 = b64utoutf8;\nexports.utf8tob64 = utf8tob64;\nexports.b64toutf8 = b64toutf8;\nexports.utf8tohex = utf8tohex;\nexports.hextoutf8 = hextoutf8;\nexports.hextorstr = hextorstr;\nexports.rstrtohex = rstrtohex;\nexports.hextob64 = hextob64;\nexports.hextob64nl = hextob64nl;\nexports.b64nltohex = b64nltohex;\nexports.hextopem = hextopem;\nexports.pemtohex = pemtohex;\nexports.hextoArrayBuffer = hextoArrayBuffer;\nexports.ArrayBuffertohex = ArrayBuffertohex;\nexports.zulutomsec = zulutomsec;\nexports.msectozulu = msectozulu;\nexports.zulutosec = zulutosec;\nexports.zulutodate = zulutodate;\nexports.datetozulu = datetozulu;\nexports.uricmptohex = uricmptohex;\nexports.hextouricmp = hextouricmp;\nexports.ipv6tohex = ipv6tohex;\nexports.hextoipv6 = hextoipv6;\nexports.hextoip = hextoip;\nexports.iptohex = iptohex;\nexports.ucs2hextoutf8 = ucs2hextoutf8;\nexports.encodeURIComponentAll = encodeURIComponentAll;\nexports.newline_toUnix = newline_toUnix;\nexports.newline_toDos = newline_toDos;\nexports.hextoposhex = hextoposhex;\nexports.intarystrtohex = intarystrtohex;\nexports.strdiffidx = strdiffidx;\nexports.oidtohex = oidtohex;\nexports.hextooid = hextooid;\nexports.strpad = strpad;\nexports.bitstrtoint = bitstrtoint;\nexports.inttobitstr = inttobitstr;\nexports.bitstrtobinstr = bitstrtobinstr;\nexports.binstrtobitstr = binstrtobitstr;\nexports.isBase64URLDot = isBase64URLDot;\nexports.namearraytobinstr = namearraytobinstr;\nexports.extendClass = extendClass;\nexports.foldnl = foldnl;\nexports.b64topem = b64topem;\nexports.pemtob64 = pemtob64;\nexports.timeogen = timetogen;\nexports.aryval = aryval;\nexports.inttohex = inttohex;\nexports.twoscompl = twoscompl;\n\n// name spaces\nexports.KJUR = KJUR;\nexports.crypto = KJUR.crypto;\nexports.asn1 = KJUR.asn1;\nexports.jws = KJUR.jws;\nexports.lang = KJUR.lang;\nexports.VERSION = VERSION;\nexports.VERSION_FULL = VERSION_FULL;","!function (n, e) {\n \"object\" == typeof exports && \"undefined\" != typeof module ? module.exports = e() : \"function\" == typeof define && define.amd ? define(e) : (n = \"undefined\" != typeof globalThis ? globalThis : n || self).dayjs_plugin_localeData = e();\n}(this, function () {\n \"use strict\";\n\n return function (n, e, t) {\n var r = e.prototype,\n o = function (n) {\n return n && (n.indexOf ? n : n.s);\n },\n u = function (n, e, t, r, u) {\n var i = n.name ? n : n.$locale(),\n a = o(i[e]),\n s = o(i[t]),\n f = a || s.map(function (n) {\n return n.slice(0, r);\n });\n if (!u) return f;\n var d = i.weekStart;\n return f.map(function (n, e) {\n return f[(e + (d || 0)) % 7];\n });\n },\n i = function () {\n return t.Ls[t.locale()];\n },\n a = function (n, e) {\n return n.formats[e] || function (n) {\n return n.replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g, function (n, e, t) {\n return e || t.slice(1);\n });\n }(n.formats[e.toUpperCase()]);\n },\n s = function () {\n var n = this;\n return {\n months: function (e) {\n return e ? e.format(\"MMMM\") : u(n, \"months\");\n },\n monthsShort: function (e) {\n return e ? e.format(\"MMM\") : u(n, \"monthsShort\", \"months\", 3);\n },\n firstDayOfWeek: function () {\n return n.$locale().weekStart || 0;\n },\n weekdays: function (e) {\n return e ? e.format(\"dddd\") : u(n, \"weekdays\");\n },\n weekdaysMin: function (e) {\n return e ? e.format(\"dd\") : u(n, \"weekdaysMin\", \"weekdays\", 2);\n },\n weekdaysShort: function (e) {\n return e ? e.format(\"ddd\") : u(n, \"weekdaysShort\", \"weekdays\", 3);\n },\n longDateFormat: function (e) {\n return a(n.$locale(), e);\n },\n meridiem: this.$locale().meridiem,\n ordinal: this.$locale().ordinal\n };\n };\n r.localeData = function () {\n return s.bind(this)();\n }, t.localeData = function () {\n var n = i();\n return {\n firstDayOfWeek: function () {\n return n.weekStart || 0;\n },\n weekdays: function () {\n return t.weekdays();\n },\n weekdaysShort: function () {\n return t.weekdaysShort();\n },\n weekdaysMin: function () {\n return t.weekdaysMin();\n },\n months: function () {\n return t.months();\n },\n monthsShort: function () {\n return t.monthsShort();\n },\n longDateFormat: function (e) {\n return a(n, e);\n },\n meridiem: n.meridiem,\n ordinal: n.ordinal\n };\n }, t.months = function () {\n return u(i(), \"months\");\n }, t.monthsShort = function () {\n return u(i(), \"monthsShort\", \"months\", 3);\n }, t.weekdays = function (n) {\n return u(i(), \"weekdays\", null, null, n);\n }, t.weekdaysShort = function (n) {\n return u(i(), \"weekdaysShort\", \"weekdays\", 3, n);\n }, t.weekdaysMin = function (n) {\n return u(i(), \"weekdaysMin\", \"weekdays\", 2, n);\n };\n };\n});","!function (e, t) {\n \"object\" == typeof exports && \"undefined\" != typeof module ? module.exports = t() : \"function\" == typeof define && define.amd ? define(t) : (e = \"undefined\" != typeof globalThis ? globalThis : e || self).dayjs_plugin_customParseFormat = t();\n}(this, function () {\n \"use strict\";\n\n var e = {\n LTS: \"h:mm:ss A\",\n LT: \"h:mm A\",\n L: \"MM/DD/YYYY\",\n LL: \"MMMM D, YYYY\",\n LLL: \"MMMM D, YYYY h:mm A\",\n LLLL: \"dddd, MMMM D, YYYY h:mm A\"\n },\n t = /(\\[[^[]*\\])|([-_:/.,()\\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,\n n = /\\d/,\n r = /\\d\\d/,\n i = /\\d\\d?/,\n o = /\\d*[^-_:/,()\\s\\d]+/,\n s = {},\n a = function (e) {\n return (e = +e) + (e > 68 ? 1900 : 2e3);\n };\n var f = function (e) {\n return function (t) {\n this[e] = +t;\n };\n },\n h = [/[+-]\\d\\d:?(\\d\\d)?|Z/, function (e) {\n (this.zone || (this.zone = {})).offset = function (e) {\n if (!e) return 0;\n if (\"Z\" === e) return 0;\n var t = e.match(/([+-]|\\d\\d)/g),\n n = 60 * t[1] + (+t[2] || 0);\n return 0 === n ? 0 : \"+\" === t[0] ? -n : n;\n }(e);\n }],\n u = function (e) {\n var t = s[e];\n return t && (t.indexOf ? t : t.s.concat(t.f));\n },\n d = function (e, t) {\n var n,\n r = s.meridiem;\n if (r) {\n for (var i = 1; i <= 24; i += 1) if (e.indexOf(r(i, 0, t)) > -1) {\n n = i > 12;\n break;\n }\n } else n = e === (t ? \"pm\" : \"PM\");\n return n;\n },\n c = {\n A: [o, function (e) {\n this.afternoon = d(e, !1);\n }],\n a: [o, function (e) {\n this.afternoon = d(e, !0);\n }],\n Q: [n, function (e) {\n this.month = 3 * (e - 1) + 1;\n }],\n S: [n, function (e) {\n this.milliseconds = 100 * +e;\n }],\n SS: [r, function (e) {\n this.milliseconds = 10 * +e;\n }],\n SSS: [/\\d{3}/, function (e) {\n this.milliseconds = +e;\n }],\n s: [i, f(\"seconds\")],\n ss: [i, f(\"seconds\")],\n m: [i, f(\"minutes\")],\n mm: [i, f(\"minutes\")],\n H: [i, f(\"hours\")],\n h: [i, f(\"hours\")],\n HH: [i, f(\"hours\")],\n hh: [i, f(\"hours\")],\n D: [i, f(\"day\")],\n DD: [r, f(\"day\")],\n Do: [o, function (e) {\n var t = s.ordinal,\n n = e.match(/\\d+/);\n if (this.day = n[0], t) for (var r = 1; r <= 31; r += 1) t(r).replace(/\\[|\\]/g, \"\") === e && (this.day = r);\n }],\n w: [i, f(\"week\")],\n ww: [r, f(\"week\")],\n M: [i, f(\"month\")],\n MM: [r, f(\"month\")],\n MMM: [o, function (e) {\n var t = u(\"months\"),\n n = (u(\"monthsShort\") || t.map(function (e) {\n return e.slice(0, 3);\n })).indexOf(e) + 1;\n if (n < 1) throw new Error();\n this.month = n % 12 || n;\n }],\n MMMM: [o, function (e) {\n var t = u(\"months\").indexOf(e) + 1;\n if (t < 1) throw new Error();\n this.month = t % 12 || t;\n }],\n Y: [/[+-]?\\d+/, f(\"year\")],\n YY: [r, function (e) {\n this.year = a(e);\n }],\n YYYY: [/\\d{4}/, f(\"year\")],\n Z: h,\n ZZ: h\n };\n function l(n) {\n var r, i;\n r = n, i = s && s.formats;\n for (var o = (n = r.replace(/(\\[[^\\]]+])|(LTS?|l{1,4}|L{1,4})/g, function (t, n, r) {\n var o = r && r.toUpperCase();\n return n || i[r] || e[r] || i[o].replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g, function (e, t, n) {\n return t || n.slice(1);\n });\n })).match(t), a = o.length, f = 0; f < a; f += 1) {\n var h = o[f],\n u = c[h],\n d = u && u[0],\n l = u && u[1];\n o[f] = l ? {\n regex: d,\n parser: l\n } : h.replace(/^\\[|\\]$/g, \"\");\n }\n return function (e) {\n for (var t = {}, n = 0, r = 0; n < a; n += 1) {\n var i = o[n];\n if (\"string\" == typeof i) r += i.length;else {\n var s = i.regex,\n f = i.parser,\n h = e.slice(r),\n u = s.exec(h)[0];\n f.call(t, u), e = e.replace(u, \"\");\n }\n }\n return function (e) {\n var t = e.afternoon;\n if (void 0 !== t) {\n var n = e.hours;\n t ? n < 12 && (e.hours += 12) : 12 === n && (e.hours = 0), delete e.afternoon;\n }\n }(t), t;\n };\n }\n return function (e, t, n) {\n n.p.customParseFormat = !0, e && e.parseTwoDigitYear && (a = e.parseTwoDigitYear);\n var r = t.prototype,\n i = r.parse;\n r.parse = function (e) {\n var t = e.date,\n r = e.utc,\n o = e.args;\n this.$u = r;\n var a = o[1];\n if (\"string\" == typeof a) {\n var f = !0 === o[2],\n h = !0 === o[3],\n u = f || h,\n d = o[2];\n h && (d = o[2]), s = this.$locale(), !f && d && (s = n.Ls[d]), this.$d = function (e, t, n, r) {\n try {\n if ([\"x\", \"X\"].indexOf(t) > -1) return new Date((\"X\" === t ? 1e3 : 1) * e);\n var i = l(t)(e),\n o = i.year,\n s = i.month,\n a = i.day,\n f = i.hours,\n h = i.minutes,\n u = i.seconds,\n d = i.milliseconds,\n c = i.zone,\n m = i.week,\n M = new Date(),\n Y = a || (o || s ? 1 : M.getDate()),\n p = o || M.getFullYear(),\n v = 0;\n o && !s || (v = s > 0 ? s - 1 : M.getMonth());\n var D,\n w = f || 0,\n g = h || 0,\n y = u || 0,\n L = d || 0;\n return c ? new Date(Date.UTC(p, v, Y, w, g, y, L + 60 * c.offset * 1e3)) : n ? new Date(Date.UTC(p, v, Y, w, g, y, L)) : (D = new Date(p, v, Y, w, g, y, L), m && (D = r(D).week(m).toDate()), D);\n } catch (e) {\n return new Date(\"\");\n }\n }(t, a, r, n), this.init(), d && !0 !== d && (this.$L = this.locale(d).$L), u && t != this.format(a) && (this.$d = new Date(\"\")), s = {};\n } else if (a instanceof Array) for (var c = a.length, m = 1; m <= c; m += 1) {\n o[1] = a[m - 1];\n var M = n.apply(this, o);\n if (M.isValid()) {\n this.$d = M.$d, this.$L = M.$L, this.init();\n break;\n }\n m === c && (this.$d = new Date(\"\"));\n } else i.call(this, e);\n };\n };\n});","!function (t, n) {\n \"object\" == typeof exports && \"undefined\" != typeof module ? module.exports = n() : \"function\" == typeof define && define.amd ? define(n) : (t = \"undefined\" != typeof globalThis ? globalThis : t || self).dayjs_plugin_objectSupport = n();\n}(this, function () {\n \"use strict\";\n\n return function (t, n, e) {\n var i = n.prototype,\n r = function (t) {\n var n,\n r = t.date,\n o = t.utc,\n u = {};\n if (!(null === (n = r) || n instanceof Date || n instanceof Array || i.$utils().u(n) || \"Object\" !== n.constructor.name)) {\n if (!Object.keys(r).length) return new Date();\n var a = o ? e.utc() : e();\n Object.keys(r).forEach(function (t) {\n var n, e;\n u[(n = t, e = i.$utils().p(n), \"date\" === e ? \"day\" : e)] = r[t];\n });\n var c = u.day || (u.year || u.month >= 0 ? 1 : a.date()),\n s = u.year || a.year(),\n d = u.month >= 0 ? u.month : u.year || u.day ? 0 : a.month(),\n f = u.hour || 0,\n b = u.minute || 0,\n h = u.second || 0,\n y = u.millisecond || 0;\n return o ? new Date(Date.UTC(s, d, c, f, b, h, y)) : new Date(s, d, c, f, b, h, y);\n }\n return r;\n },\n o = i.parse;\n i.parse = function (t) {\n t.date = r.bind(this)(t), o.bind(this)(t);\n };\n var u = i.set,\n a = i.add,\n c = i.subtract,\n s = function (t, n, e, i) {\n void 0 === i && (i = 1);\n var r = Object.keys(n),\n o = this;\n return r.forEach(function (e) {\n o = t.bind(o)(n[e] * i, e);\n }), o;\n };\n i.set = function (t, n) {\n return n = void 0 === n ? t : n, \"Object\" === t.constructor.name ? s.bind(this)(function (t, n) {\n return u.bind(this)(n, t);\n }, n, t) : u.bind(this)(t, n);\n }, i.add = function (t, n) {\n return \"Object\" === t.constructor.name ? s.bind(this)(a, t, n) : a.bind(this)(t, n);\n }, i.subtract = function (t, n) {\n return \"Object\" === t.constructor.name ? s.bind(this)(a, t, n, -1) : c.bind(this)(t, n);\n };\n };\n});","!function (e, t) {\n \"object\" == typeof exports && \"undefined\" != typeof module ? module.exports = t() : \"function\" == typeof define && define.amd ? define(t) : (e = \"undefined\" != typeof globalThis ? globalThis : e || self).dayjs_plugin_localizedFormat = t();\n}(this, function () {\n \"use strict\";\n\n var e = {\n LTS: \"h:mm:ss A\",\n LT: \"h:mm A\",\n L: \"MM/DD/YYYY\",\n LL: \"MMMM D, YYYY\",\n LLL: \"MMMM D, YYYY h:mm A\",\n LLLL: \"dddd, MMMM D, YYYY h:mm A\"\n };\n return function (t, o, n) {\n var r = o.prototype,\n i = r.format;\n n.en.formats = e, r.format = function (t) {\n void 0 === t && (t = \"YYYY-MM-DDTHH:mm:ssZ\");\n var o = this.$locale().formats,\n n = function (t, o) {\n return t.replace(/(\\[[^\\]]+])|(LTS?|l{1,4}|L{1,4})/g, function (t, n, r) {\n var i = r && r.toUpperCase();\n return n || o[r] || e[r] || o[i].replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g, function (e, t, o) {\n return t || o.slice(1);\n });\n });\n }(t, void 0 === o ? {} : o);\n return i.call(this, n);\n };\n };\n});","!function (t, i) {\n \"object\" == typeof exports && \"undefined\" != typeof module ? module.exports = i() : \"function\" == typeof define && define.amd ? define(i) : (t = \"undefined\" != typeof globalThis ? globalThis : t || self).dayjs_plugin_utc = i();\n}(this, function () {\n \"use strict\";\n\n var t = \"minute\",\n i = /[+-]\\d\\d(?::?\\d\\d)?/g,\n e = /([+-]|\\d\\d)/g;\n return function (s, f, n) {\n var u = f.prototype;\n n.utc = function (t) {\n var i = {\n date: t,\n utc: !0,\n args: arguments\n };\n return new f(i);\n }, u.utc = function (i) {\n var e = n(this.toDate(), {\n locale: this.$L,\n utc: !0\n });\n return i ? e.add(this.utcOffset(), t) : e;\n }, u.local = function () {\n return n(this.toDate(), {\n locale: this.$L,\n utc: !1\n });\n };\n var o = u.parse;\n u.parse = function (t) {\n t.utc && (this.$u = !0), this.$utils().u(t.$offset) || (this.$offset = t.$offset), o.call(this, t);\n };\n var r = u.init;\n u.init = function () {\n if (this.$u) {\n var t = this.$d;\n this.$y = t.getUTCFullYear(), this.$M = t.getUTCMonth(), this.$D = t.getUTCDate(), this.$W = t.getUTCDay(), this.$H = t.getUTCHours(), this.$m = t.getUTCMinutes(), this.$s = t.getUTCSeconds(), this.$ms = t.getUTCMilliseconds();\n } else r.call(this);\n };\n var a = u.utcOffset;\n u.utcOffset = function (s, f) {\n var n = this.$utils().u;\n if (n(s)) return this.$u ? 0 : n(this.$offset) ? a.call(this) : this.$offset;\n if (\"string\" == typeof s && (s = function (t) {\n void 0 === t && (t = \"\");\n var s = t.match(i);\n if (!s) return null;\n var f = (\"\" + s[0]).match(e) || [\"-\", 0, 0],\n n = f[0],\n u = 60 * +f[1] + +f[2];\n return 0 === u ? 0 : \"+\" === n ? u : -u;\n }(s), null === s)) return this;\n var u = Math.abs(s) <= 16 ? 60 * s : s,\n o = this;\n if (f) return o.$offset = u, o.$u = 0 === s, o;\n if (0 !== s) {\n var r = this.$u ? this.toDate().getTimezoneOffset() : -1 * this.utcOffset();\n (o = this.local().add(u + r, t)).$offset = u, o.$x.$localOffset = r;\n } else o = this.utc();\n return o;\n };\n var h = u.format;\n u.format = function (t) {\n var i = t || (this.$u ? \"YYYY-MM-DDTHH:mm:ss[Z]\" : \"\");\n return h.call(this, i);\n }, u.valueOf = function () {\n var t = this.$utils().u(this.$offset) ? 0 : this.$offset + (this.$x.$localOffset || this.$d.getTimezoneOffset());\n return this.$d.valueOf() - 6e4 * t;\n }, u.isUTC = function () {\n return !!this.$u;\n }, u.toISOString = function () {\n return this.toDate().toISOString();\n }, u.toString = function () {\n return this.toDate().toUTCString();\n };\n var l = u.toDate;\n u.toDate = function (t) {\n return \"s\" === t && this.$offset ? n(this.format(\"YYYY-MM-DD HH:mm:ss:SSS\")).toDate() : l.call(this);\n };\n var c = u.diff;\n u.diff = function (t, i, e) {\n if (t && this.$u === t.$u) return c.call(this, t, i, e);\n var s = this.local(),\n f = n(t).local();\n return c.call(s, f, i, e);\n };\n };\n});","!function (e, t) {\n \"object\" == typeof exports && \"undefined\" != typeof module ? module.exports = t() : \"function\" == typeof define && define.amd ? define(t) : (e = \"undefined\" != typeof globalThis ? globalThis : e || self).dayjs_plugin_isoWeek = t();\n}(this, function () {\n \"use strict\";\n\n var e = \"day\";\n return function (t, i, s) {\n var a = function (t) {\n return t.add(4 - t.isoWeekday(), e);\n },\n d = i.prototype;\n d.isoWeekYear = function () {\n return a(this).year();\n }, d.isoWeek = function (t) {\n if (!this.$utils().u(t)) return this.add(7 * (t - this.isoWeek()), e);\n var i,\n d,\n n,\n o,\n r = a(this),\n u = (i = this.isoWeekYear(), d = this.$u, n = (d ? s.utc : s)().year(i).startOf(\"year\"), o = 4 - n.isoWeekday(), n.isoWeekday() > 4 && (o += 7), n.add(o, e));\n return r.diff(u, \"week\") + 1;\n }, d.isoWeekday = function (e) {\n return this.$utils().u(e) ? this.day() || 7 : this.day(this.day() % 7 ? e : e - 7);\n };\n var n = d.startOf;\n d.startOf = function (e, t) {\n var i = this.$utils(),\n s = !!i.u(t) || t;\n return \"isoweek\" === i.p(e) ? s ? this.date(this.date() - (this.isoWeekday() - 1)).startOf(\"day\") : this.date(this.date() - 1 - (this.isoWeekday() - 1) + 7).endOf(\"day\") : n.bind(this)(e, t);\n };\n };\n});","!function (e, t) {\n \"object\" == typeof exports && \"undefined\" != typeof module ? module.exports = t() : \"function\" == typeof define && define.amd ? define(t) : (e = \"undefined\" != typeof globalThis ? globalThis : e || self).dayjs_plugin_weekOfYear = t();\n}(this, function () {\n \"use strict\";\n\n var e = \"week\",\n t = \"year\";\n return function (i, n, r) {\n var f = n.prototype;\n f.week = function (i) {\n if (void 0 === i && (i = null), null !== i) return this.add(7 * (i - this.week()), \"day\");\n var n = this.$locale().yearStart || 1;\n if (11 === this.month() && this.date() > 25) {\n var f = r(this).startOf(t).add(1, t).date(n),\n s = r(this).endOf(e);\n if (f.isBefore(s)) return 1;\n }\n var a = r(this).startOf(t).date(n).startOf(e).subtract(1, \"millisecond\"),\n o = this.diff(a, e, !0);\n return o < 0 ? r(this).startOf(\"week\").week() : Math.ceil(o);\n }, f.weeks = function (e) {\n return void 0 === e && (e = null), this.week(e);\n };\n };\n});","!function (e, t) {\n \"object\" == typeof exports && \"undefined\" != typeof module ? module.exports = t() : \"function\" == typeof define && define.amd ? define(t) : (e = \"undefined\" != typeof globalThis ? globalThis : e || self).dayjs_plugin_weekday = t();\n}(this, function () {\n \"use strict\";\n\n return function (e, t) {\n t.prototype.weekday = function (e) {\n var t = this.$locale().weekStart || 0,\n i = this.$W,\n n = (i < t ? i + 7 : i) - t;\n return this.$utils().u(e) ? n : this.subtract(n, \"day\").add(e, \"day\");\n };\n };\n});","!function (u, e) {\n \"object\" == typeof exports && \"undefined\" != typeof module ? module.exports = e(require(\"dayjs\")) : \"function\" == typeof define && define.amd ? define([\"dayjs\"], e) : (u = \"undefined\" != typeof globalThis ? globalThis : u || self).dayjs_locale_fi = e(u.dayjs);\n}(this, function (u) {\n \"use strict\";\n\n function e(u) {\n return u && \"object\" == typeof u && \"default\" in u ? u : {\n default: u\n };\n }\n var t = e(u);\n function n(u, e, t, n) {\n var i = {\n s: \"muutama sekunti\",\n m: \"minuutti\",\n mm: \"%d minuuttia\",\n h: \"tunti\",\n hh: \"%d tuntia\",\n d: \"päivä\",\n dd: \"%d päivää\",\n M: \"kuukausi\",\n MM: \"%d kuukautta\",\n y: \"vuosi\",\n yy: \"%d vuotta\",\n numbers: \"nolla_yksi_kaksi_kolme_neljä_viisi_kuusi_seitsemän_kahdeksan_yhdeksän\".split(\"_\")\n },\n a = {\n s: \"muutaman sekunnin\",\n m: \"minuutin\",\n mm: \"%d minuutin\",\n h: \"tunnin\",\n hh: \"%d tunnin\",\n d: \"päivän\",\n dd: \"%d päivän\",\n M: \"kuukauden\",\n MM: \"%d kuukauden\",\n y: \"vuoden\",\n yy: \"%d vuoden\",\n numbers: \"nollan_yhden_kahden_kolmen_neljän_viiden_kuuden_seitsemän_kahdeksan_yhdeksän\".split(\"_\")\n },\n s = n && !e ? a : i,\n _ = s[t];\n return u < 10 ? _.replace(\"%d\", s.numbers[u]) : _.replace(\"%d\", u);\n }\n var i = {\n name: \"fi\",\n weekdays: \"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai\".split(\"_\"),\n weekdaysShort: \"su_ma_ti_ke_to_pe_la\".split(\"_\"),\n weekdaysMin: \"su_ma_ti_ke_to_pe_la\".split(\"_\"),\n months: \"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu\".split(\"_\"),\n monthsShort: \"tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu\".split(\"_\"),\n ordinal: function (u) {\n return u + \".\";\n },\n weekStart: 1,\n yearStart: 4,\n relativeTime: {\n future: \"%s päästä\",\n past: \"%s sitten\",\n s: n,\n m: n,\n mm: n,\n h: n,\n hh: n,\n d: n,\n dd: n,\n M: n,\n MM: n,\n y: n,\n yy: n\n },\n formats: {\n LT: \"HH.mm\",\n LTS: \"HH.mm.ss\",\n L: \"DD.MM.YYYY\",\n LL: \"D. MMMM[ta] YYYY\",\n LLL: \"D. MMMM[ta] YYYY, [klo] HH.mm\",\n LLLL: \"dddd, D. MMMM[ta] YYYY, [klo] HH.mm\",\n l: \"D.M.YYYY\",\n ll: \"D. MMM YYYY\",\n lll: \"D. MMM YYYY, [klo] HH.mm\",\n llll: \"ddd, D. MMM YYYY, [klo] HH.mm\"\n }\n };\n return t.default.locale(i, null, !0), i;\n});","!function (e, t) {\n \"object\" == typeof exports && \"undefined\" != typeof module ? module.exports = t(require(\"dayjs\")) : \"function\" == typeof define && define.amd ? define([\"dayjs\"], t) : (e = \"undefined\" != typeof globalThis ? globalThis : e || self).dayjs_locale_sv = t(e.dayjs);\n}(this, function (e) {\n \"use strict\";\n\n function t(e) {\n return e && \"object\" == typeof e && \"default\" in e ? e : {\n default: e\n };\n }\n var a = t(e),\n d = {\n name: \"sv\",\n weekdays: \"söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag\".split(\"_\"),\n weekdaysShort: \"sön_mån_tis_ons_tor_fre_lör\".split(\"_\"),\n weekdaysMin: \"sö_må_ti_on_to_fr_lö\".split(\"_\"),\n months: \"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december\".split(\"_\"),\n monthsShort: \"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec\".split(\"_\"),\n weekStart: 1,\n yearStart: 4,\n ordinal: function (e) {\n var t = e % 10;\n return \"[\" + e + (1 === t || 2 === t ? \"a\" : \"e\") + \"]\";\n },\n formats: {\n LT: \"HH:mm\",\n LTS: \"HH:mm:ss\",\n L: \"YYYY-MM-DD\",\n LL: \"D MMMM YYYY\",\n LLL: \"D MMMM YYYY [kl.] HH:mm\",\n LLLL: \"dddd D MMMM YYYY [kl.] HH:mm\",\n lll: \"D MMM YYYY HH:mm\",\n llll: \"ddd D MMM YYYY HH:mm\"\n },\n relativeTime: {\n future: \"om %s\",\n past: \"för %s sedan\",\n s: \"några sekunder\",\n m: \"en minut\",\n mm: \"%d minuter\",\n h: \"en timme\",\n hh: \"%d timmar\",\n d: \"en dag\",\n dd: \"%d dagar\",\n M: \"en månad\",\n MM: \"%d månader\",\n y: \"ett år\",\n yy: \"%d år\"\n }\n };\n return a.default.locale(d, null, !0), d;\n});","import { BrowserModule } from '@angular/platform-browser';\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\nimport { APP_INITIALIZER, LOCALE_ID, NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { ErrorHandler } from '@angular/core';\r\nimport { ServiceWorkerModule } from '@angular/service-worker';\r\n\r\nimport { OAuthModule, OAuthStorage } from 'angular-oauth2-oidc';\r\n\r\nimport { IntlModule } from '@progress/kendo-angular-intl';\r\nimport '@progress/kendo-angular-intl/locales/fi/all';\r\nimport '@progress/kendo-angular-intl/locales/sv/all';\r\nimport '@progress/kendo-angular-intl/locales/en/all';\r\n\r\nimport { AppRoutingModule } from './app-routing.module';\r\nimport { BlahModule } from '@headpower/blah-ng';\r\n\r\nimport { HpoErrorHandler } from './shared/handlers/hpo-errorhandler.service';\r\nimport { AppComponent } from './app.component';\r\nimport { AppConfig } from './app.config';\r\n\r\nimport { AppLandingComponent } from './app-landing.component';\r\nimport { OpenTargetComponent } from './open-target.component';\r\nimport { PageNotFoundComponent } from './page-not-found.component';\r\nimport { NoUsageRightComponent } from './no-usage-right.component';\r\nimport { NoAdminRightComponent } from './no-admin-right.component';\r\nimport { ForbiddenComponent } from './forbidden.component';\r\n\r\nimport { environment } from '../environments/environment';\r\n\r\nimport { HpoLayoutModule, SmoothnessEnforcer, ThemeService } from '@headpower/layout';\r\n\r\nimport { registerLocaleData } from '@angular/common';\r\nimport localeFi from '@angular/common/locales/fi';\r\nimport localeSv from '@angular/common/locales/sv';\r\nimport localeEn from '@angular/common/locales/en';\r\nimport { SharedModule } from './shared/shared.module';\r\n\r\nimport { MatNativeDateModule } from '@angular/material/core';\r\nimport { MAT_DIALOG_DEFAULT_OPTIONS } from '@angular/material/dialog';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatPaginatorIntl } from '@angular/material/paginator';\r\nimport { BlahMatPaginatorIntl } from './providers/blah-mat-paginator-intl';\r\n\r\nimport { AppOAuthStorage } from '@headpower/angular-oauth2-oidc-extensions';\r\nimport { ResizeService } from './services/resize.service';\r\nimport { FloatingActionButtonModule, FloatingActionButtonService, SpinnerModule, HpoNumberModule, ContentLayoutService } from '@headpower/components';\r\nimport '@headpower/components/dayjs-loader';\r\nimport { MessageService } from '@progress/kendo-angular-l10n';\r\nimport { LocalizationMessageService } from './services/localization-message-service';\r\n\r\nimport { AppComponentService } from './services/app-component.service';\r\n\r\nimport { BlahService } from '@headpower/blah-ng';\r\n// Import the Popup module\r\nimport { PopupModule } from '@progress/kendo-angular-popup';\r\nimport { ElementRef } from '@angular/core';\r\nimport { SinglePopupService } from '@progress/kendo-angular-grid';\r\nimport { CoreModule } from './core.module';\r\nimport { GanttModule } from '@progress/kendo-angular-gantt';\r\nimport { PagerModule } from '@progress/kendo-angular-pager';\r\n\r\nimport { AngularSplitModule } from 'angular-split';\r\nimport { MatButtonModule } from '@angular/material/button';\r\n\r\nimport { HybridUiMapService } from './hybrid-ui-map.service';\r\nimport { MapModule } from './map/map.module';\r\nimport { AuthModule } from './auth/auth.module';\r\nimport { FloatingChatService } from './services/floating-chat.service';\r\nimport { IframeComponent } from './modules/Iframe/Iframe.component';\r\n\r\nexport function createOAuthStorage() {\r\n return new AppOAuthStorage('headpower_web_app', 'iwm');\r\n}\r\n\r\nexport function initConfig(config: AppConfig) {\r\n return () => config.load(environment.version);\r\n}\r\n\r\nexport function initBlahFactory(blahService: BlahService): Function {\r\n return () => blahService.init({\r\n appVersion: environment.version,\r\n resourceNames: [\r\n 'default',\r\n 'layout',\r\n 'error',\r\n 'endCustomerInvoice',\r\n 'task',\r\n 'dashboard',\r\n 'components',\r\n 'worksite',\r\n 'invoicingProposal',\r\n 'invoicingProposalFilter',\r\n 'productExtensions',\r\n 'settings',\r\n 'taskStatuses',\r\n 'plan',\r\n 'filter',\r\n 'tendering',\r\n 'tenderingListFilter',\r\n 'admin',\r\n 'newTaskList',\r\n 'satnet',\r\n 'map',\r\n 'networkComponents',\r\n 'floatingChat'\r\n ]\r\n });\r\n}\r\n\r\nexport function initTheme(themeService: ThemeService): Function {\r\n return () => themeService.init();\r\n}\r\n\r\nregisterLocaleData(localeFi, 'fi');\r\nregisterLocaleData(localeEn, 'en');\r\nregisterLocaleData(localeSv, 'sv');\r\n\r\n@NgModule({\r\n declarations: [\r\n AppComponent,\r\n PageNotFoundComponent,\r\n NoUsageRightComponent,\r\n NoAdminRightComponent,\r\n AppLandingComponent,\r\n ForbiddenComponent,\r\n OpenTargetComponent,\r\n IframeComponent\r\n ],\r\n imports: [\r\n BrowserModule,\r\n CoreModule,\r\n BrowserAnimationsModule,\r\n FloatingActionButtonModule,\r\n SpinnerModule,\r\n MatMenuModule,\r\n MatNativeDateModule,\r\n SharedModule,\r\n IntlModule,\r\n HpoLayoutModule,\r\n AppRoutingModule,\r\n FormsModule,\r\n MatFormFieldModule,\r\n MatButtonModule,\r\n MatInputModule,\r\n ServiceWorkerModule.register('ngsw-worker.js', {\r\n enabled: environment.production\r\n }),\r\n OAuthModule.forRoot(),\r\n BlahModule,\r\n HpoNumberModule,\r\n PopupModule,\r\n AngularSplitModule,\r\n GanttModule,\r\n PagerModule,\r\n MapModule,\r\n AuthModule\r\n ],\r\n providers: [\r\n AppComponentService,\r\n { provide: ErrorHandler, useClass: HpoErrorHandler },\r\n { provide: LOCALE_ID, useValue: 'fi-FI' },\r\n { provide: OAuthStorage, useFactory: createOAuthStorage },\r\n { provide: AppOAuthStorage, useFactory: createOAuthStorage },\r\n { provide: APP_INITIALIZER, useFactory: initConfig, deps: [AppConfig], multi: true },\r\n { provide: MAT_DIALOG_DEFAULT_OPTIONS, useValue: { autoFocus: false, hasBackdrop: true, maxHeight: '90vh' } },\r\n {\r\n // Initialize Blah translation service\r\n provide: APP_INITIALIZER,\r\n useFactory: initBlahFactory,\r\n deps: [BlahService],\r\n multi: true\r\n },\r\n ResizeService,\r\n HybridUiMapService,\r\n ContentLayoutService,\r\n FloatingActionButtonService,\r\n [{ provide: MessageService, useClass: LocalizationMessageService }],\r\n { provide: MatPaginatorIntl, useClass: BlahMatPaginatorIntl },\r\n [{\r\n provide: SinglePopupService,\r\n useFactory: () => {\r\n // return the container ElementRef, where the Kendo Popup component will be injected\r\n return { nativeElement: document.body } as ElementRef;\r\n }\r\n }],\r\n SmoothnessEnforcer,\r\n { provide: APP_INITIALIZER, useFactory: initTheme, deps: [ThemeService], multi: true },\r\n FloatingChatService\r\n ],\r\n bootstrap: [\r\n AppComponent\r\n ]\r\n})\r\nexport class AppModule { }\r\n","/**-----------------------------------------------------------------------------------------\n* Copyright © 2024 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nvar setData = require('@progress/kendo-angular-intl').setData;\nsetData({\n name: \"fi\",\n identity: {\n language: \"fi\"\n },\n territory: \"FI\",\n numbers: {\n symbols: {\n decimal: \",\",\n group: \" \",\n list: \";\",\n percentSign: \"%\",\n plusSign: \"+\",\n minusSign: \"−\",\n approximatelySign: \"~\",\n exponential: \"E\",\n superscriptingExponent: \"×\",\n perMille: \"‰\",\n infinity: \"∞\",\n nan: \"epäluku\",\n timeSeparator: \".\"\n },\n decimal: {\n patterns: [\"n\"],\n groupSize: [3]\n },\n scientific: {\n patterns: [\"nEn\"],\n groupSize: []\n },\n percent: {\n patterns: [\"n %\"],\n groupSize: [3]\n },\n currency: {\n patterns: [\"n $\"],\n groupSize: [3],\n \"unitPattern-count-one\": \"n $\",\n \"unitPattern-count-other\": \"n $\"\n },\n accounting: {\n patterns: [\"n $\"],\n groupSize: [3]\n },\n currencies: {\n ADP: {\n displayName: \"Andorran peseta\",\n \"displayName-count-one\": \"Andorran peseta\",\n \"displayName-count-other\": \"Andorran pesetaa\",\n symbol: \"ADP\"\n },\n AED: {\n displayName: \"Arabiemiirikuntien dirhami\",\n \"displayName-count-one\": \"Arabiemiirikuntien dirhami\",\n \"displayName-count-other\": \"Arabiemiirikuntien dirhamia\",\n symbol: \"AED\"\n },\n AFA: {\n displayName: \"Afganistanin afgaani (1927–2002)\",\n \"displayName-count-one\": \"Afganistanin afgaani (1927–2002)\",\n \"displayName-count-other\": \"Afganistanin afgaania (1927–2002)\",\n symbol: \"AFA\"\n },\n AFN: {\n displayName: \"Afganistanin afgaani\",\n \"displayName-count-one\": \"Afganistanin afgaani\",\n \"displayName-count-other\": \"Afganistanin afgaania\",\n symbol: \"AFN\",\n \"symbol-alt-narrow\": \"؋\"\n },\n ALK: {\n displayName: \"Albanian lek (1946–1965)\",\n \"displayName-count-one\": \"Albanian lek (1946–1965)\",\n \"displayName-count-other\": \"Albanian lekiä (1946–1965)\",\n symbol: \"ALK\"\n },\n ALL: {\n displayName: \"Albanian lek\",\n \"displayName-count-one\": \"Albanian lek\",\n \"displayName-count-other\": \"Albanian lekiä\",\n symbol: \"ALL\"\n },\n AMD: {\n displayName: \"Armenian dram\",\n \"displayName-count-one\": \"Armenian dram\",\n \"displayName-count-other\": \"Armenian dramia\",\n symbol: \"AMD\",\n \"symbol-alt-narrow\": \"֏\"\n },\n ANG: {\n displayName: \"Alankomaiden Antillien guldeni\",\n \"displayName-count-one\": \"Alankomaiden Antillien guldeni\",\n \"displayName-count-other\": \"Alankomaiden Antillien guldenia\",\n symbol: \"ANG\"\n },\n AOA: {\n displayName: \"Angolan kwanza\",\n \"displayName-count-one\": \"Angolan kwanza\",\n \"displayName-count-other\": \"Angolan kwanzaa\",\n symbol: \"AOA\",\n \"symbol-alt-narrow\": \"AOA\"\n },\n AOK: {\n displayName: \"Angolan kwanza (1977–1991)\",\n \"displayName-count-one\": \"Angolan kwanza (1977–1990)\",\n \"displayName-count-other\": \"Angolan kwanzaa (1977–1990)\",\n symbol: \"AOK\"\n },\n AON: {\n displayName: \"Angolan uusi kwanza (1990–2000)\",\n \"displayName-count-one\": \"Angolan uusi kwanza (1990–2000)\",\n \"displayName-count-other\": \"Angolan uutta kwanzaa (1990–2000)\",\n symbol: \"AON\"\n },\n AOR: {\n displayName: \"Angolan kwanza reajustado (1995–1999)\",\n \"displayName-count-one\": \"Angolan kwanza reajustado (1995–1999)\",\n \"displayName-count-other\": \"Angolan kwanza reajustadoa (1995–1999)\",\n symbol: \"AOR\"\n },\n ARA: {\n displayName: \"Argentiinan austral\",\n \"displayName-count-one\": \"Argentiinan austral\",\n \"displayName-count-other\": \"Argentiinan australia\",\n symbol: \"ARA\"\n },\n ARL: {\n displayName: \"Argentiinan ley-peso (1970–1983)\",\n \"displayName-count-one\": \"Argentiinan ley-peso (1970–1983)\",\n \"displayName-count-other\": \"Argentiinan ley-pesoa (1970–1983)\",\n symbol: \"ARL\"\n },\n ARM: {\n displayName: \"Argentiinan peso (1881–1970)\",\n \"displayName-count-one\": \"Argentiinan peso (1881–1970)\",\n \"displayName-count-other\": \"Argentiinan pesoa (1881–1970)\",\n symbol: \"ARM\"\n },\n ARP: {\n displayName: \"Argentiinan peso (1983–1985)\",\n \"displayName-count-one\": \"Argentiinan peso (1983–1985)\",\n \"displayName-count-other\": \"Argentiinan pesoa (1983–1985)\",\n symbol: \"ARP\"\n },\n ARS: {\n displayName: \"Argentiinan peso\",\n \"displayName-count-one\": \"Argentiinan peso\",\n \"displayName-count-other\": \"Argentiinan pesoa\",\n symbol: \"ARS\",\n \"symbol-alt-narrow\": \"ARS\"\n },\n ATS: {\n displayName: \"Itävallan šillinki\",\n \"displayName-count-one\": \"Itävallan šillinki\",\n \"displayName-count-other\": \"Itävallan šillinkiä\",\n symbol: \"ATS\"\n },\n AUD: {\n displayName: \"Australian dollari\",\n \"displayName-count-one\": \"Australian dollari\",\n \"displayName-count-other\": \"Australian dollaria\",\n symbol: \"AUD\",\n \"symbol-alt-narrow\": \"AUD\"\n },\n AWG: {\n displayName: \"Aruban floriini\",\n \"displayName-count-one\": \"Aruban floriini\",\n \"displayName-count-other\": \"Aruban floriinia\",\n symbol: \"AWG\"\n },\n AZM: {\n displayName: \"Azerbaidžanin manat (1993–2006)\",\n \"displayName-count-one\": \"Azerbaidžanin manat (1993–2006)\",\n \"displayName-count-other\": \"Azerbaidžanin manatia (1993–2006)\",\n symbol: \"AZM\"\n },\n AZN: {\n displayName: \"Azerbaidžanin manat\",\n \"displayName-count-one\": \"Azerbaidžanin manat\",\n \"displayName-count-other\": \"Azerbaidžanin manatia\",\n symbol: \"AZN\",\n \"symbol-alt-narrow\": \"₼\"\n },\n BAD: {\n displayName: \"Bosnia-Hertsegovinan dinaari (1992–1994)\",\n \"displayName-count-one\": \"Bosnia-Hertsegovinan dinaari (1992–1994)\",\n \"displayName-count-other\": \"Bosnia-Hertsegovinan dinaaria (1992–1994)\",\n symbol: \"BAD\"\n },\n BAM: {\n displayName: \"Bosnia-Hertsegovinan vaihdettava markka\",\n \"displayName-count-one\": \"Bosnia-Hertsegovinan vaihdettava markka\",\n \"displayName-count-other\": \"Bosnia-Hertsegovinan vaihdettavaa markkaa\",\n symbol: \"BAM\",\n \"symbol-alt-narrow\": \"BAM\"\n },\n BAN: {\n displayName: \"Bosnia-Hertsegovinan uusi dinaari (1994–1997)\",\n \"displayName-count-one\": \"Bosnia-Hertsegovinan uusi dinaari (1994–1997)\",\n \"displayName-count-other\": \"Bosnia-Hertsegovinan uutta dinaaria (1994–1997)\",\n symbol: \"BAN\"\n },\n BBD: {\n displayName: \"Barbadosin dollari\",\n \"displayName-count-one\": \"Barbadosin dollari\",\n \"displayName-count-other\": \"Barbadosin dollaria\",\n symbol: \"BBD\",\n \"symbol-alt-narrow\": \"BBD\"\n },\n BDT: {\n displayName: \"Bangladeshin taka\",\n \"displayName-count-one\": \"Bangladeshin taka\",\n \"displayName-count-other\": \"Bangladeshin takaa\",\n symbol: \"BDT\",\n \"symbol-alt-narrow\": \"BDT\"\n },\n BEC: {\n displayName: \"Belgian vaihdettava frangi\",\n \"displayName-count-one\": \"Belgian vaihdettava frangi\",\n \"displayName-count-other\": \"Belgian vaihdettavaa frangia\",\n symbol: \"BEC\"\n },\n BEF: {\n displayName: \"Belgian frangi\",\n \"displayName-count-one\": \"Belgian frangi\",\n \"displayName-count-other\": \"Belgian frangia\",\n symbol: \"BEF\"\n },\n BEL: {\n displayName: \"Belgian rahoitusfrangi\",\n \"displayName-count-one\": \"Belgian rahoitusfrangi\",\n \"displayName-count-other\": \"Belgian rahoitusfrangia\",\n symbol: \"BEL\"\n },\n BGL: {\n displayName: \"Bulgarian kova lev\",\n \"displayName-count-one\": \"Bulgarian kova lev\",\n \"displayName-count-other\": \"Bulgarian kovaa leviä\",\n symbol: \"BGL\"\n },\n BGM: {\n displayName: \"Bulgarian sosialistinen lev\",\n \"displayName-count-one\": \"Bulgarian sosialistinen lev\",\n \"displayName-count-other\": \"Bulgarian sosialistista leviä\",\n symbol: \"BGM\"\n },\n BGN: {\n displayName: \"Bulgarian lev\",\n \"displayName-count-one\": \"Bulgarian lev\",\n \"displayName-count-other\": \"Bulgarian leviä\",\n symbol: \"BGN\"\n },\n BGO: {\n displayName: \"Bulgarian lev (1879–1952)\",\n \"displayName-count-one\": \"Bulgarian lev (1879–1952)\",\n \"displayName-count-other\": \"Bulgarian leviä (1879–1952)\",\n symbol: \"BGO\"\n },\n BHD: {\n displayName: \"Bahrainin dinaari\",\n \"displayName-count-one\": \"Bahrainin dinaari\",\n \"displayName-count-other\": \"Bahrainin dinaaria\",\n symbol: \"BHD\"\n },\n BIF: {\n displayName: \"Burundin frangi\",\n \"displayName-count-one\": \"Burundin frangi\",\n \"displayName-count-other\": \"Burundin frangia\",\n symbol: \"BIF\"\n },\n BMD: {\n displayName: \"Bermudan dollari\",\n \"displayName-count-one\": \"Bermudan dollari\",\n \"displayName-count-other\": \"Bermudan dollaria\",\n symbol: \"BMD\",\n \"symbol-alt-narrow\": \"BMD\"\n },\n BND: {\n displayName: \"Brunein dollari\",\n \"displayName-count-one\": \"Brunein dollari\",\n \"displayName-count-other\": \"Brunein dollaria\",\n symbol: \"BND\",\n \"symbol-alt-narrow\": \"BND\"\n },\n BOB: {\n displayName: \"Bolivian boliviano\",\n \"displayName-count-one\": \"Bolivian boliviano\",\n \"displayName-count-other\": \"Bolivian bolivianoa\",\n symbol: \"BOB\",\n \"symbol-alt-narrow\": \"BOB\"\n },\n BOL: {\n displayName: \"Bolivian boliviano (1863–1963)\",\n \"displayName-count-one\": \"Bolivian boliviano (1863–1963)\",\n \"displayName-count-other\": \"Bolivian bolivianoa (1863–1963)\",\n symbol: \"BOL\"\n },\n BOP: {\n displayName: \"Bolivian peso\",\n \"displayName-count-one\": \"Bolivian peso\",\n \"displayName-count-other\": \"Bolivian pesoa\",\n symbol: \"BOP\"\n },\n BOV: {\n displayName: \"Bolivian mvdol\",\n \"displayName-count-one\": \"Bolivian mvdol\",\n \"displayName-count-other\": \"Bolivian mvdol’ia\",\n symbol: \"BOV\"\n },\n BRB: {\n displayName: \"Brasilian uusi cruzeiro (1967–1986)\",\n \"displayName-count-one\": \"Brasilian uusi cruzeiro (1967–1986)\",\n \"displayName-count-other\": \"Brasilian uutta cruzeiroa (1967–1986)\",\n symbol: \"BRB\"\n },\n BRC: {\n displayName: \"Brasilian cruzado (1986–1989)\",\n \"displayName-count-one\": \"Brasilian cruzado (1986–1989)\",\n \"displayName-count-other\": \"Brasilian cruzadoa (1986–1989)\",\n symbol: \"BRC\"\n },\n BRE: {\n displayName: \"Brasilian cruzeiro (1990–1993)\",\n \"displayName-count-one\": \"Brasilian cruzeiro (1990–1993)\",\n \"displayName-count-other\": \"Brasilian cruzeiroa (1990–1993)\",\n symbol: \"BRE\"\n },\n BRL: {\n displayName: \"Brasilian real\",\n \"displayName-count-one\": \"Brasilian real\",\n \"displayName-count-other\": \"Brasilian realia\",\n symbol: \"BRL\",\n \"symbol-alt-narrow\": \"BRL\"\n },\n BRN: {\n displayName: \"Brasilian uusi cruzado (1989–1990)\",\n \"displayName-count-one\": \"Brasilian uusi cruzado (1989–1990)\",\n \"displayName-count-other\": \"Brasilian uutta cruzadoa (1989–1990)\",\n symbol: \"BRN\"\n },\n BRR: {\n displayName: \"Brasilian cruzeiro (1993–1994)\",\n \"displayName-count-one\": \"Brasilian cruzeiro (1993–1994)\",\n \"displayName-count-other\": \"Brasilian cruzeiroa (1993–1994)\",\n symbol: \"BRR\"\n },\n BRZ: {\n displayName: \"Brasilian cruzeiro (1942–1967)\",\n \"displayName-count-one\": \"Brasilian cruzeiro (1942–1967)\",\n \"displayName-count-other\": \"Brasilian cruzeiroa (1942–1967)\",\n symbol: \"BRZ\"\n },\n BSD: {\n displayName: \"Bahaman dollari\",\n \"displayName-count-one\": \"Bahaman dollari\",\n \"displayName-count-other\": \"Bahaman dollaria\",\n symbol: \"BSD\",\n \"symbol-alt-narrow\": \"BSD\"\n },\n BTN: {\n displayName: \"Bhutanin ngultrum\",\n \"displayName-count-one\": \"Bhutanin ngultrum\",\n \"displayName-count-other\": \"Bhutanin ngultrumia\",\n symbol: \"BTN\"\n },\n BUK: {\n displayName: \"Burman kyat\",\n \"displayName-count-one\": \"Burman kyat\",\n \"displayName-count-other\": \"Burman kyatia\",\n symbol: \"BUK\"\n },\n BWP: {\n displayName: \"Botswanan pula\",\n \"displayName-count-one\": \"Botswanan pula\",\n \"displayName-count-other\": \"Botswanan pulaa\",\n symbol: \"BWP\",\n \"symbol-alt-narrow\": \"BWP\"\n },\n BYB: {\n displayName: \"Valko-Venäjän uusi rupla (1994–1999)\",\n \"displayName-count-one\": \"Valko-Venäjän uusi rupla (1994–1999)\",\n \"displayName-count-other\": \"Valko-Venäjän uutta ruplaa (1994–1999)\",\n symbol: \"BYB\"\n },\n BYN: {\n displayName: \"Valko-Venäjän rupla\",\n \"displayName-count-one\": \"Valko-Venäjän rupla\",\n \"displayName-count-other\": \"Valko-Venäjän ruplaa\",\n symbol: \"BYN\",\n \"symbol-alt-narrow\": \"BYN\"\n },\n BYR: {\n displayName: \"Valko-Venäjän rupla (2000–2016)\",\n \"displayName-count-one\": \"Valko-Venäjän rupla (2000–2016)\",\n \"displayName-count-other\": \"Valko-Venäjän ruplaa (2000–2016)\",\n symbol: \"BYR\"\n },\n BZD: {\n displayName: \"Belizen dollari\",\n \"displayName-count-one\": \"Belizen dollari\",\n \"displayName-count-other\": \"Belizen dollaria\",\n symbol: \"BZD\",\n \"symbol-alt-narrow\": \"BZD\"\n },\n CAD: {\n displayName: \"Kanadan dollari\",\n \"displayName-count-one\": \"Kanadan dollari\",\n \"displayName-count-other\": \"Kanadan dollaria\",\n symbol: \"CAD\",\n \"symbol-alt-narrow\": \"CAD\"\n },\n CDF: {\n displayName: \"Kongon frangi\",\n \"displayName-count-one\": \"Kongon frangi\",\n \"displayName-count-other\": \"Kongon frangia\",\n symbol: \"CDF\"\n },\n CHE: {\n displayName: \"Sveitsin WIR-euro\",\n \"displayName-count-one\": \"Sveitsin WIR-euro\",\n \"displayName-count-other\": \"Sveitsin WIR-euroa\",\n symbol: \"CHE\"\n },\n CHF: {\n displayName: \"Sveitsin frangi\",\n \"displayName-count-one\": \"Sveitsin frangi\",\n \"displayName-count-other\": \"Sveitsin frangia\",\n symbol: \"CHF\"\n },\n CHW: {\n displayName: \"Sveitsin WIR-frangi\",\n \"displayName-count-one\": \"Sveitsin WIR-frangi\",\n \"displayName-count-other\": \"Sveitsin WIR-frangia\",\n symbol: \"CHW\"\n },\n CLE: {\n displayName: \"Chilen escudo\",\n \"displayName-count-one\": \"Chilen escudo\",\n \"displayName-count-other\": \"Chilen escudoa\",\n symbol: \"CLE\"\n },\n CLF: {\n displayName: \"Chilen unidades de fomento\",\n \"displayName-count-one\": \"Chilen unidades de fomento\",\n \"displayName-count-other\": \"Chilen unidades de fomentoa\",\n symbol: \"CLF\"\n },\n CLP: {\n displayName: \"Chilen peso\",\n \"displayName-count-one\": \"Chilen peso\",\n \"displayName-count-other\": \"Chilen pesoa\",\n symbol: \"CLP\",\n \"symbol-alt-narrow\": \"CLP\"\n },\n CNH: {\n displayName: \"Kiinan juan (offshore)\",\n \"displayName-count-one\": \"Kiinan juan (offshore)\",\n \"displayName-count-other\": \"Kiinan juania (offshore)\",\n symbol: \"CNH\"\n },\n CNX: {\n displayName: \"Kiinan kansanpankin dollari\",\n \"displayName-count-one\": \"Kiinan kansanpankin dollari\",\n \"displayName-count-other\": \"Kiinan kansanpankin dollaria\",\n symbol: \"CNX\"\n },\n CNY: {\n displayName: \"Kiinan juan\",\n \"displayName-count-one\": \"Kiinan juan\",\n \"displayName-count-other\": \"Kiinan juania\",\n symbol: \"CNY\",\n \"symbol-alt-narrow\": \"CNY\"\n },\n COP: {\n displayName: \"Kolumbian peso\",\n \"displayName-count-one\": \"Kolumbian peso\",\n \"displayName-count-other\": \"Kolumbian pesoa\",\n symbol: \"COP\",\n \"symbol-alt-narrow\": \"COP\"\n },\n COU: {\n displayName: \"Kolumbian unidad de valor real\",\n \"displayName-count-one\": \"Kolumbian unidad de valor real\",\n \"displayName-count-other\": \"Kolumbian unidad de valor realia\",\n symbol: \"COU\"\n },\n CRC: {\n displayName: \"Costa Rican colón\",\n \"displayName-count-one\": \"Costa Rican colón\",\n \"displayName-count-other\": \"Costa Rican colónia\",\n symbol: \"CRC\",\n \"symbol-alt-narrow\": \"CRC\"\n },\n CSD: {\n displayName: \"Serbian dinaari (2002–2006)\",\n \"displayName-count-one\": \"Serbian dinaari (2002–2006)\",\n \"displayName-count-other\": \"Serbian dinaaria (2002–2006)\",\n symbol: \"CSD\"\n },\n CSK: {\n displayName: \"Tšekkoslovakian kova koruna\",\n \"displayName-count-one\": \"Tšekkoslovakian kova koruna\",\n \"displayName-count-other\": \"Tšekkoslovakian kovaa korunaa\",\n symbol: \"CSK\"\n },\n CUC: {\n displayName: \"Kuuban vaihdettava peso\",\n \"displayName-count-one\": \"Kuuban vaihdettava peso\",\n \"displayName-count-other\": \"Kuuban vaihdettavaa pesoa\",\n symbol: \"CUC\",\n \"symbol-alt-narrow\": \"CUC\"\n },\n CUP: {\n displayName: \"Kuuban peso\",\n \"displayName-count-one\": \"Kuuban peso\",\n \"displayName-count-other\": \"Kuuban pesoa\",\n symbol: \"CUP\",\n \"symbol-alt-narrow\": \"CUP\"\n },\n CVE: {\n displayName: \"Kap Verden escudo\",\n \"displayName-count-one\": \"Kap Verden escudo\",\n \"displayName-count-other\": \"Kap Verden escudoa\",\n symbol: \"CVE\"\n },\n CYP: {\n displayName: \"Kyproksen punta\",\n \"displayName-count-one\": \"Kyproksen punta\",\n \"displayName-count-other\": \"Kyproksen puntaa\",\n symbol: \"CYP\"\n },\n CZK: {\n displayName: \"Tšekin koruna\",\n \"displayName-count-one\": \"Tšekin koruna\",\n \"displayName-count-other\": \"Tšekin korunaa\",\n symbol: \"CZK\",\n \"symbol-alt-narrow\": \"CZK\"\n },\n DDM: {\n displayName: \"Itä-Saksan markka\",\n \"displayName-count-one\": \"Itä-Saksan markka\",\n \"displayName-count-other\": \"Itä-Saksan markkaa\",\n symbol: \"DDM\"\n },\n DEM: {\n displayName: \"Saksan markka\",\n \"displayName-count-one\": \"Saksan markka\",\n \"displayName-count-other\": \"Saksan markkaa\",\n symbol: \"DEM\"\n },\n DJF: {\n displayName: \"Djiboutin frangi\",\n \"displayName-count-one\": \"Djiboutin frangi\",\n \"displayName-count-other\": \"Djiboutin frangia\",\n symbol: \"DJF\"\n },\n DKK: {\n displayName: \"Tanskan kruunu\",\n \"displayName-count-one\": \"Tanskan kruunu\",\n \"displayName-count-other\": \"Tanskan kruunua\",\n symbol: \"DKK\",\n \"symbol-alt-narrow\": \"DKK\"\n },\n DOP: {\n displayName: \"Dominikaanisen tasavallan peso\",\n \"displayName-count-one\": \"Dominikaanisen tasavallan peso\",\n \"displayName-count-other\": \"Dominikaanisen tasavallan pesoa\",\n symbol: \"DOP\",\n \"symbol-alt-narrow\": \"DOP\"\n },\n DZD: {\n displayName: \"Algerian dinaari\",\n \"displayName-count-one\": \"Algerian dinaari\",\n \"displayName-count-other\": \"Algerian dinaaria\",\n symbol: \"DZD\"\n },\n ECS: {\n displayName: \"Ecuadorin sucre\",\n \"displayName-count-one\": \"Ecuadorin sucre\",\n \"displayName-count-other\": \"Ecuadorin sucrea\",\n symbol: \"ECS\"\n },\n ECV: {\n displayName: \"Ecuadorin UVC\",\n \"displayName-count-one\": \"Ecuadorin UVC\",\n \"displayName-count-other\": \"Ecuadorin UVC’ta\",\n symbol: \"ECV\"\n },\n EEK: {\n displayName: \"Viron kruunu\",\n \"displayName-count-one\": \"Viron kruunu\",\n \"displayName-count-other\": \"Viron kruunua\",\n symbol: \"EEK\"\n },\n EGP: {\n displayName: \"Egyptin punta\",\n \"displayName-count-one\": \"Egyptin punta\",\n \"displayName-count-other\": \"Egyptin puntaa\",\n symbol: \"EGP\",\n \"symbol-alt-narrow\": \"EGP\"\n },\n ERN: {\n displayName: \"Eritrean nakfa\",\n \"displayName-count-one\": \"Eritrean nakfa\",\n \"displayName-count-other\": \"Eritrean nakfaa\",\n symbol: \"ERN\"\n },\n ESA: {\n displayName: \"Espanjan peseta (A-tili)\",\n \"displayName-count-one\": \"Espanjan peseta (A-tili)\",\n \"displayName-count-other\": \"Espanjan pesetaa (A-tili)\",\n symbol: \"ESA\"\n },\n ESB: {\n displayName: \"Espanjan peseta (vaihdettava tili)\",\n \"displayName-count-one\": \"Espanjan peseta (vaihdettava tili)\",\n \"displayName-count-other\": \"Espanjan pesetaa (vaihdettava tili)\",\n symbol: \"ESB\"\n },\n ESP: {\n displayName: \"Espanjan peseta\",\n \"displayName-count-one\": \"Espanjan peseta\",\n \"displayName-count-other\": \"Espanjan pesetaa\",\n symbol: \"ESP\",\n \"symbol-alt-narrow\": \"ESP\"\n },\n ETB: {\n displayName: \"Etiopian birr\",\n \"displayName-count-one\": \"Etiopian birr\",\n \"displayName-count-other\": \"Etiopian birriä\",\n symbol: \"ETB\"\n },\n EUR: {\n displayName: \"euro\",\n \"displayName-count-one\": \"euro\",\n \"displayName-count-other\": \"euroa\",\n symbol: \"€\",\n \"symbol-alt-narrow\": \"€\"\n },\n FIM: {\n displayName: \"Suomen markka\",\n \"displayName-count-one\": \"Suomen markka\",\n \"displayName-count-other\": \"Suomen markkaa\",\n symbol: \"mk\"\n },\n FJD: {\n displayName: \"Fidžin dollari\",\n \"displayName-count-one\": \"Fidžin dollari\",\n \"displayName-count-other\": \"Fidžin dollaria\",\n symbol: \"FJD\",\n \"symbol-alt-narrow\": \"FJD\"\n },\n FKP: {\n displayName: \"Falklandinsaarten punta\",\n \"displayName-count-one\": \"Falklandinsaarten punta\",\n \"displayName-count-other\": \"Falklandinsaarten puntaa\",\n symbol: \"FKP\",\n \"symbol-alt-narrow\": \"FKP\"\n },\n FRF: {\n displayName: \"Ranskan frangi\",\n \"displayName-count-one\": \"Ranskan frangi\",\n \"displayName-count-other\": \"Ranskan frangia\",\n symbol: \"FRF\"\n },\n GBP: {\n displayName: \"Englannin punta\",\n \"displayName-count-one\": \"Englannin punta\",\n \"displayName-count-other\": \"Englannin puntaa\",\n symbol: \"£\",\n \"symbol-alt-narrow\": \"£\"\n },\n GEK: {\n displayName: \"Georgian kuponkilari\",\n \"displayName-count-one\": \"Georgian kuponkilari\",\n \"displayName-count-other\": \"Georgian kuponkilaria\",\n symbol: \"GEK\"\n },\n GEL: {\n displayName: \"Georgian lari\",\n \"displayName-count-one\": \"Georgian lari\",\n \"displayName-count-other\": \"Georgian laria\",\n symbol: \"GEL\",\n \"symbol-alt-narrow\": \"GEL\"\n },\n GHC: {\n displayName: \"Ghanan cedi (1979–2007)\",\n \"displayName-count-one\": \"Ghanan cedi (1979–2007)\",\n \"displayName-count-other\": \"Ghanan cediä (1979–2007)\",\n symbol: \"GHC\"\n },\n GHS: {\n displayName: \"Ghanan cedi\",\n \"displayName-count-one\": \"Ghanan cedi\",\n \"displayName-count-other\": \"Ghanan cediä\",\n symbol: \"GHS\",\n \"symbol-alt-narrow\": \"GH₵\"\n },\n GIP: {\n displayName: \"Gibraltarin punta\",\n \"displayName-count-one\": \"Gibraltarin punta\",\n \"displayName-count-other\": \"Gibraltarin puntaa\",\n symbol: \"GIP\",\n \"symbol-alt-narrow\": \"GIP\"\n },\n GMD: {\n displayName: \"Gambian dalasi\",\n \"displayName-count-one\": \"Gambian dalasi\",\n \"displayName-count-other\": \"Gambian dalasia\",\n symbol: \"GMD\"\n },\n GNF: {\n displayName: \"Guinean frangi\",\n \"displayName-count-one\": \"Guinean frangi\",\n \"displayName-count-other\": \"Guinean frangia\",\n symbol: \"GNF\",\n \"symbol-alt-narrow\": \"GNF\"\n },\n GNS: {\n displayName: \"Guinean syli\",\n \"displayName-count-one\": \"Guinean syli\",\n \"displayName-count-other\": \"Guinean syliä\",\n symbol: \"GNS\"\n },\n GQE: {\n displayName: \"Päiväntasaajan Guinean ekwele\",\n \"displayName-count-one\": \"Päiväntasaajan Guinean ekwele\",\n \"displayName-count-other\": \"Päiväntasaajan Guinean ekweleä\",\n symbol: \"GQE\"\n },\n GRD: {\n displayName: \"Kreikan drakma\",\n \"displayName-count-one\": \"Kreikan drakma\",\n \"displayName-count-other\": \"Kreikan drakmaa\",\n symbol: \"GRD\"\n },\n GTQ: {\n displayName: \"Guatemalan quetzal\",\n \"displayName-count-one\": \"Guatemalan quetzal\",\n \"displayName-count-other\": \"Guatemalan quetzalia\",\n symbol: \"GTQ\",\n \"symbol-alt-narrow\": \"GTQ\"\n },\n GWE: {\n displayName: \"Portugalin Guinean escudo\",\n \"displayName-count-one\": \"Portugalin Guinean escudo\",\n \"displayName-count-other\": \"Portugalin Guinean escudoa\",\n symbol: \"GWE\"\n },\n GWP: {\n displayName: \"Guinea-Bissaun peso\",\n \"displayName-count-one\": \"Guinea-Bissaun peso\",\n \"displayName-count-other\": \"Guinea-Bissaun pesoa\",\n symbol: \"GWP\"\n },\n GYD: {\n displayName: \"Guyanan dollari\",\n \"displayName-count-one\": \"Guyanan dollari\",\n \"displayName-count-other\": \"Guyanan dollaria\",\n symbol: \"GYD\",\n \"symbol-alt-narrow\": \"GYD\"\n },\n HKD: {\n displayName: \"Hongkongin dollari\",\n \"displayName-count-one\": \"Hongkongin dollari\",\n \"displayName-count-other\": \"Hongkongin dollaria\",\n symbol: \"HKD\",\n \"symbol-alt-narrow\": \"HKD\"\n },\n HNL: {\n displayName: \"Hondurasin lempira\",\n \"displayName-count-one\": \"Hondurasin lempira\",\n \"displayName-count-other\": \"Hondurasin lempiraa\",\n symbol: \"HNL\",\n \"symbol-alt-narrow\": \"HNL\"\n },\n HRD: {\n displayName: \"Kroatian dinaari\",\n \"displayName-count-one\": \"Kroatian dinaari\",\n \"displayName-count-other\": \"Kroatian dinaaria\",\n symbol: \"HRD\"\n },\n HRK: {\n displayName: \"Kroatian kuna\",\n \"displayName-count-one\": \"Kroatian kuna\",\n \"displayName-count-other\": \"Kroatian kunaa\",\n symbol: \"HRK\",\n \"symbol-alt-narrow\": \"HRK\"\n },\n HTG: {\n displayName: \"Haitin gourde\",\n \"displayName-count-one\": \"Haitin gourde\",\n \"displayName-count-other\": \"Haitin gourdea\",\n symbol: \"HTG\"\n },\n HUF: {\n displayName: \"Unkarin forintti\",\n \"displayName-count-one\": \"Unkarin forintti\",\n \"displayName-count-other\": \"Unkarin forinttia\",\n symbol: \"HUF\",\n \"symbol-alt-narrow\": \"HUF\"\n },\n IDR: {\n displayName: \"Indonesian rupia\",\n \"displayName-count-one\": \"Indonesian rupia\",\n \"displayName-count-other\": \"Indonesian rupiaa\",\n symbol: \"IDR\",\n \"symbol-alt-narrow\": \"IDR\"\n },\n IEP: {\n displayName: \"Irlannin punta\",\n \"displayName-count-one\": \"Irlannin punta\",\n \"displayName-count-other\": \"Irlannin puntaa\",\n symbol: \"IEP\"\n },\n ILP: {\n displayName: \"Israelin punta\",\n \"displayName-count-one\": \"Israelin punta\",\n \"displayName-count-other\": \"Israelin puntaa\",\n symbol: \"ILP\"\n },\n ILR: {\n displayName: \"Israelin sekeli (1980–1985)\",\n \"displayName-count-one\": \"Israelin sekeli (1980–1985)\",\n \"displayName-count-other\": \"Israelin sekeliä (1980–1985)\",\n symbol: \"ILR\"\n },\n ILS: {\n displayName: \"Israelin uusi sekeli\",\n \"displayName-count-one\": \"Israelin uusi sekeli\",\n \"displayName-count-other\": \"Israelin uutta sekeliä\",\n symbol: \"ILS\",\n \"symbol-alt-narrow\": \"ILS\"\n },\n INR: {\n displayName: \"Intian rupia\",\n \"displayName-count-one\": \"Intian rupia\",\n \"displayName-count-other\": \"Intian rupiaa\",\n symbol: \"INR\",\n \"symbol-alt-narrow\": \"INR\"\n },\n IQD: {\n displayName: \"Irakin dinaari\",\n \"displayName-count-one\": \"Irakin dinaari\",\n \"displayName-count-other\": \"Irakin dinaaria\",\n symbol: \"IQD\"\n },\n IRR: {\n displayName: \"Iranin rial\",\n \"displayName-count-one\": \"Iranin rial\",\n \"displayName-count-other\": \"Iranin rialia\",\n symbol: \"IRR\"\n },\n ISJ: {\n displayName: \"Islannin kruunu (1918–1981)\",\n \"displayName-count-one\": \"Islannin kruunu (1918–1981)\",\n \"displayName-count-other\": \"Islannin kruunua (1918–1981)\",\n symbol: \"ISJ\"\n },\n ISK: {\n displayName: \"Islannin kruunu\",\n \"displayName-count-one\": \"Islannin kruunu\",\n \"displayName-count-other\": \"Islannin kruunua\",\n symbol: \"ISK\",\n \"symbol-alt-narrow\": \"ISK\"\n },\n ITL: {\n displayName: \"Italian liira\",\n \"displayName-count-one\": \"Italian liira\",\n \"displayName-count-other\": \"Italian liiraa\",\n symbol: \"ITL\"\n },\n JMD: {\n displayName: \"Jamaikan dollari\",\n \"displayName-count-one\": \"Jamaikan dollari\",\n \"displayName-count-other\": \"Jamaikan dollaria\",\n symbol: \"JMD\",\n \"symbol-alt-narrow\": \"JMD\"\n },\n JOD: {\n displayName: \"Jordanian dinaari\",\n \"displayName-count-one\": \"Jordanian dinaari\",\n \"displayName-count-other\": \"Jordanian dinaaria\",\n symbol: \"JOD\"\n },\n JPY: {\n displayName: \"Japanin jeni\",\n \"displayName-count-one\": \"Japanin jeni\",\n \"displayName-count-other\": \"Japanin jeniä\",\n symbol: \"¥\",\n \"symbol-alt-narrow\": \"¥\"\n },\n KES: {\n displayName: \"Kenian šillinki\",\n \"displayName-count-one\": \"Kenian šillinki\",\n \"displayName-count-other\": \"Kenian šillinkiä\",\n symbol: \"KES\"\n },\n KGS: {\n displayName: \"Kirgisian som\",\n \"displayName-count-one\": \"Kirgisian som\",\n \"displayName-count-other\": \"Kirgisian somia\",\n symbol: \"KGS\"\n },\n KHR: {\n displayName: \"Kambodžan riel\",\n \"displayName-count-one\": \"Kambodžan riel\",\n \"displayName-count-other\": \"Kambodžan rieliä\",\n symbol: \"KHR\",\n \"symbol-alt-narrow\": \"KHR\"\n },\n KMF: {\n displayName: \"Komorien frangi\",\n \"displayName-count-one\": \"Komorien frangi\",\n \"displayName-count-other\": \"Komorien frangia\",\n symbol: \"KMF\",\n \"symbol-alt-narrow\": \"KMF\"\n },\n KPW: {\n displayName: \"Pohjois-Korean won\",\n \"displayName-count-one\": \"Pohjois-Korean won\",\n \"displayName-count-other\": \"Pohjois-Korean wonia\",\n symbol: \"KPW\",\n \"symbol-alt-narrow\": \"KPW\"\n },\n KRH: {\n displayName: \"Etelä-Korean hwan (1953–1962)\",\n \"displayName-count-one\": \"Etelä-Korean hwan (1953–1962)\",\n \"displayName-count-other\": \"Etelä-Korean hwania (1953–1962)\",\n symbol: \"KRH\"\n },\n KRO: {\n displayName: \"Etelä-Korean won (1945–1953)\",\n \"displayName-count-one\": \"Etelä-Korean won (1945–1953)\",\n \"displayName-count-other\": \"Etelä-Korean wonia (1945–1953)\",\n symbol: \"KRO\"\n },\n KRW: {\n displayName: \"Etelä-Korean won\",\n \"displayName-count-one\": \"Etelä-Korean won\",\n \"displayName-count-other\": \"Etelä-Korean wonia\",\n symbol: \"KRW\",\n \"symbol-alt-narrow\": \"KRW\"\n },\n KWD: {\n displayName: \"Kuwaitin dinaari\",\n \"displayName-count-one\": \"Kuwaitin dinaari\",\n \"displayName-count-other\": \"Kuwaitin dinaaria\",\n symbol: \"KWD\"\n },\n KYD: {\n displayName: \"Caymansaarten dollari\",\n \"displayName-count-one\": \"Caymansaarten dollari\",\n \"displayName-count-other\": \"Caymansaarten dollaria\",\n symbol: \"KYD\",\n \"symbol-alt-narrow\": \"KYD\"\n },\n KZT: {\n displayName: \"Kazakstanin tenge\",\n \"displayName-count-one\": \"Kazakstanin tenge\",\n \"displayName-count-other\": \"Kazakstanin tengeä\",\n symbol: \"KZT\",\n \"symbol-alt-narrow\": \"KZT\"\n },\n LAK: {\n displayName: \"Laosin kip\",\n \"displayName-count-one\": \"Laosin kip\",\n \"displayName-count-other\": \"Laosin kipiä\",\n symbol: \"LAK\",\n \"symbol-alt-narrow\": \"LAK\"\n },\n LBP: {\n displayName: \"Libanonin punta\",\n \"displayName-count-one\": \"Libanonin punta\",\n \"displayName-count-other\": \"Libanonin puntaa\",\n symbol: \"LBP\",\n \"symbol-alt-narrow\": \"LBP\"\n },\n LKR: {\n displayName: \"Sri Lankan rupia\",\n \"displayName-count-one\": \"Sri Lankan rupia\",\n \"displayName-count-other\": \"Sri Lankan rupiaa\",\n symbol: \"LKR\",\n \"symbol-alt-narrow\": \"LKR\"\n },\n LRD: {\n displayName: \"Liberian dollari\",\n \"displayName-count-one\": \"Liberian dollari\",\n \"displayName-count-other\": \"Liberian dollaria\",\n symbol: \"LRD\",\n \"symbol-alt-narrow\": \"LRD\"\n },\n LSL: {\n displayName: \"Lesothon loti\",\n \"displayName-count-one\": \"Lesothon loti\",\n \"displayName-count-other\": \"Lesothon lotia\",\n symbol: \"LSL\"\n },\n LTL: {\n displayName: \"Liettuan liti\",\n \"displayName-count-one\": \"Liettuan liti\",\n \"displayName-count-other\": \"Liettuan litiä\",\n symbol: \"LTL\",\n \"symbol-alt-narrow\": \"LTL\"\n },\n LTT: {\n displayName: \"Liettuan talonas\",\n \"displayName-count-one\": \"Liettuan talonas\",\n \"displayName-count-other\": \"Liettuan talonasia\",\n symbol: \"LTT\"\n },\n LUC: {\n displayName: \"Luxemburgin vaihdettava frangi\",\n \"displayName-count-one\": \"Luxemburgin vaihdettava frangi\",\n \"displayName-count-other\": \"Luxemburgin vaihdettavaa frangia\",\n symbol: \"LUC\"\n },\n LUF: {\n displayName: \"Luxemburgin frangi\",\n \"displayName-count-one\": \"Luxemburgin frangi\",\n \"displayName-count-other\": \"Luxemburgin frangia\",\n symbol: \"LUF\"\n },\n LUL: {\n displayName: \"Luxemburgin rahoitusfrangi\",\n \"displayName-count-one\": \"Luxemburgin rahoitusfrangi\",\n \"displayName-count-other\": \"Luxemburgin rahoitusfrangia\",\n symbol: \"LUL\"\n },\n LVL: {\n displayName: \"Latvian lati\",\n \"displayName-count-one\": \"Latvian lati\",\n \"displayName-count-other\": \"Latvian latia\",\n symbol: \"LVL\",\n \"symbol-alt-narrow\": \"LVL\"\n },\n LVR: {\n displayName: \"Latvian rupla\",\n \"displayName-count-one\": \"Latvian rupla\",\n \"displayName-count-other\": \"Latvian ruplaa\",\n symbol: \"LVR\"\n },\n LYD: {\n displayName: \"Libyan dinaari\",\n \"displayName-count-one\": \"Libyan dinaari\",\n \"displayName-count-other\": \"Libyan dinaaria\",\n symbol: \"LYD\"\n },\n MAD: {\n displayName: \"Marokon dirhami\",\n \"displayName-count-one\": \"Marokon dirhami\",\n \"displayName-count-other\": \"Marokon dirhamia\",\n symbol: \"MAD\"\n },\n MAF: {\n displayName: \"Marokon frangi\",\n \"displayName-count-one\": \"Marokon frangi\",\n \"displayName-count-other\": \"Marokon frangia\",\n symbol: \"MAF\"\n },\n MCF: {\n displayName: \"Monacon frangi\",\n \"displayName-count-one\": \"Monacon frangi\",\n \"displayName-count-other\": \"Monacon frangia\",\n symbol: \"MCF\"\n },\n MDC: {\n displayName: \"Moldovan kuponkileu\",\n \"displayName-count-one\": \"Moldovan kuponkileu\",\n \"displayName-count-other\": \"Moldovan kuponkileuta\",\n symbol: \"MDC\"\n },\n MDL: {\n displayName: \"Moldovan leu\",\n \"displayName-count-one\": \"Moldovan leu\",\n \"displayName-count-other\": \"Moldovan leuta\",\n symbol: \"MDL\"\n },\n MGA: {\n displayName: \"Madagaskarin ariary\",\n \"displayName-count-one\": \"Madagaskarin ariary\",\n \"displayName-count-other\": \"Madagaskarin ariarya\",\n symbol: \"MGA\",\n \"symbol-alt-narrow\": \"MGA\"\n },\n MGF: {\n displayName: \"Madagaskarin frangi\",\n \"displayName-count-one\": \"Madagaskarin frangi\",\n \"displayName-count-other\": \"Madagaskarin frangia\",\n symbol: \"MGF\"\n },\n MKD: {\n displayName: \"Makedonian denaari\",\n \"displayName-count-one\": \"Makedonian denaari\",\n \"displayName-count-other\": \"Makedonian denaaria\",\n symbol: \"MKD\"\n },\n MKN: {\n displayName: \"Makedonian dinaari (1992–1993)\",\n \"displayName-count-one\": \"Makedonian dinaari (1992–1993)\",\n \"displayName-count-other\": \"Makedonian dinaaria (1992–1993)\",\n symbol: \"MKN\"\n },\n MLF: {\n displayName: \"Malin frangi\",\n \"displayName-count-one\": \"Malin frangi\",\n \"displayName-count-other\": \"Malin frangia\",\n symbol: \"MLF\"\n },\n MMK: {\n displayName: \"Myanmarin kyat\",\n \"displayName-count-one\": \"Myanmarin kyat\",\n \"displayName-count-other\": \"Myanmarin kyatia\",\n symbol: \"MMK\",\n \"symbol-alt-narrow\": \"MMK\"\n },\n MNT: {\n displayName: \"Mongolian tugrik\",\n \"displayName-count-one\": \"Mongolian tugrik\",\n \"displayName-count-other\": \"Mongolian tugrikia\",\n symbol: \"MNT\",\n \"symbol-alt-narrow\": \"MNT\"\n },\n MOP: {\n displayName: \"Macaon pataca\",\n \"displayName-count-one\": \"Macaon pataca\",\n \"displayName-count-other\": \"Macaon patacaa\",\n symbol: \"MOP\"\n },\n MRO: {\n displayName: \"Mauritanian ouguiya (1973–2017)\",\n \"displayName-count-one\": \"Mauritanian ouguiya (1973–2017)\",\n \"displayName-count-other\": \"Mauritanian ouguiyaa (1973–2017)\",\n symbol: \"MRO\"\n },\n MRU: {\n displayName: \"Mauritanian ouguiya\",\n \"displayName-count-one\": \"Mauritanian ouguiya\",\n \"displayName-count-other\": \"Mauritanian ouguiyaa\",\n symbol: \"MRU\"\n },\n MTL: {\n displayName: \"Maltan liira\",\n \"displayName-count-one\": \"Maltan liira\",\n \"displayName-count-other\": \"Maltan liiraa\",\n symbol: \"MTL\"\n },\n MTP: {\n displayName: \"Maltan punta\",\n \"displayName-count-one\": \"Maltan punta\",\n \"displayName-count-other\": \"Maltan puntaa\",\n symbol: \"MTP\"\n },\n MUR: {\n displayName: \"Mauritiuksen rupia\",\n \"displayName-count-one\": \"Mauritiuksen rupia\",\n \"displayName-count-other\": \"Mauritiuksen rupiaa\",\n symbol: \"MUR\",\n \"symbol-alt-narrow\": \"MUR\"\n },\n MVP: {\n displayName: \"Malediivien rupia (1947–1981)\",\n \"displayName-count-one\": \"Malediivien rupia (1947–1981)\",\n \"displayName-count-other\": \"Malediivien rupiaa (1947–1981)\",\n symbol: \"MVP\"\n },\n MVR: {\n displayName: \"Malediivien rufiyaa\",\n \"displayName-count-one\": \"Malediivien rufiyaa\",\n \"displayName-count-other\": \"Malediivien rufiyaata\",\n symbol: \"MVR\"\n },\n MWK: {\n displayName: \"Malawin kwacha\",\n \"displayName-count-one\": \"Malawin kwacha\",\n \"displayName-count-other\": \"Malawin kwachaa\",\n symbol: \"MWK\"\n },\n MXN: {\n displayName: \"Meksikon peso\",\n \"displayName-count-one\": \"Meksikon peso\",\n \"displayName-count-other\": \"Meksikon pesoa\",\n symbol: \"MXN\",\n \"symbol-alt-narrow\": \"MXN\"\n },\n MXP: {\n displayName: \"Meksikon hopeapeso (1861–1992)\",\n \"displayName-count-one\": \"Meksikon hopeapeso (1861–1992)\",\n \"displayName-count-other\": \"Meksikon hopeapesoa (1861–1992)\",\n symbol: \"MXP\"\n },\n MXV: {\n displayName: \"Meksikon UDI\",\n \"displayName-count-one\": \"Meksikon UDI\",\n \"displayName-count-other\": \"Meksikon UDI’ta\",\n symbol: \"MXV\"\n },\n MYR: {\n displayName: \"Malesian ringgit\",\n \"displayName-count-one\": \"Malesian ringgit\",\n \"displayName-count-other\": \"Malesian ringgitiä\",\n symbol: \"MYR\",\n \"symbol-alt-narrow\": \"MYR\"\n },\n MZE: {\n displayName: \"Mosambikin escudo\",\n \"displayName-count-one\": \"Mosambikin escudo\",\n \"displayName-count-other\": \"Mosambikin escudoa\",\n symbol: \"MZE\"\n },\n MZM: {\n displayName: \"Mosambikin metical (1980–2006)\",\n \"displayName-count-one\": \"Mosambikin metical (1980–2006)\",\n \"displayName-count-other\": \"Mosambikin meticalia (1980–2006)\",\n symbol: \"MZM\"\n },\n MZN: {\n displayName: \"Mosambikin metical\",\n \"displayName-count-one\": \"Mosambikin metical\",\n \"displayName-count-other\": \"Mosambikin meticalia\",\n symbol: \"MZN\"\n },\n NAD: {\n displayName: \"Namibian dollari\",\n \"displayName-count-one\": \"Namibian dollari\",\n \"displayName-count-other\": \"Namibian dollaria\",\n symbol: \"NAD\",\n \"symbol-alt-narrow\": \"NAD\"\n },\n NGN: {\n displayName: \"Nigerian naira\",\n \"displayName-count-one\": \"Nigerian naira\",\n \"displayName-count-other\": \"Nigerian nairaa\",\n symbol: \"NGN\",\n \"symbol-alt-narrow\": \"NGN\"\n },\n NIC: {\n displayName: \"Nicaraguan córdoba (1988–1991)\",\n \"displayName-count-one\": \"Nicaraguan córdoba (1988–1991)\",\n \"displayName-count-other\": \"Nicaraguan córdobaa (1988–1991)\",\n symbol: \"NIC\"\n },\n NIO: {\n displayName: \"Nicaraguan córdoba\",\n \"displayName-count-one\": \"Nicaraguan córdoba\",\n \"displayName-count-other\": \"Nicaraguan córdobaa\",\n symbol: \"NIO\",\n \"symbol-alt-narrow\": \"NIO\"\n },\n NLG: {\n displayName: \"Alankomaiden guldeni\",\n \"displayName-count-one\": \"Alankomaiden guldeni\",\n \"displayName-count-other\": \"Alankomaiden guldenia\",\n symbol: \"NLG\"\n },\n NOK: {\n displayName: \"Norjan kruunu\",\n \"displayName-count-one\": \"Norjan kruunu\",\n \"displayName-count-other\": \"Norjan kruunua\",\n symbol: \"NOK\",\n \"symbol-alt-narrow\": \"NOK\"\n },\n NPR: {\n displayName: \"Nepalin rupia\",\n \"displayName-count-one\": \"Nepalin rupia\",\n \"displayName-count-other\": \"Nepalin rupiaa\",\n symbol: \"NPR\",\n \"symbol-alt-narrow\": \"NPR\"\n },\n NZD: {\n displayName: \"Uuden-Seelannin dollari\",\n \"displayName-count-one\": \"Uuden-Seelannin dollari\",\n \"displayName-count-other\": \"Uuden-Seelannin dollaria\",\n symbol: \"NZD\",\n \"symbol-alt-narrow\": \"NZD\"\n },\n OMR: {\n displayName: \"Omanin rial\",\n \"displayName-count-one\": \"Omanin rial\",\n \"displayName-count-other\": \"Omanin rialia\",\n symbol: \"OMR\"\n },\n PAB: {\n displayName: \"Panaman balboa\",\n \"displayName-count-one\": \"Panaman balboa\",\n \"displayName-count-other\": \"Panaman balboaa\",\n symbol: \"PAB\"\n },\n PEI: {\n displayName: \"Perun inti\",\n \"displayName-count-one\": \"Perun inti\",\n \"displayName-count-other\": \"Perun intiä\",\n symbol: \"PEI\"\n },\n PEN: {\n displayName: \"Perun sol\",\n \"displayName-count-one\": \"Perun sol\",\n \"displayName-count-other\": \"Perun solia\",\n symbol: \"PEN\"\n },\n PES: {\n displayName: \"Perun sol (1863–1965)\",\n \"displayName-count-one\": \"Perun sol (1863–1965)\",\n \"displayName-count-other\": \"Perun solia (1863–1965)\",\n symbol: \"PES\"\n },\n PGK: {\n displayName: \"Papua-Uuden-Guinean kina\",\n \"displayName-count-one\": \"Papua-Uuden-Guinean kina\",\n \"displayName-count-other\": \"Papua-Uuden-Guinean kinaa\",\n symbol: \"PGK\"\n },\n PHP: {\n displayName: \"Filippiinien peso\",\n \"displayName-count-one\": \"Filippiinien peso\",\n \"displayName-count-other\": \"Filippiinien pesoa\",\n symbol: \"PHP\",\n \"symbol-alt-narrow\": \"PHP\"\n },\n PKR: {\n displayName: \"Pakistanin rupia\",\n \"displayName-count-one\": \"Pakistanin rupia\",\n \"displayName-count-other\": \"Pakistanin rupiaa\",\n symbol: \"PKR\",\n \"symbol-alt-narrow\": \"PKR\"\n },\n PLN: {\n displayName: \"Puolan złoty\",\n \"displayName-count-one\": \"Puolan złoty\",\n \"displayName-count-other\": \"Puolan złotya\",\n symbol: \"PLN\",\n \"symbol-alt-narrow\": \"PLN\"\n },\n PLZ: {\n displayName: \"Puolan złoty (1950–1995)\",\n \"displayName-count-one\": \"Puolan złoty (1950–1995)\",\n \"displayName-count-other\": \"Puolan złotya (1950–1995)\",\n symbol: \"PLZ\"\n },\n PTE: {\n displayName: \"Portugalin escudo\",\n \"displayName-count-one\": \"Portugalin escudo\",\n \"displayName-count-other\": \"Portugalin escudoa\",\n symbol: \"PTE\"\n },\n PYG: {\n displayName: \"Paraguayn guarani\",\n \"displayName-count-one\": \"Paraguayn guarani\",\n \"displayName-count-other\": \"Paraguayn guarania\",\n symbol: \"PYG\",\n \"symbol-alt-narrow\": \"PYG\"\n },\n QAR: {\n displayName: \"Qatarin rial\",\n \"displayName-count-one\": \"Qatarin rial\",\n \"displayName-count-other\": \"Qatarin rialia\",\n symbol: \"QAR\"\n },\n RHD: {\n displayName: \"Rhodesian dollari\",\n \"displayName-count-one\": \"Rhodesian dollari\",\n \"displayName-count-other\": \"Rhodesian dollaria\",\n symbol: \"RHD\"\n },\n ROL: {\n displayName: \"Romanian leu (1952–2006)\",\n \"displayName-count-one\": \"Romanian leu (1952–2006)\",\n \"displayName-count-other\": \"Romanian leuta (1952–2006)\",\n symbol: \"ROL\"\n },\n RON: {\n displayName: \"Romanian leu\",\n \"displayName-count-one\": \"Romanian leu\",\n \"displayName-count-other\": \"Romanian leuta\",\n symbol: \"RON\",\n \"symbol-alt-narrow\": \"RON\"\n },\n RSD: {\n displayName: \"Serbian dinaari\",\n \"displayName-count-one\": \"Serbian dinaari\",\n \"displayName-count-other\": \"Serbian dinaaria\",\n symbol: \"RSD\"\n },\n RUB: {\n displayName: \"Venäjän rupla\",\n \"displayName-count-one\": \"Venäjän rupla\",\n \"displayName-count-other\": \"Venäjän ruplaa\",\n symbol: \"RUB\",\n \"symbol-alt-narrow\": \"₽\"\n },\n RUR: {\n displayName: \"Venäjän rupla (1991–1998)\",\n \"displayName-count-one\": \"Venäjän rupla (1991–1998)\",\n \"displayName-count-other\": \"Venäjän ruplaa (1991–1998)\",\n symbol: \"RUR\"\n },\n RWF: {\n displayName: \"Ruandan frangi\",\n \"displayName-count-one\": \"Ruandan frangi\",\n \"displayName-count-other\": \"Ruandan frangia\",\n symbol: \"RWF\",\n \"symbol-alt-narrow\": \"RWF\"\n },\n SAR: {\n displayName: \"Saudi-Arabian rial\",\n \"displayName-count-one\": \"Saudi-Arabian rial\",\n \"displayName-count-other\": \"Saudi-Arabian rialia\",\n symbol: \"SAR\"\n },\n SBD: {\n displayName: \"Salomonsaarten dollari\",\n \"displayName-count-one\": \"Salomonsaarten dollari\",\n \"displayName-count-other\": \"Salomonsaarten dollaria\",\n symbol: \"SBD\",\n \"symbol-alt-narrow\": \"SBD\"\n },\n SCR: {\n displayName: \"Seychellien rupia\",\n \"displayName-count-one\": \"Seychellien rupia\",\n \"displayName-count-other\": \"Seychellien rupiaa\",\n symbol: \"SCR\"\n },\n SDD: {\n displayName: \"Sudanin dinaari (1992–2007)\",\n \"displayName-count-one\": \"Sudanin dinaari (1992–2007)\",\n \"displayName-count-other\": \"Sudanin dinaaria (1992–2007)\",\n symbol: \"SDD\"\n },\n SDG: {\n displayName: \"Sudanin punta\",\n \"displayName-count-one\": \"Sudanin punta\",\n \"displayName-count-other\": \"Sudanin puntaa\",\n symbol: \"SDG\"\n },\n SDP: {\n displayName: \"Sudanin punta (1957–1998)\",\n \"displayName-count-one\": \"Sudanin punta (1957–1998)\",\n \"displayName-count-other\": \"Sudanin puntaa (1957–1998)\",\n symbol: \"SDP\"\n },\n SEK: {\n displayName: \"Ruotsin kruunu\",\n \"displayName-count-one\": \"Ruotsin kruunu\",\n \"displayName-count-other\": \"Ruotsin kruunua\",\n symbol: \"SEK\",\n \"symbol-alt-narrow\": \"SEK\"\n },\n SGD: {\n displayName: \"Singaporen dollari\",\n \"displayName-count-one\": \"Singaporen dollari\",\n \"displayName-count-other\": \"Singaporen dollaria\",\n symbol: \"SGD\",\n \"symbol-alt-narrow\": \"SGD\"\n },\n SHP: {\n displayName: \"Saint Helenan punta\",\n \"displayName-count-one\": \"Saint Helenan punta\",\n \"displayName-count-other\": \"Saint Helenan puntaa\",\n symbol: \"SHP\",\n \"symbol-alt-narrow\": \"SHP\"\n },\n SIT: {\n displayName: \"Slovenian tolar\",\n \"displayName-count-one\": \"Slovenian tolar\",\n \"displayName-count-other\": \"Slovenian tolaria\",\n symbol: \"SIT\"\n },\n SKK: {\n displayName: \"Slovakian koruna\",\n \"displayName-count-one\": \"Slovakian koruna\",\n \"displayName-count-other\": \"Slovakian korunaa\",\n symbol: \"SKK\"\n },\n SLE: {\n displayName: \"SLE\",\n symbol: \"SLE\"\n },\n SLL: {\n displayName: \"Sierra Leonen leone\",\n \"displayName-count-one\": \"Sierra Leonen leone\",\n \"displayName-count-other\": \"Sierra Leonen leonea\",\n symbol: \"SLL\"\n },\n SOS: {\n displayName: \"Somalian šillinki\",\n \"displayName-count-one\": \"Somalian šillinki\",\n \"displayName-count-other\": \"Somalian šillinkiä\",\n symbol: \"SOS\"\n },\n SRD: {\n displayName: \"Surinamen dollari\",\n \"displayName-count-one\": \"Surinamen dollari\",\n \"displayName-count-other\": \"Surinamen dollaria\",\n symbol: \"SRD\",\n \"symbol-alt-narrow\": \"SRD\"\n },\n SRG: {\n displayName: \"Surinamen guldeni\",\n \"displayName-count-one\": \"Surinamen guldeni\",\n \"displayName-count-other\": \"Surinamen guldeni\",\n symbol: \"SRG\"\n },\n SSP: {\n displayName: \"Etelä-Sudanin punta\",\n \"displayName-count-one\": \"Etelä-Sudanin punta\",\n \"displayName-count-other\": \"Etelä-Sudanin puntaa\",\n symbol: \"SSP\",\n \"symbol-alt-narrow\": \"SSP\"\n },\n STD: {\n displayName: \"São Tomén ja Príncipen dobra (1977–2017)\",\n \"displayName-count-one\": \"São Tomén ja Príncipen dobra (1977–2017)\",\n \"displayName-count-other\": \"São Tomén ja Príncipen dobraa (1977–2017)\",\n symbol: \"STD\"\n },\n STN: {\n displayName: \"São Tomén ja Príncipen dobra\",\n \"displayName-count-one\": \"São Tomén ja Príncipen dobra\",\n \"displayName-count-other\": \"São Tomén ja Príncipen dobraa\",\n symbol: \"STN\",\n \"symbol-alt-narrow\": \"STD\"\n },\n SUR: {\n displayName: \"Neuvostoliiton rupla\",\n \"displayName-count-one\": \"Neuvostoliiton rupla\",\n \"displayName-count-other\": \"Neuvostoliiton ruplaa\",\n symbol: \"SUR\"\n },\n SVC: {\n displayName: \"El Salvadorin colón\",\n \"displayName-count-one\": \"El Salvadorin colón\",\n \"displayName-count-other\": \"El Salvadorin colónia\",\n symbol: \"SVC\"\n },\n SYP: {\n displayName: \"Syyrian punta\",\n \"displayName-count-one\": \"Syyrian punta\",\n \"displayName-count-other\": \"Syyrian puntaa\",\n symbol: \"SYP\",\n \"symbol-alt-narrow\": \"SYP\"\n },\n SZL: {\n displayName: \"Swazimaan lilangeni\",\n \"displayName-count-one\": \"Swazimaan lilangeni\",\n \"displayName-count-other\": \"Swazimaan lilangenia\",\n symbol: \"SZL\"\n },\n THB: {\n displayName: \"Thaimaan baht\",\n \"displayName-count-one\": \"Thaimaan baht\",\n \"displayName-count-other\": \"Thaimaan bahtia\",\n symbol: \"THB\",\n \"symbol-alt-narrow\": \"THB\"\n },\n TJR: {\n displayName: \"Tadžikistanin rupla\",\n \"displayName-count-one\": \"Tadžikistanin rupla\",\n \"displayName-count-other\": \"Tadžikistanin ruplaa\",\n symbol: \"TJR\"\n },\n TJS: {\n displayName: \"Tadžikistanin somoni\",\n \"displayName-count-one\": \"Tadžikistanin somoni\",\n \"displayName-count-other\": \"Tadžikistanin somonia\",\n symbol: \"TJS\"\n },\n TMM: {\n displayName: \"Turkmenistanin manat (1993–2009)\",\n \"displayName-count-one\": \"Turkmenistanin manat (1993–2009)\",\n \"displayName-count-other\": \"Turkmenistanin manatia (1993–2009)\",\n symbol: \"TMM\"\n },\n TMT: {\n displayName: \"Turkmenistanin manat\",\n \"displayName-count-one\": \"Turkmenistanin manat\",\n \"displayName-count-other\": \"Turkmenistanin manatia\",\n symbol: \"TMT\"\n },\n TND: {\n displayName: \"Tunisian dinaari\",\n \"displayName-count-one\": \"Tunisian dinaari\",\n \"displayName-count-other\": \"Tunisian dinaaria\",\n symbol: \"TND\"\n },\n TOP: {\n displayName: \"Tongan pa’anga\",\n \"displayName-count-one\": \"Tongan pa’anga\",\n \"displayName-count-other\": \"Tongan pa’angaa\",\n symbol: \"TOP\",\n \"symbol-alt-narrow\": \"TOP\"\n },\n TPE: {\n displayName: \"Timorin escudo\",\n \"displayName-count-one\": \"Timorin escudo\",\n \"displayName-count-other\": \"Timorin escudoa\",\n symbol: \"TPE\"\n },\n TRL: {\n displayName: \"Turkin liira (1922–2005)\",\n \"displayName-count-one\": \"Turkin liira (1922–2005)\",\n \"displayName-count-other\": \"Turkin liiraa (1922–2005)\",\n symbol: \"TRL\"\n },\n TRY: {\n displayName: \"Turkin liira\",\n \"displayName-count-one\": \"Turkin liira\",\n \"displayName-count-other\": \"Turkin liiraa\",\n symbol: \"TRY\",\n \"symbol-alt-narrow\": \"TRY\",\n \"symbol-alt-variant\": \"TL\"\n },\n TTD: {\n displayName: \"Trinidadin ja Tobagon dollari\",\n \"displayName-count-one\": \"Trinidadin ja Tobagon dollari\",\n \"displayName-count-other\": \"Trinidadin ja Tobagon dollaria\",\n symbol: \"TTD\",\n \"symbol-alt-narrow\": \"TTD\"\n },\n TWD: {\n displayName: \"Taiwanin uusi dollari\",\n \"displayName-count-one\": \"Taiwanin uusi dollari\",\n \"displayName-count-other\": \"Taiwanin uutta dollaria\",\n symbol: \"TWD\",\n \"symbol-alt-narrow\": \"TWD\"\n },\n TZS: {\n displayName: \"Tansanian šillinki\",\n \"displayName-count-one\": \"Tansanian šillinki\",\n \"displayName-count-other\": \"Tansanian šillinkiä\",\n symbol: \"TZS\"\n },\n UAH: {\n displayName: \"Ukrainan hryvnia\",\n \"displayName-count-one\": \"Ukrainan hryvnia\",\n \"displayName-count-other\": \"Ukrainan hryvniaa\",\n symbol: \"UAH\",\n \"symbol-alt-narrow\": \"UAH\"\n },\n UAK: {\n displayName: \"Ukrainan karbovanetz\",\n \"displayName-count-one\": \"Ukrainan karbovanetz\",\n \"displayName-count-other\": \"Ukrainan karbovanetzia\",\n symbol: \"UAK\"\n },\n UGS: {\n displayName: \"Ugandan šillinki (1966–1987)\",\n \"displayName-count-one\": \"Ugandan šillinki (1966–1987)\",\n \"displayName-count-other\": \"Ugandan šillinkiä (1966–1987)\",\n symbol: \"UGS\"\n },\n UGX: {\n displayName: \"Ugandan šillinki\",\n \"displayName-count-one\": \"Ugandan šillinki\",\n \"displayName-count-other\": \"Ugandan šillinkiä\",\n symbol: \"UGX\"\n },\n USD: {\n displayName: \"Yhdysvaltain dollari\",\n \"displayName-count-one\": \"Yhdysvaltain dollari\",\n \"displayName-count-other\": \"Yhdysvaltain dollaria\",\n symbol: \"$\",\n \"symbol-alt-narrow\": \"$\"\n },\n USN: {\n displayName: \"Yhdysvaltain dollari (seuraava päivä)\",\n \"displayName-count-one\": \"Yhdysvaltain dollari (seuraava päivä)\",\n \"displayName-count-other\": \"Yhdysvaltain dollaria (seuraava päivä)\",\n symbol: \"USN\"\n },\n USS: {\n displayName: \"Yhdysvaltain dollari (sama päivä)\",\n \"displayName-count-one\": \"Yhdysvaltain dollari (sama päivä)\",\n \"displayName-count-other\": \"Yhdysvaltain dollaria (sama päivä)\",\n symbol: \"USS\"\n },\n UYI: {\n displayName: \"Uruguayn peso en unidades indexadas\",\n \"displayName-count-one\": \"Uruguayn peso en unidades indexadas\",\n \"displayName-count-other\": \"Uruguayn pesoa en unidades indexadas\",\n symbol: \"UYI\"\n },\n UYP: {\n displayName: \"Uruguayn peso (1975–1993)\",\n \"displayName-count-one\": \"Uruguayn peso (1975–1993)\",\n \"displayName-count-other\": \"Uruguayn pesoa (1975–1993)\",\n symbol: \"UYP\"\n },\n UYU: {\n displayName: \"Uruguayn peso\",\n \"displayName-count-one\": \"Uruguayn peso\",\n \"displayName-count-other\": \"Uruguayn pesoa\",\n symbol: \"UYU\",\n \"symbol-alt-narrow\": \"UYU\"\n },\n UYW: {\n displayName: \"Uruguayn nimellinen palkkaindeksiyksikkö\",\n \"displayName-count-one\": \"Uruguayn nimellinen palkkaindeksiyksikkö\",\n \"displayName-count-other\": \"Uruguayn nimellistä palkkaindeksiyksikköä\",\n symbol: \"UYW\"\n },\n UZS: {\n displayName: \"Uzbekistanin som\",\n \"displayName-count-one\": \"Uzbekistanin som\",\n \"displayName-count-other\": \"Uzbekistanin somia\",\n symbol: \"UZS\"\n },\n VEB: {\n displayName: \"Venezuelan bolívar (1871–2008)\",\n \"displayName-count-one\": \"Venezuelan bolivar (1871–2008)\",\n \"displayName-count-other\": \"Venezuelan bolivaria (1871–2008)\",\n symbol: \"VEB\"\n },\n VED: {\n displayName: \"VED\",\n symbol: \"VED\"\n },\n VEF: {\n displayName: \"Venezuelan bolívar (2008–2018)\",\n \"displayName-count-one\": \"Venezuelan bolívar (2008–2018)\",\n \"displayName-count-other\": \"Venezuelan bolívaria (2008–2018)\",\n symbol: \"VEF\",\n \"symbol-alt-narrow\": \"VEF\"\n },\n VES: {\n displayName: \"Venezuelan suvereeni bolívar\",\n \"displayName-count-one\": \"Venezuelan suvereeni bolívar\",\n \"displayName-count-other\": \"Venezuelan suvereenia bolívaria\",\n symbol: \"VES\"\n },\n VND: {\n displayName: \"Vietnamin dong\",\n \"displayName-count-one\": \"Vietnamin dong\",\n \"displayName-count-other\": \"Vietnamin dongia\",\n symbol: \"VND\",\n \"symbol-alt-narrow\": \"VND\"\n },\n VNN: {\n displayName: \"Vietnamin dong (1978–1985)\",\n \"displayName-count-one\": \"Vietnamin dong (1978–1985)\",\n \"displayName-count-other\": \"Vietnamin dongia (1978–1985)\",\n symbol: \"VNN\"\n },\n VUV: {\n displayName: \"Vanuatun vatu\",\n \"displayName-count-one\": \"Vanuatun vatu\",\n \"displayName-count-other\": \"Vanuatun vatua\",\n symbol: \"VUV\"\n },\n WST: {\n displayName: \"Samoan tala\",\n \"displayName-count-one\": \"Samoan tala\",\n \"displayName-count-other\": \"Samoan talaa\",\n symbol: \"WST\"\n },\n XAF: {\n displayName: \"CFA-frangi BEAC\",\n \"displayName-count-one\": \"CFA-frangi BEAC\",\n \"displayName-count-other\": \"CFA-frangia BEAC\",\n symbol: \"FCFA\"\n },\n XAG: {\n displayName: \"hopea\",\n \"displayName-count-one\": \"troy-unssi hopeaa\",\n \"displayName-count-other\": \"troy-unssia hopeaa\",\n symbol: \"XAG\"\n },\n XAU: {\n displayName: \"kulta\",\n \"displayName-count-one\": \"troy-unssi kultaa\",\n \"displayName-count-other\": \"troy-unssia kultaa\",\n symbol: \"XAU\"\n },\n XBA: {\n displayName: \"EURCO\",\n \"displayName-count-one\": \"EURCO\",\n \"displayName-count-other\": \"EURCO’a\",\n symbol: \"XBA\"\n },\n XBB: {\n displayName: \"Euroopan rahayksikkö (EMU)\",\n \"displayName-count-one\": \"Euroopan rahayksikkö (EMU)\",\n \"displayName-count-other\": \"Euroopan rahayksikköä (EMU)\",\n symbol: \"XBB\"\n },\n XBC: {\n displayName: \"EUA (XBC)\",\n \"displayName-count-one\": \"EUA (XBC)\",\n \"displayName-count-other\": \"EUA’ta (XBC)\",\n symbol: \"XBC\"\n },\n XBD: {\n displayName: \"EUA (XBD)\",\n \"displayName-count-one\": \"EUA (XBD)\",\n \"displayName-count-other\": \"EUA’ta (XBD)\",\n symbol: \"XBD\"\n },\n XCD: {\n displayName: \"Itä-Karibian dollari\",\n \"displayName-count-one\": \"Itä-Karibian dollari\",\n \"displayName-count-other\": \"Itä-Karibian dollaria\",\n symbol: \"XCD\",\n \"symbol-alt-narrow\": \"XCD\"\n },\n XDR: {\n displayName: \"erityisnosto-oikeus (SDR)\",\n \"displayName-count-one\": \"erityisnosto-oikeus (SDR)\",\n \"displayName-count-other\": \"erityisnosto-oikeutta (SDR)\",\n symbol: \"XDR\"\n },\n XEU: {\n displayName: \"Euroopan valuuttayksikkö (ECU)\",\n \"displayName-count-one\": \"Euroopan valuuttayksikkö (ECU)\",\n \"displayName-count-other\": \"Euroopan valuuttayksikköä (ECU)\",\n symbol: \"XEU\"\n },\n XFO: {\n displayName: \"Ranskan kultafrangi\",\n \"displayName-count-one\": \"Ranskan kultafrangi\",\n \"displayName-count-other\": \"Ranskan kultafrangia\",\n symbol: \"XFO\"\n },\n XFU: {\n displayName: \"Ranskan UIC-frangi\",\n \"displayName-count-one\": \"Ranskan UIC-frangi\",\n \"displayName-count-other\": \"Ranskan UIC-frangia\",\n symbol: \"XFU\"\n },\n XOF: {\n displayName: \"CFA-frangi BCEAO\",\n \"displayName-count-one\": \"CFA-frangi BCEAO\",\n \"displayName-count-other\": \"CFA-frangia BCEAO\",\n symbol: \"F CFA\"\n },\n XPD: {\n displayName: \"palladium\",\n \"displayName-count-one\": \"troy-unssi palladiumia\",\n \"displayName-count-other\": \"troy-unssia palladiumia\",\n symbol: \"XPD\"\n },\n XPF: {\n displayName: \"CFP-frangi\",\n \"displayName-count-one\": \"CFP-frangi\",\n \"displayName-count-other\": \"CFP-frangia\",\n symbol: \"XPF\"\n },\n XPT: {\n displayName: \"platina\",\n \"displayName-count-one\": \"troy-unssi platinaa\",\n \"displayName-count-other\": \"troy-unssia platinaa\",\n symbol: \"XPT\"\n },\n XRE: {\n displayName: \"RINET-rahastot\",\n \"displayName-count-one\": \"RINET-rahastoyksikkö\",\n \"displayName-count-other\": \"RINET-rahastoyksikköä\",\n symbol: \"XRE\"\n },\n XSU: {\n displayName: \"etelä-amerikkalaisen ALBA:n laskentayksikkö sucre\",\n \"displayName-count-one\": \"sucre\",\n \"displayName-count-other\": \"sucrea\",\n symbol: \"XSU\"\n },\n XTS: {\n displayName: \"testaustarkoitukseen varattu valuuttakoodi\",\n \"displayName-count-one\": \"testaustarkoitukseen varattu valuuttakoodi\",\n \"displayName-count-other\": \"testaustarkoitukseen varattua valuuttakoodia\",\n symbol: \"XTS\"\n },\n XUA: {\n displayName: \"afrikkalainen AfDB-laskentayksikkö\",\n \"displayName-count-one\": \"AfDB-laskentayksikkö\",\n \"displayName-count-other\": \"AfDB-laskentayksikköä\",\n symbol: \"XUA\"\n },\n XXX: {\n displayName: \"tuntematon rahayksikkö\",\n \"displayName-count-one\": \"tuntematon rahayksikkö\",\n \"displayName-count-other\": \"tuntematonta rahayksikköä\",\n symbol: \"XXX\"\n },\n YDD: {\n displayName: \"Jemenin dinaari\",\n \"displayName-count-one\": \"Jemenin dinaari\",\n \"displayName-count-other\": \"Jemenin dinaaria\",\n symbol: \"YDD\"\n },\n YER: {\n displayName: \"Jemenin rial\",\n \"displayName-count-one\": \"Jemenin rial\",\n \"displayName-count-other\": \"Jemenin rialia\",\n symbol: \"YER\"\n },\n YUD: {\n displayName: \"Jugoslavian kova dinaari (1966–1990)\",\n \"displayName-count-one\": \"Jugoslavian kova dinaari (1966–1990)\",\n \"displayName-count-other\": \"Jugoslavian kovaa dinaaria (1966–1990)\",\n symbol: \"YUD\"\n },\n YUM: {\n displayName: \"Jugoslavian uusi dinaari (1994–2002)\",\n \"displayName-count-one\": \"Jugoslavian uusi dinaari (1994–2002)\",\n \"displayName-count-other\": \"Jugoslavian uutta dinaaria (1994–2002)\",\n symbol: \"YUM\"\n },\n YUN: {\n displayName: \"Jugoslavian vaihdettava dinaari (1990–1992)\",\n \"displayName-count-one\": \"Jugoslavian vaihdettava dinaari (1990–1992)\",\n \"displayName-count-other\": \"Jugoslavian vaihdettavaa dinaaria (1990–1992)\",\n symbol: \"YUN\"\n },\n YUR: {\n displayName: \"Jugoslavian uudistettu dinaari (1992–1993)\",\n \"displayName-count-one\": \"Jugoslavian uudistettu dinaari (1992–1993)\",\n \"displayName-count-other\": \"Jugoslavian uudistettua dinaaria (1992–1993)\",\n symbol: \"YUR\"\n },\n ZAL: {\n displayName: \"Etelä-Afrikan rahoitusrandi\",\n \"displayName-count-one\": \"Etelä-Afrikan rahoitusrandi\",\n \"displayName-count-other\": \"Etelä-Afrikan rahoitusrandia\",\n symbol: \"ZAL\"\n },\n ZAR: {\n displayName: \"Etelä-Afrikan randi\",\n \"displayName-count-one\": \"Etelä-Afrikan randi\",\n \"displayName-count-other\": \"Etelä-Afrikan randia\",\n symbol: \"ZAR\",\n \"symbol-alt-narrow\": \"ZAR\"\n },\n ZMK: {\n displayName: \"Sambian kwacha (1968–2012)\",\n \"displayName-count-one\": \"Sambian kwacha (1968–2012)\",\n \"displayName-count-other\": \"Sambian kwachaa (1968–2012)\",\n symbol: \"ZMK\"\n },\n ZMW: {\n displayName: \"Sambian kwacha\",\n \"displayName-count-one\": \"Sambian kwacha\",\n \"displayName-count-other\": \"Sambian kwachaa\",\n symbol: \"ZMW\",\n \"symbol-alt-narrow\": \"ZMW\"\n },\n ZRN: {\n displayName: \"Zairen uusi zaire (1993–1998)\",\n \"displayName-count-one\": \"Zairen uusi zaire (1993–1998)\",\n \"displayName-count-other\": \"Zairen uutta zairea (1993–1998)\",\n symbol: \"ZRN\"\n },\n ZRZ: {\n displayName: \"Zairen zaire (1971–1993)\",\n \"displayName-count-one\": \"Zairen zaire (1971–1993)\",\n \"displayName-count-other\": \"Zairen zairea (1971–1993)\",\n symbol: \"ZRZ\"\n },\n ZWD: {\n displayName: \"Zimbabwen dollari (1980–2008)\",\n \"displayName-count-one\": \"Zimbabwen dollari (1980–2008)\",\n \"displayName-count-other\": \"Zimbabwen dollaria (1980–2008)\",\n symbol: \"ZWD\"\n },\n ZWL: {\n displayName: \"Zimbabwen dollari (2009)\",\n \"displayName-count-one\": \"Zimbabwen dollari (2009)\",\n \"displayName-count-other\": \"Zimbabwen dollaria (2009)\",\n symbol: \"ZWL\"\n },\n ZWR: {\n displayName: \"Zimbabwen dollari (2008)\",\n \"displayName-count-one\": \"Zimbabwen dollari (2008)\",\n \"displayName-count-other\": \"Zimbabwen dollaria (2008)\",\n symbol: \"ZWR\"\n }\n },\n localeCurrency: \"EUR\"\n },\n calendar: {\n patterns: {\n d: \"d.M.y\",\n D: \"cccc d. MMMM y\",\n m: \"d. MMM\",\n M: \"d. MMMM\",\n y: \"LLL y\",\n Y: \"LLLL y\",\n F: \"cccc d. MMMM y H.mm.ss\",\n g: \"d.M.y H.mm\",\n G: \"d.M.y H.mm.ss\",\n t: \"H.mm\",\n T: \"H.mm.ss\",\n s: \"yyyy'-'MM'-'dd'T'HH':'mm':'ss\",\n u: \"yyyy'-'MM'-'dd HH':'mm':'ss'Z'\"\n },\n dateTimeFormats: {\n full: \"{1} 'klo' {0}\",\n long: \"{1} 'klo' {0}\",\n medium: \"{1} 'klo' {0}\",\n short: \"{1} {0}\",\n availableFormats: {\n Bh: \"h B\",\n Bhm: \"h.mm B\",\n Bhms: \"h.mm.ss B\",\n d: \"d\",\n E: \"ccc\",\n EBhm: \"E h.mm B\",\n EBhms: \"E h.mm.ss B\",\n Ed: \"E d.\",\n Ehm: \"E h.mm a\",\n EHm: \"E H.mm\",\n Ehms: \"E h.mm.ss a\",\n EHms: \"E H.mm.ss\",\n Gy: \"y G\",\n GyMd: \"M.d.y G\",\n GyMMM: \"LLL y G\",\n GyMMMd: \"d. MMM y G\",\n GyMMMEd: \"E d. MMM y G\",\n GyMMMMd: \"d. MMMM y G\",\n GyMMMMEd: \"E d. MMMM y G\",\n h: \"h a\",\n H: \"H\",\n hm: \"h.mm a\",\n Hm: \"H.mm\",\n hms: \"h.mm.ss a\",\n Hms: \"H.mm.ss\",\n hmsv: \"h.mm.ss a v\",\n Hmsv: \"H.mm.ss v\",\n hmv: \"h.mm a v\",\n Hmv: \"H.mm v\",\n M: \"L\",\n Md: \"d.M.\",\n MEd: \"E d.M.\",\n MMM: \"LLL\",\n MMMd: \"d. MMM\",\n MMMEd: \"ccc d. MMM\",\n MMMMd: \"d. MMMM\",\n MMMMEd: \"ccc d. MMMM\",\n \"MMMMW-count-one\": \"LLLL'n' W. 'viikko'\",\n \"MMMMW-count-other\": \"LLLL'n' W. 'viikko'\",\n ms: \"m.ss\",\n y: \"y\",\n yM: \"L.y\",\n yMd: \"d.M.y\",\n yMEd: \"E d.M.y\",\n yMM: \"M.y\",\n yMMM: \"LLL y\",\n yMMMd: \"d. MMM y\",\n yMMMEd: \"E d. MMM y\",\n yMMMM: \"LLLL y\",\n yMMMMccccd: \"cccc d. MMMM y\",\n yMMMMd: \"d. MMMM y\",\n yMMMMEd: \"E d. MMMM y\",\n yQQQ: \"QQQ y\",\n yQQQQ: \"QQQQ y\",\n \"yw-count-one\": \"'vuoden' Y 'viikko' w\",\n \"yw-count-other\": \"'vuoden' Y 'viikko' w\"\n }\n },\n timeFormats: {\n full: \"H.mm.ss zzzz\",\n long: \"H.mm.ss z\",\n medium: \"H.mm.ss\",\n short: \"H.mm\"\n },\n dateFormats: {\n full: \"cccc d. MMMM y\",\n long: \"d. MMMM y\",\n medium: \"d.M.y\",\n short: \"d.M.y\"\n },\n days: {\n format: {\n abbreviated: [\"su\", \"ma\", \"ti\", \"ke\", \"to\", \"pe\", \"la\"],\n narrow: [\"S\", \"M\", \"T\", \"K\", \"T\", \"P\", \"L\"],\n short: [\"su\", \"ma\", \"ti\", \"ke\", \"to\", \"pe\", \"la\"],\n wide: [\"sunnuntaina\", \"maanantaina\", \"tiistaina\", \"keskiviikkona\", \"torstaina\", \"perjantaina\", \"lauantaina\"]\n },\n \"stand-alone\": {\n abbreviated: [\"su\", \"ma\", \"ti\", \"ke\", \"to\", \"pe\", \"la\"],\n narrow: [\"S\", \"M\", \"T\", \"K\", \"T\", \"P\", \"L\"],\n short: [\"su\", \"ma\", \"ti\", \"ke\", \"to\", \"pe\", \"la\"],\n wide: [\"sunnuntai\", \"maanantai\", \"tiistai\", \"keskiviikko\", \"torstai\", \"perjantai\", \"lauantai\"]\n }\n },\n months: {\n format: {\n abbreviated: [\"tammik.\", \"helmik.\", \"maalisk.\", \"huhtik.\", \"toukok.\", \"kesäk.\", \"heinäk.\", \"elok.\", \"syysk.\", \"lokak.\", \"marrask.\", \"jouluk.\"],\n narrow: [\"T\", \"H\", \"M\", \"H\", \"T\", \"K\", \"H\", \"E\", \"S\", \"L\", \"M\", \"J\"],\n wide: [\"tammikuuta\", \"helmikuuta\", \"maaliskuuta\", \"huhtikuuta\", \"toukokuuta\", \"kesäkuuta\", \"heinäkuuta\", \"elokuuta\", \"syyskuuta\", \"lokakuuta\", \"marraskuuta\", \"joulukuuta\"]\n },\n \"stand-alone\": {\n abbreviated: [\"tammi\", \"helmi\", \"maalis\", \"huhti\", \"touko\", \"kesä\", \"heinä\", \"elo\", \"syys\", \"loka\", \"marras\", \"joulu\"],\n narrow: [\"T\", \"H\", \"M\", \"H\", \"T\", \"K\", \"H\", \"E\", \"S\", \"L\", \"M\", \"J\"],\n wide: [\"tammikuu\", \"helmikuu\", \"maaliskuu\", \"huhtikuu\", \"toukokuu\", \"kesäkuu\", \"heinäkuu\", \"elokuu\", \"syyskuu\", \"lokakuu\", \"marraskuu\", \"joulukuu\"]\n }\n },\n quarters: {\n format: {\n abbreviated: [\"1. nelj.\", \"2. nelj.\", \"3. nelj.\", \"4. nelj.\"],\n narrow: [\"1\", \"2\", \"3\", \"4\"],\n wide: [\"1. neljännes\", \"2. neljännes\", \"3. neljännes\", \"4. neljännes\"]\n },\n \"stand-alone\": {\n abbreviated: [\"1. nelj.\", \"2. nelj.\", \"3. nelj.\", \"4. nelj.\"],\n narrow: [\"1\", \"2\", \"3\", \"4\"],\n wide: [\"1. neljännes\", \"2. neljännes\", \"3. neljännes\", \"4. neljännes\"]\n }\n },\n dayPeriods: {\n format: {\n abbreviated: {\n midnight: \"keskiyöllä\",\n am: \"ap.\",\n noon: \"keskip.\",\n pm: \"ip.\",\n morning1: \"aamulla\",\n morning2: \"aamup.\",\n afternoon1: \"iltap.\",\n evening1: \"illalla\",\n night1: \"yöllä\"\n },\n narrow: {\n midnight: \"ky.\",\n am: \"ap.\",\n noon: \"kp.\",\n pm: \"ip.\",\n morning1: \"aamulla\",\n morning2: \"ap.\",\n afternoon1: \"ip.\",\n evening1: \"illalla\",\n night1: \"yöllä\"\n },\n wide: {\n midnight: \"keskiyöllä\",\n am: \"ap.\",\n noon: \"keskipäivällä\",\n pm: \"ip.\",\n morning1: \"aamulla\",\n morning2: \"aamupäivällä\",\n afternoon1: \"iltapäivällä\",\n evening1: \"illalla\",\n night1: \"yöllä\"\n }\n },\n \"stand-alone\": {\n abbreviated: {\n midnight: \"keskiyö\",\n am: \"ap.\",\n noon: \"keskip.\",\n pm: \"ip.\",\n morning1: \"aamu\",\n morning2: \"aamup.\",\n afternoon1: \"iltap.\",\n evening1: \"ilta\",\n night1: \"yö\"\n },\n narrow: {\n midnight: \"ky.\",\n am: \"ap.\",\n noon: \"kp.\",\n pm: \"ip.\",\n morning1: \"aamu\",\n morning2: \"ap.\",\n afternoon1: \"ip.\",\n evening1: \"ilta\",\n night1: \"yö\"\n },\n wide: {\n midnight: \"keskiyö\",\n am: \"ap.\",\n noon: \"keskipäivä\",\n pm: \"ip.\",\n morning1: \"aamu\",\n morning2: \"aamupäivä\",\n afternoon1: \"iltapäivä\",\n evening1: \"ilta\",\n night1: \"yö\"\n }\n }\n },\n eras: {\n format: {\n wide: {\n \"0\": \"ennen Kristuksen syntymää\",\n \"1\": \"jälkeen Kristuksen syntymän\",\n \"0-alt-variant\": \"ennen ajanlaskun alkua\",\n \"1-alt-variant\": \"jälkeen ajanlaskun alun\"\n },\n abbreviated: {\n \"0\": \"eKr.\",\n \"1\": \"jKr.\",\n \"0-alt-variant\": \"eaa.\",\n \"1-alt-variant\": \"jaa.\"\n },\n narrow: {\n \"0\": \"eKr\",\n \"1\": \"jKr\",\n \"0-alt-variant\": \"eaa\",\n \"1-alt-variant\": \"jaa\"\n }\n }\n },\n gmtFormat: \"UTC{0}\",\n gmtZeroFormat: \"UTC\",\n dateFields: {\n era: {\n wide: \"aikakausi\",\n short: \"aikakausi\",\n narrow: \"aikakausi\"\n },\n year: {\n wide: \"vuosi\",\n short: \"v\",\n narrow: \"v\"\n },\n quarter: {\n wide: \"neljännesvuosi\",\n short: \"neljännes\",\n narrow: \"nelj.\"\n },\n month: {\n wide: \"kuukausi\",\n short: \"kk\",\n narrow: \"kk\"\n },\n week: {\n wide: \"viikko\",\n short: \"vk\",\n narrow: \"vk\"\n },\n weekOfMonth: {\n wide: \"kuukauden viikko\",\n short: \"kuukauden vk\",\n narrow: \"kuukauden vk\"\n },\n day: {\n wide: \"päivä\",\n short: \"pv\",\n narrow: \"pv\"\n },\n dayOfYear: {\n wide: \"vuodenpäivä\",\n short: \"vuodenpv\",\n narrow: \"vuodenpv\"\n },\n weekday: {\n wide: \"viikonpäivä\",\n short: \"viikonpäivä\",\n narrow: \"viikonpäivä\"\n },\n weekdayOfMonth: {\n wide: \"kuukauden viikonpäivä\",\n short: \"kuukauden vk päivä\",\n narrow: \"kuukauden vk päivä\"\n },\n dayperiod: {\n short: \"vuorokaudenaika\",\n wide: \"vuorokaudenaika\",\n narrow: \"vuorokaudenaika\"\n },\n hour: {\n wide: \"tunti\",\n short: \"t\",\n narrow: \"t\"\n },\n minute: {\n wide: \"minuutti\",\n short: \"min\",\n narrow: \"min\"\n },\n second: {\n wide: \"sekunti\",\n short: \"s\",\n narrow: \"s\"\n },\n zone: {\n wide: \"aikavyöhyke\",\n short: \"aikavyöhyke\",\n narrow: \"aikavyöhyke\"\n },\n millisecond: {\n narrow: \"ms\",\n short: \"ms\",\n wide: \"millisekunti\"\n }\n }\n },\n firstDay: 1,\n weekendRange: {\n start: 6,\n end: 0\n },\n likelySubtags: {\n fi: \"fi-Latn-FI\"\n }\n});","/**-----------------------------------------------------------------------------------------\n* Copyright © 2024 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nvar setData = require('@progress/kendo-angular-intl').setData;\nsetData({\n name: \"sv\",\n identity: {\n language: \"sv\"\n },\n territory: \"SE\",\n numbers: {\n symbols: {\n decimal: \",\",\n group: \" \",\n list: \";\",\n percentSign: \"%\",\n plusSign: \"+\",\n minusSign: \"−\",\n approximatelySign: \"~\",\n exponential: \"×10^\",\n superscriptingExponent: \"×\",\n perMille: \"‰\",\n infinity: \"∞\",\n nan: \"NaN\",\n timeSeparator: \":\",\n \"timeSeparator-alt-variant\": \".\"\n },\n decimal: {\n patterns: [\"n\"],\n groupSize: [3]\n },\n scientific: {\n patterns: [\"nEn\"],\n groupSize: []\n },\n percent: {\n patterns: [\"n %\"],\n groupSize: [3]\n },\n currency: {\n patterns: [\"n $\"],\n groupSize: [3],\n \"unitPattern-count-one\": \"n $\",\n \"unitPattern-count-other\": \"n $\"\n },\n accounting: {\n patterns: [\"n $\"],\n groupSize: [3]\n },\n currencies: {\n ADP: {\n displayName: \"andorransk peseta\",\n \"displayName-count-one\": \"andorransk peseta\",\n \"displayName-count-other\": \"andorranska pesetas\",\n symbol: \"ADP\"\n },\n AED: {\n displayName: \"emiratisk dirham\",\n \"displayName-count-one\": \"emiratisk dirham\",\n \"displayName-count-other\": \"emiratisk dirham\",\n symbol: \"AED\"\n },\n AFA: {\n displayName: \"afghani (1927–2002)\",\n \"displayName-count-one\": \"afghani (1927–2002)\",\n \"displayName-count-other\": \"afghani (1927–2002)\",\n symbol: \"AFA\"\n },\n AFN: {\n displayName: \"afghansk afghani\",\n \"displayName-count-one\": \"afghansk afghani\",\n \"displayName-count-other\": \"afghanska afghani\",\n symbol: \"AFN\",\n \"symbol-alt-narrow\": \"؋\"\n },\n ALK: {\n displayName: \"albansk lek (1946–1965)\",\n \"displayName-count-one\": \"albansk lek (1946–1965)\",\n \"displayName-count-other\": \"albanska lek (1946–1965)\",\n symbol: \"ALK\"\n },\n ALL: {\n displayName: \"albansk lek\",\n \"displayName-count-one\": \"albansk lek\",\n \"displayName-count-other\": \"albanska leke\",\n symbol: \"ALL\"\n },\n AMD: {\n displayName: \"armenisk dram\",\n \"displayName-count-one\": \"armenisk dram\",\n \"displayName-count-other\": \"armeniska dram\",\n symbol: \"AMD\",\n \"symbol-alt-narrow\": \"֏\"\n },\n ANG: {\n displayName: \"antillergulden\",\n \"displayName-count-one\": \"antillergulden\",\n \"displayName-count-other\": \"antillergulden\",\n symbol: \"ANG\"\n },\n AOA: {\n displayName: \"angolansk kwanza\",\n \"displayName-count-one\": \"angolansk kwanza\",\n \"displayName-count-other\": \"angolanska kwanza\",\n symbol: \"AOA\",\n \"symbol-alt-narrow\": \"Kz\"\n },\n AOK: {\n displayName: \"angolansk kwanza (1977–1990)\",\n \"displayName-count-one\": \"angolansk kwanza (1977–1990)\",\n \"displayName-count-other\": \"angolanska kwanza (1977–1990)\",\n symbol: \"AOK\"\n },\n AON: {\n displayName: \"angolansk ny kwanza (1990–2000)\",\n \"displayName-count-one\": \"angolansk kwanza (1990–2000)\",\n \"displayName-count-other\": \"angolanska nya kwanza (1990–2000)\",\n symbol: \"AON\"\n },\n AOR: {\n displayName: \"angolansk kwanza reajustado (1995–1999)\",\n \"displayName-count-one\": \"angolansk kwanza reajustado (1995–1999)\",\n \"displayName-count-other\": \"angolanska kwanza reajustado (1995–1999)\",\n symbol: \"AOR\"\n },\n ARA: {\n displayName: \"argentinsk austral\",\n \"displayName-count-one\": \"argentinsk austral\",\n \"displayName-count-other\": \"argentinska australer\",\n symbol: \"ARA\"\n },\n ARL: {\n displayName: \"argentisk peso (1970–1983)\",\n \"displayName-count-one\": \"argentisk peso (1970–1983)\",\n \"displayName-count-other\": \"argentiska pesos (1970–1983)\",\n symbol: \"ARL\"\n },\n ARM: {\n displayName: \"argentisk peso (1881–1969)\",\n \"displayName-count-one\": \"argentisk peso (1881–1969)\",\n \"displayName-count-other\": \"argentiska pesos (1881–1969)\",\n symbol: \"ARM\"\n },\n ARP: {\n displayName: \"argentinsk peso (1983–1985)\",\n \"displayName-count-one\": \"argentinsk peso (1983–1985)\",\n \"displayName-count-other\": \"argentinska pesos (1983–1985)\",\n symbol: \"ARP\"\n },\n ARS: {\n displayName: \"argentinsk peso\",\n \"displayName-count-one\": \"argentinsk peso\",\n \"displayName-count-other\": \"argentinska pesos\",\n symbol: \"ARS\",\n \"symbol-alt-narrow\": \"$\"\n },\n ATS: {\n displayName: \"österrikisk schilling\",\n \"displayName-count-one\": \"österrikisk schilling\",\n \"displayName-count-other\": \"österrikiska schilling\",\n symbol: \"ATS\"\n },\n AUD: {\n displayName: \"australisk dollar\",\n \"displayName-count-one\": \"australisk dollar\",\n \"displayName-count-other\": \"australiska dollar\",\n symbol: \"AUD\",\n \"symbol-alt-narrow\": \"$\"\n },\n AWG: {\n displayName: \"arubansk florin\",\n \"displayName-count-one\": \"arubansk florin\",\n \"displayName-count-other\": \"arubanska floriner\",\n symbol: \"AWG\"\n },\n AZM: {\n displayName: \"azerbajdzjansk manat (1993–2006)\",\n \"displayName-count-one\": \"azerbajdzjansk manat (1993–2006)\",\n \"displayName-count-other\": \"azerbajdzjanska manat (1993–2006)\",\n symbol: \"AZM\"\n },\n AZN: {\n displayName: \"azerbajdzjansk manat\",\n \"displayName-count-one\": \"azerbajdzjansk manat\",\n \"displayName-count-other\": \"azerbajdzjanska manat\",\n symbol: \"AZN\",\n \"symbol-alt-narrow\": \"₼\"\n },\n BAD: {\n displayName: \"bosnisk-hercegovinsk dinar (1992–1994)\",\n \"displayName-count-one\": \"bosnisk-hercegovinsk dinar (1992–1994)\",\n \"displayName-count-other\": \"bosnisk-hercegovinska dinarer (1992–1994)\",\n symbol: \"BAD\"\n },\n BAM: {\n displayName: \"bosnisk-hercegovinsk mark (konvertibel)\",\n \"displayName-count-one\": \"bosnisk-hercegovinsk mark (konvertibel)\",\n \"displayName-count-other\": \"bosnisk-hercegovinska mark (konvertibla)\",\n symbol: \"BAM\",\n \"symbol-alt-narrow\": \"KM\"\n },\n BAN: {\n displayName: \"bosnisk-hercegovinsk dinar (1994–1998)\",\n \"displayName-count-one\": \"bosnisk-hercegovinsk dinar (1994–1998)\",\n \"displayName-count-other\": \"bosnisk-hercegovinska dinarer (1994–1998)\",\n symbol: \"BAN\"\n },\n BBD: {\n displayName: \"barbadisk dollar\",\n \"displayName-count-one\": \"barbadisk dollar\",\n \"displayName-count-other\": \"barbadisk dollar\",\n symbol: \"Bds$\",\n \"symbol-alt-narrow\": \"$\"\n },\n BDT: {\n displayName: \"bangladeshisk taka\",\n \"displayName-count-one\": \"bangladeshisk taka\",\n \"displayName-count-other\": \"bangladeshiska taka\",\n symbol: \"BDT\",\n \"symbol-alt-narrow\": \"৳\"\n },\n BEC: {\n displayName: \"belgisk franc (konvertibel)\",\n \"displayName-count-one\": \"belgisk franc (konvertibel)\",\n \"displayName-count-other\": \"belgiska franc (konvertibla)\",\n symbol: \"BEC\"\n },\n BEF: {\n displayName: \"belgisk franc\",\n \"displayName-count-one\": \"belgisk franc\",\n \"displayName-count-other\": \"belgiska franc\",\n symbol: \"BEF\"\n },\n BEL: {\n displayName: \"belgisk franc (finansiell)\",\n \"displayName-count-one\": \"belgisk franc (finansiell)\",\n \"displayName-count-other\": \"belgiska franc (finansiella)\",\n symbol: \"BEL\"\n },\n BGL: {\n displayName: \"bulgarisk hård lev (1962–1999)\",\n \"displayName-count-one\": \"bulgarisk hård lev (1962–1999)\",\n \"displayName-count-other\": \"bulgariska hårda lev (1962–1999)\",\n symbol: \"BGL\"\n },\n BGM: {\n displayName: \"bulgarisk lev (1952–1962)\",\n \"displayName-count-one\": \"bulgarisk lev (1952–1962)\",\n \"displayName-count-other\": \"bulgariska lev (1952–1962)\",\n symbol: \"BGM\"\n },\n BGN: {\n displayName: \"bulgarisk lev\",\n \"displayName-count-one\": \"bulgarisk lev\",\n \"displayName-count-other\": \"bulgariska leva\",\n symbol: \"BGN\"\n },\n BGO: {\n displayName: \"bulgarisk lev (1881–1952)\",\n \"displayName-count-one\": \"bulgarisk lev (1881–1952)\",\n \"displayName-count-other\": \"bulgarisk lev (1881–1952)\",\n symbol: \"BGO\"\n },\n BHD: {\n displayName: \"bahrainsk dinar\",\n \"displayName-count-one\": \"bahrainsk dinar\",\n \"displayName-count-other\": \"bahrainska dinarer\",\n symbol: \"BHD\"\n },\n BIF: {\n displayName: \"burundisk franc\",\n \"displayName-count-one\": \"burundisk franc\",\n \"displayName-count-other\": \"burundiska franc\",\n symbol: \"BIF\"\n },\n BMD: {\n displayName: \"bermudisk dollar\",\n \"displayName-count-one\": \"bermudisk dollar\",\n \"displayName-count-other\": \"bermudisk dollar\",\n symbol: \"BM$\",\n \"symbol-alt-narrow\": \"$\"\n },\n BND: {\n displayName: \"bruneisk dollar\",\n \"displayName-count-one\": \"bruneisk dollar\",\n \"displayName-count-other\": \"bruneiska dollar\",\n symbol: \"BND\",\n \"symbol-alt-narrow\": \"$\"\n },\n BOB: {\n displayName: \"boliviansk boliviano\",\n \"displayName-count-one\": \"boliviansk boliviano\",\n \"displayName-count-other\": \"bolivianska bolivianos\",\n symbol: \"BOB\",\n \"symbol-alt-narrow\": \"Bs\"\n },\n BOL: {\n displayName: \"boliviansk boliviano (1864–1963)\",\n \"displayName-count-one\": \"boliviansk boliviano (1864–1963)\",\n \"displayName-count-other\": \"bolivianska bolivianos (1864–1963)\",\n symbol: \"BOL\"\n },\n BOP: {\n displayName: \"boliviansk peso\",\n \"displayName-count-one\": \"boliviansk peso\",\n \"displayName-count-other\": \"bolivianska pesos\",\n symbol: \"BOP\"\n },\n BOV: {\n displayName: \"boliviansk mvdol\",\n \"displayName-count-one\": \"boliviansk mvdol\",\n \"displayName-count-other\": \"bolivianska mvdol\",\n symbol: \"BOV\"\n },\n BRB: {\n displayName: \"brasiliansk cruzeiro novo (1967–1986)\",\n \"displayName-count-one\": \"brasiliansk cruzeiro (1967–1986)\",\n \"displayName-count-other\": \"brasilianska cruzeiro novo (1967–1986)\",\n symbol: \"BRB\"\n },\n BRC: {\n displayName: \"brasiliansk cruzado\",\n \"displayName-count-one\": \"brasiliansk cruzado\",\n \"displayName-count-other\": \"brasilianska cruzado\",\n symbol: \"BRC\"\n },\n BRE: {\n displayName: \"brasiliansk cruzeiro (1990–1993)\",\n \"displayName-count-one\": \"brasiliansk cruzeiro (1990–1993)\",\n \"displayName-count-other\": \"brasilianska cruzeiro (1990–1993)\",\n symbol: \"BRE\"\n },\n BRL: {\n displayName: \"brasiliansk real\",\n \"displayName-count-one\": \"brasiliansk real\",\n \"displayName-count-other\": \"brasilianska real\",\n symbol: \"BR$\",\n \"symbol-alt-narrow\": \"R$\"\n },\n BRN: {\n displayName: \"brasiliansk cruzado novo\",\n \"displayName-count-one\": \"brasiliansk cruzado novo\",\n \"displayName-count-other\": \"brasilianska cruzado novo\",\n symbol: \"BRN\"\n },\n BRR: {\n displayName: \"brasiliansk cruzeiro\",\n \"displayName-count-one\": \"brasiliansk cruzeiro\",\n \"displayName-count-other\": \"brasilianska cruzeiros\",\n symbol: \"BRR\"\n },\n BRZ: {\n displayName: \"brasiliansk cruzeiro (1942–1967)\",\n \"displayName-count-one\": \"brasiliansk cruzeiro (1942–1967)\",\n \"displayName-count-other\": \"brasilianska cruzeiros (1942–1967)\",\n symbol: \"BRZ\"\n },\n BSD: {\n displayName: \"bahamansk dollar\",\n \"displayName-count-one\": \"bahamansk dollar\",\n \"displayName-count-other\": \"bahamanska dollar\",\n symbol: \"BS$\",\n \"symbol-alt-narrow\": \"$\"\n },\n BTN: {\n displayName: \"bhutanesisk ngultrum\",\n \"displayName-count-one\": \"bhutanesisk ngultrum\",\n \"displayName-count-other\": \"bhutanesiska ngultrum\",\n symbol: \"BTN\"\n },\n BUK: {\n displayName: \"burmesisk kyat\",\n \"displayName-count-one\": \"burmesisk kyat\",\n \"displayName-count-other\": \"burmesiska kyat\",\n symbol: \"BUK\"\n },\n BWP: {\n displayName: \"botswansk pula\",\n \"displayName-count-one\": \"botswansk pula\",\n \"displayName-count-other\": \"botswanska pula\",\n symbol: \"BWP\",\n \"symbol-alt-narrow\": \"P\"\n },\n BYB: {\n displayName: \"vitrysk ny rubel (1994–1999)\",\n \"displayName-count-one\": \"vitrysk rubel (1994–1999)\",\n \"displayName-count-other\": \"vitryska nya rubel (1994–1999)\",\n symbol: \"BYB\"\n },\n BYN: {\n displayName: \"vitrysk rubel\",\n \"displayName-count-one\": \"vitrysk rubel\",\n \"displayName-count-other\": \"vitryska rubel\",\n symbol: \"BYN\",\n \"symbol-alt-narrow\": \"р.\"\n },\n BYR: {\n displayName: \"vitrysk rubel (2000–2016)\",\n \"displayName-count-one\": \"vitrysk rubel (2000–2016)\",\n \"displayName-count-other\": \"vitryska rubel (2000–2016)\",\n symbol: \"BYR\"\n },\n BZD: {\n displayName: \"belizisk dollar\",\n \"displayName-count-one\": \"belizisk dollar\",\n \"displayName-count-other\": \"beliziska dollar\",\n symbol: \"BZ$\",\n \"symbol-alt-narrow\": \"$\"\n },\n CAD: {\n displayName: \"kanadensisk dollar\",\n \"displayName-count-one\": \"kanadensisk dollar\",\n \"displayName-count-other\": \"kanadensiska dollar\",\n symbol: \"CA$\",\n \"symbol-alt-narrow\": \"$\"\n },\n CDF: {\n displayName: \"kongolesisk franc\",\n \"displayName-count-one\": \"kongolesisk franc\",\n \"displayName-count-other\": \"kongolesiska franc\",\n symbol: \"CDF\"\n },\n CHE: {\n displayName: \"euro (konvertibelt konto, WIR Bank, Schweiz)\",\n \"displayName-count-one\": \"euro (WIR Bank)\",\n \"displayName-count-other\": \"euro (konvertibelt konto, WIR Bank, Schweiz)\",\n symbol: \"CHE\"\n },\n CHF: {\n displayName: \"schweizisk franc\",\n \"displayName-count-one\": \"schweizisk franc\",\n \"displayName-count-other\": \"schweiziska franc\",\n symbol: \"CHF\"\n },\n CHW: {\n displayName: \"franc (konvertibelt konto, WIR Bank, Schweiz)\",\n \"displayName-count-one\": \"franc (WIR Bank)\",\n \"displayName-count-other\": \"franc (konvertibelt konto, WIR Bank, Schweiz)\",\n symbol: \"CHW\"\n },\n CLE: {\n displayName: \"chilensk escudo (1960–1975)\",\n \"displayName-count-one\": \"chilensk escudo (1960–1975)\",\n \"displayName-count-other\": \"chilenska escudos (1960–1975)\",\n symbol: \"CLE\"\n },\n CLF: {\n displayName: \"chilensk unidad de fomento\",\n \"displayName-count-one\": \"chilensk unidad de fomento\",\n \"displayName-count-other\": \"chilenska unidad de fomento\",\n symbol: \"CLF\"\n },\n CLP: {\n displayName: \"chilensk peso\",\n \"displayName-count-one\": \"chilensk peso\",\n \"displayName-count-other\": \"chilenska pesos\",\n symbol: \"CLP\",\n \"symbol-alt-narrow\": \"$\"\n },\n CNH: {\n displayName: \"kinesisk yuan (offshore)\",\n \"displayName-count-one\": \"kinesisk yuan (offshore)\",\n \"displayName-count-other\": \"kinesisk yuan (offshore)\",\n symbol: \"CNH\"\n },\n CNX: {\n displayName: \"kinesisk dollar\",\n \"displayName-count-one\": \"kinesisk dollar\",\n \"displayName-count-other\": \"kinesiska dollar\",\n symbol: \"CNX\"\n },\n CNY: {\n displayName: \"kinesisk yuan\",\n \"displayName-count-one\": \"kinesisk yuan\",\n \"displayName-count-other\": \"kinesiska yuan\",\n symbol: \"CNY\",\n \"symbol-alt-narrow\": \"¥\"\n },\n COP: {\n displayName: \"colombiansk peso\",\n \"displayName-count-one\": \"colombiansk peso\",\n \"displayName-count-other\": \"colombianska pesos\",\n symbol: \"COP\",\n \"symbol-alt-narrow\": \"$\"\n },\n COU: {\n displayName: \"colombiansk unidad de valor real\",\n \"displayName-count-one\": \"colombiansk unidad de valor real\",\n \"displayName-count-other\": \"colombianska unidad de valor real\",\n symbol: \"COU\"\n },\n CRC: {\n displayName: \"costarikansk colón\",\n \"displayName-count-one\": \"costarikansk colón\",\n \"displayName-count-other\": \"costarikanska colón\",\n symbol: \"CRC\",\n \"symbol-alt-narrow\": \"₡\"\n },\n CSD: {\n displayName: \"serbisk dinar (2002–2006)\",\n \"displayName-count-one\": \"serbisk dinar (2002–2006)\",\n \"displayName-count-other\": \"serbiska dinarer (2002–2006)\",\n symbol: \"CSD\"\n },\n CSK: {\n displayName: \"tjeckoslovakisk krona (–1993)\",\n \"displayName-count-one\": \"tjeckoslovakisk hård koruna\",\n \"displayName-count-other\": \"tjeckiska hårda koruna\",\n symbol: \"CSK\"\n },\n CUC: {\n displayName: \"kubansk peso (konvertibel)\",\n \"displayName-count-one\": \"kubansk peso (konvertibel)\",\n \"displayName-count-other\": \"kubanska pesos (konvertibla)\",\n symbol: \"CUC\",\n \"symbol-alt-narrow\": \"$\"\n },\n CUP: {\n displayName: \"kubansk peso\",\n \"displayName-count-one\": \"kubansk peso\",\n \"displayName-count-other\": \"kubanska pesos\",\n symbol: \"CUP\",\n \"symbol-alt-narrow\": \"$\"\n },\n CVE: {\n displayName: \"kapverdisk escudo\",\n \"displayName-count-one\": \"kapverdisk escudo\",\n \"displayName-count-other\": \"kapverdiska escudos\",\n symbol: \"CVE\"\n },\n CYP: {\n displayName: \"cypriotiskt pund\",\n \"displayName-count-one\": \"cypriotiskt pund\",\n \"displayName-count-other\": \"cypriotiska pund\",\n symbol: \"CYP\"\n },\n CZK: {\n displayName: \"tjeckisk koruna\",\n \"displayName-count-one\": \"tjeckisk koruna\",\n \"displayName-count-other\": \"tjeckiska koruna\",\n symbol: \"CZK\",\n \"symbol-alt-narrow\": \"Kč\"\n },\n DDM: {\n displayName: \"östtysk mark\",\n \"displayName-count-one\": \"östtysk mark\",\n \"displayName-count-other\": \"östtyska mark\",\n symbol: \"DDM\"\n },\n DEM: {\n displayName: \"tysk mark\",\n \"displayName-count-one\": \"tysk mark\",\n \"displayName-count-other\": \"tyska mark\",\n symbol: \"DEM\"\n },\n DJF: {\n displayName: \"djiboutisk franc\",\n \"displayName-count-one\": \"djiboutisk franc\",\n \"displayName-count-other\": \"djiboutiska franc\",\n symbol: \"DJF\"\n },\n DKK: {\n displayName: \"dansk krona\",\n \"displayName-count-one\": \"dansk krona\",\n \"displayName-count-other\": \"danska kronor\",\n symbol: \"Dkr\",\n \"symbol-alt-narrow\": \"kr\"\n },\n DOP: {\n displayName: \"dominikansk peso\",\n \"displayName-count-one\": \"dominikansk peso\",\n \"displayName-count-other\": \"dominikanska pesos\",\n symbol: \"RD$\",\n \"symbol-alt-narrow\": \"$\"\n },\n DZD: {\n displayName: \"algerisk dinar\",\n \"displayName-count-one\": \"algerisk dinar\",\n \"displayName-count-other\": \"algeriska dinarer\",\n symbol: \"DZD\"\n },\n ECS: {\n displayName: \"ecuadoriansk sucre\",\n \"displayName-count-one\": \"ecuadoriansk sucre\",\n \"displayName-count-other\": \"ecuadorianska sucre\",\n symbol: \"ECS\"\n },\n ECV: {\n displayName: \"ecuadoriansk unidad de valor constante\",\n \"displayName-count-one\": \"ecuadoriansk unidad de valor constante\",\n \"displayName-count-other\": \"ecuadorianska unidad de valor constante\",\n symbol: \"ECV\"\n },\n EEK: {\n displayName: \"estnisk krona\",\n \"displayName-count-one\": \"estnisk krona\",\n \"displayName-count-other\": \"estniska kronor\",\n symbol: \"Ekr\"\n },\n EGP: {\n displayName: \"egyptiskt pund\",\n \"displayName-count-one\": \"egyptiskt pund\",\n \"displayName-count-other\": \"egyptiska pund\",\n symbol: \"EG£\",\n \"symbol-alt-narrow\": \"E£\"\n },\n ERN: {\n displayName: \"eritreansk nakfa\",\n \"displayName-count-one\": \"eritreansk nakfa\",\n \"displayName-count-other\": \"eritreanska nakfa\",\n symbol: \"ERN\"\n },\n ESA: {\n displayName: \"spansk peseta (konto)\",\n \"displayName-count-one\": \"spansk peseta (konto)\",\n \"displayName-count-other\": \"spanska pesetas (konto)\",\n symbol: \"ESA\"\n },\n ESB: {\n displayName: \"spansk peseta (konvertibelt konto)\",\n \"displayName-count-one\": \"spansk peseta (konvertibelt konto)\",\n \"displayName-count-other\": \"spanska pesetas (konvertibelt konto)\",\n symbol: \"ESB\"\n },\n ESP: {\n displayName: \"spansk peseta\",\n \"displayName-count-one\": \"spansk peseta\",\n \"displayName-count-other\": \"spanska pesetas\",\n symbol: \"ESP\",\n \"symbol-alt-narrow\": \"ESP\"\n },\n ETB: {\n displayName: \"etiopisk birr\",\n \"displayName-count-one\": \"etiopisk birr\",\n \"displayName-count-other\": \"etiopiska birr\",\n symbol: \"ETB\"\n },\n EUR: {\n displayName: \"euro\",\n \"displayName-count-one\": \"euro\",\n \"displayName-count-other\": \"euro\",\n symbol: \"€\",\n \"symbol-alt-narrow\": \"€\"\n },\n FIM: {\n displayName: \"finsk mark\",\n \"displayName-count-one\": \"finsk mark\",\n \"displayName-count-other\": \"finska mark\",\n symbol: \"FIM\"\n },\n FJD: {\n displayName: \"Fijidollar\",\n \"displayName-count-one\": \"Fijidollar\",\n \"displayName-count-other\": \"Fijidollar\",\n symbol: \"FJD\",\n \"symbol-alt-narrow\": \"$\"\n },\n FKP: {\n displayName: \"Falklandspund\",\n \"displayName-count-one\": \"Falklandspund\",\n \"displayName-count-other\": \"Falklandspund\",\n symbol: \"FKP\",\n \"symbol-alt-narrow\": \"£\"\n },\n FRF: {\n displayName: \"fransk franc\",\n \"displayName-count-one\": \"fransk franc\",\n \"displayName-count-other\": \"franska franc\",\n symbol: \"FRF\"\n },\n GBP: {\n displayName: \"brittiskt pund\",\n \"displayName-count-one\": \"brittiskt pund\",\n \"displayName-count-other\": \"brittiska pund\",\n symbol: \"GBP\",\n \"symbol-alt-narrow\": \"£\"\n },\n GEK: {\n displayName: \"georgisk kupon larit\",\n \"displayName-count-one\": \"georgisk kupon larit\",\n \"displayName-count-other\": \"georgiska kupon larit\",\n symbol: \"GEK\"\n },\n GEL: {\n displayName: \"georgisk lari\",\n \"displayName-count-one\": \"georgisk lari\",\n \"displayName-count-other\": \"georgiska lari\",\n symbol: \"GEL\",\n \"symbol-alt-narrow\": \"₾\"\n },\n GHC: {\n displayName: \"ghanansk cedi (1979–2007)\",\n \"displayName-count-one\": \"ghanansk cedi (1979–2007)\",\n \"displayName-count-other\": \"ghananska cedi (1979–2007)\",\n symbol: \"GHC\"\n },\n GHS: {\n displayName: \"ghanansk cedi\",\n \"displayName-count-one\": \"ghanansk cedi\",\n \"displayName-count-other\": \"ghananska cedi\",\n symbol: \"GHS\",\n \"symbol-alt-narrow\": \"GH₵\"\n },\n GIP: {\n displayName: \"gibraltiskt pund\",\n \"displayName-count-one\": \"gibraltiskt pund\",\n \"displayName-count-other\": \"gibraltiska pund\",\n symbol: \"GIP\",\n \"symbol-alt-narrow\": \"£\"\n },\n GMD: {\n displayName: \"gambisk dalasi\",\n \"displayName-count-one\": \"gambisk dalasi\",\n \"displayName-count-other\": \"gambiska dalasi\",\n symbol: \"GMD\"\n },\n GNF: {\n displayName: \"guineansk franc\",\n \"displayName-count-one\": \"guineansk franc\",\n \"displayName-count-other\": \"guineanska franc\",\n symbol: \"GNF\",\n \"symbol-alt-narrow\": \"FG\"\n },\n GNS: {\n displayName: \"guineansk syli\",\n \"displayName-count-one\": \"guineansk syli\",\n \"displayName-count-other\": \"guineanska syli\",\n symbol: \"GNS\"\n },\n GQE: {\n displayName: \"ekvatorialguineansk ekwele\",\n \"displayName-count-one\": \"ekvatorialguineansk ekwele\",\n \"displayName-count-other\": \"ekvatorialguineanska ekweler\",\n symbol: \"GQE\"\n },\n GRD: {\n displayName: \"grekisk drachma\",\n \"displayName-count-one\": \"grekisk drachma\",\n \"displayName-count-other\": \"grekiska drachmer\",\n symbol: \"GRD\"\n },\n GTQ: {\n displayName: \"guatemalansk quetzal\",\n \"displayName-count-one\": \"guatemalansk quetzal\",\n \"displayName-count-other\": \"guatemalanska quetzal\",\n symbol: \"GTQ\",\n \"symbol-alt-narrow\": \"Q\"\n },\n GWE: {\n displayName: \"Portugisiska Guinea-escudo\",\n \"displayName-count-one\": \"Portugisiska Guinea-escudo\",\n \"displayName-count-other\": \"Portugisiska Guinea-escudos\",\n symbol: \"GWE\"\n },\n GWP: {\n displayName: \"Guinea-Bissau-peso\",\n \"displayName-count-one\": \"Guinea-Bissau-peso\",\n \"displayName-count-other\": \"Guinea-Bissau-pesos\",\n symbol: \"GWP\"\n },\n GYD: {\n displayName: \"Guyanadollar\",\n \"displayName-count-one\": \"Guyanadollar\",\n \"displayName-count-other\": \"Guyanadollar\",\n symbol: \"GYD\",\n \"symbol-alt-narrow\": \"$\"\n },\n HKD: {\n displayName: \"Hongkongdollar\",\n \"displayName-count-one\": \"Hongkongdollar\",\n \"displayName-count-other\": \"Hongkongdollar\",\n symbol: \"HKD\",\n \"symbol-alt-narrow\": \"$\"\n },\n HNL: {\n displayName: \"honduransk lempira\",\n \"displayName-count-one\": \"honduransk lempira\",\n \"displayName-count-other\": \"honduranska lempira\",\n symbol: \"HNL\",\n \"symbol-alt-narrow\": \"L\"\n },\n HRD: {\n displayName: \"kroatisk dinar\",\n \"displayName-count-one\": \"kroatisk dinar\",\n \"displayName-count-other\": \"kroatiska dinarer\",\n symbol: \"HRD\"\n },\n HRK: {\n displayName: \"kroatisk kuna\",\n \"displayName-count-one\": \"kroatisk kuna\",\n \"displayName-count-other\": \"kroatiska kunor\",\n symbol: \"HRK\",\n \"symbol-alt-narrow\": \"kn\"\n },\n HTG: {\n displayName: \"haitisk gourde\",\n \"displayName-count-one\": \"haitisk gourde\",\n \"displayName-count-other\": \"haitiska gourder\",\n symbol: \"HTG\"\n },\n HUF: {\n displayName: \"ungersk forint\",\n \"displayName-count-one\": \"ungersk forint\",\n \"displayName-count-other\": \"ungerska forinter\",\n symbol: \"HUF\",\n \"symbol-alt-narrow\": \"Ft\"\n },\n IDR: {\n displayName: \"indonesisk rupie\",\n \"displayName-count-one\": \"indonesisk rupie\",\n \"displayName-count-other\": \"indonesiska rupier\",\n symbol: \"IDR\",\n \"symbol-alt-narrow\": \"Rp\"\n },\n IEP: {\n displayName: \"irländskt pund\",\n \"displayName-count-one\": \"irländskt pund\",\n \"displayName-count-other\": \"irländska pund\",\n symbol: \"IE£\"\n },\n ILP: {\n displayName: \"israeliskt pund\",\n \"displayName-count-one\": \"israeliskt pund\",\n \"displayName-count-other\": \"israeliska pund\",\n symbol: \"ILP\"\n },\n ILR: {\n displayName: \"israelisk shekel (1980–1985)\",\n \"displayName-count-one\": \"israelisk shekel (1980–1985)\",\n \"displayName-count-other\": \"israeliska shekel (1980–1985)\",\n symbol: \"ILR\"\n },\n ILS: {\n displayName: \"israelisk ny shekel\",\n \"displayName-count-one\": \"israelisk ny shekel\",\n \"displayName-count-other\": \"israeliska nya shekel\",\n symbol: \"₪\",\n \"symbol-alt-narrow\": \"₪\"\n },\n INR: {\n displayName: \"indisk rupie\",\n \"displayName-count-one\": \"indisk rupie\",\n \"displayName-count-other\": \"indiska rupier\",\n symbol: \"INR\",\n \"symbol-alt-narrow\": \"₹\"\n },\n IQD: {\n displayName: \"irakisk dinar\",\n \"displayName-count-one\": \"irakisk dinar\",\n \"displayName-count-other\": \"irakiska dinarer\",\n symbol: \"IQD\"\n },\n IRR: {\n displayName: \"iransk rial\",\n \"displayName-count-one\": \"iransk rial\",\n \"displayName-count-other\": \"iranska rial\",\n symbol: \"IRR\"\n },\n ISJ: {\n displayName: \"isländsk gammal krona\",\n \"displayName-count-one\": \"isländsk gammal krona\",\n \"displayName-count-other\": \"isländska kronor (1874–1981)\",\n symbol: \"ISJ\"\n },\n ISK: {\n displayName: \"isländsk krona\",\n \"displayName-count-one\": \"isländsk krona\",\n \"displayName-count-other\": \"isländska kronor\",\n symbol: \"Ikr\",\n \"symbol-alt-narrow\": \"kr\"\n },\n ITL: {\n displayName: \"italiensk lire\",\n \"displayName-count-one\": \"italiensk lire\",\n \"displayName-count-other\": \"italienska lire\",\n symbol: \"ITL\"\n },\n JMD: {\n displayName: \"jamaicansk dollar\",\n \"displayName-count-one\": \"Jamaica-dollar\",\n \"displayName-count-other\": \"jamaicansk dollar\",\n symbol: \"JM$\",\n \"symbol-alt-narrow\": \"$\"\n },\n JOD: {\n displayName: \"jordansk dinar\",\n \"displayName-count-one\": \"jordansk dinar\",\n \"displayName-count-other\": \"jordanska dinarer\",\n symbol: \"JOD\"\n },\n JPY: {\n displayName: \"japansk yen\",\n \"displayName-count-one\": \"japansk yen\",\n \"displayName-count-other\": \"japanska yen\",\n symbol: \"JPY\",\n \"symbol-alt-narrow\": \"¥\"\n },\n KES: {\n displayName: \"kenyansk shilling\",\n \"displayName-count-one\": \"kenyansk shilling\",\n \"displayName-count-other\": \"kenyanska shilling\",\n symbol: \"KES\"\n },\n KGS: {\n displayName: \"kirgizisk som\",\n \"displayName-count-one\": \"kirgizisk som\",\n \"displayName-count-other\": \"kirgiziska somer\",\n symbol: \"KGS\"\n },\n KHR: {\n displayName: \"kambodjansk riel\",\n \"displayName-count-one\": \"kambodjansk riel\",\n \"displayName-count-other\": \"kambodjanska riel\",\n symbol: \"KHR\",\n \"symbol-alt-narrow\": \"៛\"\n },\n KMF: {\n displayName: \"komorisk franc\",\n \"displayName-count-one\": \"komorisk franc\",\n \"displayName-count-other\": \"komoriska franc\",\n symbol: \"KMF\",\n \"symbol-alt-narrow\": \"CF\"\n },\n KPW: {\n displayName: \"nordkoreansk won\",\n \"displayName-count-one\": \"nordkoreansk won\",\n \"displayName-count-other\": \"nordkoreanska won\",\n symbol: \"KPW\",\n \"symbol-alt-narrow\": \"₩\"\n },\n KRH: {\n displayName: \"sydkoreansk hwan (1953–1962)\",\n \"displayName-count-one\": \"sydkoreansk hwan (1953–1962)\",\n \"displayName-count-other\": \"sydkoreanska hwan (1953–1962)\",\n symbol: \"KRH\"\n },\n KRO: {\n displayName: \"sydkoreansk won (1945–1953)\",\n \"displayName-count-one\": \"sydkoreansk won (1945–1953)\",\n \"displayName-count-other\": \"sydkoreanska won (1945–1953)\",\n symbol: \"KRO\"\n },\n KRW: {\n displayName: \"sydkoreansk won\",\n \"displayName-count-one\": \"sydkoreansk won\",\n \"displayName-count-other\": \"sydkoreanska won\",\n symbol: \"KRW\",\n \"symbol-alt-narrow\": \"₩\"\n },\n KWD: {\n displayName: \"kuwaitisk dinar\",\n \"displayName-count-one\": \"kuwaitisk dinar\",\n \"displayName-count-other\": \"kuwaitiska dinarer\",\n symbol: \"KWD\"\n },\n KYD: {\n displayName: \"caymansk dollar\",\n \"displayName-count-one\": \"caymansk dollar\",\n \"displayName-count-other\": \"caymansk dollar\",\n symbol: \"KYD\",\n \"symbol-alt-narrow\": \"$\"\n },\n KZT: {\n displayName: \"kazakisk tenge\",\n \"displayName-count-one\": \"kazakisk tenge\",\n \"displayName-count-other\": \"kazakiska tenge\",\n symbol: \"KZT\",\n \"symbol-alt-narrow\": \"₸\"\n },\n LAK: {\n displayName: \"laotisk kip\",\n \"displayName-count-one\": \"laotisk kip\",\n \"displayName-count-other\": \"laotiska kip\",\n symbol: \"LAK\",\n \"symbol-alt-narrow\": \"₭\"\n },\n LBP: {\n displayName: \"libanesiskt pund\",\n \"displayName-count-one\": \"libanesiskt pund\",\n \"displayName-count-other\": \"libanesiska pund\",\n symbol: \"LBP\",\n \"symbol-alt-narrow\": \"L£\"\n },\n LKR: {\n displayName: \"srilankesisk rupie\",\n \"displayName-count-one\": \"srilankesisk rupie\",\n \"displayName-count-other\": \"srilankesiska rupier\",\n symbol: \"LKR\",\n \"symbol-alt-narrow\": \"Rs\"\n },\n LRD: {\n displayName: \"liberiansk dollar\",\n \"displayName-count-one\": \"liberiansk dollar\",\n \"displayName-count-other\": \"liberianska dollar\",\n symbol: \"LRD\",\n \"symbol-alt-narrow\": \"$\"\n },\n LSL: {\n displayName: \"lesothisk loti\",\n \"displayName-count-one\": \"lesothisk loti\",\n \"displayName-count-other\": \"lesothiska lotier\",\n symbol: \"LSL\"\n },\n LTL: {\n displayName: \"litauisk litas\",\n \"displayName-count-one\": \"litauisk litas\",\n \"displayName-count-other\": \"litauiska litai\",\n symbol: \"LTL\",\n \"symbol-alt-narrow\": \"Lt\"\n },\n LTT: {\n displayName: \"litauisk talonas\",\n \"displayName-count-one\": \"litauisk talonas\",\n \"displayName-count-other\": \"litauiska talonas\",\n symbol: \"LTT\"\n },\n LUC: {\n displayName: \"luxemburgsk franc (konvertibel)\",\n \"displayName-count-one\": \"luxemburgsk franc (konvertibel)\",\n \"displayName-count-other\": \"luxemburgska franc (konvertibla)\",\n symbol: \"LUC\"\n },\n LUF: {\n displayName: \"luxemburgsk franc\",\n \"displayName-count-one\": \"luxemburgsk franc\",\n \"displayName-count-other\": \"luxemburgska franc\",\n symbol: \"LUF\"\n },\n LUL: {\n displayName: \"luxemburgsk franc (finansiell)\",\n \"displayName-count-one\": \"luxemburgsk franc (finansiell)\",\n \"displayName-count-other\": \"luxemburgska franc (finansiella)\",\n symbol: \"LUL\"\n },\n LVL: {\n displayName: \"lettisk lats\",\n \"displayName-count-one\": \"lettisk lats\",\n \"displayName-count-other\": \"lettiska lati\",\n symbol: \"LVL\",\n \"symbol-alt-narrow\": \"Ls\"\n },\n LVR: {\n displayName: \"lettisk rubel\",\n \"displayName-count-one\": \"lettisk rubel\",\n \"displayName-count-other\": \"lettiska rubel\",\n symbol: \"LVR\"\n },\n LYD: {\n displayName: \"libysk dinar\",\n \"displayName-count-one\": \"libysk dinar\",\n \"displayName-count-other\": \"libyska dinarer\",\n symbol: \"LYD\"\n },\n MAD: {\n displayName: \"marockansk dirham\",\n \"displayName-count-one\": \"marockansk dirham\",\n \"displayName-count-other\": \"marockanska dirhamer\",\n symbol: \"MAD\"\n },\n MAF: {\n displayName: \"marockansk franc\",\n \"displayName-count-one\": \"marockansk franc\",\n \"displayName-count-other\": \"marockanska franc\",\n symbol: \"MAF\"\n },\n MCF: {\n displayName: \"monegaskisk franc (–2001)\",\n \"displayName-count-one\": \"monegaskisk franc (–2001)\",\n \"displayName-count-other\": \"monegaskiska franc (–2001)\",\n symbol: \"MCF\"\n },\n MDC: {\n displayName: \"moldavisk cupon (1992–1993)\",\n \"displayName-count-one\": \"moldavisk cupon (1992–1993)\",\n \"displayName-count-other\": \"moldaviska cupon (1992–1993)\",\n symbol: \"MDC\"\n },\n MDL: {\n displayName: \"moldavisk leu\",\n \"displayName-count-one\": \"moldavisk leu\",\n \"displayName-count-other\": \"moldaviska lei\",\n symbol: \"MDL\"\n },\n MGA: {\n displayName: \"madagaskisk ariary\",\n \"displayName-count-one\": \"madagaskisk ariary\",\n \"displayName-count-other\": \"madagaskiska ariary\",\n symbol: \"MGA\",\n \"symbol-alt-narrow\": \"Ar\"\n },\n MGF: {\n displayName: \"madagaskisk franc\",\n \"displayName-count-one\": \"madagaskisk franc\",\n \"displayName-count-other\": \"madagaskiska franc\",\n symbol: \"MGF\"\n },\n MKD: {\n displayName: \"makedonisk denar\",\n \"displayName-count-one\": \"makedonisk denar\",\n \"displayName-count-other\": \"makedoniska denarer\",\n symbol: \"MKD\"\n },\n MKN: {\n displayName: \"makedonisk denar (1992–1993)\",\n \"displayName-count-one\": \"makedonisk denar (1992–1993)\",\n \"displayName-count-other\": \"makedoniska denarer (1992–1993)\",\n symbol: \"MKN\"\n },\n MLF: {\n displayName: \"malisk franc\",\n \"displayName-count-one\": \"malisk franc\",\n \"displayName-count-other\": \"maliska franc\",\n symbol: \"MLF\"\n },\n MMK: {\n displayName: \"myanmarisk kyat\",\n \"displayName-count-one\": \"myanmarisk kyat\",\n \"displayName-count-other\": \"myanmariska kyat\",\n symbol: \"MMK\",\n \"symbol-alt-narrow\": \"K\"\n },\n MNT: {\n displayName: \"mongolisk tögrög\",\n \"displayName-count-one\": \"mongolisk tögrög\",\n \"displayName-count-other\": \"mongoliska tögrög\",\n symbol: \"MNT\",\n \"symbol-alt-narrow\": \"₮\"\n },\n MOP: {\n displayName: \"makanesisk pataca\",\n \"displayName-count-one\": \"makanesisk pataca\",\n \"displayName-count-other\": \"makanesiska pataca\",\n symbol: \"MOP\"\n },\n MRO: {\n displayName: \"mauretansk ouguiya (1973–2017)\",\n \"displayName-count-one\": \"mauretansk ouguiya (1973–2017)\",\n \"displayName-count-other\": \"mauretanska ouguiya (1973–2017)\",\n symbol: \"MRO\"\n },\n MRU: {\n displayName: \"mauretansk ouguiya\",\n \"displayName-count-one\": \"mauretansk ouguiya\",\n \"displayName-count-other\": \"mauretanska ouguiya\",\n symbol: \"MRU\"\n },\n MTL: {\n displayName: \"maltesisk lire\",\n \"displayName-count-one\": \"maltesisk lire\",\n \"displayName-count-other\": \"maltesiska lire\",\n symbol: \"MTL\"\n },\n MTP: {\n displayName: \"maltesiskt pund\",\n \"displayName-count-one\": \"maltesiskt pund\",\n \"displayName-count-other\": \"maltesiska pund\",\n symbol: \"MTP\"\n },\n MUR: {\n displayName: \"mauritisk rupie\",\n \"displayName-count-one\": \"mauritisk rupie\",\n \"displayName-count-other\": \"mauritiska rupier\",\n symbol: \"MUR\",\n \"symbol-alt-narrow\": \"Rs\"\n },\n MVP: {\n displayName: \"maldivisk rupie\",\n \"displayName-count-one\": \"maldivisk rupie\",\n \"displayName-count-other\": \"maldiviska rupier\",\n symbol: \"MVP\"\n },\n MVR: {\n displayName: \"maldivisk rufiyaa\",\n \"displayName-count-one\": \"maldivisk rufiyaa\",\n \"displayName-count-other\": \"maldiviska rufiyer\",\n symbol: \"MVR\"\n },\n MWK: {\n displayName: \"malawisk kwacha\",\n \"displayName-count-one\": \"malawisk kwacha\",\n \"displayName-count-other\": \"malawiska kwacha\",\n symbol: \"MWK\"\n },\n MXN: {\n displayName: \"mexikansk peso\",\n \"displayName-count-one\": \"mexikansk peso\",\n \"displayName-count-other\": \"mexikanska pesos\",\n symbol: \"MX$\",\n \"symbol-alt-narrow\": \"$\"\n },\n MXP: {\n displayName: \"mexikansk silverpeso (1861–1992)\",\n \"displayName-count-one\": \"mexikansk silverpeso (1861–1992)\",\n \"displayName-count-other\": \"mexikanska silverpesos (1861–1992)\",\n symbol: \"MXP\"\n },\n MXV: {\n displayName: \"mexikansk unidad de inversion\",\n \"displayName-count-one\": \"mexikansk unidad de inversion\",\n \"displayName-count-other\": \"mexikanska unidad de inversion\",\n symbol: \"MXV\"\n },\n MYR: {\n displayName: \"malaysisk ringgit\",\n \"displayName-count-one\": \"malaysisk ringgit\",\n \"displayName-count-other\": \"malaysiska ringgiter\",\n symbol: \"MYR\",\n \"symbol-alt-narrow\": \"RM\"\n },\n MZE: {\n displayName: \"moçambikisk escudo\",\n \"displayName-count-one\": \"moçambikisk escudo (1914–1980)\",\n \"displayName-count-other\": \"moçambikiska escudos\",\n symbol: \"MZE\"\n },\n MZM: {\n displayName: \"gammal moçambikisk metical\",\n \"displayName-count-one\": \"moçambikisk metical (1980–2006)\",\n \"displayName-count-other\": \"gammla moçambikiska metical\",\n symbol: \"MZM\"\n },\n MZN: {\n displayName: \"moçambikisk metical\",\n \"displayName-count-one\": \"moçambikisk metical\",\n \"displayName-count-other\": \"moçambikiska metical\",\n symbol: \"MZN\"\n },\n NAD: {\n displayName: \"namibisk dollar\",\n \"displayName-count-one\": \"namibisk dollar\",\n \"displayName-count-other\": \"namibiska dollar\",\n symbol: \"NAD\",\n \"symbol-alt-narrow\": \"$\"\n },\n NGN: {\n displayName: \"nigeriansk naira\",\n \"displayName-count-one\": \"nigeriansk naira\",\n \"displayName-count-other\": \"nigerianska naira\",\n symbol: \"NGN\",\n \"symbol-alt-narrow\": \"₦\"\n },\n NIC: {\n displayName: \"nicaraguansk córdoba (1998–1991)\",\n \"displayName-count-one\": \"nicaraguansk córdoba (1998–1991)\",\n \"displayName-count-other\": \"nicaraguanska córdobas (1988–1991)\",\n symbol: \"NIC\"\n },\n NIO: {\n displayName: \"nicaraguansk córdoba\",\n \"displayName-count-one\": \"nicaraguansk córdoba\",\n \"displayName-count-other\": \"nicaraguanska córdobas\",\n symbol: \"NIO\",\n \"symbol-alt-narrow\": \"C$\"\n },\n NLG: {\n displayName: \"nederländsk gulden\",\n \"displayName-count-one\": \"nederländsk gulden\",\n \"displayName-count-other\": \"nederländska gulden\",\n symbol: \"NLG\"\n },\n NOK: {\n displayName: \"norsk krona\",\n \"displayName-count-one\": \"norsk krona\",\n \"displayName-count-other\": \"norska kronor\",\n symbol: \"Nkr\",\n \"symbol-alt-narrow\": \"kr\"\n },\n NPR: {\n displayName: \"nepalesisk rupie\",\n \"displayName-count-one\": \"nepalesisk rupie\",\n \"displayName-count-other\": \"nepalesiska rupier\",\n symbol: \"NPR\",\n \"symbol-alt-narrow\": \"Rs\"\n },\n NZD: {\n displayName: \"nyzeeländsk dollar\",\n \"displayName-count-one\": \"nyzeeländsk dollar\",\n \"displayName-count-other\": \"nyzeeländska dollar\",\n symbol: \"NZD\",\n \"symbol-alt-narrow\": \"$\"\n },\n OMR: {\n displayName: \"omansk rial\",\n \"displayName-count-one\": \"omansk rial\",\n \"displayName-count-other\": \"omanska rial\",\n symbol: \"OMR\"\n },\n PAB: {\n displayName: \"panamansk balboa\",\n \"displayName-count-one\": \"panamansk balboa\",\n \"displayName-count-other\": \"panamanska balboa\",\n symbol: \"PAB\"\n },\n PEI: {\n displayName: \"peruansk inti\",\n \"displayName-count-one\": \"peruansk inti\",\n \"displayName-count-other\": \"peruanska intier\",\n symbol: \"PEI\"\n },\n PEN: {\n displayName: \"peruansk sol\",\n \"displayName-count-one\": \"peruansk sol\",\n \"displayName-count-other\": \"peruanska sol\",\n symbol: \"PEN\"\n },\n PES: {\n displayName: \"peruansk sol (1863–1965)\",\n \"displayName-count-one\": \"peruansk sol (1863–1965)\",\n \"displayName-count-other\": \"peruanska sol (1863–1965)\",\n symbol: \"PES\"\n },\n PGK: {\n displayName: \"papuansk kina\",\n \"displayName-count-one\": \"papuansk kina\",\n \"displayName-count-other\": \"papuanska kinor\",\n symbol: \"PGK\"\n },\n PHP: {\n displayName: \"filippinsk peso\",\n \"displayName-count-one\": \"filippinsk peso\",\n \"displayName-count-other\": \"filippinska pesos\",\n symbol: \"PHP\",\n \"symbol-alt-narrow\": \"₱\"\n },\n PKR: {\n displayName: \"pakistansk rupie\",\n \"displayName-count-one\": \"pakistansk rupie\",\n \"displayName-count-other\": \"pakistanska rupier\",\n symbol: \"PKR\",\n \"symbol-alt-narrow\": \"Rs\"\n },\n PLN: {\n displayName: \"polsk zloty\",\n \"displayName-count-one\": \"polsk zloty\",\n \"displayName-count-other\": \"polska zloty\",\n symbol: \"PLN\",\n \"symbol-alt-narrow\": \"zł\"\n },\n PLZ: {\n displayName: \"polsk zloty (1950–1995)\",\n \"displayName-count-one\": \"polsk zloty (1950–1995)\",\n \"displayName-count-other\": \"polska zloty (1950–1995)\",\n symbol: \"PLZ\"\n },\n PTE: {\n displayName: \"portugisisk escudo\",\n \"displayName-count-one\": \"portugisisk escudo\",\n \"displayName-count-other\": \"portugisiska escudos\",\n symbol: \"PTE\"\n },\n PYG: {\n displayName: \"paraguayansk guarani\",\n \"displayName-count-one\": \"paraguayansk guarani\",\n \"displayName-count-other\": \"paraguayska guarani\",\n symbol: \"PYG\",\n \"symbol-alt-narrow\": \"₲\"\n },\n QAR: {\n displayName: \"qatarisk rial\",\n \"displayName-count-one\": \"qatarisk rial\",\n \"displayName-count-other\": \"qatariska rial\",\n symbol: \"QAR\"\n },\n RHD: {\n displayName: \"rhodesisk dollar\",\n \"displayName-count-one\": \"rhodesisk dollar\",\n \"displayName-count-other\": \"rhodesiska dollar\",\n symbol: \"RHD\"\n },\n ROL: {\n displayName: \"rumänsk leu (1952–2005)\",\n \"displayName-count-one\": \"rumänsk leu (1952–2005)\",\n \"displayName-count-other\": \"rumänska leu (1952–2005)\",\n symbol: \"ROL\"\n },\n RON: {\n displayName: \"rumänsk leu\",\n \"displayName-count-one\": \"rumänsk leu\",\n \"displayName-count-other\": \"rumänska lei\",\n symbol: \"RON\",\n \"symbol-alt-narrow\": \"L\"\n },\n RSD: {\n displayName: \"serbisk dinar\",\n \"displayName-count-one\": \"serbisk dinar\",\n \"displayName-count-other\": \"serbiska dinarer\",\n symbol: \"RSD\"\n },\n RUB: {\n displayName: \"rysk rubel\",\n \"displayName-count-one\": \"rysk rubel\",\n \"displayName-count-other\": \"ryska rubel\",\n symbol: \"RUB\",\n \"symbol-alt-narrow\": \"₽\"\n },\n RUR: {\n displayName: \"rysk rubel (1991–1998)\",\n \"displayName-count-one\": \"rysk rubel (1991–1998)\",\n \"displayName-count-other\": \"ryska rubel (1991–1998)\",\n symbol: \"RUR\"\n },\n RWF: {\n displayName: \"rwandisk franc\",\n \"displayName-count-one\": \"rwandisk franc\",\n \"displayName-count-other\": \"rwandiska franc\",\n symbol: \"RWF\",\n \"symbol-alt-narrow\": \"RF\"\n },\n SAR: {\n displayName: \"saudisk riyal\",\n \"displayName-count-one\": \"saudisk riyal\",\n \"displayName-count-other\": \"saudiska riyal\",\n symbol: \"SAR\"\n },\n SBD: {\n displayName: \"Salomondollar\",\n \"displayName-count-one\": \"Salomondollar\",\n \"displayName-count-other\": \"Salomondollar\",\n symbol: \"SBD\",\n \"symbol-alt-narrow\": \"$\"\n },\n SCR: {\n displayName: \"seychellisk rupie\",\n \"displayName-count-one\": \"seychellisk rupie\",\n \"displayName-count-other\": \"seychelliska rupier\",\n symbol: \"SCR\"\n },\n SDD: {\n displayName: \"sudansk dinar (1992–2007)\",\n \"displayName-count-one\": \"sudansk dinar (1992–2007)\",\n \"displayName-count-other\": \"sudanska dinarer (1992–2007)\",\n symbol: \"SDD\"\n },\n SDG: {\n displayName: \"sudanesiskt pund\",\n \"displayName-count-one\": \"sudanesiskt pund\",\n \"displayName-count-other\": \"sudanesiska pund\",\n symbol: \"SDG\"\n },\n SDP: {\n displayName: \"sudanskt pund (1916–1992)\",\n \"displayName-count-one\": \"sudanskt pund (1916–1992)\",\n \"displayName-count-other\": \"sudanska pund (1916–1992)\",\n symbol: \"SDP\"\n },\n SEK: {\n displayName: \"svensk krona\",\n \"displayName-count-one\": \"svensk krona\",\n \"displayName-count-other\": \"svenska kronor\",\n symbol: \"kr\",\n \"symbol-alt-narrow\": \"kr\"\n },\n SGD: {\n displayName: \"singaporiansk dollar\",\n \"displayName-count-one\": \"singaporiansk dollar\",\n \"displayName-count-other\": \"singaporianska dollar\",\n symbol: \"SGD\",\n \"symbol-alt-narrow\": \"$\"\n },\n SHP: {\n displayName: \"sankthelenskt pund\",\n \"displayName-count-one\": \"sankthelenskt pund\",\n \"displayName-count-other\": \"sankthelenskt pund\",\n symbol: \"SHP\",\n \"symbol-alt-narrow\": \"£\"\n },\n SIT: {\n displayName: \"slovensk tolar\",\n \"displayName-count-one\": \"slovensk tolar\",\n \"displayName-count-other\": \"slovenska tolar\",\n symbol: \"SIT\"\n },\n SKK: {\n displayName: \"slovakisk koruna\",\n \"displayName-count-one\": \"slovakisk krona\",\n \"displayName-count-other\": \"slovakiska korunor\",\n symbol: \"SKK\"\n },\n SLE: {\n displayName: \"SLE\",\n symbol: \"SLE\"\n },\n SLL: {\n displayName: \"sierraleonsk leone\",\n \"displayName-count-one\": \"sierraleonsk leone\",\n \"displayName-count-other\": \"sierraleonska leoner\",\n symbol: \"SLL\"\n },\n SOS: {\n displayName: \"somalisk shilling\",\n \"displayName-count-one\": \"somalisk shilling\",\n \"displayName-count-other\": \"somaliska shilling\",\n symbol: \"SOS\"\n },\n SRD: {\n displayName: \"surinamesisk dollar\",\n \"displayName-count-one\": \"surinamesisk dollar\",\n \"displayName-count-other\": \"surinamesiska dollar\",\n symbol: \"SRD\",\n \"symbol-alt-narrow\": \"$\"\n },\n SRG: {\n displayName: \"surinamesisk gulden\",\n \"displayName-count-one\": \"surinamesisk gulden\",\n \"displayName-count-other\": \"surinamesiska gulden\",\n symbol: \"SRG\"\n },\n SSP: {\n displayName: \"sydsudanesiskt pund\",\n \"displayName-count-one\": \"sydsudanesiskt pund\",\n \"displayName-count-other\": \"sydsudanesiska pund\",\n symbol: \"SSP\",\n \"symbol-alt-narrow\": \"£\"\n },\n STD: {\n displayName: \"saotomeansk dobra (1977–2017)\",\n \"displayName-count-one\": \"saotomeansk dobra (1977–2017)\",\n \"displayName-count-other\": \"saotomeanska dobra (1977–2017)\",\n symbol: \"STD\"\n },\n STN: {\n displayName: \"saotomeansk dobra\",\n \"displayName-count-one\": \"saotomeansk dobra\",\n \"displayName-count-other\": \"saotomeanska dobra\",\n symbol: \"STN\",\n \"symbol-alt-narrow\": \"Db\"\n },\n SUR: {\n displayName: \"sovjetisk rubel\",\n \"displayName-count-one\": \"sovjetisk rubel\",\n \"displayName-count-other\": \"sovjetiska rubler\",\n symbol: \"SUR\"\n },\n SVC: {\n displayName: \"salvadoransk colón\",\n \"displayName-count-one\": \"salvadoransk colón\",\n \"displayName-count-other\": \"salvadoranska colón\",\n symbol: \"SVC\"\n },\n SYP: {\n displayName: \"syriskt pund\",\n \"displayName-count-one\": \"syriskt pund\",\n \"displayName-count-other\": \"syriska pund\",\n symbol: \"SYP\",\n \"symbol-alt-narrow\": \"£\"\n },\n SZL: {\n displayName: \"swaziländsk lilangeni\",\n \"displayName-count-one\": \"swaziländsk lilangeni\",\n \"displayName-count-other\": \"swaziländska lilangeni\",\n symbol: \"SZL\"\n },\n THB: {\n displayName: \"thailändsk baht\",\n \"displayName-count-one\": \"thailändsk baht\",\n \"displayName-count-other\": \"thailändska baht\",\n symbol: \"THB\",\n \"symbol-alt-narrow\": \"฿\"\n },\n TJR: {\n displayName: \"tadzjikisk rubel\",\n \"displayName-count-one\": \"tadzjikisk rubel\",\n \"displayName-count-other\": \"tadzjikiska rubler\",\n symbol: \"TJR\"\n },\n TJS: {\n displayName: \"tadzjikisk somoni\",\n \"displayName-count-one\": \"tadzjikisk somoni\",\n \"displayName-count-other\": \"tadzjikiska somoni\",\n symbol: \"TJS\"\n },\n TMM: {\n displayName: \"turkmenistansk manat (1993–2009)\",\n \"displayName-count-one\": \"turkmenistansk manat (1993–2009)\",\n \"displayName-count-other\": \"turkmenistanska manat (1993–2009)\",\n symbol: \"TMM\"\n },\n TMT: {\n displayName: \"turkmenistansk manat\",\n \"displayName-count-one\": \"turkmenistansk manat\",\n \"displayName-count-other\": \"turkmenistanska manat\",\n symbol: \"TMT\"\n },\n TND: {\n displayName: \"tunisisk dinar\",\n \"displayName-count-one\": \"tunisisk dinar\",\n \"displayName-count-other\": \"tunisiska dinarer\",\n symbol: \"TND\"\n },\n TOP: {\n displayName: \"tongansk paʻanga\",\n \"displayName-count-one\": \"tongansk paʻanga\",\n \"displayName-count-other\": \"tonganska paʻanga\",\n symbol: \"TOP\",\n \"symbol-alt-narrow\": \"T$\"\n },\n TPE: {\n displayName: \"östtimoresisk escudo\",\n \"displayName-count-one\": \"östtimoresisk escudo\",\n \"displayName-count-other\": \"östtimoresiska escudos\",\n symbol: \"TPE\"\n },\n TRL: {\n displayName: \"turkisk lire (1922–2005)\",\n \"displayName-count-one\": \"turkisk lire (1922–2005)\",\n \"displayName-count-other\": \"turkiska lire (1922–2005)\",\n symbol: \"TRL\"\n },\n TRY: {\n displayName: \"turkisk lira\",\n \"displayName-count-one\": \"turkisk lira\",\n \"displayName-count-other\": \"turkiska lira\",\n symbol: \"TRY\",\n \"symbol-alt-narrow\": \"₺\",\n \"symbol-alt-variant\": \"TL\"\n },\n TTD: {\n displayName: \"Trinidaddollar\",\n \"displayName-count-one\": \"Trinidaddollar\",\n \"displayName-count-other\": \"Trinidaddollar\",\n symbol: \"TTD\",\n \"symbol-alt-narrow\": \"$\"\n },\n TWD: {\n displayName: \"taiwanesisk dollar\",\n \"displayName-count-one\": \"taiwanesisk dollar\",\n \"displayName-count-other\": \"taiwanesisk dollar\",\n symbol: \"TWD\",\n \"symbol-alt-narrow\": \"NT$\"\n },\n TZS: {\n displayName: \"tanzanisk shilling\",\n \"displayName-count-one\": \"tanzanisk shilling\",\n \"displayName-count-other\": \"tanzaniska shilling\",\n symbol: \"TZS\"\n },\n UAH: {\n displayName: \"ukrainsk hryvnia\",\n \"displayName-count-one\": \"ukrainsk hryvnia\",\n \"displayName-count-other\": \"ukrainska hryvnia\",\n symbol: \"UAH\",\n \"symbol-alt-narrow\": \"₴\"\n },\n UAK: {\n displayName: \"ukrainsk karbovanetz\",\n \"displayName-count-one\": \"ukrainsk karbovanetz (1992–1996)\",\n \"displayName-count-other\": \"ukrainska karbovanetz (1992–1996)\",\n symbol: \"UAK\"\n },\n UGS: {\n displayName: \"ugandisk shilling (1966–1987)\",\n \"displayName-count-one\": \"ugandisk shilling (1966–1987)\",\n \"displayName-count-other\": \"ugandiska shilling (1966–1987)\",\n symbol: \"UGS\"\n },\n UGX: {\n displayName: \"ugandisk shilling\",\n \"displayName-count-one\": \"ugandisk shilling\",\n \"displayName-count-other\": \"ugandiska shilling\",\n symbol: \"UGX\"\n },\n USD: {\n displayName: \"amerikansk dollar\",\n \"displayName-count-one\": \"amerikansk dollar\",\n \"displayName-count-other\": \"amerikansk dollar\",\n symbol: \"US$\",\n \"symbol-alt-narrow\": \"$\"\n },\n USN: {\n displayName: \"US-dollar (nästa dag)\",\n \"displayName-count-one\": \"US-dollar (nästa dag)\",\n \"displayName-count-other\": \"US-dollar (nästa dag)\",\n symbol: \"USN\"\n },\n USS: {\n displayName: \"US-dollar (samma dag)\",\n \"displayName-count-one\": \"US-dollar (samma dag)\",\n \"displayName-count-other\": \"US-dollar (samma dag)\",\n symbol: \"USS\"\n },\n UYI: {\n displayName: \"uruguayansk peso en unidades indexadas\",\n \"displayName-count-one\": \"uruguayansk peso en unidades indexadas\",\n \"displayName-count-other\": \"uruguayanska pesos en unidades indexadas\",\n symbol: \"UYI\"\n },\n UYP: {\n displayName: \"uruguayansk peso (1975–1993)\",\n \"displayName-count-one\": \"uruguayansk peso (1975–1993)\",\n \"displayName-count-other\": \"uruguayanska pesos (1975–1993)\",\n symbol: \"UYP\"\n },\n UYU: {\n displayName: \"uruguayansk peso\",\n \"displayName-count-one\": \"uruguayansk peso\",\n \"displayName-count-other\": \"uruguayanska pesos\",\n symbol: \"UYU\",\n \"symbol-alt-narrow\": \"$\"\n },\n UYW: {\n displayName: \"uruguayansk indexenhet för nominell lön\",\n \"displayName-count-one\": \"uruguayansk indexenhet för nominell lön\",\n \"displayName-count-other\": \"uruguayansk indexenhet för nominell lön\",\n symbol: \"UYW\"\n },\n UZS: {\n displayName: \"uzbekisk sum\",\n \"displayName-count-one\": \"uzbekisk sum\",\n \"displayName-count-other\": \"uzbekiska sum\",\n symbol: \"UZS\"\n },\n VEB: {\n displayName: \"venezuelansk bolivar (1871–2008)\",\n \"displayName-count-one\": \"venezuelansk bolivar (1871–2008)\",\n \"displayName-count-other\": \"venezuelanska bolivar (1871–2008)\",\n symbol: \"VEB\"\n },\n VED: {\n displayName: \"VED\",\n symbol: \"VED\"\n },\n VEF: {\n displayName: \"venezuelansk bolívar (2008–2018)\",\n \"displayName-count-one\": \"venezuelansk bolívar (2008–2018)\",\n \"displayName-count-other\": \"venezuelanska bolívar (2008–2018)\",\n symbol: \"VEF\",\n \"symbol-alt-narrow\": \"Bs\"\n },\n VES: {\n displayName: \"venezuelansk bolívar\",\n \"displayName-count-one\": \"venezuelansk bolívar\",\n \"displayName-count-other\": \"venezuelanska bolívar\",\n symbol: \"VES\"\n },\n VND: {\n displayName: \"vietnamesisk dong\",\n \"displayName-count-one\": \"vietnamesisk dong\",\n \"displayName-count-other\": \"vietnamesiska dong\",\n symbol: \"VND\",\n \"symbol-alt-narrow\": \"₫\"\n },\n VNN: {\n displayName: \"vietnamesisk dong (1978–1985)\",\n \"displayName-count-one\": \"vietnamesisk dong (1978–1985)\",\n \"displayName-count-other\": \"vietnamesiska dong (1978–1985)\",\n symbol: \"VNN\"\n },\n VUV: {\n displayName: \"vanuatisk vatu\",\n \"displayName-count-one\": \"vanuatisk vatu\",\n \"displayName-count-other\": \"vanuatiska vatu\",\n symbol: \"VUV\"\n },\n WST: {\n displayName: \"västsamoansk tala\",\n \"displayName-count-one\": \"västsamoansk tala\",\n \"displayName-count-other\": \"västsamoanska tala\",\n symbol: \"WST\"\n },\n XAF: {\n displayName: \"centralafrikansk franc\",\n \"displayName-count-one\": \"centralafrikansk franc\",\n \"displayName-count-other\": \"centralafrikanska franc\",\n symbol: \"FCFA\"\n },\n XAG: {\n displayName: \"silver\",\n \"displayName-count-one\": \"uns silver\",\n \"displayName-count-other\": \"silveruns\",\n symbol: \"XAG\"\n },\n XAU: {\n displayName: \"guld\",\n \"displayName-count-one\": \"uns guld\",\n \"displayName-count-other\": \"gulduns\",\n symbol: \"XAU\"\n },\n XBA: {\n displayName: \"europeisk kompositenhet\",\n \"displayName-count-one\": \"europeisk kompositenhet\",\n \"displayName-count-other\": \"europeiska kompositenheter\",\n symbol: \"XBA\"\n },\n XBB: {\n displayName: \"europeisk monetär enhet\",\n \"displayName-count-one\": \"europeisk monetär enhet\",\n \"displayName-count-other\": \"europeiska monetära enheter\",\n symbol: \"XBB\"\n },\n XBC: {\n displayName: \"europeisk kontoenhet (XBC)\",\n \"displayName-count-one\": \"europeisk kontoenhet (XBC)\",\n \"displayName-count-other\": \"europeiska kontoenheter (XBC)\",\n symbol: \"XBC\"\n },\n XBD: {\n displayName: \"europeisk kontoenhet (XBD)\",\n \"displayName-count-one\": \"europeisk kontoenhet (XBD)\",\n \"displayName-count-other\": \"europeiska kontoenheter (XBD)\",\n symbol: \"XBD\"\n },\n XCD: {\n displayName: \"östkaribisk dollar\",\n \"displayName-count-one\": \"östkaribisk dollar\",\n \"displayName-count-other\": \"östkaribiska dollar\",\n symbol: \"EC$\",\n \"symbol-alt-narrow\": \"$\"\n },\n XDR: {\n displayName: \"IMF särskild dragningsrätt\",\n \"displayName-count-one\": \"IMF särskild dragningsrätt\",\n \"displayName-count-other\": \"IMF särskilda dragningsrätter\",\n symbol: \"XDR\"\n },\n XEU: {\n displayName: \"europeisk valutaenhet\",\n \"displayName-count-one\": \"europeisk valutaenhet\",\n \"displayName-count-other\": \"europeiska valutaenheter\",\n symbol: \"XEU\"\n },\n XFO: {\n displayName: \"fransk guldfranc\",\n \"displayName-count-one\": \"fransk guldfranc\",\n \"displayName-count-other\": \"franska guldfranc\",\n symbol: \"XFO\"\n },\n XFU: {\n displayName: \"internationella järnvägsunionens franc\",\n \"displayName-count-one\": \"internationella järnvägsunionens franc\",\n \"displayName-count-other\": \"internationella järnvägsunionens franc\",\n symbol: \"XFU\"\n },\n XOF: {\n displayName: \"västafrikansk franc\",\n \"displayName-count-one\": \"västafrikansk franc\",\n \"displayName-count-other\": \"västafrikanska franc\",\n symbol: \"F CFA\"\n },\n XPD: {\n displayName: \"palladium\",\n \"displayName-count-one\": \"uns palladium\",\n \"displayName-count-other\": \"palladium\",\n symbol: \"XPD\"\n },\n XPF: {\n displayName: \"CFP-franc\",\n \"displayName-count-one\": \"CFP-franc\",\n \"displayName-count-other\": \"CFP-franc\",\n symbol: \"CFPF\"\n },\n XPT: {\n displayName: \"platina\",\n \"displayName-count-one\": \"uns platina\",\n \"displayName-count-other\": \"platina\",\n symbol: \"XPT\"\n },\n XRE: {\n displayName: \"RINET-fond\",\n \"displayName-count-one\": \"RINET-fond\",\n \"displayName-count-other\": \"RINET-fond\",\n symbol: \"XRE\"\n },\n XSU: {\n displayName: \"latinamerikansk sucre\",\n \"displayName-count-one\": \"latinamerikansk sucre\",\n \"displayName-count-other\": \"latinamerikanska sucre\",\n symbol: \"XSU\"\n },\n XTS: {\n displayName: \"testvalutaenhet\",\n \"displayName-count-one\": \"testvalutaenhet\",\n \"displayName-count-other\": \"testvalutaenheter\",\n symbol: \"XTS\"\n },\n XUA: {\n displayName: \"afrikansk kontoenhet\",\n \"displayName-count-one\": \"afrikansk kontoenhet\",\n \"displayName-count-other\": \"afrikanska kontoenheter\",\n symbol: \"XUA\"\n },\n XXX: {\n displayName: \"okänd valuta\",\n \"displayName-count-one\": \"(okänd valutaenhet)\",\n \"displayName-count-other\": \"(okända valutaenheter)\",\n symbol: \"¤\"\n },\n YDD: {\n displayName: \"jemenitisk dinar\",\n \"displayName-count-one\": \"jemenitisk dinar\",\n \"displayName-count-other\": \"jemenitiska dinarer\",\n symbol: \"YDD\"\n },\n YER: {\n displayName: \"jemenitisk rial\",\n \"displayName-count-one\": \"jemenitisk rial\",\n \"displayName-count-other\": \"jemenitiska rial\",\n symbol: \"YER\"\n },\n YUD: {\n displayName: \"jugoslavisk dinar (1966–1990)\",\n \"displayName-count-one\": \"jugoslavisk dinar (1966–1990)\",\n \"displayName-count-other\": \"jugoslaviska dinarer (1966–1990)\",\n symbol: \"YUD\"\n },\n YUM: {\n displayName: \"jugoslavisk dinar (1994–2002)\",\n \"displayName-count-one\": \"jugoslavisk dinar (1994–2002)\",\n \"displayName-count-other\": \"jugoslaviska dinarer (1994–2002)\",\n symbol: \"YUM\"\n },\n YUN: {\n displayName: \"jugoslavisk dinar (1990–1992)\",\n \"displayName-count-one\": \"jugoslavisk dinar (1990–1992)\",\n \"displayName-count-other\": \"jugoslaviska dinarer (1990–1992)\",\n symbol: \"YUN\"\n },\n YUR: {\n displayName: \"jugoslavisk dinar (1992–1993)\",\n \"displayName-count-one\": \"jugoslavisk dinar (1992–1993)\",\n \"displayName-count-other\": \"jugoslaviska dinarer (1992–1993)\",\n symbol: \"YUR\"\n },\n ZAL: {\n displayName: \"sydafrikansk rand (finansiell)\",\n \"displayName-count-one\": \"sydafrikansk rand (finansiell)\",\n \"displayName-count-other\": \"sydafrikanska rand (finansiella)\",\n symbol: \"ZAL\"\n },\n ZAR: {\n displayName: \"sydafrikansk rand\",\n \"displayName-count-one\": \"sydafrikansk rand\",\n \"displayName-count-other\": \"sydafrikanska rand\",\n symbol: \"ZAR\",\n \"symbol-alt-narrow\": \"R\"\n },\n ZMK: {\n displayName: \"zambisk kwacha (1968–2012)\",\n \"displayName-count-one\": \"zambisk kwacha (1968–2012)\",\n \"displayName-count-other\": \"zambiska kwacha (1968–2012)\",\n symbol: \"ZMK\"\n },\n ZMW: {\n displayName: \"zambisk kwacha\",\n \"displayName-count-one\": \"zambisk kwacha\",\n \"displayName-count-other\": \"zambiska kwacha\",\n symbol: \"ZMW\",\n \"symbol-alt-narrow\": \"ZK\"\n },\n ZRN: {\n displayName: \"zairisk ny zaire\",\n \"displayName-count-one\": \"zaïrisk ny zaïre\",\n \"displayName-count-other\": \"zaïriska nya zaïre\",\n symbol: \"ZRN\"\n },\n ZRZ: {\n displayName: \"zairisk zaire\",\n \"displayName-count-one\": \"zaïrisk zaïre\",\n \"displayName-count-other\": \"zaïriska zaïre\",\n symbol: \"ZRZ\"\n },\n ZWD: {\n displayName: \"Zimbabwe-dollar\",\n \"displayName-count-one\": \"Zimbabwe-dollar\",\n \"displayName-count-other\": \"Zimbabwe-dollar\",\n symbol: \"ZWD\"\n },\n ZWL: {\n displayName: \"Zimbabwe-dollar (2009)\",\n \"displayName-count-one\": \"Zimbabwe-dollar (2009)\",\n \"displayName-count-other\": \"Zimbabwe-dollar (2009)\",\n symbol: \"ZWL\"\n },\n ZWR: {\n displayName: \"Zimbabwe-dollar (2008)\",\n \"displayName-count-one\": \"Zimbabwe-dollar (2008)\",\n \"displayName-count-other\": \"Zimbabwe-dollar (2008)\",\n symbol: \"ZWR\"\n }\n },\n localeCurrency: \"SEK\"\n },\n calendar: {\n patterns: {\n d: \"y-MM-dd\",\n D: \"EEEE d MMMM y\",\n m: \"d MMM\",\n M: \"d MMMM\",\n y: \"MMM y\",\n Y: \"MMMM y\",\n F: \"EEEE d MMMM y HH:mm:ss\",\n g: \"y-MM-dd HH:mm\",\n G: \"y-MM-dd HH:mm:ss\",\n t: \"HH:mm\",\n T: \"HH:mm:ss\",\n s: \"yyyy'-'MM'-'dd'T'HH':'mm':'ss\",\n u: \"yyyy'-'MM'-'dd HH':'mm':'ss'Z'\"\n },\n dateTimeFormats: {\n full: \"{1} {0}\",\n long: \"{1} {0}\",\n medium: \"{1} {0}\",\n short: \"{1} {0}\",\n availableFormats: {\n Bh: \"h B\",\n Bhm: \"h:mm B\",\n Bhms: \"h:mm:ss B\",\n d: \"d\",\n E: \"ccc\",\n EBhm: \"E h:mm B\",\n EBhms: \"E h:mm:ss B\",\n Ed: \"E d\",\n Ehm: \"E h:mm a\",\n EHm: \"E HH:mm\",\n Ehms: \"E h:mm:ss a\",\n EHms: \"E HH:mm:ss\",\n Gy: \"y G\",\n GyMd: \"y-MM-dd GGGGG\",\n GyMMM: \"MMM y G\",\n GyMMMd: \"d MMM y G\",\n GyMMMEd: \"E d MMM y G\",\n h: \"h a\",\n H: \"HH\",\n hm: \"h:mm a\",\n Hm: \"HH:mm\",\n hms: \"h:mm:ss a\",\n Hms: \"HH:mm:ss\",\n hmsv: \"h:mm:ss a v\",\n Hmsv: \"HH:mm:ss v\",\n hmv: \"h:mm a v\",\n Hmv: \"HH:mm v\",\n M: \"L\",\n Md: \"d/M\",\n MEd: \"E d/M\",\n MMd: \"d/M\",\n MMdd: \"dd/MM\",\n MMM: \"LLL\",\n MMMd: \"d MMM\",\n MMMEd: \"E d MMM\",\n MMMMd: \"d MMMM\",\n MMMMEd: \"E d MMMM\",\n \"MMMMW-count-one\": \"'vecka' W 'i' MMMM\",\n \"MMMMW-count-other\": \"'vecka' W 'i' MMMM\",\n ms: \"mm:ss\",\n y: \"y\",\n yM: \"y-MM\",\n yMd: \"y-MM-dd\",\n yMEd: \"E, y-MM-dd\",\n yMM: \"y-MM\",\n yMMM: \"MMM y\",\n yMMMd: \"d MMM y\",\n yMMMEd: \"E d MMM y\",\n yMMMM: \"MMMM y\",\n yQQQ: \"QQQ y\",\n yQQQQ: \"QQQQ y\",\n \"yw-count-one\": \"'vecka' w, Y\",\n \"yw-count-other\": \"'vecka' w, Y\"\n }\n },\n timeFormats: {\n full: \"HH:mm:ss zzzz\",\n \"full-alt-variant\": \"'kl'. HH.mm.ss zzzz\",\n long: \"HH:mm:ss z\",\n \"long-alt-variant\": \"HH.mm.ss z\",\n medium: \"HH:mm:ss\",\n \"medium-alt-variant\": \"HH.mm.ss\",\n short: \"HH:mm\",\n \"short-alt-variant\": \"HH.mm\"\n },\n dateFormats: {\n full: \"EEEE d MMMM y\",\n long: \"d MMMM y\",\n medium: \"d MMM y\",\n short: \"y-MM-dd\"\n },\n days: {\n format: {\n abbreviated: [\"sön\", \"mån\", \"tis\", \"ons\", \"tors\", \"fre\", \"lör\"],\n narrow: [\"S\", \"M\", \"T\", \"O\", \"T\", \"F\", \"L\"],\n short: [\"sö\", \"må\", \"ti\", \"on\", \"to\", \"fr\", \"lö\"],\n wide: [\"söndag\", \"måndag\", \"tisdag\", \"onsdag\", \"torsdag\", \"fredag\", \"lördag\"]\n },\n \"stand-alone\": {\n abbreviated: [\"sön\", \"mån\", \"tis\", \"ons\", \"tors\", \"fre\", \"lör\"],\n narrow: [\"S\", \"M\", \"T\", \"O\", \"T\", \"F\", \"L\"],\n short: [\"sö\", \"må\", \"ti\", \"on\", \"to\", \"fr\", \"lö\"],\n wide: [\"söndag\", \"måndag\", \"tisdag\", \"onsdag\", \"torsdag\", \"fredag\", \"lördag\"]\n }\n },\n months: {\n format: {\n abbreviated: [\"jan.\", \"feb.\", \"mars\", \"apr.\", \"maj\", \"juni\", \"juli\", \"aug.\", \"sep.\", \"okt.\", \"nov.\", \"dec.\"],\n narrow: [\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"],\n wide: [\"januari\", \"februari\", \"mars\", \"april\", \"maj\", \"juni\", \"juli\", \"augusti\", \"september\", \"oktober\", \"november\", \"december\"]\n },\n \"stand-alone\": {\n abbreviated: [\"jan.\", \"feb.\", \"mars\", \"apr.\", \"maj\", \"juni\", \"juli\", \"aug.\", \"sep.\", \"okt.\", \"nov.\", \"dec.\"],\n narrow: [\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"],\n wide: [\"januari\", \"februari\", \"mars\", \"april\", \"maj\", \"juni\", \"juli\", \"augusti\", \"september\", \"oktober\", \"november\", \"december\"]\n }\n },\n quarters: {\n format: {\n abbreviated: [\"K1\", \"K2\", \"K3\", \"K4\"],\n narrow: [\"1\", \"2\", \"3\", \"4\"],\n wide: [\"1:a kvartalet\", \"2:a kvartalet\", \"3:e kvartalet\", \"4:e kvartalet\"]\n },\n \"stand-alone\": {\n abbreviated: [\"K1\", \"K2\", \"K3\", \"K4\"],\n narrow: [\"1\", \"2\", \"3\", \"4\"],\n wide: [\"1:a kvartalet\", \"2:a kvartalet\", \"3:e kvartalet\", \"4:e kvartalet\"]\n }\n },\n dayPeriods: {\n format: {\n abbreviated: {\n midnight: \"midnatt\",\n am: \"fm\",\n pm: \"em\",\n morning1: \"på morg.\",\n morning2: \"på förm.\",\n afternoon1: \"på efterm.\",\n evening1: \"på kvällen\",\n night1: \"på natten\"\n },\n narrow: {\n midnight: \"midn.\",\n am: \"fm\",\n pm: \"em\",\n morning1: \"på morg.\",\n morning2: \"på förm.\",\n afternoon1: \"på efterm.\",\n evening1: \"på kvällen\",\n night1: \"på natten\"\n },\n wide: {\n midnight: \"midnatt\",\n am: \"fm\",\n pm: \"em\",\n morning1: \"på morgonen\",\n morning2: \"på förmiddagen\",\n afternoon1: \"på eftermiddagen\",\n evening1: \"på kvällen\",\n night1: \"på natten\"\n }\n },\n \"stand-alone\": {\n abbreviated: {\n midnight: \"midnatt\",\n am: \"f.m.\",\n pm: \"e.m.\",\n morning1: \"morgon\",\n morning2: \"förm.\",\n afternoon1: \"efterm.\",\n evening1: \"kväll\",\n night1: \"natt\"\n },\n narrow: {\n midnight: \"midn.\",\n am: \"fm\",\n pm: \"em\",\n morning1: \"morg.\",\n morning2: \"förm.\",\n afternoon1: \"efterm.\",\n evening1: \"kväll\",\n night1: \"natt\"\n },\n wide: {\n midnight: \"midnatt\",\n am: \"förmiddag\",\n pm: \"eftermiddag\",\n morning1: \"morgon\",\n morning2: \"förmiddag\",\n afternoon1: \"eftermiddag\",\n evening1: \"kväll\",\n night1: \"natt\"\n }\n }\n },\n eras: {\n format: {\n wide: {\n \"0\": \"före Kristus\",\n \"1\": \"efter Kristus\",\n \"0-alt-variant\": \"före västerländsk tideräkning\",\n \"1-alt-variant\": \"västerländsk tideräkning\"\n },\n abbreviated: {\n \"0\": \"f.Kr.\",\n \"1\": \"e.Kr.\",\n \"0-alt-variant\": \"f.v.t.\",\n \"1-alt-variant\": \"v.t.\"\n },\n narrow: {\n \"0\": \"f.Kr.\",\n \"1\": \"e.Kr.\",\n \"0-alt-variant\": \"f.v.t.\",\n \"1-alt-variant\": \"v.t.\"\n }\n }\n },\n gmtFormat: \"GMT{0}\",\n gmtZeroFormat: \"GMT\",\n dateFields: {\n era: {\n wide: \"era\",\n short: \"era\",\n narrow: \"era\"\n },\n year: {\n wide: \"år\",\n short: \"år\",\n narrow: \"år\"\n },\n quarter: {\n wide: \"kvartal\",\n short: \"kv.\",\n narrow: \"kv.\"\n },\n month: {\n wide: \"månad\",\n short: \"m\",\n narrow: \"mån\"\n },\n week: {\n wide: \"vecka\",\n short: \"v\",\n narrow: \"v\"\n },\n weekOfMonth: {\n wide: \"vecka i månaden\",\n short: \"vk. i mån.\",\n narrow: \"vk.i mån.\"\n },\n day: {\n wide: \"dag\",\n short: \"dag\",\n narrow: \"dag\"\n },\n dayOfYear: {\n wide: \"dag under året\",\n short: \"dag under året\",\n narrow: \"dag under året\"\n },\n weekday: {\n wide: \"veckodag\",\n short: \"veckodag\",\n narrow: \"veckodag\"\n },\n weekdayOfMonth: {\n wide: \"veckodag i månad\",\n short: \"veckodag i mån.\",\n narrow: \"veckodag i mån.\"\n },\n dayperiod: {\n short: \"fm/em\",\n wide: \"fm/em\",\n narrow: \"fm/em\"\n },\n hour: {\n wide: \"timme\",\n short: \"tim\",\n narrow: \"h\"\n },\n minute: {\n wide: \"minut\",\n short: \"min\",\n narrow: \"m\"\n },\n second: {\n wide: \"sekund\",\n short: \"sek\",\n narrow: \"s\"\n },\n zone: {\n wide: \"tidszon\",\n short: \"tidszon\",\n narrow: \"tidszon\"\n },\n millisecond: {\n narrow: \"ms\",\n short: \"ms\",\n wide: \"millisekund\"\n }\n }\n },\n firstDay: 1,\n weekendRange: {\n start: 6,\n end: 0\n },\n likelySubtags: {\n sv: \"sv-Latn-SE\"\n },\n currencyData: {\n SEK: {\n _rounding: \"0\",\n _digits: \"2\",\n _cashRounding: \"0\",\n _cashDigits: \"0\"\n }\n }\n});","/**-----------------------------------------------------------------------------------------\n* Copyright © 2024 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nvar setData = require('@progress/kendo-angular-intl').setData;\nsetData({\n name: \"en\",\n identity: {\n language: \"en\"\n },\n territory: \"US\",\n numbers: {\n symbols: {\n decimal: \".\",\n group: \",\",\n list: \";\",\n percentSign: \"%\",\n plusSign: \"+\",\n minusSign: \"-\",\n exponential: \"E\",\n superscriptingExponent: \"×\",\n perMille: \"‰\",\n infinity: \"∞\",\n nan: \"NaN\",\n timeSeparator: \":\",\n approximatelySign: \"~\"\n },\n decimal: {\n patterns: [\"n\"],\n groupSize: [3]\n },\n scientific: {\n patterns: [\"nEn\"],\n groupSize: []\n },\n percent: {\n patterns: [\"n%\"],\n groupSize: [3]\n },\n currency: {\n patterns: [\"$n\"],\n groupSize: [3],\n \"unitPattern-count-one\": \"n $\",\n \"unitPattern-count-other\": \"n $\"\n },\n currencies: {\n ADP: {\n displayName: \"Andorran Peseta\",\n \"displayName-count-one\": \"Andorran peseta\",\n \"displayName-count-other\": \"Andorran pesetas\",\n symbol: \"ADP\"\n },\n AED: {\n displayName: \"United Arab Emirates Dirham\",\n \"displayName-count-one\": \"UAE dirham\",\n \"displayName-count-other\": \"UAE dirhams\",\n symbol: \"AED\"\n },\n AFA: {\n displayName: \"Afghan Afghani (1927–2002)\",\n \"displayName-count-one\": \"Afghan afghani (1927–2002)\",\n \"displayName-count-other\": \"Afghan afghanis (1927–2002)\",\n symbol: \"AFA\"\n },\n AFN: {\n displayName: \"Afghan Afghani\",\n \"displayName-count-one\": \"Afghan Afghani\",\n \"displayName-count-other\": \"Afghan Afghanis\",\n symbol: \"AFN\",\n \"symbol-alt-narrow\": \"؋\"\n },\n ALK: {\n displayName: \"Albanian Lek (1946–1965)\",\n \"displayName-count-one\": \"Albanian lek (1946–1965)\",\n \"displayName-count-other\": \"Albanian lekë (1946–1965)\",\n symbol: \"ALK\"\n },\n ALL: {\n displayName: \"Albanian Lek\",\n \"displayName-count-one\": \"Albanian lek\",\n \"displayName-count-other\": \"Albanian lekë\",\n symbol: \"ALL\"\n },\n AMD: {\n displayName: \"Armenian Dram\",\n \"displayName-count-one\": \"Armenian dram\",\n \"displayName-count-other\": \"Armenian drams\",\n symbol: \"AMD\",\n \"symbol-alt-narrow\": \"֏\"\n },\n ANG: {\n displayName: \"Netherlands Antillean Guilder\",\n \"displayName-count-one\": \"Netherlands Antillean guilder\",\n \"displayName-count-other\": \"Netherlands Antillean guilders\",\n symbol: \"ANG\"\n },\n AOA: {\n displayName: \"Angolan Kwanza\",\n \"displayName-count-one\": \"Angolan kwanza\",\n \"displayName-count-other\": \"Angolan kwanzas\",\n symbol: \"AOA\",\n \"symbol-alt-narrow\": \"Kz\"\n },\n AOK: {\n displayName: \"Angolan Kwanza (1977–1991)\",\n \"displayName-count-one\": \"Angolan kwanza (1977–1991)\",\n \"displayName-count-other\": \"Angolan kwanzas (1977–1991)\",\n symbol: \"AOK\"\n },\n AON: {\n displayName: \"Angolan New Kwanza (1990–2000)\",\n \"displayName-count-one\": \"Angolan new kwanza (1990–2000)\",\n \"displayName-count-other\": \"Angolan new kwanzas (1990–2000)\",\n symbol: \"AON\"\n },\n AOR: {\n displayName: \"Angolan Readjusted Kwanza (1995–1999)\",\n \"displayName-count-one\": \"Angolan readjusted kwanza (1995–1999)\",\n \"displayName-count-other\": \"Angolan readjusted kwanzas (1995–1999)\",\n symbol: \"AOR\"\n },\n ARA: {\n displayName: \"Argentine Austral\",\n \"displayName-count-one\": \"Argentine austral\",\n \"displayName-count-other\": \"Argentine australs\",\n symbol: \"ARA\"\n },\n ARL: {\n displayName: \"Argentine Peso Ley (1970–1983)\",\n \"displayName-count-one\": \"Argentine peso ley (1970–1983)\",\n \"displayName-count-other\": \"Argentine pesos ley (1970–1983)\",\n symbol: \"ARL\"\n },\n ARM: {\n displayName: \"Argentine Peso (1881–1970)\",\n \"displayName-count-one\": \"Argentine peso (1881–1970)\",\n \"displayName-count-other\": \"Argentine pesos (1881–1970)\",\n symbol: \"ARM\"\n },\n ARP: {\n displayName: \"Argentine Peso (1983–1985)\",\n \"displayName-count-one\": \"Argentine peso (1983–1985)\",\n \"displayName-count-other\": \"Argentine pesos (1983–1985)\",\n symbol: \"ARP\"\n },\n ARS: {\n displayName: \"Argentine Peso\",\n \"displayName-count-one\": \"Argentine peso\",\n \"displayName-count-other\": \"Argentine pesos\",\n symbol: \"ARS\",\n \"symbol-alt-narrow\": \"$\"\n },\n ATS: {\n displayName: \"Austrian Schilling\",\n \"displayName-count-one\": \"Austrian schilling\",\n \"displayName-count-other\": \"Austrian schillings\",\n symbol: \"ATS\"\n },\n AUD: {\n displayName: \"Australian Dollar\",\n \"displayName-count-one\": \"Australian dollar\",\n \"displayName-count-other\": \"Australian dollars\",\n symbol: \"A$\",\n \"symbol-alt-narrow\": \"$\"\n },\n AWG: {\n displayName: \"Aruban Florin\",\n \"displayName-count-one\": \"Aruban florin\",\n \"displayName-count-other\": \"Aruban florin\",\n symbol: \"AWG\"\n },\n AZM: {\n displayName: \"Azerbaijani Manat (1993–2006)\",\n \"displayName-count-one\": \"Azerbaijani manat (1993–2006)\",\n \"displayName-count-other\": \"Azerbaijani manats (1993–2006)\",\n symbol: \"AZM\"\n },\n AZN: {\n displayName: \"Azerbaijani Manat\",\n \"displayName-count-one\": \"Azerbaijani manat\",\n \"displayName-count-other\": \"Azerbaijani manats\",\n symbol: \"AZN\",\n \"symbol-alt-narrow\": \"₼\"\n },\n BAD: {\n displayName: \"Bosnia-Herzegovina Dinar (1992–1994)\",\n \"displayName-count-one\": \"Bosnia-Herzegovina dinar (1992–1994)\",\n \"displayName-count-other\": \"Bosnia-Herzegovina dinars (1992–1994)\",\n symbol: \"BAD\"\n },\n BAM: {\n displayName: \"Bosnia-Herzegovina Convertible Mark\",\n \"displayName-count-one\": \"Bosnia-Herzegovina convertible mark\",\n \"displayName-count-other\": \"Bosnia-Herzegovina convertible marks\",\n symbol: \"BAM\",\n \"symbol-alt-narrow\": \"KM\"\n },\n BAN: {\n displayName: \"Bosnia-Herzegovina New Dinar (1994–1997)\",\n \"displayName-count-one\": \"Bosnia-Herzegovina new dinar (1994–1997)\",\n \"displayName-count-other\": \"Bosnia-Herzegovina new dinars (1994–1997)\",\n symbol: \"BAN\"\n },\n BBD: {\n displayName: \"Barbadian Dollar\",\n \"displayName-count-one\": \"Barbadian dollar\",\n \"displayName-count-other\": \"Barbadian dollars\",\n symbol: \"BBD\",\n \"symbol-alt-narrow\": \"$\"\n },\n BDT: {\n displayName: \"Bangladeshi Taka\",\n \"displayName-count-one\": \"Bangladeshi taka\",\n \"displayName-count-other\": \"Bangladeshi takas\",\n symbol: \"BDT\",\n \"symbol-alt-narrow\": \"৳\"\n },\n BEC: {\n displayName: \"Belgian Franc (convertible)\",\n \"displayName-count-one\": \"Belgian franc (convertible)\",\n \"displayName-count-other\": \"Belgian francs (convertible)\",\n symbol: \"BEC\"\n },\n BEF: {\n displayName: \"Belgian Franc\",\n \"displayName-count-one\": \"Belgian franc\",\n \"displayName-count-other\": \"Belgian francs\",\n symbol: \"BEF\"\n },\n BEL: {\n displayName: \"Belgian Franc (financial)\",\n \"displayName-count-one\": \"Belgian franc (financial)\",\n \"displayName-count-other\": \"Belgian francs (financial)\",\n symbol: \"BEL\"\n },\n BGL: {\n displayName: \"Bulgarian Hard Lev\",\n \"displayName-count-one\": \"Bulgarian hard lev\",\n \"displayName-count-other\": \"Bulgarian hard leva\",\n symbol: \"BGL\"\n },\n BGM: {\n displayName: \"Bulgarian Socialist Lev\",\n \"displayName-count-one\": \"Bulgarian socialist lev\",\n \"displayName-count-other\": \"Bulgarian socialist leva\",\n symbol: \"BGM\"\n },\n BGN: {\n displayName: \"Bulgarian Lev\",\n \"displayName-count-one\": \"Bulgarian lev\",\n \"displayName-count-other\": \"Bulgarian leva\",\n symbol: \"BGN\"\n },\n BGO: {\n displayName: \"Bulgarian Lev (1879–1952)\",\n \"displayName-count-one\": \"Bulgarian lev (1879–1952)\",\n \"displayName-count-other\": \"Bulgarian leva (1879–1952)\",\n symbol: \"BGO\"\n },\n BHD: {\n displayName: \"Bahraini Dinar\",\n \"displayName-count-one\": \"Bahraini dinar\",\n \"displayName-count-other\": \"Bahraini dinars\",\n symbol: \"BHD\"\n },\n BIF: {\n displayName: \"Burundian Franc\",\n \"displayName-count-one\": \"Burundian franc\",\n \"displayName-count-other\": \"Burundian francs\",\n symbol: \"BIF\"\n },\n BMD: {\n displayName: \"Bermudan Dollar\",\n \"displayName-count-one\": \"Bermudan dollar\",\n \"displayName-count-other\": \"Bermudan dollars\",\n symbol: \"BMD\",\n \"symbol-alt-narrow\": \"$\"\n },\n BND: {\n displayName: \"Brunei Dollar\",\n \"displayName-count-one\": \"Brunei dollar\",\n \"displayName-count-other\": \"Brunei dollars\",\n symbol: \"BND\",\n \"symbol-alt-narrow\": \"$\"\n },\n BOB: {\n displayName: \"Bolivian Boliviano\",\n \"displayName-count-one\": \"Bolivian boliviano\",\n \"displayName-count-other\": \"Bolivian bolivianos\",\n symbol: \"BOB\",\n \"symbol-alt-narrow\": \"Bs\"\n },\n BOL: {\n displayName: \"Bolivian Boliviano (1863–1963)\",\n \"displayName-count-one\": \"Bolivian boliviano (1863–1963)\",\n \"displayName-count-other\": \"Bolivian bolivianos (1863–1963)\",\n symbol: \"BOL\"\n },\n BOP: {\n displayName: \"Bolivian Peso\",\n \"displayName-count-one\": \"Bolivian peso\",\n \"displayName-count-other\": \"Bolivian pesos\",\n symbol: \"BOP\"\n },\n BOV: {\n displayName: \"Bolivian Mvdol\",\n \"displayName-count-one\": \"Bolivian mvdol\",\n \"displayName-count-other\": \"Bolivian mvdols\",\n symbol: \"BOV\"\n },\n BRB: {\n displayName: \"Brazilian New Cruzeiro (1967–1986)\",\n \"displayName-count-one\": \"Brazilian new cruzeiro (1967–1986)\",\n \"displayName-count-other\": \"Brazilian new cruzeiros (1967–1986)\",\n symbol: \"BRB\"\n },\n BRC: {\n displayName: \"Brazilian Cruzado (1986–1989)\",\n \"displayName-count-one\": \"Brazilian cruzado (1986–1989)\",\n \"displayName-count-other\": \"Brazilian cruzados (1986–1989)\",\n symbol: \"BRC\"\n },\n BRE: {\n displayName: \"Brazilian Cruzeiro (1990–1993)\",\n \"displayName-count-one\": \"Brazilian cruzeiro (1990–1993)\",\n \"displayName-count-other\": \"Brazilian cruzeiros (1990–1993)\",\n symbol: \"BRE\"\n },\n BRL: {\n displayName: \"Brazilian Real\",\n \"displayName-count-one\": \"Brazilian real\",\n \"displayName-count-other\": \"Brazilian reals\",\n symbol: \"R$\",\n \"symbol-alt-narrow\": \"R$\"\n },\n BRN: {\n displayName: \"Brazilian New Cruzado (1989–1990)\",\n \"displayName-count-one\": \"Brazilian new cruzado (1989–1990)\",\n \"displayName-count-other\": \"Brazilian new cruzados (1989–1990)\",\n symbol: \"BRN\"\n },\n BRR: {\n displayName: \"Brazilian Cruzeiro (1993–1994)\",\n \"displayName-count-one\": \"Brazilian cruzeiro (1993–1994)\",\n \"displayName-count-other\": \"Brazilian cruzeiros (1993–1994)\",\n symbol: \"BRR\"\n },\n BRZ: {\n displayName: \"Brazilian Cruzeiro (1942–1967)\",\n \"displayName-count-one\": \"Brazilian cruzeiro (1942–1967)\",\n \"displayName-count-other\": \"Brazilian cruzeiros (1942–1967)\",\n symbol: \"BRZ\"\n },\n BSD: {\n displayName: \"Bahamian Dollar\",\n \"displayName-count-one\": \"Bahamian dollar\",\n \"displayName-count-other\": \"Bahamian dollars\",\n symbol: \"BSD\",\n \"symbol-alt-narrow\": \"$\"\n },\n BTN: {\n displayName: \"Bhutanese Ngultrum\",\n \"displayName-count-one\": \"Bhutanese ngultrum\",\n \"displayName-count-other\": \"Bhutanese ngultrums\",\n symbol: \"BTN\"\n },\n BUK: {\n displayName: \"Burmese Kyat\",\n \"displayName-count-one\": \"Burmese kyat\",\n \"displayName-count-other\": \"Burmese kyats\",\n symbol: \"BUK\"\n },\n BWP: {\n displayName: \"Botswanan Pula\",\n \"displayName-count-one\": \"Botswanan pula\",\n \"displayName-count-other\": \"Botswanan pulas\",\n symbol: \"BWP\",\n \"symbol-alt-narrow\": \"P\"\n },\n BYB: {\n displayName: \"Belarusian Ruble (1994–1999)\",\n \"displayName-count-one\": \"Belarusian ruble (1994–1999)\",\n \"displayName-count-other\": \"Belarusian rubles (1994–1999)\",\n symbol: \"BYB\"\n },\n BYN: {\n displayName: \"Belarusian Ruble\",\n \"displayName-count-one\": \"Belarusian ruble\",\n \"displayName-count-other\": \"Belarusian rubles\",\n symbol: \"BYN\"\n },\n BYR: {\n displayName: \"Belarusian Ruble (2000–2016)\",\n \"displayName-count-one\": \"Belarusian ruble (2000–2016)\",\n \"displayName-count-other\": \"Belarusian rubles (2000–2016)\",\n symbol: \"BYR\"\n },\n BZD: {\n displayName: \"Belize Dollar\",\n \"displayName-count-one\": \"Belize dollar\",\n \"displayName-count-other\": \"Belize dollars\",\n symbol: \"BZD\",\n \"symbol-alt-narrow\": \"$\"\n },\n CAD: {\n displayName: \"Canadian Dollar\",\n \"displayName-count-one\": \"Canadian dollar\",\n \"displayName-count-other\": \"Canadian dollars\",\n symbol: \"CA$\",\n \"symbol-alt-narrow\": \"$\"\n },\n CDF: {\n displayName: \"Congolese Franc\",\n \"displayName-count-one\": \"Congolese franc\",\n \"displayName-count-other\": \"Congolese francs\",\n symbol: \"CDF\"\n },\n CHE: {\n displayName: \"WIR Euro\",\n \"displayName-count-one\": \"WIR euro\",\n \"displayName-count-other\": \"WIR euros\",\n symbol: \"CHE\"\n },\n CHF: {\n displayName: \"Swiss Franc\",\n \"displayName-count-one\": \"Swiss franc\",\n \"displayName-count-other\": \"Swiss francs\",\n symbol: \"CHF\"\n },\n CHW: {\n displayName: \"WIR Franc\",\n \"displayName-count-one\": \"WIR franc\",\n \"displayName-count-other\": \"WIR francs\",\n symbol: \"CHW\"\n },\n CLE: {\n displayName: \"Chilean Escudo\",\n \"displayName-count-one\": \"Chilean escudo\",\n \"displayName-count-other\": \"Chilean escudos\",\n symbol: \"CLE\"\n },\n CLF: {\n displayName: \"Chilean Unit of Account (UF)\",\n \"displayName-count-one\": \"Chilean unit of account (UF)\",\n \"displayName-count-other\": \"Chilean units of account (UF)\",\n symbol: \"CLF\"\n },\n CLP: {\n displayName: \"Chilean Peso\",\n \"displayName-count-one\": \"Chilean peso\",\n \"displayName-count-other\": \"Chilean pesos\",\n symbol: \"CLP\",\n \"symbol-alt-narrow\": \"$\"\n },\n CNH: {\n displayName: \"Chinese Yuan (offshore)\",\n \"displayName-count-one\": \"Chinese yuan (offshore)\",\n \"displayName-count-other\": \"Chinese yuan (offshore)\",\n symbol: \"CNH\"\n },\n CNX: {\n displayName: \"Chinese People’s Bank Dollar\",\n \"displayName-count-one\": \"Chinese People’s Bank dollar\",\n \"displayName-count-other\": \"Chinese People’s Bank dollars\",\n symbol: \"CNX\"\n },\n CNY: {\n displayName: \"Chinese Yuan\",\n \"displayName-count-one\": \"Chinese yuan\",\n \"displayName-count-other\": \"Chinese yuan\",\n symbol: \"CN¥\",\n \"symbol-alt-narrow\": \"¥\"\n },\n COP: {\n displayName: \"Colombian Peso\",\n \"displayName-count-one\": \"Colombian peso\",\n \"displayName-count-other\": \"Colombian pesos\",\n symbol: \"COP\",\n \"symbol-alt-narrow\": \"$\"\n },\n COU: {\n displayName: \"Colombian Real Value Unit\",\n \"displayName-count-one\": \"Colombian real value unit\",\n \"displayName-count-other\": \"Colombian real value units\",\n symbol: \"COU\"\n },\n CRC: {\n displayName: \"Costa Rican Colón\",\n \"displayName-count-one\": \"Costa Rican colón\",\n \"displayName-count-other\": \"Costa Rican colóns\",\n symbol: \"CRC\",\n \"symbol-alt-narrow\": \"₡\"\n },\n CSD: {\n displayName: \"Serbian Dinar (2002–2006)\",\n \"displayName-count-one\": \"Serbian dinar (2002–2006)\",\n \"displayName-count-other\": \"Serbian dinars (2002–2006)\",\n symbol: \"CSD\"\n },\n CSK: {\n displayName: \"Czechoslovak Hard Koruna\",\n \"displayName-count-one\": \"Czechoslovak hard koruna\",\n \"displayName-count-other\": \"Czechoslovak hard korunas\",\n symbol: \"CSK\"\n },\n CUC: {\n displayName: \"Cuban Convertible Peso\",\n \"displayName-count-one\": \"Cuban convertible peso\",\n \"displayName-count-other\": \"Cuban convertible pesos\",\n symbol: \"CUC\",\n \"symbol-alt-narrow\": \"$\"\n },\n CUP: {\n displayName: \"Cuban Peso\",\n \"displayName-count-one\": \"Cuban peso\",\n \"displayName-count-other\": \"Cuban pesos\",\n symbol: \"CUP\",\n \"symbol-alt-narrow\": \"$\"\n },\n CVE: {\n displayName: \"Cape Verdean Escudo\",\n \"displayName-count-one\": \"Cape Verdean escudo\",\n \"displayName-count-other\": \"Cape Verdean escudos\",\n symbol: \"CVE\"\n },\n CYP: {\n displayName: \"Cypriot Pound\",\n \"displayName-count-one\": \"Cypriot pound\",\n \"displayName-count-other\": \"Cypriot pounds\",\n symbol: \"CYP\"\n },\n CZK: {\n displayName: \"Czech Koruna\",\n \"displayName-count-one\": \"Czech koruna\",\n \"displayName-count-other\": \"Czech korunas\",\n symbol: \"CZK\",\n \"symbol-alt-narrow\": \"Kč\"\n },\n DDM: {\n displayName: \"East German Mark\",\n \"displayName-count-one\": \"East German mark\",\n \"displayName-count-other\": \"East German marks\",\n symbol: \"DDM\"\n },\n DEM: {\n displayName: \"German Mark\",\n \"displayName-count-one\": \"German mark\",\n \"displayName-count-other\": \"German marks\",\n symbol: \"DEM\"\n },\n DJF: {\n displayName: \"Djiboutian Franc\",\n \"displayName-count-one\": \"Djiboutian franc\",\n \"displayName-count-other\": \"Djiboutian francs\",\n symbol: \"DJF\"\n },\n DKK: {\n displayName: \"Danish Krone\",\n \"displayName-count-one\": \"Danish krone\",\n \"displayName-count-other\": \"Danish kroner\",\n symbol: \"DKK\",\n \"symbol-alt-narrow\": \"kr\"\n },\n DOP: {\n displayName: \"Dominican Peso\",\n \"displayName-count-one\": \"Dominican peso\",\n \"displayName-count-other\": \"Dominican pesos\",\n symbol: \"DOP\",\n \"symbol-alt-narrow\": \"$\"\n },\n DZD: {\n displayName: \"Algerian Dinar\",\n \"displayName-count-one\": \"Algerian dinar\",\n \"displayName-count-other\": \"Algerian dinars\",\n symbol: \"DZD\"\n },\n ECS: {\n displayName: \"Ecuadorian Sucre\",\n \"displayName-count-one\": \"Ecuadorian sucre\",\n \"displayName-count-other\": \"Ecuadorian sucres\",\n symbol: \"ECS\"\n },\n ECV: {\n displayName: \"Ecuadorian Unit of Constant Value\",\n \"displayName-count-one\": \"Ecuadorian unit of constant value\",\n \"displayName-count-other\": \"Ecuadorian units of constant value\",\n symbol: \"ECV\"\n },\n EEK: {\n displayName: \"Estonian Kroon\",\n \"displayName-count-one\": \"Estonian kroon\",\n \"displayName-count-other\": \"Estonian kroons\",\n symbol: \"EEK\"\n },\n EGP: {\n displayName: \"Egyptian Pound\",\n \"displayName-count-one\": \"Egyptian pound\",\n \"displayName-count-other\": \"Egyptian pounds\",\n symbol: \"EGP\",\n \"symbol-alt-narrow\": \"E£\"\n },\n ERN: {\n displayName: \"Eritrean Nakfa\",\n \"displayName-count-one\": \"Eritrean nakfa\",\n \"displayName-count-other\": \"Eritrean nakfas\",\n symbol: \"ERN\"\n },\n ESA: {\n displayName: \"Spanish Peseta (A account)\",\n \"displayName-count-one\": \"Spanish peseta (A account)\",\n \"displayName-count-other\": \"Spanish pesetas (A account)\",\n symbol: \"ESA\"\n },\n ESB: {\n displayName: \"Spanish Peseta (convertible account)\",\n \"displayName-count-one\": \"Spanish peseta (convertible account)\",\n \"displayName-count-other\": \"Spanish pesetas (convertible account)\",\n symbol: \"ESB\"\n },\n ESP: {\n displayName: \"Spanish Peseta\",\n \"displayName-count-one\": \"Spanish peseta\",\n \"displayName-count-other\": \"Spanish pesetas\",\n symbol: \"ESP\",\n \"symbol-alt-narrow\": \"₧\"\n },\n ETB: {\n displayName: \"Ethiopian Birr\",\n \"displayName-count-one\": \"Ethiopian birr\",\n \"displayName-count-other\": \"Ethiopian birrs\",\n symbol: \"ETB\"\n },\n EUR: {\n displayName: \"Euro\",\n \"displayName-count-one\": \"euro\",\n \"displayName-count-other\": \"euros\",\n symbol: \"€\",\n \"symbol-alt-narrow\": \"€\"\n },\n FIM: {\n displayName: \"Finnish Markka\",\n \"displayName-count-one\": \"Finnish markka\",\n \"displayName-count-other\": \"Finnish markkas\",\n symbol: \"FIM\"\n },\n FJD: {\n displayName: \"Fijian Dollar\",\n \"displayName-count-one\": \"Fijian dollar\",\n \"displayName-count-other\": \"Fijian dollars\",\n symbol: \"FJD\",\n \"symbol-alt-narrow\": \"$\"\n },\n FKP: {\n displayName: \"Falkland Islands Pound\",\n \"displayName-count-one\": \"Falkland Islands pound\",\n \"displayName-count-other\": \"Falkland Islands pounds\",\n symbol: \"FKP\",\n \"symbol-alt-narrow\": \"£\"\n },\n FRF: {\n displayName: \"French Franc\",\n \"displayName-count-one\": \"French franc\",\n \"displayName-count-other\": \"French francs\",\n symbol: \"FRF\"\n },\n GBP: {\n displayName: \"British Pound\",\n \"displayName-count-one\": \"British pound\",\n \"displayName-count-other\": \"British pounds\",\n symbol: \"£\",\n \"symbol-alt-narrow\": \"£\"\n },\n GEK: {\n displayName: \"Georgian Kupon Larit\",\n \"displayName-count-one\": \"Georgian kupon larit\",\n \"displayName-count-other\": \"Georgian kupon larits\",\n symbol: \"GEK\"\n },\n GEL: {\n displayName: \"Georgian Lari\",\n \"displayName-count-one\": \"Georgian lari\",\n \"displayName-count-other\": \"Georgian laris\",\n symbol: \"GEL\",\n \"symbol-alt-narrow\": \"₾\"\n },\n GHC: {\n displayName: \"Ghanaian Cedi (1979–2007)\",\n \"displayName-count-one\": \"Ghanaian cedi (1979–2007)\",\n \"displayName-count-other\": \"Ghanaian cedis (1979–2007)\",\n symbol: \"GHC\"\n },\n GHS: {\n displayName: \"Ghanaian Cedi\",\n \"displayName-count-one\": \"Ghanaian cedi\",\n \"displayName-count-other\": \"Ghanaian cedis\",\n symbol: \"GHS\",\n \"symbol-alt-narrow\": \"GH₵\"\n },\n GIP: {\n displayName: \"Gibraltar Pound\",\n \"displayName-count-one\": \"Gibraltar pound\",\n \"displayName-count-other\": \"Gibraltar pounds\",\n symbol: \"GIP\",\n \"symbol-alt-narrow\": \"£\"\n },\n GMD: {\n displayName: \"Gambian Dalasi\",\n \"displayName-count-one\": \"Gambian dalasi\",\n \"displayName-count-other\": \"Gambian dalasis\",\n symbol: \"GMD\"\n },\n GNF: {\n displayName: \"Guinean Franc\",\n \"displayName-count-one\": \"Guinean franc\",\n \"displayName-count-other\": \"Guinean francs\",\n symbol: \"GNF\",\n \"symbol-alt-narrow\": \"FG\"\n },\n GNS: {\n displayName: \"Guinean Syli\",\n \"displayName-count-one\": \"Guinean syli\",\n \"displayName-count-other\": \"Guinean sylis\",\n symbol: \"GNS\"\n },\n GQE: {\n displayName: \"Equatorial Guinean Ekwele\",\n \"displayName-count-one\": \"Equatorial Guinean ekwele\",\n \"displayName-count-other\": \"Equatorial Guinean ekwele\",\n symbol: \"GQE\"\n },\n GRD: {\n displayName: \"Greek Drachma\",\n \"displayName-count-one\": \"Greek drachma\",\n \"displayName-count-other\": \"Greek drachmas\",\n symbol: \"GRD\"\n },\n GTQ: {\n displayName: \"Guatemalan Quetzal\",\n \"displayName-count-one\": \"Guatemalan quetzal\",\n \"displayName-count-other\": \"Guatemalan quetzals\",\n symbol: \"GTQ\",\n \"symbol-alt-narrow\": \"Q\"\n },\n GWE: {\n displayName: \"Portuguese Guinea Escudo\",\n \"displayName-count-one\": \"Portuguese Guinea escudo\",\n \"displayName-count-other\": \"Portuguese Guinea escudos\",\n symbol: \"GWE\"\n },\n GWP: {\n displayName: \"Guinea-Bissau Peso\",\n \"displayName-count-one\": \"Guinea-Bissau peso\",\n \"displayName-count-other\": \"Guinea-Bissau pesos\",\n symbol: \"GWP\"\n },\n GYD: {\n displayName: \"Guyanaese Dollar\",\n \"displayName-count-one\": \"Guyanaese dollar\",\n \"displayName-count-other\": \"Guyanaese dollars\",\n symbol: \"GYD\",\n \"symbol-alt-narrow\": \"$\"\n },\n HKD: {\n displayName: \"Hong Kong Dollar\",\n \"displayName-count-one\": \"Hong Kong dollar\",\n \"displayName-count-other\": \"Hong Kong dollars\",\n symbol: \"HK$\",\n \"symbol-alt-narrow\": \"$\"\n },\n HNL: {\n displayName: \"Honduran Lempira\",\n \"displayName-count-one\": \"Honduran lempira\",\n \"displayName-count-other\": \"Honduran lempiras\",\n symbol: \"HNL\",\n \"symbol-alt-narrow\": \"L\"\n },\n HRD: {\n displayName: \"Croatian Dinar\",\n \"displayName-count-one\": \"Croatian dinar\",\n \"displayName-count-other\": \"Croatian dinars\",\n symbol: \"HRD\"\n },\n HRK: {\n displayName: \"Croatian Kuna\",\n \"displayName-count-one\": \"Croatian kuna\",\n \"displayName-count-other\": \"Croatian kunas\",\n symbol: \"HRK\",\n \"symbol-alt-narrow\": \"kn\"\n },\n HTG: {\n displayName: \"Haitian Gourde\",\n \"displayName-count-one\": \"Haitian gourde\",\n \"displayName-count-other\": \"Haitian gourdes\",\n symbol: \"HTG\"\n },\n HUF: {\n displayName: \"Hungarian Forint\",\n \"displayName-count-one\": \"Hungarian forint\",\n \"displayName-count-other\": \"Hungarian forints\",\n symbol: \"HUF\",\n \"symbol-alt-narrow\": \"Ft\"\n },\n IDR: {\n displayName: \"Indonesian Rupiah\",\n \"displayName-count-one\": \"Indonesian rupiah\",\n \"displayName-count-other\": \"Indonesian rupiahs\",\n symbol: \"IDR\",\n \"symbol-alt-narrow\": \"Rp\"\n },\n IEP: {\n displayName: \"Irish Pound\",\n \"displayName-count-one\": \"Irish pound\",\n \"displayName-count-other\": \"Irish pounds\",\n symbol: \"IEP\"\n },\n ILP: {\n displayName: \"Israeli Pound\",\n \"displayName-count-one\": \"Israeli pound\",\n \"displayName-count-other\": \"Israeli pounds\",\n symbol: \"ILP\"\n },\n ILR: {\n displayName: \"Israeli Shekel (1980–1985)\",\n \"displayName-count-one\": \"Israeli shekel (1980–1985)\",\n \"displayName-count-other\": \"Israeli shekels (1980–1985)\",\n symbol: \"ILR\"\n },\n ILS: {\n displayName: \"Israeli New Shekel\",\n \"displayName-count-one\": \"Israeli new shekel\",\n \"displayName-count-other\": \"Israeli new shekels\",\n symbol: \"₪\",\n \"symbol-alt-narrow\": \"₪\"\n },\n INR: {\n displayName: \"Indian Rupee\",\n \"displayName-count-one\": \"Indian rupee\",\n \"displayName-count-other\": \"Indian rupees\",\n symbol: \"₹\",\n \"symbol-alt-narrow\": \"₹\"\n },\n IQD: {\n displayName: \"Iraqi Dinar\",\n \"displayName-count-one\": \"Iraqi dinar\",\n \"displayName-count-other\": \"Iraqi dinars\",\n symbol: \"IQD\"\n },\n IRR: {\n displayName: \"Iranian Rial\",\n \"displayName-count-one\": \"Iranian rial\",\n \"displayName-count-other\": \"Iranian rials\",\n symbol: \"IRR\"\n },\n ISJ: {\n displayName: \"Icelandic Króna (1918–1981)\",\n \"displayName-count-one\": \"Icelandic króna (1918–1981)\",\n \"displayName-count-other\": \"Icelandic krónur (1918–1981)\",\n symbol: \"ISJ\"\n },\n ISK: {\n displayName: \"Icelandic Króna\",\n \"displayName-count-one\": \"Icelandic króna\",\n \"displayName-count-other\": \"Icelandic krónur\",\n symbol: \"ISK\",\n \"symbol-alt-narrow\": \"kr\"\n },\n ITL: {\n displayName: \"Italian Lira\",\n \"displayName-count-one\": \"Italian lira\",\n \"displayName-count-other\": \"Italian liras\",\n symbol: \"ITL\"\n },\n JMD: {\n displayName: \"Jamaican Dollar\",\n \"displayName-count-one\": \"Jamaican dollar\",\n \"displayName-count-other\": \"Jamaican dollars\",\n symbol: \"JMD\",\n \"symbol-alt-narrow\": \"$\"\n },\n JOD: {\n displayName: \"Jordanian Dinar\",\n \"displayName-count-one\": \"Jordanian dinar\",\n \"displayName-count-other\": \"Jordanian dinars\",\n symbol: \"JOD\"\n },\n JPY: {\n displayName: \"Japanese Yen\",\n \"displayName-count-one\": \"Japanese yen\",\n \"displayName-count-other\": \"Japanese yen\",\n symbol: \"¥\",\n \"symbol-alt-narrow\": \"¥\"\n },\n KES: {\n displayName: \"Kenyan Shilling\",\n \"displayName-count-one\": \"Kenyan shilling\",\n \"displayName-count-other\": \"Kenyan shillings\",\n symbol: \"KES\"\n },\n KGS: {\n displayName: \"Kyrgystani Som\",\n \"displayName-count-one\": \"Kyrgystani som\",\n \"displayName-count-other\": \"Kyrgystani soms\",\n symbol: \"KGS\"\n },\n KHR: {\n displayName: \"Cambodian Riel\",\n \"displayName-count-one\": \"Cambodian riel\",\n \"displayName-count-other\": \"Cambodian riels\",\n symbol: \"KHR\",\n \"symbol-alt-narrow\": \"៛\"\n },\n KMF: {\n displayName: \"Comorian Franc\",\n \"displayName-count-one\": \"Comorian franc\",\n \"displayName-count-other\": \"Comorian francs\",\n symbol: \"KMF\",\n \"symbol-alt-narrow\": \"CF\"\n },\n KPW: {\n displayName: \"North Korean Won\",\n \"displayName-count-one\": \"North Korean won\",\n \"displayName-count-other\": \"North Korean won\",\n symbol: \"KPW\",\n \"symbol-alt-narrow\": \"₩\"\n },\n KRH: {\n displayName: \"South Korean Hwan (1953–1962)\",\n \"displayName-count-one\": \"South Korean hwan (1953–1962)\",\n \"displayName-count-other\": \"South Korean hwan (1953–1962)\",\n symbol: \"KRH\"\n },\n KRO: {\n displayName: \"South Korean Won (1945–1953)\",\n \"displayName-count-one\": \"South Korean won (1945–1953)\",\n \"displayName-count-other\": \"South Korean won (1945–1953)\",\n symbol: \"KRO\"\n },\n KRW: {\n displayName: \"South Korean Won\",\n \"displayName-count-one\": \"South Korean won\",\n \"displayName-count-other\": \"South Korean won\",\n symbol: \"₩\",\n \"symbol-alt-narrow\": \"₩\"\n },\n KWD: {\n displayName: \"Kuwaiti Dinar\",\n \"displayName-count-one\": \"Kuwaiti dinar\",\n \"displayName-count-other\": \"Kuwaiti dinars\",\n symbol: \"KWD\"\n },\n KYD: {\n displayName: \"Cayman Islands Dollar\",\n \"displayName-count-one\": \"Cayman Islands dollar\",\n \"displayName-count-other\": \"Cayman Islands dollars\",\n symbol: \"KYD\",\n \"symbol-alt-narrow\": \"$\"\n },\n KZT: {\n displayName: \"Kazakhstani Tenge\",\n \"displayName-count-one\": \"Kazakhstani tenge\",\n \"displayName-count-other\": \"Kazakhstani tenges\",\n symbol: \"KZT\",\n \"symbol-alt-narrow\": \"₸\"\n },\n LAK: {\n displayName: \"Laotian Kip\",\n \"displayName-count-one\": \"Laotian kip\",\n \"displayName-count-other\": \"Laotian kips\",\n symbol: \"LAK\",\n \"symbol-alt-narrow\": \"₭\"\n },\n LBP: {\n displayName: \"Lebanese Pound\",\n \"displayName-count-one\": \"Lebanese pound\",\n \"displayName-count-other\": \"Lebanese pounds\",\n symbol: \"LBP\",\n \"symbol-alt-narrow\": \"L£\"\n },\n LKR: {\n displayName: \"Sri Lankan Rupee\",\n \"displayName-count-one\": \"Sri Lankan rupee\",\n \"displayName-count-other\": \"Sri Lankan rupees\",\n symbol: \"LKR\",\n \"symbol-alt-narrow\": \"Rs\"\n },\n LRD: {\n displayName: \"Liberian Dollar\",\n \"displayName-count-one\": \"Liberian dollar\",\n \"displayName-count-other\": \"Liberian dollars\",\n symbol: \"LRD\",\n \"symbol-alt-narrow\": \"$\"\n },\n LSL: {\n displayName: \"Lesotho Loti\",\n \"displayName-count-one\": \"Lesotho loti\",\n \"displayName-count-other\": \"Lesotho lotis\",\n symbol: \"LSL\"\n },\n LTL: {\n displayName: \"Lithuanian Litas\",\n \"displayName-count-one\": \"Lithuanian litas\",\n \"displayName-count-other\": \"Lithuanian litai\",\n symbol: \"LTL\",\n \"symbol-alt-narrow\": \"Lt\"\n },\n LTT: {\n displayName: \"Lithuanian Talonas\",\n \"displayName-count-one\": \"Lithuanian talonas\",\n \"displayName-count-other\": \"Lithuanian talonases\",\n symbol: \"LTT\"\n },\n LUC: {\n displayName: \"Luxembourgian Convertible Franc\",\n \"displayName-count-one\": \"Luxembourgian convertible franc\",\n \"displayName-count-other\": \"Luxembourgian convertible francs\",\n symbol: \"LUC\"\n },\n LUF: {\n displayName: \"Luxembourgian Franc\",\n \"displayName-count-one\": \"Luxembourgian franc\",\n \"displayName-count-other\": \"Luxembourgian francs\",\n symbol: \"LUF\"\n },\n LUL: {\n displayName: \"Luxembourg Financial Franc\",\n \"displayName-count-one\": \"Luxembourg financial franc\",\n \"displayName-count-other\": \"Luxembourg financial francs\",\n symbol: \"LUL\"\n },\n LVL: {\n displayName: \"Latvian Lats\",\n \"displayName-count-one\": \"Latvian lats\",\n \"displayName-count-other\": \"Latvian lati\",\n symbol: \"LVL\",\n \"symbol-alt-narrow\": \"Ls\"\n },\n LVR: {\n displayName: \"Latvian Ruble\",\n \"displayName-count-one\": \"Latvian ruble\",\n \"displayName-count-other\": \"Latvian rubles\",\n symbol: \"LVR\"\n },\n LYD: {\n displayName: \"Libyan Dinar\",\n \"displayName-count-one\": \"Libyan dinar\",\n \"displayName-count-other\": \"Libyan dinars\",\n symbol: \"LYD\"\n },\n MAD: {\n displayName: \"Moroccan Dirham\",\n \"displayName-count-one\": \"Moroccan dirham\",\n \"displayName-count-other\": \"Moroccan dirhams\",\n symbol: \"MAD\"\n },\n MAF: {\n displayName: \"Moroccan Franc\",\n \"displayName-count-one\": \"Moroccan franc\",\n \"displayName-count-other\": \"Moroccan francs\",\n symbol: \"MAF\"\n },\n MCF: {\n displayName: \"Monegasque Franc\",\n \"displayName-count-one\": \"Monegasque franc\",\n \"displayName-count-other\": \"Monegasque francs\",\n symbol: \"MCF\"\n },\n MDC: {\n displayName: \"Moldovan Cupon\",\n \"displayName-count-one\": \"Moldovan cupon\",\n \"displayName-count-other\": \"Moldovan cupon\",\n symbol: \"MDC\"\n },\n MDL: {\n displayName: \"Moldovan Leu\",\n \"displayName-count-one\": \"Moldovan leu\",\n \"displayName-count-other\": \"Moldovan lei\",\n symbol: \"MDL\"\n },\n MGA: {\n displayName: \"Malagasy Ariary\",\n \"displayName-count-one\": \"Malagasy ariary\",\n \"displayName-count-other\": \"Malagasy ariaries\",\n symbol: \"MGA\",\n \"symbol-alt-narrow\": \"Ar\"\n },\n MGF: {\n displayName: \"Malagasy Franc\",\n \"displayName-count-one\": \"Malagasy franc\",\n \"displayName-count-other\": \"Malagasy francs\",\n symbol: \"MGF\"\n },\n MKD: {\n displayName: \"Macedonian Denar\",\n \"displayName-count-one\": \"Macedonian denar\",\n \"displayName-count-other\": \"Macedonian denari\",\n symbol: \"MKD\"\n },\n MKN: {\n displayName: \"Macedonian Denar (1992–1993)\",\n \"displayName-count-one\": \"Macedonian denar (1992–1993)\",\n \"displayName-count-other\": \"Macedonian denari (1992–1993)\",\n symbol: \"MKN\"\n },\n MLF: {\n displayName: \"Malian Franc\",\n \"displayName-count-one\": \"Malian franc\",\n \"displayName-count-other\": \"Malian francs\",\n symbol: \"MLF\"\n },\n MMK: {\n displayName: \"Myanmar Kyat\",\n \"displayName-count-one\": \"Myanmar kyat\",\n \"displayName-count-other\": \"Myanmar kyats\",\n symbol: \"MMK\",\n \"symbol-alt-narrow\": \"K\"\n },\n MNT: {\n displayName: \"Mongolian Tugrik\",\n \"displayName-count-one\": \"Mongolian tugrik\",\n \"displayName-count-other\": \"Mongolian tugriks\",\n symbol: \"MNT\",\n \"symbol-alt-narrow\": \"₮\"\n },\n MOP: {\n displayName: \"Macanese Pataca\",\n \"displayName-count-one\": \"Macanese pataca\",\n \"displayName-count-other\": \"Macanese patacas\",\n symbol: \"MOP\"\n },\n MRO: {\n displayName: \"Mauritanian Ouguiya (1973–2017)\",\n \"displayName-count-one\": \"Mauritanian ouguiya (1973–2017)\",\n \"displayName-count-other\": \"Mauritanian ouguiyas (1973–2017)\",\n symbol: \"MRO\"\n },\n MRU: {\n displayName: \"Mauritanian Ouguiya\",\n \"displayName-count-one\": \"Mauritanian ouguiya\",\n \"displayName-count-other\": \"Mauritanian ouguiyas\",\n symbol: \"MRU\"\n },\n MTL: {\n displayName: \"Maltese Lira\",\n \"displayName-count-one\": \"Maltese lira\",\n \"displayName-count-other\": \"Maltese lira\",\n symbol: \"MTL\"\n },\n MTP: {\n displayName: \"Maltese Pound\",\n \"displayName-count-one\": \"Maltese pound\",\n \"displayName-count-other\": \"Maltese pounds\",\n symbol: \"MTP\"\n },\n MUR: {\n displayName: \"Mauritian Rupee\",\n \"displayName-count-one\": \"Mauritian rupee\",\n \"displayName-count-other\": \"Mauritian rupees\",\n symbol: \"MUR\",\n \"symbol-alt-narrow\": \"Rs\"\n },\n MVP: {\n displayName: \"Maldivian Rupee (1947–1981)\",\n \"displayName-count-one\": \"Maldivian rupee (1947–1981)\",\n \"displayName-count-other\": \"Maldivian rupees (1947–1981)\",\n symbol: \"MVP\"\n },\n MVR: {\n displayName: \"Maldivian Rufiyaa\",\n \"displayName-count-one\": \"Maldivian rufiyaa\",\n \"displayName-count-other\": \"Maldivian rufiyaas\",\n symbol: \"MVR\"\n },\n MWK: {\n displayName: \"Malawian Kwacha\",\n \"displayName-count-one\": \"Malawian kwacha\",\n \"displayName-count-other\": \"Malawian kwachas\",\n symbol: \"MWK\"\n },\n MXN: {\n displayName: \"Mexican Peso\",\n \"displayName-count-one\": \"Mexican peso\",\n \"displayName-count-other\": \"Mexican pesos\",\n symbol: \"MX$\",\n \"symbol-alt-narrow\": \"$\"\n },\n MXP: {\n displayName: \"Mexican Silver Peso (1861–1992)\",\n \"displayName-count-one\": \"Mexican silver peso (1861–1992)\",\n \"displayName-count-other\": \"Mexican silver pesos (1861–1992)\",\n symbol: \"MXP\"\n },\n MXV: {\n displayName: \"Mexican Investment Unit\",\n \"displayName-count-one\": \"Mexican investment unit\",\n \"displayName-count-other\": \"Mexican investment units\",\n symbol: \"MXV\"\n },\n MYR: {\n displayName: \"Malaysian Ringgit\",\n \"displayName-count-one\": \"Malaysian ringgit\",\n \"displayName-count-other\": \"Malaysian ringgits\",\n symbol: \"MYR\",\n \"symbol-alt-narrow\": \"RM\"\n },\n MZE: {\n displayName: \"Mozambican Escudo\",\n \"displayName-count-one\": \"Mozambican escudo\",\n \"displayName-count-other\": \"Mozambican escudos\",\n symbol: \"MZE\"\n },\n MZM: {\n displayName: \"Mozambican Metical (1980–2006)\",\n \"displayName-count-one\": \"Mozambican metical (1980–2006)\",\n \"displayName-count-other\": \"Mozambican meticals (1980–2006)\",\n symbol: \"MZM\"\n },\n MZN: {\n displayName: \"Mozambican Metical\",\n \"displayName-count-one\": \"Mozambican metical\",\n \"displayName-count-other\": \"Mozambican meticals\",\n symbol: \"MZN\"\n },\n NAD: {\n displayName: \"Namibian Dollar\",\n \"displayName-count-one\": \"Namibian dollar\",\n \"displayName-count-other\": \"Namibian dollars\",\n symbol: \"NAD\",\n \"symbol-alt-narrow\": \"$\"\n },\n NGN: {\n displayName: \"Nigerian Naira\",\n \"displayName-count-one\": \"Nigerian naira\",\n \"displayName-count-other\": \"Nigerian nairas\",\n symbol: \"NGN\",\n \"symbol-alt-narrow\": \"₦\"\n },\n NIC: {\n displayName: \"Nicaraguan Córdoba (1988–1991)\",\n \"displayName-count-one\": \"Nicaraguan córdoba (1988–1991)\",\n \"displayName-count-other\": \"Nicaraguan córdobas (1988–1991)\",\n symbol: \"NIC\"\n },\n NIO: {\n displayName: \"Nicaraguan Córdoba\",\n \"displayName-count-one\": \"Nicaraguan córdoba\",\n \"displayName-count-other\": \"Nicaraguan córdobas\",\n symbol: \"NIO\",\n \"symbol-alt-narrow\": \"C$\"\n },\n NLG: {\n displayName: \"Dutch Guilder\",\n \"displayName-count-one\": \"Dutch guilder\",\n \"displayName-count-other\": \"Dutch guilders\",\n symbol: \"NLG\"\n },\n NOK: {\n displayName: \"Norwegian Krone\",\n \"displayName-count-one\": \"Norwegian krone\",\n \"displayName-count-other\": \"Norwegian kroner\",\n symbol: \"NOK\",\n \"symbol-alt-narrow\": \"kr\"\n },\n NPR: {\n displayName: \"Nepalese Rupee\",\n \"displayName-count-one\": \"Nepalese rupee\",\n \"displayName-count-other\": \"Nepalese rupees\",\n symbol: \"NPR\",\n \"symbol-alt-narrow\": \"Rs\"\n },\n NZD: {\n displayName: \"New Zealand Dollar\",\n \"displayName-count-one\": \"New Zealand dollar\",\n \"displayName-count-other\": \"New Zealand dollars\",\n symbol: \"NZ$\",\n \"symbol-alt-narrow\": \"$\"\n },\n OMR: {\n displayName: \"Omani Rial\",\n \"displayName-count-one\": \"Omani rial\",\n \"displayName-count-other\": \"Omani rials\",\n symbol: \"OMR\"\n },\n PAB: {\n displayName: \"Panamanian Balboa\",\n \"displayName-count-one\": \"Panamanian balboa\",\n \"displayName-count-other\": \"Panamanian balboas\",\n symbol: \"PAB\"\n },\n PEI: {\n displayName: \"Peruvian Inti\",\n \"displayName-count-one\": \"Peruvian inti\",\n \"displayName-count-other\": \"Peruvian intis\",\n symbol: \"PEI\"\n },\n PEN: {\n displayName: \"Peruvian Sol\",\n \"displayName-count-one\": \"Peruvian sol\",\n \"displayName-count-other\": \"Peruvian soles\",\n symbol: \"PEN\"\n },\n PES: {\n displayName: \"Peruvian Sol (1863–1965)\",\n \"displayName-count-one\": \"Peruvian sol (1863–1965)\",\n \"displayName-count-other\": \"Peruvian soles (1863–1965)\",\n symbol: \"PES\"\n },\n PGK: {\n displayName: \"Papua New Guinean Kina\",\n \"displayName-count-one\": \"Papua New Guinean kina\",\n \"displayName-count-other\": \"Papua New Guinean kina\",\n symbol: \"PGK\"\n },\n PHP: {\n displayName: \"Philippine Peso\",\n \"displayName-count-one\": \"Philippine peso\",\n \"displayName-count-other\": \"Philippine pesos\",\n symbol: \"₱\",\n \"symbol-alt-narrow\": \"₱\"\n },\n PKR: {\n displayName: \"Pakistani Rupee\",\n \"displayName-count-one\": \"Pakistani rupee\",\n \"displayName-count-other\": \"Pakistani rupees\",\n symbol: \"PKR\",\n \"symbol-alt-narrow\": \"Rs\"\n },\n PLN: {\n displayName: \"Polish Zloty\",\n \"displayName-count-one\": \"Polish zloty\",\n \"displayName-count-other\": \"Polish zlotys\",\n symbol: \"PLN\",\n \"symbol-alt-narrow\": \"zł\"\n },\n PLZ: {\n displayName: \"Polish Zloty (1950–1995)\",\n \"displayName-count-one\": \"Polish zloty (PLZ)\",\n \"displayName-count-other\": \"Polish zlotys (PLZ)\",\n symbol: \"PLZ\"\n },\n PTE: {\n displayName: \"Portuguese Escudo\",\n \"displayName-count-one\": \"Portuguese escudo\",\n \"displayName-count-other\": \"Portuguese escudos\",\n symbol: \"PTE\"\n },\n PYG: {\n displayName: \"Paraguayan Guarani\",\n \"displayName-count-one\": \"Paraguayan guarani\",\n \"displayName-count-other\": \"Paraguayan guaranis\",\n symbol: \"PYG\",\n \"symbol-alt-narrow\": \"₲\"\n },\n QAR: {\n displayName: \"Qatari Rial\",\n \"displayName-count-one\": \"Qatari rial\",\n \"displayName-count-other\": \"Qatari rials\",\n symbol: \"QAR\"\n },\n RHD: {\n displayName: \"Rhodesian Dollar\",\n \"displayName-count-one\": \"Rhodesian dollar\",\n \"displayName-count-other\": \"Rhodesian dollars\",\n symbol: \"RHD\"\n },\n ROL: {\n displayName: \"Romanian Leu (1952–2006)\",\n \"displayName-count-one\": \"Romanian leu (1952–2006)\",\n \"displayName-count-other\": \"Romanian Lei (1952–2006)\",\n symbol: \"ROL\"\n },\n RON: {\n displayName: \"Romanian Leu\",\n \"displayName-count-one\": \"Romanian leu\",\n \"displayName-count-other\": \"Romanian lei\",\n symbol: \"RON\",\n \"symbol-alt-narrow\": \"lei\"\n },\n RSD: {\n displayName: \"Serbian Dinar\",\n \"displayName-count-one\": \"Serbian dinar\",\n \"displayName-count-other\": \"Serbian dinars\",\n symbol: \"RSD\"\n },\n RUB: {\n displayName: \"Russian Ruble\",\n \"displayName-count-one\": \"Russian ruble\",\n \"displayName-count-other\": \"Russian rubles\",\n symbol: \"RUB\",\n \"symbol-alt-narrow\": \"₽\"\n },\n RUR: {\n displayName: \"Russian Ruble (1991–1998)\",\n \"displayName-count-one\": \"Russian ruble (1991–1998)\",\n \"displayName-count-other\": \"Russian rubles (1991–1998)\",\n symbol: \"RUR\"\n },\n RWF: {\n displayName: \"Rwandan Franc\",\n \"displayName-count-one\": \"Rwandan franc\",\n \"displayName-count-other\": \"Rwandan francs\",\n symbol: \"RWF\",\n \"symbol-alt-narrow\": \"RF\"\n },\n SAR: {\n displayName: \"Saudi Riyal\",\n \"displayName-count-one\": \"Saudi riyal\",\n \"displayName-count-other\": \"Saudi riyals\",\n symbol: \"SAR\"\n },\n SBD: {\n displayName: \"Solomon Islands Dollar\",\n \"displayName-count-one\": \"Solomon Islands dollar\",\n \"displayName-count-other\": \"Solomon Islands dollars\",\n symbol: \"SBD\",\n \"symbol-alt-narrow\": \"$\"\n },\n SCR: {\n displayName: \"Seychellois Rupee\",\n \"displayName-count-one\": \"Seychellois rupee\",\n \"displayName-count-other\": \"Seychellois rupees\",\n symbol: \"SCR\"\n },\n SDD: {\n displayName: \"Sudanese Dinar (1992–2007)\",\n \"displayName-count-one\": \"Sudanese dinar (1992–2007)\",\n \"displayName-count-other\": \"Sudanese dinars (1992–2007)\",\n symbol: \"SDD\"\n },\n SDG: {\n displayName: \"Sudanese Pound\",\n \"displayName-count-one\": \"Sudanese pound\",\n \"displayName-count-other\": \"Sudanese pounds\",\n symbol: \"SDG\"\n },\n SDP: {\n displayName: \"Sudanese Pound (1957–1998)\",\n \"displayName-count-one\": \"Sudanese pound (1957–1998)\",\n \"displayName-count-other\": \"Sudanese pounds (1957–1998)\",\n symbol: \"SDP\"\n },\n SEK: {\n displayName: \"Swedish Krona\",\n \"displayName-count-one\": \"Swedish krona\",\n \"displayName-count-other\": \"Swedish kronor\",\n symbol: \"SEK\",\n \"symbol-alt-narrow\": \"kr\"\n },\n SGD: {\n displayName: \"Singapore Dollar\",\n \"displayName-count-one\": \"Singapore dollar\",\n \"displayName-count-other\": \"Singapore dollars\",\n symbol: \"SGD\",\n \"symbol-alt-narrow\": \"$\"\n },\n SHP: {\n displayName: \"St. Helena Pound\",\n \"displayName-count-one\": \"St. Helena pound\",\n \"displayName-count-other\": \"St. Helena pounds\",\n symbol: \"SHP\",\n \"symbol-alt-narrow\": \"£\"\n },\n SIT: {\n displayName: \"Slovenian Tolar\",\n \"displayName-count-one\": \"Slovenian tolar\",\n \"displayName-count-other\": \"Slovenian tolars\",\n symbol: \"SIT\"\n },\n SKK: {\n displayName: \"Slovak Koruna\",\n \"displayName-count-one\": \"Slovak koruna\",\n \"displayName-count-other\": \"Slovak korunas\",\n symbol: \"SKK\"\n },\n SLE: {\n displayName: \"Sierra Leonean New Leone\",\n \"displayName-count-one\": \"Sierra Leonean new leone\",\n \"displayName-count-other\": \"Sierra Leonean new leones\",\n symbol: \"SLE\"\n },\n SLL: {\n displayName: \"Sierra Leonean Leone\",\n \"displayName-count-one\": \"Sierra Leonean leone\",\n \"displayName-count-other\": \"Sierra Leonean leones\",\n symbol: \"SLL\"\n },\n SOS: {\n displayName: \"Somali Shilling\",\n \"displayName-count-one\": \"Somali shilling\",\n \"displayName-count-other\": \"Somali shillings\",\n symbol: \"SOS\"\n },\n SRD: {\n displayName: \"Surinamese Dollar\",\n \"displayName-count-one\": \"Surinamese dollar\",\n \"displayName-count-other\": \"Surinamese dollars\",\n symbol: \"SRD\",\n \"symbol-alt-narrow\": \"$\"\n },\n SRG: {\n displayName: \"Surinamese Guilder\",\n \"displayName-count-one\": \"Surinamese guilder\",\n \"displayName-count-other\": \"Surinamese guilders\",\n symbol: \"SRG\"\n },\n SSP: {\n displayName: \"South Sudanese Pound\",\n \"displayName-count-one\": \"South Sudanese pound\",\n \"displayName-count-other\": \"South Sudanese pounds\",\n symbol: \"SSP\",\n \"symbol-alt-narrow\": \"£\"\n },\n STD: {\n displayName: \"São Tomé & Príncipe Dobra (1977–2017)\",\n \"displayName-count-one\": \"São Tomé & Príncipe dobra (1977–2017)\",\n \"displayName-count-other\": \"São Tomé & Príncipe dobras (1977–2017)\",\n symbol: \"STD\"\n },\n STN: {\n displayName: \"São Tomé & Príncipe Dobra\",\n \"displayName-count-one\": \"São Tomé & Príncipe dobra\",\n \"displayName-count-other\": \"São Tomé & Príncipe dobras\",\n symbol: \"STN\",\n \"symbol-alt-narrow\": \"Db\"\n },\n SUR: {\n displayName: \"Soviet Rouble\",\n \"displayName-count-one\": \"Soviet rouble\",\n \"displayName-count-other\": \"Soviet roubles\",\n symbol: \"SUR\"\n },\n SVC: {\n displayName: \"Salvadoran Colón\",\n \"displayName-count-one\": \"Salvadoran colón\",\n \"displayName-count-other\": \"Salvadoran colones\",\n symbol: \"SVC\"\n },\n SYP: {\n displayName: \"Syrian Pound\",\n \"displayName-count-one\": \"Syrian pound\",\n \"displayName-count-other\": \"Syrian pounds\",\n symbol: \"SYP\",\n \"symbol-alt-narrow\": \"£\"\n },\n SZL: {\n displayName: \"Swazi Lilangeni\",\n \"displayName-count-one\": \"Swazi lilangeni\",\n \"displayName-count-other\": \"Swazi emalangeni\",\n symbol: \"SZL\"\n },\n THB: {\n displayName: \"Thai Baht\",\n \"displayName-count-one\": \"Thai baht\",\n \"displayName-count-other\": \"Thai baht\",\n symbol: \"THB\",\n \"symbol-alt-narrow\": \"฿\"\n },\n TJR: {\n displayName: \"Tajikistani Ruble\",\n \"displayName-count-one\": \"Tajikistani ruble\",\n \"displayName-count-other\": \"Tajikistani rubles\",\n symbol: \"TJR\"\n },\n TJS: {\n displayName: \"Tajikistani Somoni\",\n \"displayName-count-one\": \"Tajikistani somoni\",\n \"displayName-count-other\": \"Tajikistani somonis\",\n symbol: \"TJS\"\n },\n TMM: {\n displayName: \"Turkmenistani Manat (1993–2009)\",\n \"displayName-count-one\": \"Turkmenistani manat (1993–2009)\",\n \"displayName-count-other\": \"Turkmenistani manat (1993–2009)\",\n symbol: \"TMM\"\n },\n TMT: {\n displayName: \"Turkmenistani Manat\",\n \"displayName-count-one\": \"Turkmenistani manat\",\n \"displayName-count-other\": \"Turkmenistani manat\",\n symbol: \"TMT\"\n },\n TND: {\n displayName: \"Tunisian Dinar\",\n \"displayName-count-one\": \"Tunisian dinar\",\n \"displayName-count-other\": \"Tunisian dinars\",\n symbol: \"TND\"\n },\n TOP: {\n displayName: \"Tongan Paʻanga\",\n \"displayName-count-one\": \"Tongan paʻanga\",\n \"displayName-count-other\": \"Tongan paʻanga\",\n symbol: \"TOP\",\n \"symbol-alt-narrow\": \"T$\"\n },\n TPE: {\n displayName: \"Timorese Escudo\",\n \"displayName-count-one\": \"Timorese escudo\",\n \"displayName-count-other\": \"Timorese escudos\",\n symbol: \"TPE\"\n },\n TRL: {\n displayName: \"Turkish Lira (1922–2005)\",\n \"displayName-count-one\": \"Turkish lira (1922–2005)\",\n \"displayName-count-other\": \"Turkish Lira (1922–2005)\",\n symbol: \"TRL\"\n },\n TRY: {\n displayName: \"Turkish Lira\",\n \"displayName-count-one\": \"Turkish lira\",\n \"displayName-count-other\": \"Turkish Lira\",\n symbol: \"TRY\",\n \"symbol-alt-narrow\": \"₺\",\n \"symbol-alt-variant\": \"TL\"\n },\n TTD: {\n displayName: \"Trinidad & Tobago Dollar\",\n \"displayName-count-one\": \"Trinidad & Tobago dollar\",\n \"displayName-count-other\": \"Trinidad & Tobago dollars\",\n symbol: \"TTD\",\n \"symbol-alt-narrow\": \"$\"\n },\n TWD: {\n displayName: \"New Taiwan Dollar\",\n \"displayName-count-one\": \"New Taiwan dollar\",\n \"displayName-count-other\": \"New Taiwan dollars\",\n symbol: \"NT$\",\n \"symbol-alt-narrow\": \"$\"\n },\n TZS: {\n displayName: \"Tanzanian Shilling\",\n \"displayName-count-one\": \"Tanzanian shilling\",\n \"displayName-count-other\": \"Tanzanian shillings\",\n symbol: \"TZS\"\n },\n UAH: {\n displayName: \"Ukrainian Hryvnia\",\n \"displayName-count-one\": \"Ukrainian hryvnia\",\n \"displayName-count-other\": \"Ukrainian hryvnias\",\n symbol: \"UAH\",\n \"symbol-alt-narrow\": \"₴\"\n },\n UAK: {\n displayName: \"Ukrainian Karbovanets\",\n \"displayName-count-one\": \"Ukrainian karbovanets\",\n \"displayName-count-other\": \"Ukrainian karbovantsiv\",\n symbol: \"UAK\"\n },\n UGS: {\n displayName: \"Ugandan Shilling (1966–1987)\",\n \"displayName-count-one\": \"Ugandan shilling (1966–1987)\",\n \"displayName-count-other\": \"Ugandan shillings (1966–1987)\",\n symbol: \"UGS\"\n },\n UGX: {\n displayName: \"Ugandan Shilling\",\n \"displayName-count-one\": \"Ugandan shilling\",\n \"displayName-count-other\": \"Ugandan shillings\",\n symbol: \"UGX\"\n },\n USD: {\n displayName: \"US Dollar\",\n \"displayName-count-one\": \"US dollar\",\n \"displayName-count-other\": \"US dollars\",\n symbol: \"$\",\n \"symbol-alt-narrow\": \"$\"\n },\n USN: {\n displayName: \"US Dollar (Next day)\",\n \"displayName-count-one\": \"US dollar (next day)\",\n \"displayName-count-other\": \"US dollars (next day)\",\n symbol: \"USN\"\n },\n USS: {\n displayName: \"US Dollar (Same day)\",\n \"displayName-count-one\": \"US dollar (same day)\",\n \"displayName-count-other\": \"US dollars (same day)\",\n symbol: \"USS\"\n },\n UYI: {\n displayName: \"Uruguayan Peso (Indexed Units)\",\n \"displayName-count-one\": \"Uruguayan peso (indexed units)\",\n \"displayName-count-other\": \"Uruguayan pesos (indexed units)\",\n symbol: \"UYI\"\n },\n UYP: {\n displayName: \"Uruguayan Peso (1975–1993)\",\n \"displayName-count-one\": \"Uruguayan peso (1975–1993)\",\n \"displayName-count-other\": \"Uruguayan pesos (1975–1993)\",\n symbol: \"UYP\"\n },\n UYU: {\n displayName: \"Uruguayan Peso\",\n \"displayName-count-one\": \"Uruguayan peso\",\n \"displayName-count-other\": \"Uruguayan pesos\",\n symbol: \"UYU\",\n \"symbol-alt-narrow\": \"$\"\n },\n UYW: {\n displayName: \"Uruguayan Nominal Wage Index Unit\",\n \"displayName-count-one\": \"Uruguayan nominal wage index unit\",\n \"displayName-count-other\": \"Uruguayan nominal wage index units\",\n symbol: \"UYW\"\n },\n UZS: {\n displayName: \"Uzbekistani Som\",\n \"displayName-count-one\": \"Uzbekistani som\",\n \"displayName-count-other\": \"Uzbekistani som\",\n symbol: \"UZS\"\n },\n VEB: {\n displayName: \"Venezuelan Bolívar (1871–2008)\",\n \"displayName-count-one\": \"Venezuelan bolívar (1871–2008)\",\n \"displayName-count-other\": \"Venezuelan bolívars (1871–2008)\",\n symbol: \"VEB\"\n },\n VED: {\n displayName: \"Bolívar Soberano\",\n \"displayName-count-one\": \"Bolívar Soberano\",\n \"displayName-count-other\": \"Bolívar Soberanos\",\n symbol: \"VED\"\n },\n VEF: {\n displayName: \"Venezuelan Bolívar (2008–2018)\",\n \"displayName-count-one\": \"Venezuelan bolívar (2008–2018)\",\n \"displayName-count-other\": \"Venezuelan bolívars (2008–2018)\",\n symbol: \"VEF\",\n \"symbol-alt-narrow\": \"Bs\"\n },\n VES: {\n displayName: \"Venezuelan Bolívar\",\n \"displayName-count-one\": \"Venezuelan bolívar\",\n \"displayName-count-other\": \"Venezuelan bolívars\",\n symbol: \"VES\"\n },\n VND: {\n displayName: \"Vietnamese Dong\",\n \"displayName-count-one\": \"Vietnamese dong\",\n \"displayName-count-other\": \"Vietnamese dong\",\n symbol: \"₫\",\n \"symbol-alt-narrow\": \"₫\"\n },\n VNN: {\n displayName: \"Vietnamese Dong (1978–1985)\",\n \"displayName-count-one\": \"Vietnamese dong (1978–1985)\",\n \"displayName-count-other\": \"Vietnamese dong (1978–1985)\",\n symbol: \"VNN\"\n },\n VUV: {\n displayName: \"Vanuatu Vatu\",\n \"displayName-count-one\": \"Vanuatu vatu\",\n \"displayName-count-other\": \"Vanuatu vatus\",\n symbol: \"VUV\"\n },\n WST: {\n displayName: \"Samoan Tala\",\n \"displayName-count-one\": \"Samoan tala\",\n \"displayName-count-other\": \"Samoan tala\",\n symbol: \"WST\"\n },\n XAF: {\n displayName: \"Central African CFA Franc\",\n \"displayName-count-one\": \"Central African CFA franc\",\n \"displayName-count-other\": \"Central African CFA francs\",\n symbol: \"FCFA\"\n },\n XAG: {\n displayName: \"Silver\",\n \"displayName-count-one\": \"troy ounce of silver\",\n \"displayName-count-other\": \"troy ounces of silver\",\n symbol: \"XAG\"\n },\n XAU: {\n displayName: \"Gold\",\n \"displayName-count-one\": \"troy ounce of gold\",\n \"displayName-count-other\": \"troy ounces of gold\",\n symbol: \"XAU\"\n },\n XBA: {\n displayName: \"European Composite Unit\",\n \"displayName-count-one\": \"European composite unit\",\n \"displayName-count-other\": \"European composite units\",\n symbol: \"XBA\"\n },\n XBB: {\n displayName: \"European Monetary Unit\",\n \"displayName-count-one\": \"European monetary unit\",\n \"displayName-count-other\": \"European monetary units\",\n symbol: \"XBB\"\n },\n XBC: {\n displayName: \"European Unit of Account (XBC)\",\n \"displayName-count-one\": \"European unit of account (XBC)\",\n \"displayName-count-other\": \"European units of account (XBC)\",\n symbol: \"XBC\"\n },\n XBD: {\n displayName: \"European Unit of Account (XBD)\",\n \"displayName-count-one\": \"European unit of account (XBD)\",\n \"displayName-count-other\": \"European units of account (XBD)\",\n symbol: \"XBD\"\n },\n XCD: {\n displayName: \"East Caribbean Dollar\",\n \"displayName-count-one\": \"East Caribbean dollar\",\n \"displayName-count-other\": \"East Caribbean dollars\",\n symbol: \"EC$\",\n \"symbol-alt-narrow\": \"$\"\n },\n XDR: {\n displayName: \"Special Drawing Rights\",\n \"displayName-count-one\": \"special drawing rights\",\n \"displayName-count-other\": \"special drawing rights\",\n symbol: \"XDR\"\n },\n XEU: {\n displayName: \"European Currency Unit\",\n \"displayName-count-one\": \"European currency unit\",\n \"displayName-count-other\": \"European currency units\",\n symbol: \"XEU\"\n },\n XFO: {\n displayName: \"French Gold Franc\",\n \"displayName-count-one\": \"French gold franc\",\n \"displayName-count-other\": \"French gold francs\",\n symbol: \"XFO\"\n },\n XFU: {\n displayName: \"French UIC-Franc\",\n \"displayName-count-one\": \"French UIC-franc\",\n \"displayName-count-other\": \"French UIC-francs\",\n symbol: \"XFU\"\n },\n XOF: {\n displayName: \"West African CFA Franc\",\n \"displayName-count-one\": \"West African CFA franc\",\n \"displayName-count-other\": \"West African CFA francs\",\n symbol: \"F CFA\"\n },\n XPD: {\n displayName: \"Palladium\",\n \"displayName-count-one\": \"troy ounce of palladium\",\n \"displayName-count-other\": \"troy ounces of palladium\",\n symbol: \"XPD\"\n },\n XPF: {\n displayName: \"CFP Franc\",\n \"displayName-count-one\": \"CFP franc\",\n \"displayName-count-other\": \"CFP francs\",\n symbol: \"CFPF\"\n },\n XPT: {\n displayName: \"Platinum\",\n \"displayName-count-one\": \"troy ounce of platinum\",\n \"displayName-count-other\": \"troy ounces of platinum\",\n symbol: \"XPT\"\n },\n XRE: {\n displayName: \"RINET Funds\",\n \"displayName-count-one\": \"RINET Funds unit\",\n \"displayName-count-other\": \"RINET Funds units\",\n symbol: \"XRE\"\n },\n XSU: {\n displayName: \"Sucre\",\n \"displayName-count-one\": \"Sucre\",\n \"displayName-count-other\": \"Sucres\",\n symbol: \"XSU\"\n },\n XTS: {\n displayName: \"Testing Currency Code\",\n \"displayName-count-one\": \"Testing Currency unit\",\n \"displayName-count-other\": \"Testing Currency units\",\n symbol: \"XTS\"\n },\n XUA: {\n displayName: \"ADB Unit of Account\",\n \"displayName-count-one\": \"ADB unit of account\",\n \"displayName-count-other\": \"ADB units of account\",\n symbol: \"XUA\"\n },\n XXX: {\n displayName: \"Unknown Currency\",\n \"displayName-count-one\": \"(unknown unit of currency)\",\n \"displayName-count-other\": \"(unknown currency)\",\n symbol: \"¤\"\n },\n YDD: {\n displayName: \"Yemeni Dinar\",\n \"displayName-count-one\": \"Yemeni dinar\",\n \"displayName-count-other\": \"Yemeni dinars\",\n symbol: \"YDD\"\n },\n YER: {\n displayName: \"Yemeni Rial\",\n \"displayName-count-one\": \"Yemeni rial\",\n \"displayName-count-other\": \"Yemeni rials\",\n symbol: \"YER\"\n },\n YUD: {\n displayName: \"Yugoslavian Hard Dinar (1966–1990)\",\n \"displayName-count-one\": \"Yugoslavian hard dinar (1966–1990)\",\n \"displayName-count-other\": \"Yugoslavian hard dinars (1966–1990)\",\n symbol: \"YUD\"\n },\n YUM: {\n displayName: \"Yugoslavian New Dinar (1994–2002)\",\n \"displayName-count-one\": \"Yugoslavian new dinar (1994–2002)\",\n \"displayName-count-other\": \"Yugoslavian new dinars (1994–2002)\",\n symbol: \"YUM\"\n },\n YUN: {\n displayName: \"Yugoslavian Convertible Dinar (1990–1992)\",\n \"displayName-count-one\": \"Yugoslavian convertible dinar (1990–1992)\",\n \"displayName-count-other\": \"Yugoslavian convertible dinars (1990–1992)\",\n symbol: \"YUN\"\n },\n YUR: {\n displayName: \"Yugoslavian Reformed Dinar (1992–1993)\",\n \"displayName-count-one\": \"Yugoslavian reformed dinar (1992–1993)\",\n \"displayName-count-other\": \"Yugoslavian reformed dinars (1992–1993)\",\n symbol: \"YUR\"\n },\n ZAL: {\n displayName: \"South African Rand (financial)\",\n \"displayName-count-one\": \"South African rand (financial)\",\n \"displayName-count-other\": \"South African rands (financial)\",\n symbol: \"ZAL\"\n },\n ZAR: {\n displayName: \"South African Rand\",\n \"displayName-count-one\": \"South African rand\",\n \"displayName-count-other\": \"South African rand\",\n symbol: \"ZAR\",\n \"symbol-alt-narrow\": \"R\"\n },\n ZMK: {\n displayName: \"Zambian Kwacha (1968–2012)\",\n \"displayName-count-one\": \"Zambian kwacha (1968–2012)\",\n \"displayName-count-other\": \"Zambian kwachas (1968–2012)\",\n symbol: \"ZMK\"\n },\n ZMW: {\n displayName: \"Zambian Kwacha\",\n \"displayName-count-one\": \"Zambian kwacha\",\n \"displayName-count-other\": \"Zambian kwachas\",\n symbol: \"ZMW\",\n \"symbol-alt-narrow\": \"ZK\"\n },\n ZRN: {\n displayName: \"Zairean New Zaire (1993–1998)\",\n \"displayName-count-one\": \"Zairean new zaire (1993–1998)\",\n \"displayName-count-other\": \"Zairean new zaires (1993–1998)\",\n symbol: \"ZRN\"\n },\n ZRZ: {\n displayName: \"Zairean Zaire (1971–1993)\",\n \"displayName-count-one\": \"Zairean zaire (1971–1993)\",\n \"displayName-count-other\": \"Zairean zaires (1971–1993)\",\n symbol: \"ZRZ\"\n },\n ZWD: {\n displayName: \"Zimbabwean Dollar (1980–2008)\",\n \"displayName-count-one\": \"Zimbabwean dollar (1980–2008)\",\n \"displayName-count-other\": \"Zimbabwean dollars (1980–2008)\",\n symbol: \"ZWD\"\n },\n ZWL: {\n displayName: \"Zimbabwean Dollar (2009)\",\n \"displayName-count-one\": \"Zimbabwean dollar (2009)\",\n \"displayName-count-other\": \"Zimbabwean dollars (2009)\",\n symbol: \"ZWL\"\n },\n ZWR: {\n displayName: \"Zimbabwean Dollar (2008)\",\n \"displayName-count-one\": \"Zimbabwean dollar (2008)\",\n \"displayName-count-other\": \"Zimbabwean dollars (2008)\",\n symbol: \"ZWR\"\n }\n },\n localeCurrency: \"USD\",\n accounting: {\n patterns: [\"$n\", \"($n)\"],\n groupSize: [3]\n }\n },\n calendar: {\n gmtFormat: \"GMT{0}\",\n gmtZeroFormat: \"GMT\",\n patterns: {\n d: \"M/d/y\",\n D: \"EEEE, MMMM d, y\",\n m: \"MMM d\",\n M: \"MMMM d\",\n y: \"MMM y\",\n Y: \"MMMM y\",\n F: \"EEEE, MMMM d, y h:mm:ss a\",\n g: \"M/d/y h:mm a\",\n G: \"M/d/y h:mm:ss a\",\n t: \"h:mm a\",\n T: \"h:mm:ss a\",\n s: \"yyyy'-'MM'-'dd'T'HH':'mm':'ss\",\n u: \"yyyy'-'MM'-'dd HH':'mm':'ss'Z'\"\n },\n dateTimeFormats: {\n full: \"{1} 'at' {0}\",\n long: \"{1} 'at' {0}\",\n medium: \"{1}, {0}\",\n short: \"{1}, {0}\",\n availableFormats: {\n Bh: \"h B\",\n Bhm: \"h:mm B\",\n Bhms: \"h:mm:ss B\",\n d: \"d\",\n E: \"ccc\",\n EBhm: \"E h:mm B\",\n EBhms: \"E h:mm:ss B\",\n Ed: \"d E\",\n Ehm: \"E h:mm a\",\n EHm: \"E HH:mm\",\n Ehms: \"E h:mm:ss a\",\n EHms: \"E HH:mm:ss\",\n Gy: \"y G\",\n GyMd: \"M/d/y GGGGG\",\n GyMMM: \"MMM y G\",\n GyMMMd: \"MMM d, y G\",\n GyMMMEd: \"E, MMM d, y G\",\n h: \"h a\",\n H: \"HH\",\n hm: \"h:mm a\",\n Hm: \"HH:mm\",\n hms: \"h:mm:ss a\",\n Hms: \"HH:mm:ss\",\n hmsv: \"h:mm:ss a v\",\n Hmsv: \"HH:mm:ss v\",\n hmv: \"h:mm a v\",\n Hmv: \"HH:mm v\",\n M: \"L\",\n Md: \"M/d\",\n MEd: \"E, M/d\",\n MMM: \"LLL\",\n MMMd: \"MMM d\",\n MMMEd: \"E, MMM d\",\n MMMMd: \"MMMM d\",\n \"MMMMW-count-one\": \"'week' W 'of' MMMM\",\n \"MMMMW-count-other\": \"'week' W 'of' MMMM\",\n ms: \"mm:ss\",\n y: \"y\",\n yM: \"M/y\",\n yMd: \"M/d/y\",\n yMEd: \"E, M/d/y\",\n yMMM: \"MMM y\",\n yMMMd: \"MMM d, y\",\n yMMMEd: \"E, MMM d, y\",\n yMMMM: \"MMMM y\",\n yQQQ: \"QQQ y\",\n yQQQQ: \"QQQQ y\",\n \"yw-count-one\": \"'week' w 'of' Y\",\n \"yw-count-other\": \"'week' w 'of' Y\"\n }\n },\n timeFormats: {\n full: \"h:mm:ss a zzzz\",\n long: \"h:mm:ss a z\",\n medium: \"h:mm:ss a\",\n short: \"h:mm a\"\n },\n dateFormats: {\n full: \"EEEE, MMMM d, y\",\n long: \"MMMM d, y\",\n medium: \"MMM d, y\",\n short: \"M/d/yy\"\n },\n days: {\n format: {\n abbreviated: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n narrow: [\"S\", \"M\", \"T\", \"W\", \"T\", \"F\", \"S\"],\n short: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n wide: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"]\n },\n \"stand-alone\": {\n abbreviated: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n narrow: [\"S\", \"M\", \"T\", \"W\", \"T\", \"F\", \"S\"],\n short: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n wide: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"]\n }\n },\n months: {\n format: {\n abbreviated: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n narrow: [\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"],\n wide: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"]\n },\n \"stand-alone\": {\n abbreviated: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n narrow: [\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"],\n wide: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"]\n }\n },\n quarters: {\n format: {\n abbreviated: [\"Q1\", \"Q2\", \"Q3\", \"Q4\"],\n narrow: [\"1\", \"2\", \"3\", \"4\"],\n wide: [\"1st quarter\", \"2nd quarter\", \"3rd quarter\", \"4th quarter\"]\n },\n \"stand-alone\": {\n abbreviated: [\"Q1\", \"Q2\", \"Q3\", \"Q4\"],\n narrow: [\"1\", \"2\", \"3\", \"4\"],\n wide: [\"1st quarter\", \"2nd quarter\", \"3rd quarter\", \"4th quarter\"]\n }\n },\n dayPeriods: {\n format: {\n abbreviated: {\n midnight: \"midnight\",\n am: \"AM\",\n \"am-alt-variant\": \"am\",\n noon: \"noon\",\n pm: \"PM\",\n \"pm-alt-variant\": \"pm\",\n morning1: \"in the morning\",\n afternoon1: \"in the afternoon\",\n evening1: \"in the evening\",\n night1: \"at night\"\n },\n narrow: {\n midnight: \"mi\",\n am: \"a\",\n \"am-alt-variant\": \"am\",\n noon: \"n\",\n pm: \"p\",\n \"pm-alt-variant\": \"pm\",\n morning1: \"in the morning\",\n afternoon1: \"in the afternoon\",\n evening1: \"in the evening\",\n night1: \"at night\"\n },\n wide: {\n midnight: \"midnight\",\n am: \"AM\",\n \"am-alt-variant\": \"am\",\n noon: \"noon\",\n pm: \"PM\",\n \"pm-alt-variant\": \"pm\",\n morning1: \"in the morning\",\n afternoon1: \"in the afternoon\",\n evening1: \"in the evening\",\n night1: \"at night\"\n }\n },\n \"stand-alone\": {\n abbreviated: {\n midnight: \"midnight\",\n am: \"AM\",\n \"am-alt-variant\": \"am\",\n noon: \"noon\",\n pm: \"PM\",\n \"pm-alt-variant\": \"pm\",\n morning1: \"morning\",\n afternoon1: \"afternoon\",\n evening1: \"evening\",\n night1: \"night\"\n },\n narrow: {\n midnight: \"midnight\",\n am: \"AM\",\n \"am-alt-variant\": \"am\",\n noon: \"noon\",\n pm: \"PM\",\n \"pm-alt-variant\": \"pm\",\n morning1: \"morning\",\n afternoon1: \"afternoon\",\n evening1: \"evening\",\n night1: \"night\"\n },\n wide: {\n midnight: \"midnight\",\n am: \"AM\",\n \"am-alt-variant\": \"am\",\n noon: \"noon\",\n pm: \"PM\",\n \"pm-alt-variant\": \"pm\",\n morning1: \"morning\",\n afternoon1: \"afternoon\",\n evening1: \"evening\",\n night1: \"night\"\n }\n }\n },\n eras: {\n format: {\n wide: {\n \"0\": \"Before Christ\",\n \"1\": \"Anno Domini\",\n \"0-alt-variant\": \"Before Common Era\",\n \"1-alt-variant\": \"Common Era\"\n },\n abbreviated: {\n \"0\": \"BC\",\n \"1\": \"AD\",\n \"0-alt-variant\": \"BCE\",\n \"1-alt-variant\": \"CE\"\n },\n narrow: {\n \"0\": \"B\",\n \"1\": \"A\",\n \"0-alt-variant\": \"BCE\",\n \"1-alt-variant\": \"CE\"\n }\n }\n },\n dateFields: {\n era: {\n wide: \"era\",\n short: \"era\",\n narrow: \"era\"\n },\n year: {\n wide: \"year\",\n short: \"yr.\",\n narrow: \"yr.\"\n },\n quarter: {\n wide: \"quarter\",\n short: \"qtr.\",\n narrow: \"qtr.\"\n },\n month: {\n wide: \"month\",\n short: \"mo.\",\n narrow: \"mo.\"\n },\n week: {\n wide: \"week\",\n short: \"wk.\",\n narrow: \"wk.\"\n },\n weekOfMonth: {\n wide: \"week of month\",\n short: \"wk. of mo.\",\n narrow: \"wk. of mo.\"\n },\n day: {\n wide: \"day\",\n short: \"day\",\n narrow: \"day\"\n },\n dayOfYear: {\n wide: \"day of year\",\n short: \"day of yr.\",\n narrow: \"day of yr.\"\n },\n weekday: {\n wide: \"day of the week\",\n short: \"day of wk.\",\n narrow: \"day of wk.\"\n },\n weekdayOfMonth: {\n wide: \"weekday of the month\",\n short: \"wkday. of mo.\",\n narrow: \"wkday. of mo.\"\n },\n dayperiod: {\n short: \"AM/PM\",\n wide: \"AM/PM\",\n narrow: \"AM/PM\"\n },\n hour: {\n wide: \"hour\",\n short: \"hr.\",\n narrow: \"hr.\"\n },\n minute: {\n wide: \"minute\",\n short: \"min.\",\n narrow: \"min.\"\n },\n second: {\n wide: \"second\",\n short: \"sec.\",\n narrow: \"sec.\"\n },\n zone: {\n wide: \"time zone\",\n short: \"zone\",\n narrow: \"zone\"\n },\n millisecond: {\n narrow: \"ms\",\n short: \"ms\",\n wide: \"millisecond\"\n }\n }\n },\n firstDay: 0,\n weekendRange: {\n start: 6,\n end: 0\n },\n likelySubtags: {\n en: \"en-Latn-US\"\n }\n});","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-page-not-found',\r\n template: `

Page not found

\r\n

Requested page was not found

`\r\n})\r\nexport class PageNotFoundComponent { }\r\n\r\n","import { Component, OnInit, OnDestroy, ChangeDetectorRef } from '@angular/core';\r\nimport { PortalUser, UserService } from './portal/user/portal-user.service';\r\nimport { Subscription } from 'rxjs';\r\nimport { UserInterfaceService } from './services/user-interface.service';\r\n\r\n@Component({\r\n templateUrl: './no-usage-right.component.html',\r\n styleUrls: ['./no-usage-right.component.scss']\r\n})\r\nexport class NoUsageRightComponent implements OnInit, OnDestroy {\r\n // Selectable users for showing admins contact list.\r\n public portalUsers: PortalUser[] = [];\r\n public showAdmins: boolean = false;\r\n public mobile: boolean = false;\r\n private subscriptions: Array = [];\r\n\r\n constructor(\r\n private userService: UserService,\r\n private userInterfaceService: UserInterfaceService,\r\n private cdRef: ChangeDetectorRef,\r\n ) { }\r\n\r\n /**\r\n * onInit\r\n : void*/\r\n public ngOnInit(): void {\r\n // Observe device screen size and change the layout accordingly\r\n this.subscriptions.push(\r\n this.userInterfaceService.mobile$.subscribe((state: boolean) => {\r\n this.mobile = state;\r\n this.cdRef.detectChanges();\r\n })\r\n );\r\n // Get portal users\r\n this.userService.getCompanyUsers().subscribe((users) => {\r\n this.portalUsers = users.filter(user => user.Role == '10');\r\n this.showAdmins = this.portalUsers.length > 0;\r\n });\r\n }\r\n public ngOnDestroy(): void {\r\n this.subscriptions.forEach((subscription: Subscription) => subscription.unsubscribe());\r\n }\r\n}\r\n","
\r\n

{{ 'error.forbidden.noProductRight' | blah }}

\r\n
\r\n
\r\n

{{ 'error.forbidden.pleaseContact' | blah }} {{ 'error.forbidden.adminUser' | blah }}\r\n

\r\n
\r\n
{{ user?.Name }}
\r\n \r\n
\r\n
\r\n
\r\n

{{ 'default.or' | blah}} {{ 'error.forbidden.customerService' | blah }}

\r\n \r\n
\r\n
\r\n
\r\n

{{ 'error.forbidden.pleaseContact' | blah }}

\r\n
\r\n

{{ 'error.forbidden.customerService' | blah }}

\r\n \r\n
\r\n
\r\n
","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-no-admin-right',\r\n template: `

No admin right

\r\n

Requested page requires administrator rights

`\r\n})\r\nexport class NoAdminRightComponent { }\r\n","import { Component, OnInit, ChangeDetectorRef, ChangeDetectionStrategy } from '@angular/core';\r\n\r\nimport { Router } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'app-landing',\r\n templateUrl: './app-landing.component.html',\r\n styleUrls: ['./app-landing.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AppLandingComponent implements OnInit {\r\n\r\n constructor(\r\n private router: Router,\r\n private cdRef: ChangeDetectorRef) { }\r\n\r\n /**\r\n * Function that redirects to desired component.\r\n */\r\n ngOnInit() {\r\n this.router.navigate([`Tasks`]);\r\n }\r\n\r\n}\r\n","
\r\n

{{ 'default.loadingApp' | blah }}

\r\n
","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-forbidden',\r\n template: `

Forbidden

\r\n

Access to requested page not allowed.

`\r\n})\r\nexport class ForbiddenComponent { }\r\n","import { Component, OnInit, ChangeDetectionStrategy, OnDestroy, ChangeDetectorRef } from '@angular/core';\r\nimport { Router, ActivatedRoute, Params } from '@angular/router';\r\nimport { ProductRoleService } from './services/product-role.service';\r\nimport { Subscription, forkJoin, Subject, combineLatest, of } from 'rxjs';\r\n\r\nimport { AppComponentService } from './services/app-component.service';\r\nimport { WorksiteBasicinfoService } from './worksites/worksite/details/basicinfo/worksite-basicinfo.service';\r\nimport { PlanBasicinfoService } from './plans/plan/details/basicinfo/plan-basicinfo.service';\r\nimport { InvoicingProposalBasicinfoService } from './invoicing-proposals/invoicing-proposal/details/basicinfo/invoicing-proposal-basicinfo.service';\r\nimport { TenderingBasicinfoService } from './tenderings/tendering/details/basicinfo/tendering-basicinfo.service';\r\nimport { CollectionInvoicingProposalBasicinfoService } from './invoicing-proposals/collection-invoicing-proposal/details/basicinfo/collection-invoicing-proposal-basicinfo.service';\r\nimport { EndCustomerInvoiceBasicInformationService } from './end-customer-invoices/end-customer-invoice/details/basicinfo/end-customer-invoice-basicinfo.service';\r\n\r\n@Component({\r\n selector: 'app-open-target',\r\n templateUrl: './open-target.component.html',\r\n styleUrls: ['./open-target.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class OpenTargetComponent implements OnInit, OnDestroy {\r\n\r\n public searchId: string = '';\r\n public searchReady: boolean = false;\r\n private accessToInvoicingProposals: boolean = false;\r\n private accessToEndCustomerInvoice: boolean = false;\r\n private accessToCollectionInvoicingProposals: boolean = false;\r\n private accessToTenderings: boolean = false;\r\n public subscriptions: Array = [];\r\n private searchTarget = '';\r\n\r\n\r\n constructor(private router: Router,\r\n private route: ActivatedRoute,\r\n private roleService: ProductRoleService,\r\n private appComponentService: AppComponentService,\r\n private worksiteBasicInfoService: WorksiteBasicinfoService,\r\n private planBasicInfoService: PlanBasicinfoService,\r\n private invoicingProposalBasicInfoService: InvoicingProposalBasicinfoService,\r\n private endCustomerInvoiceService: EndCustomerInvoiceBasicInformationService,\r\n private collectionInvoicingProposalBasicInfoService: CollectionInvoicingProposalBasicinfoService,\r\n private tenderingBasicInfoService: TenderingBasicinfoService,\r\n private cdRef: ChangeDetectorRef) {\r\n\r\n this.subscriptions.push(\r\n combineLatest([this.route.params,\r\n this.roleService.userHasRole('IwmAllowedToAccessInvoicingProposals'),\r\n this.roleService.userHasRole('IwmAllowedToAccessTenderingsAndBids'),\r\n this.roleService.userHasRole('IwmAllowedToAccessInvoicingProposalsWhereHandler'),\r\n this.roleService.userHasRole('IwmAllowedToCreateCustomerInvoices')])\r\n .subscribe((results: [Params, boolean, boolean, boolean, boolean]) => {\r\n this.searchId = results[0]['id'];\r\n this.searchTarget = results[0]['target'];\r\n if (results[1]) {\r\n this.accessToCollectionInvoicingProposals = results[1];\r\n }\r\n if (results[1] || results[3]) {\r\n this.accessToInvoicingProposals = results[1] || results[3];\r\n }\r\n if (results[2]) {\r\n this.accessToTenderings = results[2];\r\n }\r\n if (results[4]) {\r\n this.accessToEndCustomerInvoice = results[4];\r\n }\r\n if (!this.searchTarget) {\r\n this.openTarget();\r\n } else {\r\n this.openSpecificTarget();\r\n }\r\n }));\r\n }\r\n\r\n ngOnInit() { }\r\n\r\n ngOnDestroy() {\r\n this.subscriptions.forEach(x => x.unsubscribe());\r\n }\r\n\r\n public openTarget() {\r\n\r\n const taskQuery = new Subject();\r\n const womTaskQuery = new Subject();\r\n const womInvoicingProposalQuery = new Subject();\r\n const worksiteQuery = new Subject();\r\n const invoicingProposalQuery = new Subject();\r\n const endCustomerInvoiceQuery = new Subject();\r\n const planQuery = new Subject();\r\n const tenderingQuery = new Subject();\r\n const collectionInvoicingProposalQuery = new Subject();\r\n\r\n const subjectsToWait: Array> = new Array>();\r\n subjectsToWait.push(taskQuery);\r\n subjectsToWait.push(womTaskQuery);\r\n subjectsToWait.push(worksiteQuery);\r\n subjectsToWait.push(planQuery);\r\n\r\n if (this.accessToInvoicingProposals) {\r\n subjectsToWait.push(invoicingProposalQuery);\r\n subjectsToWait.push(womInvoicingProposalQuery);\r\n }\r\n if (this.accessToCollectionInvoicingProposals) {\r\n subjectsToWait.push(collectionInvoicingProposalQuery);\r\n }\r\n if (this.accessToTenderings) {\r\n subjectsToWait.push(tenderingQuery);\r\n }\r\n if (this.accessToEndCustomerInvoice) {\r\n subjectsToWait.push(endCustomerInvoiceQuery);\r\n }\r\n\r\n\r\n\r\n forkJoin(subjectsToWait)\r\n .subscribe(results => {\r\n let url = '';\r\n results.forEach(resultUrl => {\r\n if (resultUrl !== '') {\r\n url = resultUrl;\r\n }\r\n });\r\n\r\n if (url !== '') {\r\n this.router.navigate([url], {\r\n replaceUrl: true\r\n });\r\n } else {\r\n this.searchReady = true;\r\n this.cdRef.detectChanges();\r\n }\r\n });\r\n\r\n // emit initial values so that forkJoin will fire after each of these is completed\r\n taskQuery.next('');\r\n womTaskQuery.next('');\r\n worksiteQuery.next('');\r\n invoicingProposalQuery.next('');\r\n endCustomerInvoiceQuery.next('');\r\n planQuery.next('');\r\n womInvoicingProposalQuery.next('');\r\n tenderingQuery.next('');\r\n collectionInvoicingProposalQuery.next('');\r\n\r\n const iwmId = parseInt(this.searchId, 10);\r\n if (isNaN(iwmId)) {\r\n taskQuery.complete();\r\n womTaskQuery.complete();\r\n worksiteQuery.complete();\r\n invoicingProposalQuery.complete();\r\n endCustomerInvoiceQuery.complete();\r\n planQuery.complete();\r\n womInvoicingProposalQuery.complete();\r\n tenderingQuery.complete();\r\n collectionInvoicingProposalQuery.complete();\r\n } else {\r\n this.appComponentService.doesTaskExist(iwmId)\r\n .subscribe(response => {\r\n const task = response['value'][0];\r\n if (task) {\r\n taskQuery.next(`Tasks/${task.Id}/Details`);\r\n }\r\n taskQuery.complete();\r\n });\r\n this.appComponentService.doesWomTaskExist(iwmId)\r\n .subscribe(response => {\r\n const task = response['value'][0];\r\n if (task) {\r\n womTaskQuery.next(`Tasks/Wom/${task.TaskId}`);\r\n }\r\n womTaskQuery.complete();\r\n });\r\n this.worksiteBasicInfoService.getWorksiteBasicInfoById(iwmId)\r\n .subscribe(response => {\r\n const worksite = response['value'][0];\r\n if (worksite) {\r\n worksiteQuery.next(`Worksites/${worksite.Id}/Details`);\r\n }\r\n worksiteQuery.complete();\r\n });\r\n this.planBasicInfoService.getPlanBasicInfoByIwmId(iwmId)\r\n .subscribe(response => {\r\n const plan = response['value'][0];\r\n if (plan) {\r\n planQuery.next(`Plans/${plan.Id}/Details`);\r\n }\r\n planQuery.complete();\r\n });\r\n\r\n if (this.accessToInvoicingProposals) {\r\n this.invoicingProposalBasicInfoService.getInvoicingProposalBasicInfoById(iwmId)\r\n .subscribe(response => {\r\n const invoicingproposal = response['value'][0];\r\n if (invoicingproposal) {\r\n invoicingProposalQuery.next(`InvoicingProposals/${invoicingproposal.Id}/Details`);\r\n }\r\n invoicingProposalQuery.complete();\r\n });\r\n\r\n this.invoicingProposalBasicInfoService.getWomInvoicingProposalById(iwmId)\r\n .subscribe(response => {\r\n const invoicingproposal = response['value'][0];\r\n if (invoicingproposal) {\r\n womInvoicingProposalQuery.next(`InvoicingProposals/Wom/${invoicingproposal.Id}`);\r\n }\r\n womInvoicingProposalQuery.complete();\r\n });\r\n }\r\n\r\n if (this.accessToEndCustomerInvoice) {\r\n this.endCustomerInvoiceService.getEndCustomerInvoiceById(iwmId)\r\n .subscribe(response => {\r\n const endCustomerInvoice = response['value'][0];\r\n if (endCustomerInvoice) {\r\n endCustomerInvoiceQuery.next(`EndCustomerInvoices/${endCustomerInvoice.Id}/Details`);\r\n }\r\n endCustomerInvoiceQuery.complete();\r\n });\r\n }\r\n\r\n if (this.accessToCollectionInvoicingProposals) {\r\n this.collectionInvoicingProposalBasicInfoService.getCollectionInvoicingProposalBasicInfoById(iwmId)\r\n .subscribe(response => {\r\n const collectioninvoicingproposal = response['value'][0];\r\n if (collectioninvoicingproposal) {\r\n collectionInvoicingProposalQuery.next(`InvoicingProposals/Collection/${collectioninvoicingproposal.Id}`);\r\n }\r\n collectionInvoicingProposalQuery.complete();\r\n });\r\n }\r\n else {\r\n collectionInvoicingProposalQuery.complete();\r\n }\r\n if (this.accessToTenderings) {\r\n this.tenderingBasicInfoService.getTenderingBasicInfoByIwmId(iwmId)\r\n .subscribe(response => {\r\n const tendering = response['value'][0];\r\n if (tendering) {\r\n tenderingQuery.next(`Tenderings/${tendering.Id}/Details`);\r\n }\r\n tenderingQuery.complete();\r\n });\r\n }\r\n }\r\n }\r\n\r\n private openSpecificTarget() {\r\n const iwmId = +this.searchId;\r\n if (isNaN(iwmId)) {\r\n this.searchReady = true;\r\n this.cdRef.detectChanges();\r\n } else {\r\n switch (this.searchTarget) {\r\n case 'Task':\r\n this.appComponentService.doesTaskExist(iwmId)\r\n .subscribe(response => {\r\n const task = response['value'][0];\r\n if (task) {\r\n this.router.navigate([`Tasks/${task.Id}/Details`], {\r\n replaceUrl: true\r\n });\r\n } else {\r\n this.searchReady = true;\r\n this.cdRef.detectChanges();\r\n }\r\n });\r\n break;\r\n\r\n case 'WomTask':\r\n this.appComponentService.doesWomTaskExist(iwmId)\r\n .subscribe(response => {\r\n const task = response['value'][0];\r\n if (task) {\r\n this.router.navigate([`Tasks/Wom/${task.TaskId}`], {\r\n replaceUrl: true\r\n });\r\n } else {\r\n this.searchReady = true;\r\n this.cdRef.detectChanges();\r\n }\r\n });\r\n break;\r\n\r\n case 'Worksite':\r\n this.worksiteBasicInfoService.getWorksiteBasicInfoById(iwmId)\r\n .subscribe(response => {\r\n const worksite = response['value'][0];\r\n if (worksite) {\r\n this.router.navigate([`Worksites/${worksite.Id}/Details`], {\r\n replaceUrl: true\r\n });\r\n } else {\r\n this.searchReady = true;\r\n this.cdRef.detectChanges();\r\n }\r\n });\r\n break;\r\n\r\n case 'Plan':\r\n this.planBasicInfoService.getPlanBasicInfoByIwmId(iwmId)\r\n .subscribe(response => {\r\n const plan = response['value'][0];\r\n if (plan) {\r\n this.router.navigate([`Plans/${plan.Id}/Details`], {\r\n replaceUrl: true\r\n });\r\n } else {\r\n this.searchReady = true;\r\n this.cdRef.detectChanges();\r\n }\r\n });\r\n break;\r\n\r\n case 'InvoicingProposal':\r\n if (this.accessToInvoicingProposals) {\r\n this.invoicingProposalBasicInfoService.getInvoicingProposalBasicInfoById(iwmId)\r\n .subscribe(response => {\r\n const invoicingproposal = response['value'][0];\r\n if (invoicingproposal) {\r\n this.router.navigate([`InvoicingProposals/${invoicingproposal.Id}/Details`], {\r\n replaceUrl: true\r\n });\r\n } else {\r\n this.searchReady = true;\r\n this.cdRef.detectChanges();\r\n }\r\n });\r\n }\r\n break;\r\n\r\n\r\n case 'EndCustomerInvoice':\r\n if (this.accessToEndCustomerInvoice) {\r\n this.endCustomerInvoiceService.getEndCustomerInvoiceById(iwmId)\r\n .subscribe(response => {\r\n const endCustomerInvoice = response['value'][0];\r\n if (endCustomerInvoice) {\r\n this.router.navigate([`EndCustomerInvoices/${endCustomerInvoice.Id}/Details`], {\r\n replaceUrl: true\r\n });\r\n } else {\r\n this.searchReady = true;\r\n this.cdRef.detectChanges();\r\n }\r\n });\r\n }\r\n break;\r\n\r\n case 'WomInvoicingProposal':\r\n if (this.accessToInvoicingProposals) {\r\n this.invoicingProposalBasicInfoService.getWomInvoicingProposalById(iwmId)\r\n .subscribe(response => {\r\n const invoicingproposal = response['value'][0];\r\n if (invoicingproposal) {\r\n this.router.navigate([`InvoicingProposals/Wom/${invoicingproposal.Id}`], {\r\n replaceUrl: true\r\n });\r\n } else {\r\n this.searchReady = true;\r\n this.cdRef.detectChanges();\r\n }\r\n });\r\n }\r\n break;\r\n\r\n case 'Tendering':\r\n if (this.accessToTenderings) {\r\n this.tenderingBasicInfoService.getTenderingBasicInfoByIwmId(iwmId)\r\n .subscribe(response => {\r\n const tendering = response['value'][0];\r\n if (tendering) {\r\n this.router.navigate([`Tenderings/${tendering.Id}/Details`], {\r\n replaceUrl: true\r\n });\r\n } else {\r\n this.searchReady = true;\r\n this.cdRef.detectChanges();\r\n }\r\n });\r\n }\r\n break;\r\n\r\n default:\r\n // Target not specified or invalid. Show the search ready layout\r\n this.searchReady = true;\r\n this.cdRef.detectChanges();\r\n break;\r\n }\r\n }\r\n }\r\n}\r\n","
\r\n\r\n
\r\n

{{ 'default.redirecting' | blah }}

\r\n
\r\n\r\n
\r\n

{{ 'default.forbiddenOrNotFound' | blah }}

\r\n
\r\n\r\n
","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { AppConfig } from '../app.config';\r\nimport { TaskBasicInfo } from '../tasks/task/models/task.basicinfo.model';\r\n\r\n/**\r\n * This is meant to be a supporting service for AppComponent to not cause\r\n * circular dependencies with other services\r\n */\r\n@Injectable()\r\nexport class AppComponentService {\r\n\r\n private iwmBackendUri: string;\r\n\r\n /**\r\n * @constructor\r\n */\r\n constructor(private http: HttpClient, private config: AppConfig) {\r\n this.iwmBackendUri = this.config.backendIwmUri;\r\n }\r\n\r\n /**\r\n * Returns true/false if a task exists\r\n * @param taskId TaskId of a task or worksite\r\n * @returns Boolean\r\n */\r\n public doesTaskExist(taskId: number): Observable {\r\n return this.http.get(`${this.iwmBackendUri}Api/Tasks?$filter=TaskId eq ${taskId}`);\r\n }\r\n\r\n /**\r\n * Returns true/false if a wom task exists\r\n * @param taskId TaskId of a wom task\r\n * @returns Boolean\r\n */\r\n public doesWomTaskExist(taskId: number): Observable {\r\n return this.http.get(`${this.iwmBackendUri}Api/ListTasks?$filter=TaskId eq ${taskId} and System eq 'Wom'`);\r\n }\r\n\r\n /**\r\n * function to get authentication ticket for accessing old dipo records\r\n * This will be later changed to dipo library if the thing is used in web app\r\n */\r\n getTicket() {\r\n return this.http.get(this.config.backendPortalUri + 'WebAPI/api/Ticket/GetAuthenticationTicket');\r\n }\r\n}","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { OAuthErrorEvent, OAuthService } from 'angular-oauth2-oidc';\r\nimport { AppOAuthStorage } from '@headpower/angular-oauth2-oidc-extensions';\r\nimport { Subject, filter, take, takeUntil } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'app-auth-callback',\r\n templateUrl: './callback.component.html',\r\n styleUrls: ['./callback.component.scss']\r\n})\r\nexport class AuthCallbackComponent implements OnInit, OnDestroy {\r\n\r\n public errors: string[] = [];\r\n\r\n private destroy$: Subject = new Subject();\r\n\r\n constructor(\r\n private oAuthService: OAuthService,\r\n private oAuthStorage: AppOAuthStorage,\r\n private router: Router,\r\n private route: ActivatedRoute) { }\r\n\r\n ngOnInit() {\r\n // This component is initiated twice during login flow\r\n // due to router-outlet being moved to hpo-layout after successful authentication.\r\n //\r\n // Initiation count is marked with number following # in comments.\r\n\r\n // FYI: As tryLogin removes query params from url after authentication by replacing the state\r\n // the route snapshot wont update correctly and hasAuthCode will be falsely true in second initiation.\r\n const hasAuthCode = this.route.snapshot.queryParamMap.has('code');\r\n\r\n // 1# In first initiation we should have just returned from auth code endpoint, but tokens have not been fetched yet.\r\n // Auth code should exist in query params, so this step is omitted.\r\n //\r\n // 2# In second initiation user should be successfully authenticated and tokens fetched.\r\n // Get previously set post login redirect url and redirect user back to the page, replacing this page.\r\n //\r\n // If this component is accessed after the login flow user is redirected to same page as before.\r\n // If accessed before the flow user is redirected to startup page (which will eventually initiate the login flow).\r\n //\r\n // User can get stuck here if accessed with code parameter without authentication,\r\n // but this happens only if user manually navigates to this page and manually sets the code parameter.\r\n if (this.oAuthService.hasValidIdToken() || !hasAuthCode) {\r\n const redirectUrl = this.oAuthStorage.getAppItem('post_login_redirect_url') || '/';\r\n\r\n this.router.navigateByUrl(redirectUrl, { replaceUrl: true });\r\n return;\r\n }\r\n\r\n // #1 Wait for the discovery document to be loaded,\r\n // then parse code, fetch tokens and user profile.\r\n //\r\n // Also listen for errors and show them to user.\r\n\r\n this.oAuthService.events\r\n .pipe(\r\n filter(event => event.type === 'discovery_document_loaded'),\r\n take(1)\r\n )\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(() => {\r\n // After discovery document is loaded, asynchronously parse code from url and fetch tokens\r\n this.oAuthService.tryLogin();\r\n });\r\n\r\n this.oAuthService.events\r\n .pipe(\r\n filter(event => event instanceof OAuthErrorEvent)\r\n )\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((event: OAuthErrorEvent) => {\r\n this.errors = [\r\n ...this.errors,\r\n `${event.type} (${(event.reason as any)?.error?.error || '-'})`\r\n ];\r\n\r\n // FYI: AI logging is handled in app.component\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n}\r\n","
0\"\r\n id=\"login-error\"\r\n class=\"error-container\">\r\n\r\n

{{ 'error.login.title' | blah }}

\r\n\r\n

\r\n {{ 'error.login.info1' | blah }}\r\n
\r\n {{ 'error.login.info2' | blah }}\r\n

\r\n\r\n
\r\n\r\n
\r\n {{error}}\r\n
\r\n\r\n
\r\n\r\n
","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { AuthGuard } from './shared/auth/auth.guard';\r\nimport { PageNotFoundComponent } from './page-not-found.component';\r\nimport { NoUsageRightComponent } from './no-usage-right.component';\r\nimport { NoAdminRightComponent } from './no-admin-right.component';\r\nimport { AppLandingComponent } from './app-landing.component';\r\nimport { ForbiddenComponent } from './forbidden.component';\r\nimport { OpenTargetComponent } from './open-target.component';\r\nimport { StatusScreenComponent } from './map/status-screen/status-screen.component';\r\nimport { AuthCallbackComponent } from './auth/callback/callback.component';\r\n\r\nconst appRoutes: Routes = [\r\n\r\n {\r\n path: 'ProductExtensions',\r\n loadChildren: () => import('./product-extensions/product-extensions.module').then(m => m.ProductExtensionsModule),\r\n data: {\r\n hybridMapHidden: true,\r\n instructionsHidden: true\r\n }\r\n },\r\n {\r\n path: 'Settings',\r\n loadChildren: () => import('./settings/settings.module').then(m => m.SettingsModule),\r\n data: {\r\n hybridMapHidden: true,\r\n instructionsHidden: true\r\n }\r\n },\r\n {\r\n path: 'SatnetMonitor',\r\n loadChildren: () => import('./satnet/satnet.module').then(m => m.SatnetModule),\r\n data: {\r\n hybridMapHidden: true,\r\n instructionsHidden: true\r\n }\r\n },\r\n {\r\n path: 'HeadPowerSettings',\r\n loadChildren: () => import('./headpower-settings/headpower-settings.module').then(m => m.HeadPowerSettingsModule),\r\n data: {\r\n hybridMapHidden: true,\r\n instructionsHidden: true\r\n }\r\n },\r\n {\r\n path: 'Worksites',\r\n loadChildren: () => import('./worksites/worksites.module').then(m => m.WorksitesModule)\r\n },\r\n {\r\n path: 'Tasks',\r\n loadChildren: () => import('./tasks/tasks.module').then(m => m.TasksModule)\r\n },\r\n {\r\n path: 'InvoicingProposals',\r\n loadChildren: () => import('./invoicing-proposals/invoicing-proposals.module').then(m => m.InvoicingProposalsModule)\r\n },\r\n {\r\n path: 'Plans',\r\n loadChildren: () => import('./plans/plans.module').then(m => m.PlansModule)\r\n },\r\n {\r\n path: 'Tenderings',\r\n loadChildren: () => import('./tenderings/tenderings.module').then(m => m.TenderingsModule)\r\n },\r\n {\r\n path: 'EndCustomerInvoices',\r\n loadChildren: () => import('./end-customer-invoices/end-customer-invoices.module').then(e => e.EndCustomerInvoicesModule)\r\n },\r\n // TODO \r\n { path: 'Login', redirectTo: '/Landing', pathMatch: 'prefix' }, // NOTE: This is just a temporary routing to make things work smoothly when shifting to new login flow. Remove this when not needed anymore.\r\n // TODO\r\n { path: 'Landing', data: { hybridMapHidden: true, instructionsHidden: true }, component: AppLandingComponent, canActivate: [AuthGuard] },\r\n { path: 'OpenTarget/:id', component: OpenTargetComponent, canActivate: [AuthGuard] },\r\n { path: 'OpenTarget/:id/:target', component: OpenTargetComponent, canActivate: [AuthGuard] },\r\n { path: 'Status', data: { hybridMapHidden: true, instructionsHidden: true }, component: StatusScreenComponent, canActivate: [AuthGuard] },\r\n { path: 'NoUsageRight', data: { hybridMapHidden: true, instructionsHidden: true }, component: NoUsageRightComponent },\r\n { path: 'NoAdminRight', data: { hybridMapHidden: true, instructionsHidden: true }, component: NoAdminRightComponent },\r\n { path: 'Forbidden', data: { title: 'default.forbidden', hybridMapHidden: true, instructionsHidden: true }, component: ForbiddenComponent },\r\n { path: 'NotFound', data: { title: 'default.notFound', hybridMapHidden: true, instructionsHidden: true }, component: PageNotFoundComponent },\r\n { path: 'auth/callback', data: { hybridMapHidden: true, instructionsHidden: true }, component: AuthCallbackComponent },\r\n { path: '', data: { hybridMapHidden: true, instructionsHidden: true }, redirectTo: '/Landing', pathMatch: 'full' },\r\n { path: '**', data: { title: 'default.notFound', hybridMapHidden: true, instructionsHidden: true }, component: PageNotFoundComponent }\r\n];\r\n\r\n@NgModule({\r\n imports: [\r\n RouterModule.forRoot(appRoutes, { scrollPositionRestoration: 'enabled' })\r\n ],\r\n exports: [\r\n RouterModule\r\n ],\r\n declarations: []\r\n})\r\nexport class AppRoutingModule { }\r\n","import { Injectable, Injector, ErrorHandler } from '@angular/core';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { ToasterService, ToastDuration, ApplicationInsightsService, ToastOptions } from '@headpower/layout';\r\nimport { BlahService } from '@headpower/blah-ng';\r\n\r\n@Injectable()\r\nexport class HpoErrorHandler extends ErrorHandler {\r\n\r\n private appInsightsService?: ApplicationInsightsService;\r\n\r\n constructor(private toaster: ToasterService,\r\n private blahService: BlahService,\r\n private injector: Injector\r\n ) {\r\n super();\r\n }\r\n\r\n override handleError(error: Error | HttpErrorResponse) {\r\n if (error instanceof Object && 'promise' in error) {\r\n this.toaster.create(this.blahService.blah('error.http.offline'));\r\n }\r\n\r\n if (error instanceof HttpErrorResponse) {\r\n // Server error happened\r\n\r\n if (!navigator.onLine) {\r\n // No Internet connection\r\n this.toaster.create(this.blahService.blah('error.http.offline'));\r\n return;\r\n }\r\n\r\n // Log error\r\n console.error('HpoErrorHandler: connection error', error.status, error.message)\r\n\r\n let errorMessage = '';\r\n let toastDuration = ToastDuration.normal;\r\n\r\n switch (error.status) {\r\n case 0: // Some browsers will timeout with status 0 (might be a bug)\r\n case 408: // Request timeout\r\n case 504: // Gateway timeout\r\n errorMessage = this.blahService.blah('error.http.timeout');\r\n toastDuration = ToastDuration.persistent;\r\n break;\r\n\r\n // If other error display generic message\r\n default:\r\n errorMessage = this.blahService.blah('error.http.generic');\r\n }\r\n\r\n let options: ToastOptions = {\r\n duration: toastDuration\r\n };\r\n\r\n if (toastDuration === ToastDuration.persistent) {\r\n options.actionLabel = 'OK';\r\n }\r\n\r\n // Display error for user\r\n this.toaster.create(errorMessage, options);\r\n } else {\r\n // Client Error happened. Log it to application insights\r\n\r\n // getting this reference from constructor causes a cyclic dependency. Get from injector instead\r\n if (!this.appInsightsService) {\r\n this.appInsightsService = this.injector.get(ApplicationInsightsService);\r\n }\r\n\r\n this.appInsightsService.trackException(error);\r\n }\r\n\r\n super.handleError(error);\r\n }\r\n}\r\n","import * as rs from 'jsrsasign';\nimport { AbstractValidationHandler } from 'angular-oauth2-oidc';\n\n/**\n * Validates the signature of an id_token against one\n * of the keys of an JSON Web Key Set (jwks).\n *\n * This jwks can be provided by the discovery document.\n */\nclass JwksValidationHandler extends AbstractValidationHandler {\n constructor() {\n super(...arguments);\n /**\n * Allowed algorithms\n */\n this.allowedAlgorithms = ['HS256', 'HS384', 'HS512', 'RS256', 'RS384', 'RS512', 'ES256', 'ES384', 'PS256', 'PS384', 'PS512'];\n /**\n * Time period in seconds the timestamp in the signature can\n * differ from the current time.\n */\n this.gracePeriodInSec = 600;\n }\n validateSignature(params, retry = false) {\n if (!params.idToken) throw new Error('Parameter idToken expected!');\n if (!params.idTokenHeader) throw new Error('Parameter idTokenHandler expected.');\n if (!params.jwks) throw new Error('Parameter jwks expected!');\n if (!params.jwks['keys'] || !Array.isArray(params.jwks['keys']) || params.jwks['keys'].length === 0) {\n throw new Error('Array keys in jwks missing!');\n }\n // console.debug('validateSignature: retry', retry);\n let kid = params.idTokenHeader['kid'];\n let keys = params.jwks['keys'];\n let key;\n let alg = params.idTokenHeader['alg'];\n if (kid) {\n key = keys.find(k => k['kid'] === kid /* && k['use'] === 'sig' */);\n } else {\n let kty = this.alg2kty(alg);\n let matchingKeys = keys.filter(k => k['kty'] === kty && k['use'] === 'sig');\n /*\n if (matchingKeys.length == 0) {\n let error = 'No matching key found.';\n console.error(error);\n return Promise.reject(error);\n }*/\n if (matchingKeys.length > 1) {\n let error = 'More than one matching key found. Please specify a kid in the id_token header.';\n console.error(error);\n return Promise.reject(error);\n } else if (matchingKeys.length === 1) {\n key = matchingKeys[0];\n }\n }\n if (!key && !retry && params.loadKeys) {\n return params.loadKeys().then(loadedKeys => params.jwks = loadedKeys).then(_ => this.validateSignature(params, true));\n }\n if (!key && retry && !kid) {\n let error = 'No matching key found.';\n console.error(error);\n return Promise.reject(error);\n }\n if (!key && retry && kid) {\n let error = 'expected key not found in property jwks. ' + 'This property is most likely loaded with the ' + 'discovery document. ' + 'Expected key id (kid): ' + kid;\n console.error(error);\n return Promise.reject(error);\n }\n let keyObj = rs.KEYUTIL.getKey(key);\n let validationOptions = {\n alg: this.allowedAlgorithms,\n gracePeriod: this.gracePeriodInSec\n };\n let isValid = rs.KJUR.jws.JWS.verifyJWT(params.idToken, keyObj, validationOptions);\n if (isValid) {\n return Promise.resolve();\n } else {\n return Promise.reject('Signature not valid');\n }\n }\n alg2kty(alg) {\n switch (alg.charAt(0)) {\n case 'R':\n return 'RSA';\n case 'E':\n return 'EC';\n default:\n throw new Error('Cannot infer kty from alg: ' + alg);\n }\n }\n calcHash(valueToHash, algorithm) {\n let hashAlg = new rs.KJUR.crypto.MessageDigest({\n alg: algorithm\n });\n let result = hashAlg.digestString(valueToHash);\n let byteArrayAsString = this.toByteArrayAsString(result);\n return Promise.resolve(byteArrayAsString);\n }\n toByteArrayAsString(hexString) {\n let result = '';\n for (let i = 0; i < hexString.length; i += 2) {\n let hexDigit = hexString.charAt(i) + hexString.charAt(i + 1);\n let num = parseInt(hexDigit, 16);\n result += String.fromCharCode(num);\n }\n return result;\n }\n}\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { JwksValidationHandler };\n","export const environment = {\r\n production: true,\r\n version: '20250217.1' // Version number placeholder, will be replaced with actual version in pipelines\r\n};\r\n","/* Angular imports */\r\nimport { Component, OnInit, Inject, ElementRef, ViewChild, HostListener, AfterViewInit } from '@angular/core';\r\nimport { Router, NavigationEnd, ActivatedRoute } from '@angular/router';\r\nimport { Title } from '@angular/platform-browser';\r\nimport { DOCUMENT } from '@angular/common';\r\n\r\n/* Supporting services */\r\nimport { OAuthService, AuthConfig, OAuthErrorEvent } from 'angular-oauth2-oidc';\r\nimport { JwksValidationHandler } from 'angular-oauth2-oidc-jwks';\r\nimport { AppOAuthStorage } from '@headpower/angular-oauth2-oidc-extensions';\r\n\r\n/* Application specific */\r\nimport { environment } from '../environments/environment';\r\nimport { AppConfig } from './app.config';\r\n\r\n/* HeadPower */\r\nimport { BlahService } from '@headpower/blah-ng';\r\nimport { MenuItem, CurrentUser, LiveMessagingService, SmoothnessEnforcer, AutoRelieveMode, ToasterService, ToastDuration, ApplicationInsightsService } from '@headpower/layout';\r\nimport { FeatureFlagService } from '@headpower/featureflags';\r\nimport { IwmLocaleService } from './services/iwm-locale.service';\r\n\r\nimport { ContentLayoutService, FloatingActionButtonService } from '@headpower/components';\r\nimport { UserInterfaceService } from './services/user-interface.service';\r\nimport { forkJoin, Subject, mergeMap, map, filter, firstValueFrom } from 'rxjs';\r\nimport { ProductRoleService } from './services/product-role.service';\r\n\r\nimport { CompanySettingsService } from './services/company-settings.service';\r\nimport { IHighlightEntity, MapPinItem } from './map/map/map.component';\r\nimport { LocalStorage } from './shared/functions/LocalStorage';\r\nimport { SessionStorage } from './shared/functions/SessionStorage';\r\nimport { HybridUiMapService } from './hybrid-ui-map.service';\r\nimport { ProductService } from './portal/product/portal-product.service';\r\nimport { ExternalRequestLiveMessage } from './shared/external-request/external-request.model';\r\nimport { UserService } from './portal/user/portal-user.service';\r\nimport { FloatingChatService } from './services/floating-chat.service';\r\nimport { MatIconRegistry } from '@angular/material/icon';\r\nimport { SettingsService } from './settings/components/settings.service';\r\n\r\n@Component({\r\n selector: 'app-root',\r\n templateUrl: './app.component.html',\r\n styleUrls: ['./app.component.scss'],\r\n})\r\nexport class AppComponent implements OnInit, AfterViewInit {\r\n\r\n // Page name changes with the active page\r\n public applicationPage: string = 'IWM';\r\n\r\n public productId: number = this.config.productId;\r\n public deputyFeatureProductId: number = this.config.deputyFeatureProductId;\r\n public accountBaseUri: string;\r\n public portalBaseUri: string;\r\n public backendAccountUri: string;\r\n public backendPortalUri: string;\r\n public currentUser: CurrentUser = new CurrentUser();\r\n public locationUri: string;\r\n public claims: any;\r\n public appVersion: string = environment.version;\r\n\r\n public menuItems: MenuItem[] = [];\r\n public environmentVariables: any;\r\n public productionMode: boolean;\r\n\r\n // Search specific properties\r\n public searchActive: boolean = false;\r\n public searchId: string = '';\r\n\r\n public aiChatFeatureEnabled: boolean = false;\r\n\r\n // Is application running on a handset\r\n public mobile: boolean = false;\r\n\r\n public userHasIpRoleRights = false;\r\n\r\n public get isLoggedIn(): boolean {\r\n return this._isLoggedIn;\r\n }\r\n private _isLoggedIn: boolean = false;\r\n\r\n public get openedFromIwd(): boolean {\r\n return this._openedFromIwd;\r\n }\r\n private _openedFromIwd: boolean = false;\r\n\r\n public openedSplitViewApp = 'map';\r\n\r\n // Map items\r\n public mapVisibleInRoute = false;\r\n public showMap: boolean;\r\n public mapItems: MapPinItem[] = [];\r\n public highlightItem: IHighlightEntity = undefined;\r\n @LocalStorage\r\n public mapSplitWidth: number;\r\n public mapResized: Subject = new Subject();\r\n\r\n // IWI items\r\n public iwiUrl: any = 'https://ohjeistot.headpower.fi';\r\n public iwiVisibleInRoute = false;\r\n public showIwi = false;\r\n public ff_iwiSplitView = false;\r\n @LocalStorage\r\n public iwiSplitWidth: number;\r\n\r\n // Split ui map\r\n @SessionStorage\r\n public mapHeight: number;\r\n @SessionStorage\r\n public mapWidth: number;\r\n @ViewChild('mapSplitDiv', { static: false }) mapSplitDiv: ElementRef;\r\n\r\n // Split ui iwi\r\n @LocalStorage\r\n public iwiHeight: number;\r\n @SessionStorage\r\n public iwiWidth: number;\r\n @ViewChild('iwiSplitDiv', { static: false }) iwiSplitDiv: ElementRef;\r\n\r\n @HostListener('document:keydown.shift.control.k', ['$event'])\r\n openDialog(e: KeyboardEvent) {\r\n this.toggleSplitView('map', !this.showMap);\r\n }\r\n\r\n @ViewChild('openWithIdField') openWithIdField: ElementRef;\r\n\r\n constructor(\r\n private oAuthService: OAuthService,\r\n private oAuthStorage: AppOAuthStorage,\r\n private roleService: ProductRoleService,\r\n private productService: ProductService,\r\n private companySettingsService: CompanySettingsService,\r\n private readonly settingService: SettingsService,\r\n private userService: UserService,\r\n private router: Router,\r\n private route: ActivatedRoute,\r\n private titleService: Title,\r\n private appInsightsService: ApplicationInsightsService,\r\n private config: AppConfig,\r\n private featureFlagService: FeatureFlagService,\r\n private contentLayoutService: ContentLayoutService,\r\n private fabService: FloatingActionButtonService,\r\n private userInterfaceService: UserInterfaceService,\r\n private iwmLocaleService: IwmLocaleService,\r\n private liveMessagingService: LiveMessagingService,\r\n private blahService: BlahService,\r\n private toaster: ToasterService,\r\n private smoothness: SmoothnessEnforcer,\r\n private uiMapService: HybridUiMapService,\r\n // This is used in template\r\n private readonly floatingChatService: FloatingChatService,\r\n private readonly iconRegistry: MatIconRegistry,\r\n @Inject(DOCUMENT) private document: Document\r\n ) {\r\n this.initBaseProperties();\r\n\r\n this.initAuthentication();\r\n\r\n // Initialize Application Insights\r\n this.appInsightsService.init(this.config.applicationInsightsInstrumentationKey, true)\r\n\r\n // Observe device screen size and change the layout accordingly\r\n this.userInterfaceService.mobile$\r\n .subscribe(state => {\r\n this.mobile = state;\r\n });\r\n\r\n this.uiMapService.highlightItem$.subscribe(res => this.highlightItem = res);\r\n this.uiMapService.items$.subscribe(res => this.mapItems = res);\r\n\r\n // init split map layout\r\n this.uiMapService.toggleMap$.subscribe(res => this.showMap = res);\r\n if (this.mapSplitWidth === null) {\r\n this.mapSplitWidth = 25;\r\n }\r\n\r\n if (this.iwiSplitWidth === null) {\r\n this.iwiSplitWidth = 25;\r\n }\r\n\r\n // Use material symbols outlined as default for mat-icon, instead of deprecated material icons\r\n this.iconRegistry.setDefaultFontSetClass('material-symbols-outlined');\r\n }\r\n\r\n\r\n ngOnInit() {\r\n this.blahService.localeChange$\r\n .subscribe(() => {\r\n this.iwmLocaleService.setLocale();\r\n this.contentLayoutService.refresh();\r\n });\r\n\r\n this.router.events\r\n .pipe(\r\n filter(event => event instanceof NavigationEnd),\r\n map(() => this.route),\r\n map(route => {\r\n while (route.firstChild) {\r\n route = route.firstChild;\r\n }\r\n return route;\r\n }),\r\n filter(route => route.outlet === 'primary'),\r\n mergeMap(route => route.data)\r\n )\r\n .subscribe(event => {\r\n // Reset fab state after routing\r\n this.fabService.resetState();\r\n\r\n // Check if hybrid map should be hidden based on route\r\n this.mapVisibleInRoute = !(event['hybridMapHidden'] === true);\r\n this.iwiVisibleInRoute = !(event['instructionsHidden'] === true);\r\n\r\n // Set window title\r\n let fullTitle = 'Portal | Headpower';\r\n this.applicationPage = 'IWM';\r\n if (event['title'] !== undefined) {\r\n // Note: this does not change title on the page user is on when changing language.\r\n // Only subsequent routes from then on will have titles in the new selected language.\r\n\r\n const translatedTitle = this.blahService.blah(event['title']);\r\n fullTitle = translatedTitle + ' | ' + fullTitle;\r\n this.applicationPage = translatedTitle;\r\n }\r\n this.titleService.setTitle(fullTitle);\r\n\r\n // update locationUri (for helpdesk)\r\n this.locationUri = this.document.location.href;\r\n });\r\n\r\n this.initIwiSplitView();\r\n }\r\n\r\n ngAfterViewInit() {\r\n setInterval(() => this.setMapSize(), 250);\r\n\r\n setInterval(() => this.setIwiSize(), 250);\r\n }\r\n\r\n private initBaseProperties() {\r\n this.environmentVariables = {\r\n environment: environment,\r\n config: this.config.getAll()\r\n };\r\n\r\n this.accountBaseUri = this.config.accountBaseUri;\r\n this.portalBaseUri = this.config.portalBaseUri;\r\n this.backendAccountUri = this.config.backendAccountUri;\r\n this.backendPortalUri = this.config.backendPortalUri;\r\n\r\n this.productionMode = environment.production;\r\n }\r\n\r\n public logOut() {\r\n this.oAuthStorage.clear();\r\n\r\n this.oAuthService.logOut();\r\n }\r\n\r\n private createAuthConfig() {\r\n const baseUri = document.baseURI.replace(/\\/$/, ''); // Remove possible final slash\r\n const authConfig = new AuthConfig();\r\n\r\n // Identity provider's uri\r\n authConfig.issuer = this.config.accountBaseUri + 'identity';\r\n\r\n // Set flow to authorization code\r\n authConfig.responseType = 'code';\r\n\r\n // Client secret, required by auth endpoint\r\n authConfig.dummyClientSecret = this.config.clientSecret;\r\n\r\n // Auth redirect (callback) uri\r\n authConfig.redirectUri = baseUri + '/auth/callback';\r\n\r\n // Client id\r\n authConfig.clientId = 'headpower_web_app';\r\n\r\n // Scopes used by the app\r\n authConfig.scope = 'openid profile email offline_access headpower:api headpower:app roles';\r\n\r\n // Activate session checks to get event if session has terminated,\r\n // f.ex. user has logged out from another app.\r\n authConfig.sessionChecksEnabled = this.config.environmentName !== 'LOCAL';\r\n authConfig.sessionCheckIntervall = 10000; // 10 seconds\r\n\r\n // Set tolerance for the token expiration time according to auth server\r\n authConfig.clockSkewInSec = 5 * 60; // 5 minutes\r\n\r\n // FYI: Debug should be enabled only when debugging login flow\r\n authConfig.showDebugInformation = false;\r\n\r\n return authConfig;\r\n }\r\n\r\n private initAuthentication() {\r\n this.oAuthService.configure(this.createAuthConfig());\r\n this.oAuthService.tokenValidationHandler = new JwksValidationHandler();\r\n\r\n // Uses refresh token so offline_access claim is mandatory\r\n this.oAuthService.setupAutomaticSilentRefresh();\r\n\r\n // Load discovery document. This will also start the login process.\r\n this.oAuthService.loadDiscoveryDocument();\r\n\r\n this.oAuthService.events\r\n .subscribe(event => {\r\n switch (event.type) {\r\n case 'token_received':\r\n // Token is received when user freshly authenticates and when token is silently refreshed.\r\n // Load/refresh user profile after token is received.\r\n this.oAuthService.loadUserProfile();\r\n break;\r\n\r\n case 'user_profile_loaded':\r\n this.handlePostTokenReceive();\r\n\r\n // Call login handlers only in login flow\r\n if (!this.isLoggedIn) {\r\n this.oAuthStorage.setAppItem('logged_in', 'true');\r\n\r\n this.handleLoginSideEffects();\r\n this.handlePostLogin(true);\r\n }\r\n break;\r\n\r\n case 'session_changed':\r\n case 'session_terminated':\r\n console.log(`Authentication ${event.type.replace('_', ' ')}, logging out...`);\r\n this.logOut();\r\n break;\r\n }\r\n\r\n // Catch any error event and log them to AI\r\n if (event instanceof OAuthErrorEvent) {\r\n console.error('[Auth]', event);\r\n\r\n this.appInsightsService.trackException(\r\n new Error(`${event.type} (${(event.reason as any)?.error?.error || '-'})`));\r\n }\r\n });\r\n\r\n // Check if user has authenticated before\r\n if (this.oAuthService.hasValidIdToken()) {\r\n this.handlePostTokenReceive();\r\n\r\n const wasLoggedIn = !!this.oAuthStorage.getAppItem('logged_in');\r\n\r\n // Check if user has authenticated in another app\r\n if (!wasLoggedIn) {\r\n this.oAuthStorage.setAppItem('logged_in', 'true');\r\n\r\n this.handleLoginSideEffects();\r\n }\r\n\r\n this.handlePostLogin(false);\r\n }\r\n }\r\n\r\n // FYI: This method is called asynchronously or synchronously after user has authenticated (freshly or before)\r\n // and profile is loaded (login flow is in progress).\r\n // Called also every time when token is silently refreshed.\r\n private handlePostTokenReceive() {\r\n // Set claims\r\n this.setClaimProperties();\r\n }\r\n\r\n // FYI: This method is called asynchronously or synchronously after user has authenticated (freshly or before).\r\n // Meant for ex. data collection, previous session data removal etc.\r\n // Called only once per app session.\r\n private handleLoginSideEffects() {\r\n // Remove possible old session data\r\n [\r\n '_querySettingsWorksite', '_querySettings', '_querySettingsInvoicingProposal',\r\n '_planlistSettings', 'invoicingProposalListSettings', 'tenderingListSettings',\r\n '_querySettingsBidderList', '_querySettingsTendererList', '_savedSort',\r\n '_savedPage', '_savedWorksiteId', '_showArchivedTasks', '_userCanSeeAllTasks',\r\n 'itemsCache', 'highlightedItemCache', 'showMapCache'\r\n ]\r\n .forEach(k => sessionStorage.removeItem(k));\r\n\r\n // Send product usage statistics\r\n const redirectUrl = this.oAuthStorage.getAppItem('post_login_redirect_url') || '/';\r\n\r\n this.productService.addUsageStatistics(redirectUrl)\r\n .subscribe();\r\n }\r\n\r\n // FYI: This method is called once in two possible ways:\r\n // 1. Asynchronously (when user has freshly authenticated).\r\n // 2. Synchronously from constructor (when user has authenticated before in current session).\r\n //\r\n // To comply with both cases ensure that:\r\n // - synchronous initializers (constructor, ngOnInit etc.) wont access properties which are not defined until in this method.\r\n // - every property this method will access is defined before initAuthenticaton call, e.g. menuItems.\r\n private handlePostLogin(freshLogin: boolean) {\r\n this._isLoggedIn = true;\r\n\r\n // Init services\r\n this.initFeatureFlagsService();\r\n this.initSmoothness();\r\n this.initRoleService();\r\n this.initRequireService();\r\n this.initLiveMessagingService();\r\n\r\n // Add menu items\r\n this.handleMenuItems(freshLogin);\r\n\r\n // Add page loaded class for robot tests\r\n setTimeout(() => document.body.classList.add('page-loaded'), 250);\r\n\r\n // Check if AI Chat feature is available\r\n this.featureFlagService.isFeatureAvailable('IWM.AIChat').subscribe(o => {\r\n this.aiChatFeatureEnabled = o;\r\n });\r\n }\r\n\r\n private initFeatureFlagsService() {\r\n const flagClaims = {\r\n 'env': this.config.environmentName,\r\n ...this.claims\r\n };\r\n\r\n // Configure FeatureFlags\r\n this.featureFlagService.config = {\r\n environment: this.environmentVariables,\r\n claims: flagClaims,\r\n baseUri: 'https://backend.headpower.fi',\r\n filterClaims: [\r\n 'iss', 'aud', 'exp', 'nbf', 'nonce', 'iat',\r\n 'at_hash', 'sid', 'auth_time', 'idp', 'amr'\r\n ]\r\n };\r\n this.featureFlagService.init();\r\n }\r\n\r\n private initSmoothness() {\r\n // Smoothness Enforcer is enabled only in production mode\r\n this.smoothness.production = environment.production;\r\n\r\n if (!environment.production) {\r\n console.log('[IWM.SmoothnessEnforcer]', 'Smoothness Enforcer is disabled because app is in development mode.');\r\n return;\r\n }\r\n\r\n if (!this.smoothness.armed) {\r\n this.smoothness.arm({\r\n appId: 'iwm',\r\n impactTreshold: 100,\r\n impactOnNavigation: 2,\r\n impactOnIdle: 1,\r\n autoRelieve: AutoRelieveMode.OnNavigation\r\n });\r\n\r\n console.log('[IWM.SmoothnessEnforcer]', 'Smoothness Enforcer is now armed.');\r\n }\r\n }\r\n\r\n private initRoleService() {\r\n this.roleService.config = {\r\n environment: this.environmentVariables,\r\n debug: false,\r\n baseUri: this.config.backendPortalUsersUri,\r\n productId: this.config.productId.toString()\r\n };\r\n this.roleService.init();\r\n }\r\n\r\n private initRequireService() {\r\n this.companySettingsService.loadAll();\r\n }\r\n\r\n private initLiveMessagingService() {\r\n this.featureFlagService.isFeatureAvailable('IWM.LiveMessaging')\r\n .subscribe(result => {\r\n if (result) {\r\n if (!this.liveMessagingService.initialized && !this.liveMessagingService.initializing) {\r\n const logLevel = this.productionMode ?\r\n 2 : // Information in prod mode\r\n 1; // Debug in dev mode\r\n\r\n this.liveMessagingService.init(\r\n this.config.productId,\r\n `${this.config.backendLiveMsgUri}LiveMessaging.WebAPI/`,\r\n () => this.oAuthService.getAccessToken(),\r\n logLevel\r\n );\r\n }\r\n this.listenProductWideLiveMessages();\r\n } else {\r\n console.log('[IWM.LiveMessaging]', 'Live messaging disabled by feature flag.');\r\n }\r\n });\r\n }\r\n\r\n private initIwiSplitView() {\r\n this.featureFlagService.isFeatureAvailable('IWM.SplitViewForIWIApp')\r\n .subscribe(res => {\r\n if (res) {\r\n this.ff_iwiSplitView = res;\r\n }\r\n });\r\n }\r\n\r\n private listenProductWideLiveMessages() {\r\n // External request finished note\r\n this.liveMessagingService.listenToSingleMessages('iwm/externalRequest/**')\r\n .subscribe(result => {\r\n const payload = result.Payload as ExternalRequestLiveMessage;\r\n\r\n let message: string;\r\n let messageParams: any[];\r\n\r\n switch (payload.RequestState) {\r\n case 'Completed':\r\n payload.RequestType === 'ExternalUnitImport' && (message = 'default.externalUnitImport.importUnitsRequestCompleted');\r\n payload.RequestType === 'ExternalAreaImport' && (message = 'default.externalAreaImport.importAreasRequestCompleted');\r\n break;\r\n\r\n case 'Failed':\r\n payload.RequestType === 'ExternalUnitImport' && (message = 'default.externalUnitImport.importUnitsRequestFailed');\r\n payload.RequestType === 'ExternalAreaImport' && (message = 'default.externalAreaImport.importAreasRequestFailed');\r\n\r\n messageParams = [payload.RequestStatusCode || '-'];\r\n break;\r\n }\r\n\r\n if (message) {\r\n const translatedMessage = this.blahService.blah({\r\n key: message,\r\n params: messageParams\r\n });\r\n\r\n this.toaster.create(translatedMessage, {\r\n actionLabel: 'OK',\r\n duration: ToastDuration.extra,\r\n color: payload.RequestState === 'Completed' ? 'success' : 'warn'\r\n });\r\n }\r\n });\r\n }\r\n\r\n private async handleMenuItems(freshLogin: boolean) {\r\n // User has freshly authenticated and will be redirected\r\n if (freshLogin) {\r\n const redirectUrl = new URL(\r\n this.oAuthStorage.getAppItem('post_login_redirect_url') || '/',\r\n window.location.origin);\r\n\r\n this._openedFromIwd = redirectUrl.searchParams.has('openedFromIwd');\r\n }\r\n // User is already authenticated in current session and no redirect was made\r\n else {\r\n // If called synchronously from constructor, routes are not yet initialized\r\n // so await for navigation to end before continuing\r\n if (!this.route.component) {\r\n await firstValueFrom(\r\n this.router.events\r\n .pipe(\r\n filter(event => event instanceof NavigationEnd)\r\n ));\r\n }\r\n\r\n this._openedFromIwd = this.route.snapshot.queryParamMap.has('openedFromIwd');\r\n }\r\n\r\n if (this.openedFromIwd) {\r\n // If opened from IWD set it's menu items\r\n this.setIwdMenuItems();\r\n } else {\r\n // Otherwise set app menu items\r\n this.setAppMenuItems();\r\n }\r\n }\r\n\r\n private setAppMenuItems() {\r\n forkJoin({\r\n ipAccess: this.roleService.userHasRole('IwmAllowedToAccessInvoicingProposals'),\r\n ipAsHandlerAccess: this.roleService.userHasRole('IwmAllowedToAccessInvoicingProposalsWhereHandler'),\r\n iwmAdmin: this.roleService.userHasRole('IwmContentAdministrator'),\r\n tenderingAccess: this.roleService.userHasRole('IwmAllowedToAccessTenderingsAndBids'),\r\n taxReportingProductAccess: this.productService.companyHasLicenseToProduct(this.config.iwmTaxReportingId),\r\n taxReportingRoleAccess: this.roleService.userHasRole('IwmAllowedToAccessTaxAuthorityReporting'),\r\n iwmInventoryProductAccess: this.productService.companyHasLicenseToInventory(),\r\n satNetMonitorAccess: this.productService.companyHasLicenseToProduct(this.config.iwmSatNetProductId),\r\n satNetMonitorFlag: this.featureFlagService.isFeatureAvailable('SatNet.NewMap'),\r\n settingsPageFlag: this.featureFlagService.isFeatureAvailable('IWM.NewSettingPage'),\r\n hiddenMenus: this.settingService.getHiddenMenus()\r\n })\r\n .subscribe(result => {\r\n let items = [];\r\n\r\n if (-1 === result.hiddenMenus.value.findIndex(t => t.TargetType === 'Plan')) {\r\n items.push(new MenuItem('plan.plans', '/Plans', {\r\n icon: 'view_headline',\r\n translate: true,\r\n backgroundColor: 'var(--color-primary-800)',\r\n textColor: 'var(--color-primary-800-contrast)'\r\n }));\r\n }\r\n if (-1 === result.hiddenMenus.value.findIndex(t => t.TargetType === 'Worksite')) {\r\n items.push(new MenuItem('worksite.worksites', '/Worksites', {\r\n icon: 'view_headline',\r\n translate: true,\r\n backgroundColor: 'var(--color-primary-600)',\r\n textColor: 'var(--color-primary-600-contrast)'\r\n }));\r\n }\r\n items.push(new MenuItem('task.tasklist.tasklist', '/Tasks', {\r\n icon: 'view_headline',\r\n translate: true,\r\n backgroundColor: 'var(--color-primary-400)',\r\n textColor: 'var(--color-primary-400-contrast)'\r\n }));\r\n\r\n if ((result.ipAccess || result.ipAsHandlerAccess) &&\r\n -1 === result.hiddenMenus.value.findIndex(t => t.TargetType === 'InvoicingProposal')) {\r\n this.userHasIpRoleRights = true;\r\n items.splice(3, 0, new MenuItem('invoicingProposal.invoicingProposals', '/InvoicingProposals', {\r\n icon: 'view_headline',\r\n translate: true,\r\n backgroundColor: 'var(--color-primary-100)',\r\n textColor: 'var(--color-primary-100-contrast)'\r\n }));\r\n }\r\n\r\n if (-1 === result.hiddenMenus.value.findIndex(t => t.TargetType === 'Dashboard')) {\r\n items.push(new MenuItem('dashboard.dashboard', 'Tasks/Dashboard', {\r\n icon: 'dashboard',\r\n translate: true,\r\n textColor: 'var(--color-primary-500)'\r\n }));\r\n }\r\n\r\n if (result.satNetMonitorAccess && result.satNetMonitorFlag) {\r\n items.push(new MenuItem('SatnetMonitor', '/SatnetMonitor', { icon: 'satellite_alt', translate: false }));\r\n }\r\n\r\n // Hides product extensions unless have access to tax reporting or to inventory\r\n // Change if new elements added to product extensions page\r\n if (result.taxReportingProductAccess && result.taxReportingRoleAccess || result.iwmInventoryProductAccess['value'] !== 'None') {\r\n items.push(new MenuItem('settings.categories.productExtensions', '/ProductExtensions', { icon: 'widgets', translate: true }));\r\n }\r\n\r\n if (result.settingsPageFlag) {\r\n items.push(new MenuItem('settings.newAdministration', '/Settings/Menu', { icon: 'settings', translate: true }));\r\n }\r\n\r\n items.push(new MenuItem('settings.administration', '/Settings/List', { icon: 'settings', translate: true }));\r\n\r\n if (result.tenderingAccess && -1 === result.hiddenMenus.value.findIndex(t => t.TargetType === 'Tendering')) {\r\n items.splice(0, 0, new MenuItem('tendering.tenderings', '/Tenderings', {\r\n icon: 'view_headline',\r\n translate: true,\r\n backgroundColor: 'var(--color-primary-900)',\r\n textColor: 'var(--color-primary-900-contrast)'\r\n }));\r\n }\r\n // This is checked here so that item get added as last item after other role based checks\r\n if (this.userService.userHasRoleClaim('HeadPowerAdmin')) {\r\n items.push(new MenuItem('admin.headpowerCustomerAdministration', '/HeadPowerSettings', { icon: 'admin_panel_settings', translate: true }));\r\n }\r\n\r\n this.menuItems = items;\r\n });\r\n }\r\n\r\n /**\r\n * Assigning menu items when worksite is accessed from IWD\r\n */\r\n private setIwdMenuItems() {\r\n const recordListUrl = `${this.config.portalBaseUri}${this.config.iwdPortalEndpoint}Record-list`;\r\n const defectListUrl = `${this.config.portalBaseUri}${this.config.iwdPortalEndpoint}Defect-list`;\r\n const dashboardUrl = `${this.config.portalBaseUri}${this.config.iwdPortalEndpoint}Dashboard`;\r\n const settingsUrl = `${this.config.portalBaseUri}${this.config.iwdPortalEndpoint}Settings`;\r\n\r\n let items = [];\r\n\r\n items.push(new MenuItem('worksite.worksites', '/Worksites', {\r\n icon: 'view_headline',\r\n translate: true,\r\n backgroundColor: 'var(--color-primary-600)',\r\n textColor: 'var(--color-primary-600-contrast)'\r\n }));\r\n items.push(new MenuItem('default.records', recordListUrl, { icon: 'view_headline', translate: true }));\r\n items.push(new MenuItem('default.defectsAndNotes', defectListUrl, { icon: 'view_headline', translate: true }));\r\n items.push(new MenuItem('dashboard.dashboard', dashboardUrl, { icon: 'dashboard', translate: true }));\r\n items.push(new MenuItem('settings.administration', settingsUrl, { icon: 'settings', translate: true }));\r\n\r\n this.menuItems = items;\r\n }\r\n\r\n /**\r\n * Set user properties from claims\r\n */\r\n private setClaimProperties() {\r\n const claims: any = this.oAuthService.getIdentityClaims();\r\n this.claims = claims;\r\n\r\n this.currentUser.userId = claims['sub'];\r\n this.currentUser.givenName = claims['given_name'];\r\n this.currentUser.familyName = claims['family_name'];\r\n this.currentUser.email = claims['email'];\r\n this.currentUser.picture = claims['picture'];\r\n this.currentUser.accessToken = this.oAuthService.getAccessToken();\r\n this.currentUser.companyName = claims['headpower:company_name'];\r\n\r\n // Set locale only in login flow\r\n if (!this.isLoggedIn) {\r\n this.setBlahLanguage();\r\n this.iwmLocaleService.setLocale();\r\n }\r\n }\r\n\r\n public toggleSplitView(app: 'map' | 'iwi', active: boolean) {\r\n\r\n this.openedSplitViewApp = app;\r\n\r\n if (app === 'map') {\r\n this.uiMapService.toggleMap$.next(active);\r\n\r\n if (active) {\r\n this.showIwi = false;\r\n }\r\n }\r\n\r\n if (app === 'iwi') {\r\n this.showIwi = active;\r\n\r\n if (active) {\r\n this.uiMapService.toggleMap$.next(false);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Search for tasks, worksites and invoicing proposals by iwm id\r\n */\r\n public searchWithIwmId() {\r\n if (this.searchId) {\r\n this.router.navigate(['OpenTarget', this.searchId]);\r\n setTimeout(() => {\r\n this.searchId = '';\r\n this.openWithIdField.nativeElement.blur();\r\n }, 0)\r\n }\r\n }\r\n\r\n public sidenavToggleChanged(opened: boolean): void {\r\n if (this.mobile) {\r\n const showFabBtn = !opened;\r\n this.fabService.setVisibility(showFabBtn);\r\n }\r\n }\r\n\r\n /**\r\n * Sets the blah language based on locale claim.\r\n */\r\n private setBlahLanguage() {\r\n const claimLocale = this.claims['locale'] as string;\r\n\r\n if (claimLocale) {\r\n const separatorIndex = claimLocale.indexOf('-');\r\n const localeLanguage = separatorIndex > -1 ? claimLocale.substring(0, separatorIndex) : claimLocale;\r\n const locale = this.blahService.availableLocales.find(l => l.startsWith(localeLanguage)) ?? 'fi-FI';\r\n\r\n this.blahService.changeLocale(locale);\r\n }\r\n }\r\n\r\n /**\r\n * Set sizes for split map area\r\n */\r\n private setMapSize() {\r\n if (this.mapSplitDiv === undefined) {\r\n return;\r\n }\r\n\r\n const newWidth = this.mapSplitDiv.nativeElement.clientWidth;\r\n const newHeight = this.mapSplitDiv.nativeElement.clientHeight;\r\n\r\n if (this.mapHeight !== newHeight || this.mapWidth !== newWidth) {\r\n this.mapWidth = newWidth;\r\n this.mapHeight = newHeight;\r\n // Using setTimeout allows new size to be detected correctly when\r\n // maximising/restoring window.\r\n setTimeout(() => { this.mapResized.next(); }, 100);\r\n }\r\n }\r\n\r\n /**\r\n * Set sizes for split Iwi area\r\n */\r\n private setIwiSize() {\r\n if (this.iwiSplitDiv === undefined) {\r\n return;\r\n }\r\n\r\n const newWidth = this.iwiSplitDiv.nativeElement.clientWidth;\r\n const newHeight = this.iwiSplitDiv.nativeElement.clientHeight;\r\n\r\n if (this.iwiHeight !== newHeight || this.iwiWidth !== newWidth) {\r\n this.iwiWidth = newWidth;\r\n this.iwiHeight = newHeight;\r\n }\r\n }\r\n\r\n public splitDragEnd({ sizes }) {\r\n\r\n if (this.openedSplitViewApp === 'map') {\r\n this.mapSplitWidth = sizes[0];\r\n this.setMapSize();\r\n }\r\n\r\n if (this.openedSplitViewApp === \"iwi\") {\r\n this.iwiSplitWidth = sizes[0];\r\n this.setIwiSize();\r\n }\r\n }\r\n}\r\n","\r\n\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n {{ 'task.openWithId' | blah }}\r\n \r\n arrow_forward\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n map\r\n
\r\n {{ 'filter.map' | blah }}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n book_4\r\n \r\n {{ 'filter.iwi' | blah }}\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n\r\n\r\n \r\n
\r\n\r\n \r\n\r\n \r\n\r\n
\r\n\r\n
\r\n\r\n \r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n \r\n\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n
","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { BlahService } from '@headpower/blah-ng';\r\nimport { Observable } from 'rxjs';\r\nimport { AppConfig } from '../app.config';\r\nimport { ToasterService } from '@headpower/layout';\r\n\r\ninterface ChatMessage {\r\n isOwn: boolean;\r\n text: string;\r\n}\r\n\r\ninterface ChatData {\r\n placeholder: string;\r\n senderName: string;\r\n senderPicture: string;\r\n infoText: string;\r\n receivedMessageFooter: string;\r\n messageHistory: ChatMessage[];\r\n messageMaxLength: number;\r\n loading: boolean;\r\n floatingButtonPosition?: FloatingButtonPosition;\r\n}\r\n\r\ninterface FloatingButtonPosition {\r\n right: string;\r\n bottom: string;\r\n}\r\n\r\n@Injectable()\r\nexport class FloatingChatService {\r\n private readonly assistantApiUrl: string =\r\n this.config.backendAiUri + 'Assistant/api/';\r\n private readonly maxHistoryLengthSplice: number = -10;\r\n private readonly maxMessageLength: number = 500;\r\n private readonly defaultModel: string = 'gpt-4o';\r\n private readonly itemName: string = 'chatData';\r\n\r\n constructor(\r\n private readonly blahService: BlahService,\r\n private readonly http: HttpClient,\r\n private readonly config: AppConfig,\r\n private readonly toaster: ToasterService\r\n ) {\r\n // Save chat data to session storage before page unloads\r\n window.addEventListener('beforeunload', () => {\r\n sessionStorage.setItem(this.itemName, JSON.stringify(this.chatData));\r\n });\r\n\r\n // Retrieve chat data from session storage if exists\r\n const savedData = sessionStorage.getItem(this.itemName);\r\n if (savedData) {\r\n this.chatData = JSON.parse(savedData);\r\n } else {\r\n this.chatData = this.getInitialChatData();\r\n }\r\n\r\n this.blahService.localeChange$.subscribe(() => {\r\n this.chatData.placeholder = this.blahService.blah(\r\n 'floatingChat.placeholder'\r\n );\r\n this.chatData.infoText = this.blahService.blah(\r\n 'floatingChat.infoText'\r\n );\r\n this.chatData.receivedMessageFooter = this.blahService.blah(\r\n 'floatingChat.receivedMessageFooter'\r\n );\r\n this.chatData.messageHistory[0].text = this.blahService.blah(\r\n 'floatingChat.initialMessage'\r\n );\r\n });\r\n }\r\n\r\n public chatData: ChatData;\r\n\r\n public getInitialChatData(): ChatData {\r\n return {\r\n placeholder: this.blahService.blah('floatingChat.placeholder'),\r\n senderName: this.blahService.blah('floatingChat.senderName'),\r\n senderPicture:\r\n 'https://static.headpower.fi/images/ai/helmi_head.png',\r\n infoText: this.blahService.blah('floatingChat.infoText'),\r\n receivedMessageFooter: this.blahService.blah(\r\n 'floatingChat.receivedMessageFooter'\r\n ),\r\n messageHistory: [\r\n {\r\n text: this.blahService.blah('floatingChat.initialMessage'),\r\n isOwn: false,\r\n },\r\n ],\r\n messageMaxLength: this.maxMessageLength,\r\n loading: false,\r\n floatingButtonPosition: { bottom: '8rem', right: '2.8rem' },\r\n };\r\n }\r\n\r\n public handleChatMessageSent(event: string) {\r\n let responseReceived = false;\r\n let messageAdded = false;\r\n\r\n const addMessage = (text: string, isOwn: boolean) => {\r\n if (!messageAdded) {\r\n messageAdded = true;\r\n this.chatData.messageHistory.push({ text, isOwn });\r\n }\r\n };\r\n\r\n // Limit sent message history, and exclude the default introduction message from history\r\n this.postChatMessage(\r\n event,\r\n this.chatData.messageHistory.slice(1).slice(this.maxHistoryLengthSplice)\r\n ).subscribe({\r\n next: (o) => {\r\n responseReceived = true;\r\n addMessage(event, true);\r\n this.chatData.loading = false;\r\n this.chatData.messageHistory.push({\r\n text: o.response,\r\n isOwn: false,\r\n });\r\n },\r\n error: () => {\r\n responseReceived = true;\r\n addMessage(event, true);\r\n this.chatData.loading = false;\r\n this.toaster.create(\r\n this.blahService.blah('floatingChat.error')\r\n );\r\n },\r\n });\r\n\r\n setTimeout(() => addMessage(event, true), 200);\r\n setTimeout(() => {\r\n if (!responseReceived) this.chatData.loading = true;\r\n }, 500);\r\n }\r\n\r\n public handleChatReset() {\r\n this.chatData = this.getInitialChatData();\r\n }\r\n\r\n public postChatMessage(\r\n text: string,\r\n history: ChatMessage[]\r\n ): Observable {\r\n const url = this.assistantApiUrl + 'Assistant';\r\n\r\n const payload = {\r\n message: text,\r\n history: history,\r\n model: this.defaultModel,\r\n };\r\n\r\n return this.http.post(url, payload);\r\n }\r\n}\r\n","import * as i0 from '@angular/core';\nimport { InjectionToken, Directive, Injector, Input, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Optional, Inject, ContentChild, Output, ViewChildren, NgModule } from '@angular/core';\nimport * as i1 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport { Observable, Subject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nconst _c0 = [\"gutterEls\"];\nconst _c1 = [\"*\"];\nconst _c2 = (a0, a1, a2, a3, a4, a5) => ({\n areaBefore: a0,\n areaAfter: a1,\n gutterNum: a2,\n first: a3,\n last: a4,\n isDragged: a5\n});\nfunction SplitComponent_ng_template_1_div_0_ng_container_2_ng_container_1_ng_container_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainer(0);\n }\n}\nfunction SplitComponent_ng_template_1_div_0_ng_container_2_ng_container_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtemplate(1, SplitComponent_ng_template_1_div_0_ng_container_2_ng_container_1_ng_container_1_Template, 1, 0, \"ng-container\", 7);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const injector_r4 = ctx.$implicit;\n const ctx_r4 = i0.ɵɵnextContext(3);\n const area_r6 = ctx_r4.$implicit;\n const index_r2 = ctx_r4.index;\n const first_r7 = ctx_r4.first;\n const ctx_r2 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r2.customGutter.template)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction6(3, _c2, area_r6, ctx_r2.displayedAreas[index_r2 + 1], index_r2 + 1, first_r7, index_r2 === ctx_r2.displayedAreas.length - 2, ctx_r2.draggedGutterNum === index_r2 + 1))(\"ngTemplateOutletInjector\", injector_r4);\n }\n}\nfunction SplitComponent_ng_template_1_div_0_ng_container_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtemplate(1, SplitComponent_ng_template_1_div_0_ng_container_2_ng_container_1_Template, 2, 10, \"ng-container\", 6);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const index_r2 = i0.ɵɵnextContext(2).index;\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"asSplitGutterDynamicInjector\", index_r2 + 1);\n }\n}\nfunction SplitComponent_ng_template_1_div_0_ng_template_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"div\", 8);\n }\n}\nfunction SplitComponent_ng_template_1_div_0_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 4, 0);\n i0.ɵɵlistener(\"keydown\", function SplitComponent_ng_template_1_div_0_Template_div_keydown_0_listener($event) {\n i0.ɵɵrestoreView(_r1);\n const index_r2 = i0.ɵɵnextContext().index;\n const ctx_r2 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r2.startKeyboardDrag($event, index_r2 * 2 + 1, index_r2 + 1));\n })(\"mousedown\", function SplitComponent_ng_template_1_div_0_Template_div_mousedown_0_listener($event) {\n i0.ɵɵrestoreView(_r1);\n const index_r2 = i0.ɵɵnextContext().index;\n const ctx_r2 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r2.startMouseDrag($event, index_r2 * 2 + 1, index_r2 + 1));\n })(\"touchstart\", function SplitComponent_ng_template_1_div_0_Template_div_touchstart_0_listener($event) {\n i0.ɵɵrestoreView(_r1);\n const index_r2 = i0.ɵɵnextContext().index;\n const ctx_r2 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r2.startMouseDrag($event, index_r2 * 2 + 1, index_r2 + 1));\n })(\"mouseup\", function SplitComponent_ng_template_1_div_0_Template_div_mouseup_0_listener($event) {\n i0.ɵɵrestoreView(_r1);\n const index_r2 = i0.ɵɵnextContext().index;\n const ctx_r2 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r2.clickGutter($event, index_r2 + 1));\n })(\"touchend\", function SplitComponent_ng_template_1_div_0_Template_div_touchend_0_listener($event) {\n i0.ɵɵrestoreView(_r1);\n const index_r2 = i0.ɵɵnextContext().index;\n const ctx_r2 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r2.clickGutter($event, index_r2 + 1));\n });\n i0.ɵɵtemplate(2, SplitComponent_ng_template_1_div_0_ng_container_2_Template, 2, 1, \"ng-container\", 5)(3, SplitComponent_ng_template_1_div_0_ng_template_3_Template, 1, 0, \"ng-template\", null, 1, i0.ɵɵtemplateRefExtractor);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const defaultGutterTpl_r8 = i0.ɵɵreference(4);\n const ctx_r4 = i0.ɵɵnextContext();\n const area_r6 = ctx_r4.$implicit;\n const index_r2 = ctx_r4.index;\n const ctx_r2 = i0.ɵɵnextContext();\n i0.ɵɵstyleProp(\"flex-basis\", ctx_r2.gutterSize, \"px\")(\"order\", index_r2 * 2 + 1);\n i0.ɵɵclassProp(\"as-dragged\", ctx_r2.draggedGutterNum === index_r2 + 1);\n i0.ɵɵattribute(\"aria-label\", ctx_r2.gutterAriaLabel)(\"aria-orientation\", ctx_r2.direction)(\"aria-valuemin\", area_r6.minSize)(\"aria-valuemax\", area_r6.maxSize)(\"aria-valuenow\", area_r6.size === \"*\" ? null : area_r6.size)(\"aria-valuetext\", ctx_r2.getAriaAreaSizeText(area_r6.size));\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngIf\", ctx_r2.customGutter == null ? null : ctx_r2.customGutter.template)(\"ngIfElse\", defaultGutterTpl_r8);\n }\n}\nfunction SplitComponent_ng_template_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, SplitComponent_ng_template_1_div_0_Template, 5, 14, \"div\", 3);\n }\n if (rf & 2) {\n const last_r9 = ctx.last;\n i0.ɵɵproperty(\"ngIf\", last_r9 === false);\n }\n}\nfunction getPointFromEvent(event) {\n // TouchEvent\n if (event.changedTouches !== undefined && event.changedTouches.length > 0) {\n return {\n x: event.changedTouches[0].clientX,\n y: event.changedTouches[0].clientY\n };\n }\n // MouseEvent\n else if (event.clientX !== undefined && event.clientY !== undefined) {\n return {\n x: event.clientX,\n y: event.clientY\n };\n }\n // KeyboardEvent\n else if (event.currentTarget !== undefined) {\n const gutterEl = event.currentTarget;\n return {\n x: gutterEl.offsetLeft,\n y: gutterEl.offsetTop\n };\n }\n return null;\n}\nfunction pointDeltaEquals(lhs, rhs, deltaPx) {\n return Math.abs(lhs.x - rhs.x) <= deltaPx && Math.abs(lhs.y - rhs.y) <= deltaPx;\n}\nfunction getKeyboardEndpoint(event, direction) {\n // Return null if direction keys on the opposite axis were pressed\n if (direction === 'horizontal') {\n switch (event.key) {\n case 'ArrowLeft':\n case 'ArrowRight':\n case 'PageUp':\n case 'PageDown':\n break;\n default:\n return null;\n }\n }\n if (direction === 'vertical') {\n switch (event.key) {\n case 'ArrowUp':\n case 'ArrowDown':\n case 'PageUp':\n case 'PageDown':\n break;\n default:\n return null;\n }\n }\n const gutterEl = event.currentTarget;\n const offset = event.key === 'PageUp' || event.key === 'PageDown' ? 50 * 10 : 50;\n let offsetX = gutterEl.offsetLeft,\n offsetY = gutterEl.offsetTop;\n switch (event.key) {\n case 'ArrowLeft':\n offsetX -= offset;\n break;\n case 'ArrowRight':\n offsetX += offset;\n break;\n case 'ArrowUp':\n offsetY -= offset;\n break;\n case 'ArrowDown':\n offsetY += offset;\n break;\n case 'PageUp':\n if (direction === 'vertical') {\n offsetY -= offset;\n } else {\n offsetX += offset;\n }\n break;\n case 'PageDown':\n if (direction === 'vertical') {\n offsetY += offset;\n } else {\n offsetX -= offset;\n }\n break;\n default:\n return null;\n }\n return {\n x: offsetX,\n y: offsetY\n };\n}\nfunction getElementPixelSize(elRef, direction) {\n const rect = elRef.nativeElement.getBoundingClientRect();\n return direction === 'horizontal' ? rect.width : rect.height;\n}\nfunction getInputBoolean(v) {\n return typeof v === 'boolean' ? v : v !== 'false';\n}\nfunction getInputPositiveNumber(v, defaultValue) {\n if (v === null || v === undefined) return defaultValue;\n v = Number(v);\n return !isNaN(v) && v >= 0 ? v : defaultValue;\n}\nfunction isUserSizesValid(unit, sizes) {\n // All sizes total must be 100 unless there are wildcards.\n // While having wildcards all other sizes sum should be less than 100.\n // There should be maximum one wildcard.\n if (unit === 'percent') {\n const total = sizes.reduce((total, s) => s !== '*' ? total + s : total, 0);\n const wildcardSizeAreas = sizes.filter(size => size === '*');\n if (wildcardSizeAreas.length > 1) {\n return false;\n }\n if (wildcardSizeAreas.length === 1) {\n return total < 100.1;\n }\n return total > 99.9 && total < 100.1;\n }\n // A size at null is mandatory but only one.\n if (unit === 'pixel') {\n return sizes.filter(s => s === '*').length === 1;\n }\n}\nfunction getAreaMinSize(a) {\n if (a.size === '*') {\n return null;\n }\n if (a.component.lockSize === true) {\n return a.size;\n }\n if (a.component.minSize === null) {\n return null;\n }\n return a.component.minSize;\n}\nfunction getAreaMaxSize(a) {\n if (a.size === '*') {\n return null;\n }\n if (a.component.lockSize === true) {\n return a.size;\n }\n if (a.component.maxSize === null) {\n return null;\n }\n if (a.component.maxSize < a.size) {\n return a.size;\n }\n return a.component.maxSize;\n}\nfunction getGutterSideAbsorptionCapacity(unit, sideAreas, pixels, allAreasSizePixel) {\n return sideAreas.reduce((acc, area) => {\n const res = getAreaAbsorptionCapacity(unit, area, acc.remain, allAreasSizePixel);\n acc.list.push(res);\n acc.remain = res.pixelRemain;\n return acc;\n }, {\n remain: pixels,\n list: []\n });\n}\nfunction getAreaAbsorptionCapacity(unit, areaSnapshot, pixels, allAreasSizePixel) {\n // No pain no gain\n if (pixels === 0) {\n return {\n areaSnapshot,\n pixelAbsorb: 0,\n percentAfterAbsorption: areaSnapshot.sizePercentAtStart,\n pixelRemain: 0\n };\n }\n // Area start at zero and need to be reduced, not possible\n if (areaSnapshot.sizePixelAtStart === 0 && pixels < 0) {\n return {\n areaSnapshot,\n pixelAbsorb: 0,\n percentAfterAbsorption: 0,\n pixelRemain: pixels\n };\n }\n if (unit === 'percent') {\n return getAreaAbsorptionCapacityPercent(areaSnapshot, pixels, allAreasSizePixel);\n }\n if (unit === 'pixel') {\n return getAreaAbsorptionCapacityPixel(areaSnapshot, pixels);\n }\n}\nfunction getAreaAbsorptionCapacityPercent(areaSnapshot, pixels, allAreasSizePixel) {\n const tempPixelSize = areaSnapshot.sizePixelAtStart + pixels;\n const tempPercentSize = tempPixelSize / allAreasSizePixel * 100;\n // ENLARGE AREA\n if (pixels > 0) {\n // If maxSize & newSize bigger than it > absorb to max and return remaining pixels\n if (areaSnapshot.area.maxSize !== null && tempPercentSize > areaSnapshot.area.maxSize) {\n // Use area.area.maxSize as newPercentSize and return calculate pixels remaining\n const maxSizePixel = areaSnapshot.area.maxSize / 100 * allAreasSizePixel;\n return {\n areaSnapshot,\n pixelAbsorb: maxSizePixel,\n percentAfterAbsorption: areaSnapshot.area.maxSize,\n pixelRemain: areaSnapshot.sizePixelAtStart + pixels - maxSizePixel\n };\n }\n return {\n areaSnapshot,\n pixelAbsorb: pixels,\n percentAfterAbsorption: tempPercentSize > 100 ? 100 : tempPercentSize,\n pixelRemain: 0\n };\n }\n // REDUCE AREA\n else if (pixels < 0) {\n // If minSize & newSize smaller than it > absorb to min and return remaining pixels\n if (areaSnapshot.area.minSize !== null && tempPercentSize < areaSnapshot.area.minSize) {\n // Use area.area.minSize as newPercentSize and return calculate pixels remaining\n const minSizePixel = areaSnapshot.area.minSize / 100 * allAreasSizePixel;\n return {\n areaSnapshot,\n pixelAbsorb: minSizePixel,\n percentAfterAbsorption: areaSnapshot.area.minSize,\n pixelRemain: areaSnapshot.sizePixelAtStart + pixels - minSizePixel\n };\n }\n // If reduced under zero > return remaining pixels\n else if (tempPercentSize < 0) {\n // Use 0 as newPercentSize and return calculate pixels remaining\n return {\n areaSnapshot,\n pixelAbsorb: -areaSnapshot.sizePixelAtStart,\n percentAfterAbsorption: 0,\n pixelRemain: pixels + areaSnapshot.sizePixelAtStart\n };\n }\n return {\n areaSnapshot,\n pixelAbsorb: pixels,\n percentAfterAbsorption: tempPercentSize,\n pixelRemain: 0\n };\n }\n}\nfunction getAreaAbsorptionCapacityPixel(areaSnapshot, pixels) {\n const tempPixelSize = areaSnapshot.sizePixelAtStart + pixels;\n // ENLARGE AREA\n if (pixels > 0) {\n // If maxSize & newSize bigger than it > absorb to max and return remaining pixels\n if (areaSnapshot.area.maxSize !== null && tempPixelSize > areaSnapshot.area.maxSize) {\n return {\n areaSnapshot,\n pixelAbsorb: areaSnapshot.area.maxSize - areaSnapshot.sizePixelAtStart,\n percentAfterAbsorption: -1,\n pixelRemain: tempPixelSize - areaSnapshot.area.maxSize\n };\n }\n return {\n areaSnapshot,\n pixelAbsorb: pixels,\n percentAfterAbsorption: -1,\n pixelRemain: 0\n };\n }\n // REDUCE AREA\n else if (pixels < 0) {\n // If minSize & newSize smaller than it > absorb to min and return remaining pixels\n if (areaSnapshot.area.minSize !== null && tempPixelSize < areaSnapshot.area.minSize) {\n return {\n areaSnapshot,\n pixelAbsorb: areaSnapshot.area.minSize + pixels - tempPixelSize,\n percentAfterAbsorption: -1,\n pixelRemain: tempPixelSize - areaSnapshot.area.minSize\n };\n }\n // If reduced under zero > return remaining pixels\n else if (tempPixelSize < 0) {\n return {\n areaSnapshot,\n pixelAbsorb: -areaSnapshot.sizePixelAtStart,\n percentAfterAbsorption: -1,\n pixelRemain: pixels + areaSnapshot.sizePixelAtStart\n };\n }\n return {\n areaSnapshot,\n pixelAbsorb: pixels,\n percentAfterAbsorption: -1,\n pixelRemain: 0\n };\n }\n}\nfunction updateAreaSize(unit, item) {\n // Update size except for the wildcard size area\n if (item.areaSnapshot.area.size !== '*') {\n if (unit === 'percent') {\n item.areaSnapshot.area.size = item.percentAfterAbsorption;\n } else if (unit === 'pixel') {\n item.areaSnapshot.area.size = item.areaSnapshot.sizePixelAtStart + item.pixelAbsorb;\n }\n }\n}\nconst ANGULAR_SPLIT_DEFAULT_OPTIONS = new InjectionToken('angular-split-global-config');\nlet SplitGutterDirective = /*#__PURE__*/(() => {\n class SplitGutterDirective {\n constructor(template) {\n this.template = template;\n /**\n * The map holds reference to the drag handle elements inside instances\n * of the provided template.\n */\n this.gutterToHandleElementMap = new Map();\n /**\n * The map holds reference to the excluded drag elements inside instances\n * of the provided template.\n */\n this.gutterToExcludeDragElementMap = new Map();\n }\n canStartDragging(originElement, gutterNum) {\n if (this.gutterToExcludeDragElementMap.has(gutterNum)) {\n const isInsideExclude = this.gutterToExcludeDragElementMap.get(gutterNum).some(gutterExcludeElement => gutterExcludeElement.nativeElement.contains(originElement));\n if (isInsideExclude) {\n return false;\n }\n }\n if (this.gutterToHandleElementMap.has(gutterNum)) {\n return this.gutterToHandleElementMap.get(gutterNum).some(gutterHandleElement => gutterHandleElement.nativeElement.contains(originElement));\n }\n return true;\n }\n addToMap(map, gutterNum, elementRef) {\n if (map.has(gutterNum)) {\n map.get(gutterNum).push(elementRef);\n } else {\n map.set(gutterNum, [elementRef]);\n }\n }\n removedFromMap(map, gutterNum, elementRef) {\n const elements = map.get(gutterNum);\n elements.splice(elements.indexOf(elementRef), 1);\n if (elements.length === 0) {\n map.delete(gutterNum);\n }\n }\n static ngTemplateContextGuard(dir, ctx) {\n return true;\n }\n /** @nocollapse */\n static {\n this.ɵfac = function SplitGutterDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || SplitGutterDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef));\n };\n }\n /** @nocollapse */\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: SplitGutterDirective,\n selectors: [[\"\", \"asSplitGutter\", \"\"]]\n });\n }\n }\n return SplitGutterDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Identifies the gutter by number through DI\n * to allow SplitGutterDragHandleDirective and SplitGutterExcludeFromDragDirective to know\n * the gutter template context without inputs\n */\nconst GUTTER_NUM_TOKEN = new InjectionToken('Gutter num');\n\n/**\n * This directive allows creating a dynamic injector inside ngFor\n * with dynamic gutter num and expose the injector for ngTemplateOutlet usage\n */\nlet SplitGutterDynamicInjectorDirective = /*#__PURE__*/(() => {\n class SplitGutterDynamicInjectorDirective {\n set gutterNum(value) {\n this.vcr.clear();\n const injector = Injector.create({\n providers: [{\n provide: GUTTER_NUM_TOKEN,\n useValue: value\n }],\n parent: this.vcr.injector\n });\n this.vcr.createEmbeddedView(this.templateRef, {\n $implicit: injector\n });\n }\n constructor(vcr, templateRef) {\n this.vcr = vcr;\n this.templateRef = templateRef;\n }\n static ngTemplateContextGuard(dir, ctx) {\n return true;\n }\n /** @nocollapse */\n static {\n this.ɵfac = function SplitGutterDynamicInjectorDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || SplitGutterDynamicInjectorDirective)(i0.ɵɵdirectiveInject(i0.ViewContainerRef), i0.ɵɵdirectiveInject(i0.TemplateRef));\n };\n }\n /** @nocollapse */\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: SplitGutterDynamicInjectorDirective,\n selectors: [[\"\", \"asSplitGutterDynamicInjector\", \"\"]],\n inputs: {\n gutterNum: [0, \"asSplitGutterDynamicInjector\", \"gutterNum\"]\n }\n });\n }\n }\n return SplitGutterDynamicInjectorDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * angular-split\n *\n *\n * PERCENT MODE ([unit]=\"'percent'\")\n * ___________________________________________________________________________________________\n * | A [g1] B [g2] C [g3] D [g4] E |\n * |-------------------------------------------------------------------------------------------|\n * | 20 30 20 15 15 | <-- [size]=\"x\"\n * | 10px 10px 10px 10px | <-- [gutterSize]=\"10\"\n * |calc(20% - 8px) calc(30% - 12px) calc(20% - 8px) calc(15% - 6px) calc(15% - 6px)| <-- CSS flex-basis property (with flex-grow&shrink at 0)\n * | 152px 228px 152px 114px 114px | <-- el.getBoundingClientRect().width\n * |___________________________________________________________________________________________|\n * 800px <-- el.getBoundingClientRect().width\n * flex-basis = calc( { area.size }% - { area.size/100 * nbGutter*gutterSize }px );\n *\n *\n * PIXEL MODE ([unit]=\"'pixel'\")\n * ___________________________________________________________________________________________\n * | A [g1] B [g2] C [g3] D [g4] E |\n * |-------------------------------------------------------------------------------------------|\n * | 100 250 * 150 100 | <-- [size]=\"y\"\n * | 10px 10px 10px 10px | <-- [gutterSize]=\"10\"\n * | 0 0 100px 0 0 250px 1 1 auto 0 0 150px 0 0 100px | <-- CSS flex property (flex-grow/flex-shrink/flex-basis)\n * | 100px 250px 200px 150px 100px | <-- el.getBoundingClientRect().width\n * |___________________________________________________________________________________________|\n * 800px <-- el.getBoundingClientRect().width\n *\n */\nlet SplitComponent = /*#__PURE__*/(() => {\n class SplitComponent {\n set direction(v) {\n this._direction = v === 'vertical' ? 'vertical' : 'horizontal';\n this.renderer.addClass(this.elRef.nativeElement, `as-${this._direction}`);\n this.renderer.removeClass(this.elRef.nativeElement, `as-${this._direction === 'vertical' ? 'horizontal' : 'vertical'}`);\n this.build(false, false);\n }\n get direction() {\n return this._direction;\n }\n set unit(v) {\n this._unit = v === 'pixel' ? 'pixel' : 'percent';\n this.renderer.addClass(this.elRef.nativeElement, `as-${this._unit}`);\n this.renderer.removeClass(this.elRef.nativeElement, `as-${this._unit === 'pixel' ? 'percent' : 'pixel'}`);\n this.build(false, true);\n }\n get unit() {\n return this._unit;\n }\n set gutterSize(v) {\n this._gutterSize = getInputPositiveNumber(v, 11);\n this.build(false, false);\n }\n get gutterSize() {\n return this._gutterSize;\n }\n set gutterStep(v) {\n this._gutterStep = getInputPositiveNumber(v, 1);\n }\n get gutterStep() {\n return this._gutterStep;\n }\n set restrictMove(v) {\n this._restrictMove = getInputBoolean(v);\n }\n get restrictMove() {\n return this._restrictMove;\n }\n set useTransition(v) {\n this._useTransition = getInputBoolean(v);\n if (this._useTransition) {\n this.renderer.addClass(this.elRef.nativeElement, 'as-transition');\n } else {\n this.renderer.removeClass(this.elRef.nativeElement, 'as-transition');\n }\n }\n get useTransition() {\n return this._useTransition;\n }\n set disabled(v) {\n this._disabled = getInputBoolean(v);\n if (this._disabled) {\n this.renderer.addClass(this.elRef.nativeElement, 'as-disabled');\n } else {\n this.renderer.removeClass(this.elRef.nativeElement, 'as-disabled');\n }\n }\n get disabled() {\n return this._disabled;\n }\n set dir(v) {\n this._dir = v === 'rtl' ? 'rtl' : 'ltr';\n this.renderer.setAttribute(this.elRef.nativeElement, 'dir', this._dir);\n }\n get dir() {\n return this._dir;\n }\n set gutterDblClickDuration(v) {\n this._gutterDblClickDuration = getInputPositiveNumber(v, 0);\n }\n get gutterDblClickDuration() {\n return this._gutterDblClickDuration;\n }\n get transitionEnd() {\n return new Observable(subscriber => this.transitionEndSubscriber = subscriber).pipe(debounceTime(20));\n }\n constructor(ngZone, elRef, cdRef, renderer, globalConfig) {\n this.ngZone = ngZone;\n this.elRef = elRef;\n this.cdRef = cdRef;\n this.renderer = renderer;\n this.gutterClickDeltaPx = 2;\n this._config = {\n direction: 'horizontal',\n unit: 'percent',\n gutterSize: 11,\n gutterStep: 1,\n restrictMove: false,\n useTransition: false,\n disabled: false,\n dir: 'ltr',\n gutterDblClickDuration: 0\n };\n this.dragStart = new EventEmitter(false);\n this.dragEnd = new EventEmitter(false);\n this.gutterClick = new EventEmitter(false);\n this.gutterDblClick = new EventEmitter(false);\n this.dragProgressSubject = new Subject();\n this.dragProgress$ = this.dragProgressSubject.asObservable();\n this.isDragging = false;\n this.isWaitingClear = false;\n this.isWaitingInitialMove = false;\n this.dragListeners = [];\n this.snapshot = null;\n this.startPoint = null;\n this.endPoint = null;\n this.displayedAreas = [];\n this.hiddenAreas = [];\n this._clickTimeout = null;\n this.draggedGutterNum = undefined;\n // To force adding default class, could be override by user @Input() or not\n this.direction = this._direction;\n this._config = globalConfig ? Object.assign(this._config, globalConfig) : this._config;\n Object.keys(this._config).forEach(property => {\n this[property] = this._config[property];\n });\n }\n ngAfterViewInit() {\n this.ngZone.runOutsideAngular(() => {\n // To avoid transition at first rendering\n setTimeout(() => this.renderer.addClass(this.elRef.nativeElement, 'as-init'));\n });\n }\n getNbGutters() {\n return this.displayedAreas.length === 0 ? 0 : this.displayedAreas.length - 1;\n }\n addArea(component) {\n const newArea = {\n component,\n order: 0,\n size: 0,\n minSize: null,\n maxSize: null,\n sizeBeforeCollapse: null,\n gutterBeforeCollapse: 0\n };\n if (component.visible === true) {\n this.displayedAreas.push(newArea);\n this.build(true, true);\n } else {\n this.hiddenAreas.push(newArea);\n }\n }\n removeArea(component) {\n if (this.displayedAreas.some(a => a.component === component)) {\n const area = this.displayedAreas.find(a => a.component === component);\n this.displayedAreas.splice(this.displayedAreas.indexOf(area), 1);\n this.build(true, true);\n } else if (this.hiddenAreas.some(a => a.component === component)) {\n const area = this.hiddenAreas.find(a => a.component === component);\n this.hiddenAreas.splice(this.hiddenAreas.indexOf(area), 1);\n }\n }\n updateArea(component, resetOrders, resetSizes) {\n if (component.visible === true) {\n this.build(resetOrders, resetSizes);\n }\n }\n showArea(component) {\n const area = this.hiddenAreas.find(a => a.component === component);\n if (area === undefined) {\n return;\n }\n const areas = this.hiddenAreas.splice(this.hiddenAreas.indexOf(area), 1);\n this.displayedAreas.push(...areas);\n this.build(true, true);\n }\n hideArea(comp) {\n const area = this.displayedAreas.find(a => a.component === comp);\n if (area === undefined) {\n return;\n }\n const areas = this.displayedAreas.splice(this.displayedAreas.indexOf(area), 1);\n areas.forEach(item => {\n item.order = 0;\n item.size = 0;\n });\n this.hiddenAreas.push(...areas);\n this.build(true, true);\n }\n getVisibleAreaSizes() {\n return this.displayedAreas.map(a => a.size);\n }\n setVisibleAreaSizes(sizes) {\n if (sizes.length !== this.displayedAreas.length) {\n return false;\n }\n const formattedSizes = sizes.map(s => getInputPositiveNumber(s, '*'));\n const isValid = isUserSizesValid(this.unit, formattedSizes);\n if (isValid === false) {\n return false;\n }\n // @@ts-expect-error\n this.displayedAreas.forEach((area, i) => area.component.size = formattedSizes[i]);\n this.build(false, true);\n return true;\n }\n build(resetOrders, resetSizes) {\n this.stopDragging();\n // ¤ AREAS ORDER\n if (resetOrders === true) {\n // If user provided 'order' for each area, use it to sort them.\n if (this.displayedAreas.every(a => a.component.order !== null)) {\n this.displayedAreas.sort((a, b) => a.component.order - b.component.order);\n }\n // Then set real order with multiples of 2, numbers between will be used by gutters.\n this.displayedAreas.forEach((area, i) => {\n area.order = i * 2;\n area.component.setStyleOrder(area.order);\n });\n }\n // ¤ AREAS SIZE\n if (resetSizes === true) {\n const useUserSizes = isUserSizesValid(this.unit, this.displayedAreas.map(a => a.component.size));\n switch (this.unit) {\n case 'percent':\n {\n const defaultSize = 100 / this.displayedAreas.length;\n this.displayedAreas.forEach(area => {\n area.size = useUserSizes ? area.component.size : defaultSize;\n area.minSize = getAreaMinSize(area);\n area.maxSize = getAreaMaxSize(area);\n });\n break;\n }\n case 'pixel':\n {\n if (useUserSizes) {\n this.displayedAreas.forEach(area => {\n area.size = area.component.size;\n area.minSize = getAreaMinSize(area);\n area.maxSize = getAreaMaxSize(area);\n });\n } else {\n const wildcardSizeAreas = this.displayedAreas.filter(a => a.component.size === '*');\n // No wildcard area > Need to select one arbitrarily > first\n if (wildcardSizeAreas.length === 0 && this.displayedAreas.length > 0) {\n this.displayedAreas.forEach((area, i) => {\n area.size = i === 0 ? '*' : area.component.size;\n area.minSize = i === 0 ? area.component.minSize : getAreaMinSize(area);\n area.maxSize = i === 0 ? null : getAreaMaxSize(area);\n });\n } else if (wildcardSizeAreas.length > 1) {\n // More than one wildcard area > Need to keep only one arbitrarily > first\n let alreadyGotOne = false;\n this.displayedAreas.forEach(area => {\n if (area.component.size === '*') {\n if (alreadyGotOne === false) {\n area.size = '*';\n area.minSize = null;\n area.maxSize = null;\n alreadyGotOne = true;\n } else {\n area.size = 100;\n area.minSize = null;\n area.maxSize = null;\n }\n } else {\n area.size = area.component.size;\n area.minSize = getAreaMinSize(area);\n area.maxSize = getAreaMaxSize(area);\n }\n });\n }\n }\n break;\n }\n }\n }\n this.refreshStyleSizes();\n this.cdRef.markForCheck();\n }\n refreshStyleSizes() {\n ///////////////////////////////////////////\n // PERCENT MODE\n if (this.unit === 'percent') {\n // Only one area > flex-basis 100%\n if (this.displayedAreas.length === 1) {\n this.displayedAreas[0].component.setStyleFlex(0, 0, `100%`, false, false);\n } else {\n // Multiple areas > use each percent basis\n const sumGutterSize = this.getNbGutters() * this.gutterSize;\n this.displayedAreas.forEach(area => {\n // Area with wildcard size\n if (area.size === '*') {\n if (this.displayedAreas.length === 1) {\n area.component.setStyleFlex(1, 1, `100%`, false, false);\n } else {\n area.component.setStyleFlex(1, 1, `auto`, false, false);\n }\n } else {\n area.component.setStyleFlex(0, 0, `calc( ${area.size}% - ${area.size / 100 * sumGutterSize}px )`, area.minSize !== null && area.minSize === area.size, area.maxSize !== null && area.maxSize === area.size);\n }\n });\n }\n } else if (this.unit === 'pixel') {\n ///////////////////////////////////////////\n // PIXEL MODE\n this.displayedAreas.forEach(area => {\n // Area with wildcard size\n if (area.size === '*') {\n if (this.displayedAreas.length === 1) {\n area.component.setStyleFlex(1, 1, `100%`, false, false);\n } else {\n area.component.setStyleFlex(1, 1, `auto`, false, false);\n }\n } else {\n // Area with pixel size\n // Only one area > flex-basis 100%\n if (this.displayedAreas.length === 1) {\n area.component.setStyleFlex(0, 0, `100%`, false, false);\n } else {\n // Multiple areas > use each pixel basis\n area.component.setStyleFlex(0, 0, `${area.size}px`, area.minSize !== null && area.minSize === area.size, area.maxSize !== null && area.maxSize === area.size);\n }\n }\n });\n }\n }\n clickGutter(event, gutterNum) {\n const tempPoint = getPointFromEvent(event);\n // Be sure mouseup/touchend happened if touch/cursor is not moved.\n if (this.startPoint && pointDeltaEquals(this.startPoint, tempPoint, this.gutterClickDeltaPx) && (!this.isDragging || this.isWaitingInitialMove)) {\n // If timeout in progress and new click > clearTimeout & dblClickEvent\n if (this._clickTimeout !== null) {\n window.clearTimeout(this._clickTimeout);\n this._clickTimeout = null;\n this.notify('dblclick', gutterNum);\n this.stopDragging();\n } else {\n // Else start timeout to call clickEvent at end\n this._clickTimeout = window.setTimeout(() => {\n this._clickTimeout = null;\n this.notify('click', gutterNum);\n this.stopDragging();\n }, this.gutterDblClickDuration);\n }\n }\n }\n startKeyboardDrag(event, gutterOrder, gutterNum) {\n if (this.disabled === true || this.isWaitingClear === true) {\n return;\n }\n const endPoint = getKeyboardEndpoint(event, this.direction);\n if (endPoint === null) {\n return;\n }\n this.endPoint = endPoint;\n this.startPoint = getPointFromEvent(event);\n event.preventDefault();\n event.stopPropagation();\n this.setupForDragEvent(gutterOrder, gutterNum);\n this.startDragging();\n this.drag();\n this.stopDragging();\n }\n startMouseDrag(event, gutterOrder, gutterNum) {\n if (this.customGutter && !this.customGutter.canStartDragging(event.target, gutterNum)) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n this.startPoint = getPointFromEvent(event);\n if (this.startPoint === null || this.disabled === true || this.isWaitingClear === true) {\n return;\n }\n this.setupForDragEvent(gutterOrder, gutterNum);\n this.dragListeners.push(this.renderer.listen('document', 'mouseup', this.stopDragging.bind(this)));\n this.dragListeners.push(this.renderer.listen('document', 'touchend', this.stopDragging.bind(this)));\n this.dragListeners.push(this.renderer.listen('document', 'touchcancel', this.stopDragging.bind(this)));\n this.ngZone.runOutsideAngular(() => {\n this.dragListeners.push(this.renderer.listen('document', 'mousemove', this.mouseDragEvent.bind(this)));\n this.dragListeners.push(this.renderer.listen('document', 'touchmove', this.mouseDragEvent.bind(this)));\n });\n this.startDragging();\n }\n setupForDragEvent(gutterOrder, gutterNum) {\n this.snapshot = {\n gutterNum,\n lastSteppedOffset: 0,\n allAreasSizePixel: getElementPixelSize(this.elRef, this.direction) - this.getNbGutters() * this.gutterSize,\n allInvolvedAreasSizePercent: 100,\n areasBeforeGutter: [],\n areasAfterGutter: []\n };\n this.displayedAreas.forEach(area => {\n const areaSnapshot = {\n area,\n sizePixelAtStart: getElementPixelSize(area.component.elRef, this.direction),\n sizePercentAtStart: this.unit === 'percent' ? area.size : -1 // If pixel mode, anyway, will not be used.\n };\n if (area.order < gutterOrder) {\n if (this.restrictMove === true) {\n this.snapshot.areasBeforeGutter = [areaSnapshot];\n } else {\n this.snapshot.areasBeforeGutter.unshift(areaSnapshot);\n }\n } else if (area.order > gutterOrder) {\n if (this.restrictMove === true) {\n if (this.snapshot.areasAfterGutter.length === 0) {\n this.snapshot.areasAfterGutter = [areaSnapshot];\n }\n } else {\n this.snapshot.areasAfterGutter.push(areaSnapshot);\n }\n }\n });\n // allInvolvedAreasSizePercent is only relevant if there is restrictMove as otherwise the sum\n // is always 100.\n // Pixel mode doesn't have browser % problem which is the origin of allInvolvedAreasSizePercent.\n if (this.restrictMove && this.unit === 'percent') {\n const areaSnapshotBefore = this.snapshot.areasBeforeGutter[0];\n const areaSnapshotAfter = this.snapshot.areasAfterGutter[0];\n // We have a wildcard size area beside the dragged gutter.\n // In this case we can only calculate the size based on the move restricted areas.\n if (areaSnapshotBefore.area.size === '*' || areaSnapshotAfter.area.size === '*') {\n const notInvolvedAreasSizesPercent = this.displayedAreas.reduce((accum, area) => {\n if (areaSnapshotBefore.area !== area && areaSnapshotAfter.area !== area) {\n return accum + area.size;\n }\n return accum;\n }, 0);\n this.snapshot.allInvolvedAreasSizePercent = 100 - notInvolvedAreasSizesPercent;\n } else {\n // No wildcard or not beside the gutter - we can just sum the areas beside gutter percents.\n this.snapshot.allInvolvedAreasSizePercent = [...this.snapshot.areasBeforeGutter, ...this.snapshot.areasAfterGutter].reduce((t, a) => t + a.sizePercentAtStart, 0);\n }\n }\n if (this.snapshot.areasBeforeGutter.length === 0 || this.snapshot.areasAfterGutter.length === 0) {\n return;\n }\n }\n startDragging() {\n this.displayedAreas.forEach(area => area.component.lockEvents());\n this.isDragging = true;\n this.isWaitingInitialMove = true;\n }\n mouseDragEvent(event) {\n event.preventDefault();\n event.stopPropagation();\n const tempPoint = getPointFromEvent(event);\n if (this._clickTimeout !== null && !pointDeltaEquals(this.startPoint, tempPoint, this.gutterClickDeltaPx)) {\n window.clearTimeout(this._clickTimeout);\n this._clickTimeout = null;\n }\n if (this.isDragging === false) {\n return;\n }\n this.endPoint = getPointFromEvent(event);\n if (this.endPoint === null) {\n return;\n }\n this.drag();\n }\n drag() {\n if (this.isWaitingInitialMove) {\n if (this.startPoint.x !== this.endPoint.x || this.startPoint.y !== this.endPoint.y) {\n this.ngZone.run(() => {\n this.isWaitingInitialMove = false;\n this.renderer.addClass(this.elRef.nativeElement, 'as-dragging');\n this.draggedGutterNum = this.snapshot.gutterNum;\n this.cdRef.markForCheck();\n this.notify('start', this.snapshot.gutterNum);\n });\n } else {\n return;\n }\n }\n // Calculate steppedOffset\n let offset = this.direction === 'horizontal' ? this.startPoint.x - this.endPoint.x : this.startPoint.y - this.endPoint.y;\n // RTL requires negative offset only in horizontal mode as in vertical\n // RTL has no effect on drag direction.\n if (this.dir === 'rtl' && this.direction === 'horizontal') {\n offset = -offset;\n }\n const steppedOffset = Math.round(offset / this.gutterStep) * this.gutterStep;\n if (steppedOffset === this.snapshot.lastSteppedOffset) {\n return;\n }\n this.snapshot.lastSteppedOffset = steppedOffset;\n // Need to know if each gutter side areas could reacts to steppedOffset\n let areasBefore = getGutterSideAbsorptionCapacity(this.unit, this.snapshot.areasBeforeGutter, -steppedOffset, this.snapshot.allAreasSizePixel);\n let areasAfter = getGutterSideAbsorptionCapacity(this.unit, this.snapshot.areasAfterGutter, steppedOffset, this.snapshot.allAreasSizePixel);\n // Each gutter side areas can't absorb all offset\n if (areasBefore.remain !== 0 && areasAfter.remain !== 0) {\n // TODO: fix this emty block\n if (Math.abs(areasBefore.remain) === Math.abs(areasAfter.remain)) {\n /* empty */\n } else if (Math.abs(areasBefore.remain) > Math.abs(areasAfter.remain)) {\n areasAfter = getGutterSideAbsorptionCapacity(this.unit, this.snapshot.areasAfterGutter, steppedOffset + areasBefore.remain, this.snapshot.allAreasSizePixel);\n } else {\n areasBefore = getGutterSideAbsorptionCapacity(this.unit, this.snapshot.areasBeforeGutter, -(steppedOffset - areasAfter.remain), this.snapshot.allAreasSizePixel);\n }\n } else if (areasBefore.remain !== 0) {\n // Areas before gutter can't absorbs all offset > need to recalculate sizes for areas after gutter.\n areasAfter = getGutterSideAbsorptionCapacity(this.unit, this.snapshot.areasAfterGutter, steppedOffset + areasBefore.remain, this.snapshot.allAreasSizePixel);\n } else if (areasAfter.remain !== 0) {\n // Areas after gutter can't absorbs all offset > need to recalculate sizes for areas before gutter.\n areasBefore = getGutterSideAbsorptionCapacity(this.unit, this.snapshot.areasBeforeGutter, -(steppedOffset - areasAfter.remain), this.snapshot.allAreasSizePixel);\n }\n if (this.unit === 'percent') {\n // Hack because of browser messing up with sizes using calc(X% - Ypx) -> el.getBoundingClientRect()\n // If not there, playing with gutters makes total going down to 99.99875% then 99.99286%, 99.98986%,..\n const all = [...areasBefore.list, ...areasAfter.list];\n const wildcardArea = all.find(a => a.percentAfterAbsorption === '*');\n // In case we have a wildcard area - always align the percents on the wildcard area.\n const areaToReset = wildcardArea ?? all.find(a => a.percentAfterAbsorption !== 0 && a.percentAfterAbsorption !== a.areaSnapshot.area.minSize && a.percentAfterAbsorption !== a.areaSnapshot.area.maxSize);\n if (areaToReset) {\n areaToReset.percentAfterAbsorption = this.snapshot.allInvolvedAreasSizePercent - all.filter(a => a !== areaToReset).reduce((total, a) => total + a.percentAfterAbsorption, 0);\n }\n }\n // Now we know areas could absorb steppedOffset, time to really update sizes\n areasBefore.list.forEach(item => updateAreaSize(this.unit, item));\n areasAfter.list.forEach(item => updateAreaSize(this.unit, item));\n this.refreshStyleSizes();\n this.notify('progress', this.snapshot.gutterNum);\n }\n stopDragging(event) {\n if (event) {\n event.preventDefault();\n event.stopPropagation();\n }\n if (this.isDragging === false) {\n return;\n }\n this.displayedAreas.forEach(area => area.component.unlockEvents());\n while (this.dragListeners.length > 0) {\n const fct = this.dragListeners.pop();\n if (fct) {\n fct();\n }\n }\n // Warning: Have to be before \"notify('end')\"\n // because \"notify('end')\"\" can be linked to \"[size]='x'\" > \"build()\" > \"stopDragging()\"\n this.isDragging = false;\n // If moved from starting point, notify end\n if (this.isWaitingInitialMove === false) {\n this.notify('end', this.snapshot.gutterNum);\n }\n this.renderer.removeClass(this.elRef.nativeElement, 'as-dragging');\n this.draggedGutterNum = undefined;\n this.cdRef.markForCheck();\n this.snapshot = null;\n this.isWaitingClear = true;\n // Needed to let (click)=\"clickGutter(...)\" event run and verify if mouse moved or not\n this.ngZone.runOutsideAngular(() => {\n setTimeout(() => {\n this.startPoint = null;\n this.endPoint = null;\n this.isWaitingClear = false;\n });\n });\n }\n notify(type, gutterNum) {\n const sizes = this.getVisibleAreaSizes();\n if (type === 'start') {\n this.dragStart.emit({\n gutterNum,\n sizes\n });\n } else if (type === 'end') {\n this.dragEnd.emit({\n gutterNum,\n sizes\n });\n } else if (type === 'click') {\n this.gutterClick.emit({\n gutterNum,\n sizes\n });\n } else if (type === 'dblclick') {\n this.gutterDblClick.emit({\n gutterNum,\n sizes\n });\n } else if (type === 'transitionEnd') {\n if (this.transitionEndSubscriber) {\n this.ngZone.run(() => this.transitionEndSubscriber.next(sizes));\n }\n } else if (type === 'progress') {\n // Stay outside zone to allow users do what they want about change detection mechanism.\n this.dragProgressSubject.next({\n gutterNum,\n sizes\n });\n }\n }\n ngOnDestroy() {\n this.stopDragging();\n }\n collapseArea(comp, newSize, gutter) {\n const area = this.displayedAreas.find(a => a.component === comp);\n if (area === undefined) {\n return;\n }\n const whichGutter = gutter === 'right' ? 1 : -1;\n if (!area.sizeBeforeCollapse) {\n area.sizeBeforeCollapse = area.size;\n area.gutterBeforeCollapse = whichGutter;\n }\n area.size = newSize;\n const gtr = this.gutterEls.find(f => f.nativeElement.style.order === `${area.order + whichGutter}`);\n if (gtr) {\n this.renderer.addClass(gtr.nativeElement, 'as-split-gutter-collapsed');\n }\n this.updateArea(comp, false, false);\n }\n expandArea(comp) {\n const area = this.displayedAreas.find(a => a.component === comp);\n if (area === undefined) {\n return;\n }\n if (!area.sizeBeforeCollapse) {\n return;\n }\n area.size = area.sizeBeforeCollapse;\n area.sizeBeforeCollapse = null;\n const gtr = this.gutterEls.find(f => f.nativeElement.style.order === `${area.order + area.gutterBeforeCollapse}`);\n if (gtr) {\n this.renderer.removeClass(gtr.nativeElement, 'as-split-gutter-collapsed');\n }\n this.updateArea(comp, false, false);\n }\n getAriaAreaSizeText(size) {\n if (size === '*') {\n return null;\n }\n return size.toFixed(0) + ' ' + this.unit;\n }\n /** @nocollapse */\n static {\n this.ɵfac = function SplitComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || SplitComponent)(i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(ANGULAR_SPLIT_DEFAULT_OPTIONS, 8));\n };\n }\n /** @nocollapse */\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: SplitComponent,\n selectors: [[\"as-split\"]],\n contentQueries: function SplitComponent_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, SplitGutterDirective, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.customGutter = _t.first);\n }\n },\n viewQuery: function SplitComponent_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(_c0, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.gutterEls = _t);\n }\n },\n inputs: {\n direction: \"direction\",\n unit: \"unit\",\n gutterSize: \"gutterSize\",\n gutterStep: \"gutterStep\",\n restrictMove: \"restrictMove\",\n useTransition: \"useTransition\",\n disabled: \"disabled\",\n dir: \"dir\",\n gutterDblClickDuration: \"gutterDblClickDuration\",\n gutterClickDeltaPx: \"gutterClickDeltaPx\",\n gutterAriaLabel: \"gutterAriaLabel\"\n },\n outputs: {\n transitionEnd: \"transitionEnd\",\n dragStart: \"dragStart\",\n dragEnd: \"dragEnd\",\n gutterClick: \"gutterClick\",\n gutterDblClick: \"gutterDblClick\"\n },\n exportAs: [\"asSplit\"],\n ngContentSelectors: _c1,\n decls: 2,\n vars: 1,\n consts: [[\"gutterEls\", \"\"], [\"defaultGutterTpl\", \"\"], [\"ngFor\", \"\", 3, \"ngForOf\"], [\"role\", \"separator\", \"tabindex\", \"0\", \"class\", \"as-split-gutter\", 3, \"as-dragged\", \"flex-basis\", \"order\", \"keydown\", \"mousedown\", \"touchstart\", \"mouseup\", \"touchend\", 4, \"ngIf\"], [\"role\", \"separator\", \"tabindex\", \"0\", 1, \"as-split-gutter\", 3, \"keydown\", \"mousedown\", \"touchstart\", \"mouseup\", \"touchend\"], [4, \"ngIf\", \"ngIfElse\"], [4, \"asSplitGutterDynamicInjector\"], [4, \"ngTemplateOutlet\", \"ngTemplateOutletContext\", \"ngTemplateOutletInjector\"], [1, \"as-split-gutter-icon\"]],\n template: function SplitComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵprojection(0);\n i0.ɵɵtemplate(1, SplitComponent_ng_template_1_Template, 1, 1, \"ng-template\", 2);\n }\n if (rf & 2) {\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngForOf\", ctx.displayedAreas);\n }\n },\n dependencies: [i1.NgForOf, i1.NgIf, i1.NgTemplateOutlet, SplitGutterDynamicInjectorDirective],\n styles: [\"[_nghost-%COMP%]{display:flex;flex-wrap:nowrap;justify-content:flex-start;align-items:stretch;overflow:hidden;width:100%;height:100%}[_nghost-%COMP%] > .as-split-gutter[_ngcontent-%COMP%]{border:none;flex-grow:0;flex-shrink:0;background-color:#eee;display:flex;align-items:center;justify-content:center}[_nghost-%COMP%] > .as-split-gutter.as-split-gutter-collapsed[_ngcontent-%COMP%]{flex-basis:1px!important;pointer-events:none}[_nghost-%COMP%] > .as-split-gutter[_ngcontent-%COMP%] > .as-split-gutter-icon[_ngcontent-%COMP%]{width:100%;height:100%;background-position:center center;background-repeat:no-repeat}[_nghost-%COMP%] >.as-split-area{flex-grow:0;flex-shrink:0;overflow-x:hidden;overflow-y:auto}[_nghost-%COMP%] >.as-split-area.as-hidden{flex:0 1 0px!important;overflow-x:hidden;overflow-y:hidden}[_nghost-%COMP%] >.as-split-area .iframe-fix{position:absolute;top:0;left:0;width:100%;height:100%}.as-horizontal[_nghost-%COMP%]{flex-direction:row}.as-horizontal[_nghost-%COMP%] > .as-split-gutter[_ngcontent-%COMP%]{flex-direction:row;cursor:col-resize;height:100%}.as-horizontal[_nghost-%COMP%] > .as-split-gutter[_ngcontent-%COMP%] > .as-split-gutter-icon[_ngcontent-%COMP%]{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAeCAYAAADkftS9AAAAIklEQVQoU2M4c+bMfxAGAgYYmwGrIIiDjrELjpo5aiZeMwF+yNnOs5KSvgAAAABJRU5ErkJggg==)}.as-horizontal[_nghost-%COMP%] >.as-split-area{height:100%}.as-vertical[_nghost-%COMP%]{flex-direction:column}.as-vertical[_nghost-%COMP%] > .as-split-gutter[_ngcontent-%COMP%]{flex-direction:column;cursor:row-resize;width:100%}.as-vertical[_nghost-%COMP%] > .as-split-gutter[_ngcontent-%COMP%] .as-split-gutter-icon[_ngcontent-%COMP%]{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAFCAMAAABl/6zIAAAABlBMVEUAAADMzMzIT8AyAAAAAXRSTlMAQObYZgAAABRJREFUeAFjYGRkwIMJSeMHlBkOABP7AEGzSuPKAAAAAElFTkSuQmCC)}.as-vertical[_nghost-%COMP%] >.as-split-area{width:100%}.as-vertical[_nghost-%COMP%] >.as-split-area.as-hidden{max-width:0}.as-disabled[_nghost-%COMP%] > .as-split-gutter[_ngcontent-%COMP%]{cursor:default}.as-disabled[_nghost-%COMP%] > .as-split-gutter[_ngcontent-%COMP%] .as-split-gutter-icon[_ngcontent-%COMP%]{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAeCAYAAADkftS9AAAAIklEQVQoU2M4c+bMfxAGAgYYmwGrIIiDjrELjpo5aiZeMwF+yNnOs5KSvgAAAABJRU5ErkJggg==)}.as-transition.as-init[_nghost-%COMP%]:not(.as-dragging) > .as-split-gutter[_ngcontent-%COMP%], .as-transition.as-init[_nghost-%COMP%]:not(.as-dragging) >.as-split-area{transition:flex-basis .3s}\"],\n changeDetection: 0\n });\n }\n }\n return SplitComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet SplitAreaDirective = /*#__PURE__*/(() => {\n class SplitAreaDirective {\n set order(v) {\n this._order = getInputPositiveNumber(v, null);\n this.split.updateArea(this, true, false);\n }\n get order() {\n return this._order;\n }\n set size(v) {\n this._size = getInputPositiveNumber(v, '*');\n this.split.updateArea(this, false, true);\n }\n get size() {\n return this._size;\n }\n set minSize(v) {\n this._minSize = getInputPositiveNumber(v, null);\n this.split.updateArea(this, false, true);\n }\n get minSize() {\n return this._minSize;\n }\n set maxSize(v) {\n this._maxSize = getInputPositiveNumber(v, null);\n this.split.updateArea(this, false, true);\n }\n get maxSize() {\n return this._maxSize;\n }\n set lockSize(v) {\n this._lockSize = getInputBoolean(v);\n this.split.updateArea(this, false, true);\n }\n get lockSize() {\n return this._lockSize;\n }\n set visible(v) {\n this._visible = getInputBoolean(v);\n if (this._visible) {\n this.split.showArea(this);\n this.renderer.removeClass(this.elRef.nativeElement, 'as-hidden');\n } else {\n this.split.hideArea(this);\n this.renderer.addClass(this.elRef.nativeElement, 'as-hidden');\n }\n }\n get visible() {\n return this._visible;\n }\n constructor(ngZone, renderer, split, elRef) {\n this.ngZone = ngZone;\n this.renderer = renderer;\n this.split = split;\n this.elRef = elRef;\n this._order = null;\n this._size = '*';\n this._minSize = null;\n this._maxSize = null;\n this._lockSize = false;\n this._visible = true;\n this.lockListeners = [];\n this.renderer.addClass(this.elRef.nativeElement, 'as-split-area');\n }\n ngOnInit() {\n this.split.addArea(this);\n this.ngZone.runOutsideAngular(() => {\n this.transitionListener = this.renderer.listen(this.elRef.nativeElement, 'transitionend', event => {\n // Limit only flex-basis transition to trigger the event\n if (event.propertyName === 'flex-basis') {\n this.split.notify('transitionEnd', -1);\n }\n });\n });\n const iframeFixDiv = this.renderer.createElement('div');\n this.renderer.addClass(iframeFixDiv, 'iframe-fix');\n this.dragStartSubscription = this.split.dragStart.subscribe(() => {\n this.renderer.setStyle(this.elRef.nativeElement, 'position', 'relative');\n this.renderer.appendChild(this.elRef.nativeElement, iframeFixDiv);\n });\n this.dragEndSubscription = this.split.dragEnd.subscribe(() => {\n this.renderer.removeStyle(this.elRef.nativeElement, 'position');\n this.renderer.removeChild(this.elRef.nativeElement, iframeFixDiv);\n });\n }\n setStyleOrder(value) {\n this.renderer.setStyle(this.elRef.nativeElement, 'order', value);\n }\n setStyleFlex(grow, shrink, basis, isMin, isMax) {\n // Need 3 separated properties to work on IE11 (https://github.com/angular/flex-layout/issues/323)\n this.renderer.setStyle(this.elRef.nativeElement, 'flex-grow', grow);\n this.renderer.setStyle(this.elRef.nativeElement, 'flex-shrink', shrink);\n this.renderer.setStyle(this.elRef.nativeElement, 'flex-basis', basis);\n if (isMin === true) {\n this.renderer.addClass(this.elRef.nativeElement, 'as-min');\n } else {\n this.renderer.removeClass(this.elRef.nativeElement, 'as-min');\n }\n if (isMax === true) {\n this.renderer.addClass(this.elRef.nativeElement, 'as-max');\n } else {\n this.renderer.removeClass(this.elRef.nativeElement, 'as-max');\n }\n }\n lockEvents() {\n this.ngZone.runOutsideAngular(() => {\n this.lockListeners.push(this.renderer.listen(this.elRef.nativeElement, 'selectstart', () => false));\n this.lockListeners.push(this.renderer.listen(this.elRef.nativeElement, 'dragstart', () => false));\n });\n }\n unlockEvents() {\n while (this.lockListeners.length > 0) {\n const fct = this.lockListeners.pop();\n if (fct) {\n fct();\n }\n }\n }\n ngOnDestroy() {\n this.unlockEvents();\n if (this.transitionListener) {\n this.transitionListener();\n }\n this.dragStartSubscription?.unsubscribe();\n this.dragEndSubscription?.unsubscribe();\n this.split.removeArea(this);\n }\n collapse(newSize = 0, gutter = 'right') {\n this.split.collapseArea(this, newSize, gutter);\n }\n expand() {\n this.split.expandArea(this);\n }\n /** @nocollapse */\n static {\n this.ɵfac = function SplitAreaDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || SplitAreaDirective)(i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(SplitComponent), i0.ɵɵdirectiveInject(i0.ElementRef));\n };\n }\n /** @nocollapse */\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: SplitAreaDirective,\n selectors: [[\"as-split-area\"], [\"\", \"as-split-area\", \"\"]],\n inputs: {\n order: \"order\",\n size: \"size\",\n minSize: \"minSize\",\n maxSize: \"maxSize\",\n lockSize: \"lockSize\",\n visible: \"visible\"\n },\n exportAs: [\"asSplitArea\"]\n });\n }\n }\n return SplitAreaDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet SplitGutterDragHandleDirective = /*#__PURE__*/(() => {\n class SplitGutterDragHandleDirective {\n constructor(gutterNum, elementRef, gutterDir) {\n this.gutterNum = gutterNum;\n this.elementRef = elementRef;\n this.gutterDir = gutterDir;\n }\n ngOnInit() {\n this.gutterDir.addToMap(this.gutterDir.gutterToHandleElementMap, this.gutterNum, this.elementRef);\n }\n ngOnDestroy() {\n this.gutterDir.removedFromMap(this.gutterDir.gutterToHandleElementMap, this.gutterNum, this.elementRef);\n }\n /** @nocollapse */\n static {\n this.ɵfac = function SplitGutterDragHandleDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || SplitGutterDragHandleDirective)(i0.ɵɵdirectiveInject(GUTTER_NUM_TOKEN), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(SplitGutterDirective));\n };\n }\n /** @nocollapse */\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: SplitGutterDragHandleDirective,\n selectors: [[\"\", \"asSplitGutterDragHandle\", \"\"]]\n });\n }\n }\n return SplitGutterDragHandleDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet SplitGutterExcludeFromDragDirective = /*#__PURE__*/(() => {\n class SplitGutterExcludeFromDragDirective {\n constructor(gutterNum, elementRef, gutterDir) {\n this.gutterNum = gutterNum;\n this.elementRef = elementRef;\n this.gutterDir = gutterDir;\n }\n ngOnInit() {\n this.gutterDir.addToMap(this.gutterDir.gutterToExcludeDragElementMap, this.gutterNum, this.elementRef);\n }\n ngOnDestroy() {\n this.gutterDir.removedFromMap(this.gutterDir.gutterToExcludeDragElementMap, this.gutterNum, this.elementRef);\n }\n /** @nocollapse */\n static {\n this.ɵfac = function SplitGutterExcludeFromDragDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || SplitGutterExcludeFromDragDirective)(i0.ɵɵdirectiveInject(GUTTER_NUM_TOKEN), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(SplitGutterDirective));\n };\n }\n /** @nocollapse */\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: SplitGutterExcludeFromDragDirective,\n selectors: [[\"\", \"asSplitGutterExcludeFromDrag\", \"\"]]\n });\n }\n }\n return SplitGutterExcludeFromDragDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet AngularSplitModule = /*#__PURE__*/(() => {\n class AngularSplitModule {\n /** @nocollapse */static {\n this.ɵfac = function AngularSplitModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || AngularSplitModule)();\n };\n }\n /** @nocollapse */\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: AngularSplitModule\n });\n }\n /** @nocollapse */\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [CommonModule]\n });\n }\n }\n return AngularSplitModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/*\n * Public API Surface of angular-split\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ANGULAR_SPLIT_DEFAULT_OPTIONS, AngularSplitModule, SplitAreaDirective, SplitComponent, SplitGutterDirective, SplitGutterDragHandleDirective, SplitGutterExcludeFromDragDirective };\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { DomSanitizer, SafeUrl } from '@angular/platform-browser';\r\n\r\n@Component({\r\n selector: 'app-iframe',\r\n templateUrl: './Iframe.component.html',\r\n styleUrls: ['./Iframe.component.scss']\r\n})\r\nexport class IframeComponent implements OnInit {\r\n @Input() targetUrl: string;\r\n @Output() closeFrame: EventEmitter = new EventEmitter();\r\n\r\n public iframeSrc: SafeUrl = '';\r\n public doc: any;\r\n\r\n constructor(private sanitizer: DomSanitizer) { }\r\n\r\n ngOnInit() {\r\n // Trust the given URL and treat it as safe\r\n this.iframeSrc = this.sanitizer.bypassSecurityTrustResourceUrl(this.targetUrl);\r\n }\r\n\r\n public onLoad(iframe) {\r\n this.doc = iframe.contentWindow;\r\n }\r\n\r\n public goBack() {\r\n this.doc.history.back(-1);\r\n }\r\n\r\n public close() {\r\n this.closeFrame.emit(true);\r\n }\r\n\r\n}\r\n","
\r\n
\r\n\r\n \r\n\r\n \r\n
\r\n
","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n// THIS CODE IS GENERATED - DO NOT MODIFY.\nconst u = undefined;\nfunction plural(val) {\n const n = val,\n i = Math.floor(Math.abs(val)),\n v = val.toString().replace(/^[^.]*\\.?/, '').length;\n if (i === 1 && v === 0) return 1;\n return 5;\n}\nexport default [\"fi\", [[\"ap.\", \"ip.\"], u, u], u, [[\"S\", \"M\", \"T\", \"K\", \"T\", \"P\", \"L\"], [\"su\", \"ma\", \"ti\", \"ke\", \"to\", \"pe\", \"la\"], [\"sunnuntaina\", \"maanantaina\", \"tiistaina\", \"keskiviikkona\", \"torstaina\", \"perjantaina\", \"lauantaina\"], [\"su\", \"ma\", \"ti\", \"ke\", \"to\", \"pe\", \"la\"]], [[\"S\", \"M\", \"T\", \"K\", \"T\", \"P\", \"L\"], [\"su\", \"ma\", \"ti\", \"ke\", \"to\", \"pe\", \"la\"], [\"sunnuntai\", \"maanantai\", \"tiistai\", \"keskiviikko\", \"torstai\", \"perjantai\", \"lauantai\"], [\"su\", \"ma\", \"ti\", \"ke\", \"to\", \"pe\", \"la\"]], [[\"T\", \"H\", \"M\", \"H\", \"T\", \"K\", \"H\", \"E\", \"S\", \"L\", \"M\", \"J\"], [\"tammik.\", \"helmik.\", \"maalisk.\", \"huhtik.\", \"toukok.\", \"kesäk.\", \"heinäk.\", \"elok.\", \"syysk.\", \"lokak.\", \"marrask.\", \"jouluk.\"], [\"tammikuuta\", \"helmikuuta\", \"maaliskuuta\", \"huhtikuuta\", \"toukokuuta\", \"kesäkuuta\", \"heinäkuuta\", \"elokuuta\", \"syyskuuta\", \"lokakuuta\", \"marraskuuta\", \"joulukuuta\"]], [[\"T\", \"H\", \"M\", \"H\", \"T\", \"K\", \"H\", \"E\", \"S\", \"L\", \"M\", \"J\"], [\"tammi\", \"helmi\", \"maalis\", \"huhti\", \"touko\", \"kesä\", \"heinä\", \"elo\", \"syys\", \"loka\", \"marras\", \"joulu\"], [\"tammikuu\", \"helmikuu\", \"maaliskuu\", \"huhtikuu\", \"toukokuu\", \"kesäkuu\", \"heinäkuu\", \"elokuu\", \"syyskuu\", \"lokakuu\", \"marraskuu\", \"joulukuu\"]], [[\"eKr\", \"jKr\"], [\"eKr.\", \"jKr.\"], [\"ennen Kristuksen syntymää\", \"jälkeen Kristuksen syntymän\"]], 1, [6, 0], [\"d.M.y\", u, \"d. MMMM y\", \"cccc d. MMMM y\"], [\"H.mm\", \"H.mm.ss\", \"H.mm.ss z\", \"H.mm.ss zzzz\"], [\"{1} {0}\", \"{1} 'klo' {0}\", u, u], [\",\", \" \", \";\", \"%\", \"+\", \"−\", \"E\", \"×\", \"‰\", \"∞\", \"epäluku\", \".\"], [\"#,##0.###\", \"#,##0 %\", \"#,##0.00 ¤\", \"#E0\"], \"EUR\", \"€\", \"euro\", {\n \"AOA\": [],\n \"ARS\": [],\n \"AUD\": [],\n \"BAM\": [],\n \"BBD\": [],\n \"BDT\": [],\n \"BMD\": [],\n \"BND\": [],\n \"BOB\": [],\n \"BRL\": [],\n \"BSD\": [],\n \"BWP\": [],\n \"BZD\": [],\n \"CAD\": [],\n \"CLP\": [],\n \"CNY\": [],\n \"COP\": [],\n \"CRC\": [],\n \"CUC\": [],\n \"CUP\": [],\n \"CZK\": [],\n \"DKK\": [],\n \"DOP\": [],\n \"EGP\": [],\n \"ESP\": [],\n \"FIM\": [\"mk\"],\n \"FJD\": [],\n \"FKP\": [],\n \"GEL\": [],\n \"GIP\": [],\n \"GNF\": [],\n \"GTQ\": [],\n \"GYD\": [],\n \"HKD\": [],\n \"HNL\": [],\n \"HRK\": [],\n \"HUF\": [],\n \"IDR\": [],\n \"ILS\": [],\n \"INR\": [],\n \"ISK\": [],\n \"JMD\": [],\n \"KHR\": [],\n \"KMF\": [],\n \"KPW\": [],\n \"KRW\": [],\n \"KYD\": [],\n \"KZT\": [],\n \"LAK\": [],\n \"LBP\": [],\n \"LKR\": [],\n \"LRD\": [],\n \"LTL\": [],\n \"LVL\": [],\n \"MGA\": [],\n \"MMK\": [],\n \"MNT\": [],\n \"MUR\": [],\n \"MXN\": [],\n \"MYR\": [],\n \"NAD\": [],\n \"NGN\": [],\n \"NIO\": [],\n \"NOK\": [],\n \"NPR\": [],\n \"NZD\": [],\n \"PHP\": [],\n \"PKR\": [],\n \"PLN\": [],\n \"PYG\": [],\n \"RON\": [],\n \"RWF\": [],\n \"SBD\": [],\n \"SEK\": [],\n \"SGD\": [],\n \"SHP\": [],\n \"SRD\": [],\n \"SSP\": [],\n \"STN\": [u, \"STD\"],\n \"SYP\": [],\n \"THB\": [],\n \"TOP\": [],\n \"TRY\": [],\n \"TTD\": [],\n \"TWD\": [],\n \"UAH\": [],\n \"UYU\": [],\n \"VEF\": [],\n \"VND\": [],\n \"XCD\": [],\n \"XPF\": [],\n \"XXX\": [],\n \"ZAR\": [],\n \"ZMW\": []\n}, \"ltr\", plural];\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n// THIS CODE IS GENERATED - DO NOT MODIFY.\nconst u = undefined;\nfunction plural(val) {\n const n = val,\n i = Math.floor(Math.abs(val)),\n v = val.toString().replace(/^[^.]*\\.?/, '').length;\n if (i === 1 && v === 0) return 1;\n return 5;\n}\nexport default [\"sv\", [[\"fm\", \"em\"], u, u], [[\"fm\", \"em\"], [\"f.m.\", \"e.m.\"], [\"förmiddag\", \"eftermiddag\"]], [[\"S\", \"M\", \"T\", \"O\", \"T\", \"F\", \"L\"], [\"sön\", \"mån\", \"tis\", \"ons\", \"tors\", \"fre\", \"lör\"], [\"söndag\", \"måndag\", \"tisdag\", \"onsdag\", \"torsdag\", \"fredag\", \"lördag\"], [\"sö\", \"må\", \"ti\", \"on\", \"to\", \"fr\", \"lö\"]], u, [[\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"], [\"jan.\", \"feb.\", \"mars\", \"apr.\", \"maj\", \"juni\", \"juli\", \"aug.\", \"sep.\", \"okt.\", \"nov.\", \"dec.\"], [\"januari\", \"februari\", \"mars\", \"april\", \"maj\", \"juni\", \"juli\", \"augusti\", \"september\", \"oktober\", \"november\", \"december\"]], u, [[\"f.Kr.\", \"e.Kr.\"], u, [\"före Kristus\", \"efter Kristus\"]], 1, [6, 0], [\"y-MM-dd\", \"d MMM y\", \"d MMMM y\", \"EEEE d MMMM y\"], [\"HH:mm\", \"HH:mm:ss\", \"HH:mm:ss z\", \"HH:mm:ss zzzz\"], [\"{1} {0}\", u, u, u], [\",\", \" \", \";\", \"%\", \"+\", \"−\", \"×10^\", \"×\", \"‰\", \"∞\", \"NaN\", \":\"], [\"#,##0.###\", \"#,##0 %\", \"#,##0.00 ¤\", \"#E0\"], \"SEK\", \"kr\", \"svensk krona\", {\n \"AUD\": [u, \"$\"],\n \"BBD\": [\"Bds$\", \"$\"],\n \"BMD\": [\"BM$\", \"$\"],\n \"BRL\": [\"BR$\", \"R$\"],\n \"BSD\": [\"BS$\", \"$\"],\n \"BYN\": [u, \"р.\"],\n \"BZD\": [\"BZ$\", \"$\"],\n \"CNY\": [u, \"¥\"],\n \"DKK\": [\"Dkr\", \"kr\"],\n \"DOP\": [\"RD$\", \"$\"],\n \"EEK\": [\"Ekr\"],\n \"EGP\": [\"EG£\", \"E£\"],\n \"ESP\": [],\n \"GBP\": [u, \"£\"],\n \"HKD\": [u, \"$\"],\n \"IEP\": [\"IE£\"],\n \"INR\": [u, \"₹\"],\n \"ISK\": [\"Ikr\", \"kr\"],\n \"JMD\": [\"JM$\", \"$\"],\n \"JPY\": [u, \"¥\"],\n \"KRW\": [u, \"₩\"],\n \"NOK\": [\"Nkr\", \"kr\"],\n \"NZD\": [u, \"$\"],\n \"PHP\": [u, \"₱\"],\n \"RON\": [u, \"L\"],\n \"SEK\": [\"kr\"],\n \"TWD\": [u, \"NT$\"],\n \"USD\": [\"US$\", \"$\"],\n \"VND\": [u, \"₫\"]\n}, \"ltr\", plural];\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n// THIS CODE IS GENERATED - DO NOT MODIFY.\nconst u = undefined;\nfunction plural(val) {\n const n = val,\n i = Math.floor(Math.abs(val)),\n v = val.toString().replace(/^[^.]*\\.?/, '').length;\n if (i === 1 && v === 0) return 1;\n return 5;\n}\nexport default [\"en\", [[\"a\", \"p\"], [\"AM\", \"PM\"], u], [[\"AM\", \"PM\"], u, u], [[\"S\", \"M\", \"T\", \"W\", \"T\", \"F\", \"S\"], [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"], [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"], [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"]], u, [[\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"], [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"], [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"]], u, [[\"B\", \"A\"], [\"BC\", \"AD\"], [\"Before Christ\", \"Anno Domini\"]], 0, [6, 0], [\"M/d/yy\", \"MMM d, y\", \"MMMM d, y\", \"EEEE, MMMM d, y\"], [\"h:mm a\", \"h:mm:ss a\", \"h:mm:ss a z\", \"h:mm:ss a zzzz\"], [\"{1}, {0}\", u, \"{1} 'at' {0}\", u], [\".\", \",\", \";\", \"%\", \"+\", \"-\", \"E\", \"×\", \"‰\", \"∞\", \"NaN\", \":\"], [\"#,##0.###\", \"#,##0%\", \"¤#,##0.00\", \"#E0\"], \"USD\", \"$\", \"US Dollar\", {}, \"ltr\", plural];\n","import { MatPaginatorIntl } from '@angular/material/paginator';\r\nimport { Injectable, OnDestroy } from '@angular/core';\r\nimport { BlahService } from '@headpower/blah-ng';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\nimport { IwmLocaleService } from '../services/iwm-locale.service';\r\n\r\n@Injectable()\r\nexport class BlahMatPaginatorIntl extends MatPaginatorIntl implements OnDestroy {\r\n\r\n private destroy$: Subject = new Subject();\r\n\r\n constructor(private blahService: BlahService,\r\n private iwmLocaleService: IwmLocaleService) {\r\n super();\r\n\r\n this.iwmLocaleService.iwmLocale$\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(value => this.updateTranslations());\r\n\r\n this.updateTranslations();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n\r\n updateTranslations() {\r\n this.itemsPerPageLabel = this.blahService.blah('default.paginator.itemsPerPage') + ':';\r\n this.nextPageLabel = this.blahService.blah('default.paginator.nextPageLabel');\r\n this.previousPageLabel = this.blahService.blah('default.paginator.previousPageLabel');\r\n this.lastPageLabel = this.blahService.blah('default.paginator.lastPageLabel');\r\n this.firstPageLabel = this.blahService.blah('default.paginator.firstPageLabel');\r\n\r\n this.changes.next(); // Notifies components that labels have changed and updates translations on the fly\r\n }\r\n\r\n override getRangeLabel = (page: number, pageSize: number, length: number) => {\r\n if (length === 0 || pageSize === 0) {\r\n return `0 / ${length}`;\r\n }\r\n length = Math.max(length, 0);\r\n const startIndex = page * pageSize;\r\n const endIndex = startIndex < length ? Math.min(startIndex + pageSize, length) : startIndex + pageSize;\r\n return `${startIndex + 1} - ${endIndex} / ${length}`;\r\n }\r\n}\r\n","import dayjs from 'dayjs';\n\n// Import plugins\nimport localeDataPlugin from 'dayjs/plugin/localeData';\nimport customParseFormatPlugin from 'dayjs/plugin/customParseFormat';\nimport objectSupportPlugin from 'dayjs/plugin/objectSupport';\nimport localizedFormatPlugin from 'dayjs/plugin/localizedFormat';\nimport utcPlugin from 'dayjs/plugin/utc';\nimport isoWeekPlugin from 'dayjs/plugin/isoWeek';\nimport weekOfYearPlugin from 'dayjs/plugin/weekOfYear';\nimport weekdayPlugin from 'dayjs/plugin/weekday';\n\n// Import locales\nimport 'dayjs/locale/fi';\nimport 'dayjs/locale/sv';\n\n// Set plugins\ndayjs.extend(localeDataPlugin);\ndayjs.extend(customParseFormatPlugin);\ndayjs.extend(objectSupportPlugin);\ndayjs.extend(localizedFormatPlugin);\ndayjs.extend(utcPlugin);\ndayjs.extend(isoWeekPlugin);\ndayjs.extend(weekOfYearPlugin);\ndayjs.extend(weekdayPlugin);","import { MessageService } from '@progress/kendo-angular-l10n';\r\nimport { BlahService } from '@headpower/blah-ng';\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable()\r\nexport class LocalizationMessageService extends MessageService {\r\n\r\n constructor(private blahService: BlahService) { super(); }\r\n\r\n public override get(key: string): string {\r\n const messages = {\r\n \"kendo.grid.autosizeAllColumns\": \"Auto size\",\r\n 'kendo.grid.detailCollapse': 'task.tasklist.detailCollapse',\r\n 'kendo.grid.detailExpand': 'task.tasklist.detailExpand',\r\n 'kendo.grid.groupPanelEmpty': 'task.tasklist.groupPanelEmpty',\r\n 'kendo.grid.noRecords': 'task.tasklist.noRecords',\r\n 'kendo.grid.pagerFirstPage': 'task.tasklist.pagerFirstPage',\r\n 'kendo.grid.pagerPreviousPage': 'task.tasklist.pagerPreviousPage',\r\n 'kendo.grid.pagerNextPage': 'task.tasklist.pagerNextPage',\r\n 'kendo.grid.pagerLabel': '',\r\n 'kendo.grid.pagerLastPage': 'task.tasklist.pagerLastPage',\r\n 'kendo.grid.pagerPage': 'task.tasklist.pagerPage',\r\n 'kendo.grid.pagerOf': 'task.tasklist.pagerOf',\r\n 'kendo.grid.pagerItems': 'task.tasklist.pagerItems',\r\n 'kendo.grid.pagerItemsPerPage': 'task.tasklist.pagerItemsPerPage',\r\n 'kendo.grid.pagerPageNumberInputTitle': '',\r\n \"kendo.grid.selectPage\": \"Valitse sivu\",\r\n 'kendo.grid.filterEqOperator': 'task.tasklist.filterEqOperator',\r\n 'kendo.grid.filterNotEqOperator': 'task.tasklist.filterNotEqOperator',\r\n 'kendo.grid.filterInputLabel': '',\r\n 'kendo.grid.filterIsNullOperator': 'task.tasklist.filterIsNullOperator',\r\n 'kendo.grid.filterIsNotNullOperator': 'task.tasklist.filterIsNotNullOperator',\r\n 'kendo.grid.filterIsEmptyOperator': 'task.tasklist.filterIsEmptyOperator',\r\n 'kendo.grid.filterIsNotEmptyOperator': 'task.tasklist.filterIsNotEmptyOperator',\r\n 'kendo.grid.filterStartsWithOperator': 'task.tasklist.filterStartsWithOperator',\r\n 'kendo.grid.filterContainsOperator': 'task.tasklist.filterContainsOperator',\r\n 'kendo.grid.filterNotContainsOperator': 'task.tasklist.filterNotContainsOperator',\r\n 'kendo.grid.filterEndsWithOperator': 'task.tasklist.filterEndsWithOperator',\r\n 'kendo.grid.filterGteOperator': 'task.tasklist.filterGteOperator',\r\n 'kendo.grid.filterGtOperator': 'task.tasklist.filterGtOperator',\r\n 'kendo.grid.filterLteOperator': 'task.tasklist.filterLteOperator',\r\n 'kendo.grid.filterLtOperator': 'task.tasklist.filterLtOperator',\r\n 'kendo.grid.filterIsTrue': 'task.tasklist.filterIsTrue',\r\n 'kendo.grid.filterIsFalse': 'task.tasklist.filterIsFalse',\r\n 'kendo.grid.filterBooleanAll': 'task.tasklist.filterBooleanAll',\r\n 'kendo.grid.filterAfterOrEqualOperator': 'task.tasklist.filterAfterOrEqualOperator',\r\n 'kendo.grid.filterAfterOperator': 'task.tasklist.filterAfterOperator',\r\n 'kendo.grid.filterBeforeOperator': 'task.tasklist.filterBeforeOperator',\r\n 'kendo.grid.filterBeforeOrEqualOperator': 'task.tasklist.filterBeforeOrEqualOperator',\r\n 'kendo.grid.filterFilterButton': 'task.tasklist.filterFilterButton',\r\n 'kendo.grid.filterClearButton': 'task.tasklist.filterClearButton',\r\n 'kendo.grid.filterAndLogic': 'task.tasklist.filterAndLogic',\r\n 'kendo.grid.filterOrLogic': 'task.tasklist.filterOrLogic',\r\n 'kendo.grid.filter': 'task.tasklist.filter',\r\n 'kendo.grid.filterDateToday': '',\r\n 'kendo.grid.filterDateToggle': '',\r\n 'kendo.grid.filterMenuLogicDropDownLabel': '',\r\n 'kendo.grid.filterMenuOperatorsDropDownLabel': '',\r\n 'kendo.grid.filterMenuTitle': '',\r\n 'kendo.grid.filterNumericDecrement': '',\r\n 'kendo.grid.filterNumericIncrement': '',\r\n\r\n 'kendo.grid.loading': 'task.tasklist.loading',\r\n 'kendo.grid.columnMenu': 'task.tasklist.columnMenu',\r\n 'kendo.grid.columns': 'task.tasklist.columns',\r\n 'kendo.grid.lock': 'task.tasklist.lock',\r\n 'kendo.grid.unlock': 'task.tasklist.unlock',\r\n 'kendo.grid.unstick': 'task.tasklist.unlock',\r\n 'kendo.grid.selectAllCheckboxLabel': '',\r\n 'kendo.grid.selectionCheckboxLabel': '',\r\n 'kendo.grid.setColumnPosition': '',\r\n 'kendo.grid.sortable': 'task.tasklist.sortable',\r\n 'kendo.grid.sortAscending': 'task.tasklist.sortAscending',\r\n 'kendo.grid.sortDescending': 'task.tasklist.sortDescending',\r\n 'kendo.grid.sortedAscending': 'task.tasklist.sortedAscending',\r\n 'kendo.grid.sortedDescending': 'task.tasklist.sortedDescending',\r\n 'kendo.grid.sortedDefault': 'task.tasklist.sortedDefault',\r\n 'kendo.grid.stick': '',\r\n 'kendo.grid.columnsApply': 'task.tasklist.columnsApply',\r\n 'kendo.grid.columnsReset': 'task.tasklist.columnsReset',\r\n 'kendo.grid.gridLabel': '',\r\n 'kendo.grid.groupCollapse': '',\r\n 'kendo.grid.groupExpand': '',\r\n\r\n\r\n 'kendo.datepicker.toggle': 'task.tasklist.toggle',\r\n 'kendo.datepicker.today': 'task.tasklist.today',\r\n 'kendo.dropdownlist.noDataText': 'task.tasklist.noDataText',\r\n 'kendo.dropdownlist.selectButtonText': '',\r\n 'kendo.label.optional': 'task.tasklist.optional',\r\n\r\n 'kendo.upload.cancel': 'task.attachment.cancel',\r\n 'kendo.upload.headerStatusUploaded': 'task.attachment.headerStatusUploaded',\r\n 'kendo.upload.invalidFileExtension': 'task.attachment.invalidFileExtension',\r\n 'kendo.upload.invalidFiles': 'task.attachment.invalidFiles',\r\n 'kendo.upload.invalidMaxFileSize': 'default.attachmentInvalidMaxFileSize',\r\n 'kendo.upload.invalidMinFileSize': 'task.attachment.invalidMinFileSize',\r\n 'kendo.upload.remove': 'task.attachment.remove',\r\n 'kendo.upload.retry': 'task.attachment.retry',\r\n 'kendo.upload.pause': '',\r\n 'kendo.upload.resume': '',\r\n 'kendo.upload.filesBatchStatus': '',\r\n 'kendo.upload.filesBatchStatusFailed': '',\r\n 'kendo.upload.filesBatchStatusUploaded': '',\r\n 'kendo.upload.fileStatusFailed': '',\r\n 'kendo.upload.fileStatusUploaded': '',\r\n 'kendo.upload.headerStatusPaused': '',\r\n\r\n 'kendo.gantt.taskEditingGeneralTabTitle': '',\r\n 'kendo.gantt.taskEditingPredecessorsTabTitle': '',\r\n 'kendo.gantt.taskEditingSuccessorsTabTitle': '',\r\n 'kendo.gantt.taskEditingDependenciesAddButtonText': '',\r\n 'kendo.gantt.taskEditingDependenciesRemoveButtonText': '',\r\n 'kendo.gantt.taskEditingDependenciesGridNameColumnTitle': '',\r\n 'kendo.gantt.taskEditingDependenciesGridTypeColumnTitle': '',\r\n 'kendo.gantt.deleteButtonText': '',\r\n 'kendo.gantt.taskDeleteLabel': '',\r\n 'kendo.gantt.taskEditingDialogTitle': '',\r\n 'kendo.gantt.taskEditingDialogCloseTitle': '',\r\n 'kendo.gantt.confirmationDialogCloseTitle': '',\r\n 'kendo.gantt.confirmationDialogTitle': '',\r\n 'kendo.gantt.addTaskText': '',\r\n 'kendo.gantt.addChildText': '',\r\n 'kendo.gantt.addAboveText': '',\r\n 'kendo.gantt.addBelowText': '',\r\n 'kendo.gantt.cancelButtonText': '',\r\n 'kendo.gantt.saveButtonText': '',\r\n 'kendo.gantt.titleFieldInputLabel': '',\r\n 'kendo.gantt.startFieldInputLabel': '',\r\n 'kendo.gantt.endFieldInputLabel': '',\r\n 'kendo.gantt.completionRatioFieldInputLabel': '',\r\n 'kendo.gantt.confirmationDialogContent': '',\r\n 'kendo.gantt.dayViewText': 'default.calendarDay', // Gantt view button\r\n 'kendo.gantt.weekViewText': 'default.calendarWeek', // Gantt view button\r\n 'kendo.gantt.monthViewText': 'default.calendarMonth', // Gantt view button\r\n 'kendo.gantt.yearViewText': 'default.calendarYear', // Gantt view button\r\n 'kendo.gantt.noRecords': '',\r\n 'kendo.gantt.filter': '',\r\n 'kendo.gantt.filterEqOperator': '',\r\n 'kendo.gantt.filterNotEqOperator': '',\r\n 'kendo.gantt.filterIsNullOperator': '',\r\n 'kendo.gantt.filterIsNotNullOperator': '',\r\n 'kendo.gantt.filterIsEmptyOperator': '',\r\n 'kendo.gantt.filterIsNotEmptyOperator': '',\r\n 'kendo.gantt.filterStartsWithOperator': '',\r\n 'kendo.gantt.filterContainsOperator': '',\r\n 'kendo.gantt.filterNotContainsOperator': '',\r\n 'kendo.gantt.filterEndsWithOperator': '',\r\n 'kendo.gantt.filterGteOperator': '',\r\n 'kendo.gantt.filterGtOperator': '',\r\n 'kendo.gantt.filterLteOperator': '',\r\n 'kendo.gantt.filterLtOperator': '',\r\n 'kendo.gantt.filterIsTrue': '',\r\n 'kendo.gantt.filterIsFalse': '',\r\n 'kendo.gantt.filterBooleanAll': '',\r\n 'kendo.gantt.filterAfterOrEqualOperator': '',\r\n 'kendo.gantt.filterAfterOperator': '',\r\n 'kendo.gantt.filterBeforeOperator': '',\r\n 'kendo.gantt.filterBeforeOrEqualOperator': '',\r\n 'kendo.gantt.filterFilterButton': '',\r\n 'kendo.gantt.filterClearButton': '',\r\n 'kendo.gantt.filterAndLogic': '',\r\n 'kendo.gantt.filterOrLogic': '',\r\n 'kendo.gantt.loading': '',\r\n 'kendo.gantt.columnMenu': '',\r\n 'kendo.gantt.columns': '',\r\n 'kendo.gantt.sortable': '',\r\n 'kendo.gantt.sortAscending': '',\r\n 'kendo.gantt.sortDescending': '',\r\n 'kendo.gantt.sortedAscending': '',\r\n 'kendo.gantt.sortedDescending': '',\r\n 'kendo.gantt.sortedDefault': '',\r\n 'kendo.gantt.columnsApply': '',\r\n 'kendo.gantt.columnsReset': '',\r\n 'kendo.treelist.pagerFirstPage': '',\r\n 'kendo.treelist.pagerLastPage': '',\r\n 'kendo.treelist.pagerPreviousPage': '',\r\n 'kendo.treelist.pagerNextPage': '',\r\n 'kendo.treelist.pagerPage': '',\r\n 'kendo.treelist.pagerPageNumberInputTitle': '',\r\n 'kendo.treelist.pagerItemsPerPage': '',\r\n 'kendo.treelist.pagerOf': '',\r\n 'kendo.treelist.pagerItemsTotal': '',\r\n 'kendo.treelist.lock': '',\r\n 'kendo.treelist.unlock': '',\r\n 'kendo.treelist.noRecords': '',\r\n 'kendo.treelist.filter': '',\r\n 'kendo.treelist.filterEqOperator': '',\r\n 'kendo.treelist.filterNotEqOperator': '',\r\n 'kendo.treelist.filterIsNullOperator': '',\r\n 'kendo.treelist.filterIsNotNullOperator': '',\r\n 'kendo.treelist.filterIsEmptyOperator': '',\r\n 'kendo.treelist.filterIsNotEmptyOperator': '',\r\n 'kendo.treelist.filterStartsWithOperator': '',\r\n 'kendo.treelist.filterContainsOperator': '',\r\n 'kendo.treelist.filterNotContainsOperator': '',\r\n 'kendo.treelist.filterEndsWithOperator': '',\r\n 'kendo.treelist.filterGteOperator': '',\r\n 'kendo.treelist.filterGtOperator': '',\r\n 'kendo.treelist.filterLteOperator': '',\r\n 'kendo.treelist.filterLtOperator': '',\r\n 'kendo.treelist.filterIsTrue': '',\r\n 'kendo.treelist.filterIsFalse': '',\r\n 'kendo.treelist.filterBooleanAll': '',\r\n 'kendo.treelist.filterAfterOrEqualOperator': '',\r\n 'kendo.treelist.filterAfterOperator': '',\r\n 'kendo.treelist.filterBeforeOperator': '',\r\n 'kendo.treelist.filterBeforeOrEqualOperator': '',\r\n 'kendo.treelist.filterFilterButton': '',\r\n 'kendo.treelist.filterClearButton': '',\r\n 'kendo.treelist.filterAndLogic': '',\r\n 'kendo.treelist.filterOrLogic': '',\r\n 'kendo.treelist.loading': '',\r\n 'kendo.treelist.columnMenu': '',\r\n 'kendo.treelist.columns': '',\r\n 'kendo.treelist.sortable': '',\r\n 'kendo.treelist.sortAscending': '',\r\n 'kendo.treelist.sortDescending': '',\r\n 'kendo.treelist.sortedAscending': '',\r\n 'kendo.treelist.sortedDescending': '',\r\n 'kendo.treelist.sortedDefault': '',\r\n 'kendo.treelist.columnsApply': '',\r\n 'kendo.treelist.columnsReset': '',\r\n 'kendo.treelist.selectPage': '',\r\n\r\n 'kendo.pager.taskEditingGeneralTabTitle': '',\r\n 'kendo.pager.taskEditingPredecessorsTabTitle': '',\r\n 'kendo.pager.taskEditingSuccessorsTabTitle': '',\r\n 'kendo.pager.taskEditingDependenciesAddButtonText': '',\r\n 'kendo.pager.taskEditingDependenciesRemoveButtonText': '',\r\n 'kendo.pager.taskEditingDependenciesGridNameColumnTitle': '',\r\n 'kendo.pager.taskEditingDependenciesGridTypeColumnTitle': '',\r\n 'kendo.pager.deleteButtonText': '',\r\n 'kendo.pager.taskDeleteLabel': '',\r\n 'kendo.pager.taskEditingDialogTitle': '',\r\n 'kendo.pager.taskEditingDialogCloseTitle': '',\r\n 'kendo.pager.confirmationDialogCloseTitle': '',\r\n 'kendo.pager.confirmationDialogTitle': '',\r\n 'kendo.pager.addTaskText': '',\r\n 'kendo.pager.addChildText': '',\r\n 'kendo.pager.addAboveText': '',\r\n 'kendo.pager.addBelowText': '',\r\n 'kendo.pager.cancelButtonText': '',\r\n 'kendo.pager.saveButtonText': '',\r\n 'kendo.pager.titleFieldInputLabel': '',\r\n 'kendo.pager.startFieldInputLabel': '',\r\n 'kendo.pager.endFieldInputLabel': '',\r\n 'kendo.pager.completionRatioFieldInputLabel': '',\r\n 'kendo.pager.confirmationDialogContent': '',\r\n 'kendo.pager.dayViewText': 'default.calendarDay', // Gantt view button\r\n 'kendo.pager.weekViewText': 'default.calendarWeek', // Gantt view button\r\n 'kendo.pager.monthViewText': 'default.calendarMonth', // Gantt view button\r\n 'kendo.pager.yearViewText': 'default.calendarYear', // Gantt view button\r\n 'kendo.pager.noRecords': '',\r\n 'kendo.pager.filter': '',\r\n 'kendo.pager.filterEqOperator': '',\r\n 'kendo.pager.filterNotEqOperator': '',\r\n 'kendo.pager.filterIsNullOperator': '',\r\n 'kendo.pager.filterIsNotNullOperator': '',\r\n 'kendo.pager.filterIsEmptyOperator': '',\r\n 'kendo.pager.filterIsNotEmptyOperator': '',\r\n 'kendo.pager.filterStartsWithOperator': '',\r\n 'kendo.pager.filterContainsOperator': '',\r\n 'kendo.pager.filterNotContainsOperator': '',\r\n 'kendo.pager.filterEndsWithOperator': '',\r\n 'kendo.pager.filterGteOperator': '',\r\n 'kendo.pager.filterGtOperator': '',\r\n 'kendo.pager.filterLteOperator': '',\r\n 'kendo.pager.filterLtOperator': '',\r\n 'kendo.pager.filterIsTrue': '',\r\n 'kendo.pager.filterIsFalse': '',\r\n 'kendo.pager.filterBooleanAll': '',\r\n 'kendo.pager.filterAfterOrEqualOperator': '',\r\n 'kendo.pager.filterAfterOperator': '',\r\n 'kendo.pager.filterBeforeOperator': '',\r\n 'kendo.pager.filterBeforeOrEqualOperator': '',\r\n 'kendo.pager.filterFilterButton': '',\r\n 'kendo.pager.filterClearButton': '',\r\n 'kendo.pager.filterAndLogic': '',\r\n 'kendo.pager.filterOrLogic': '',\r\n 'kendo.pager.loading': '',\r\n 'kendo.pager.columnMenu': '',\r\n 'kendo.pager.columns': '',\r\n 'kendo.pager.sortable': '',\r\n 'kendo.pager.sortAscending': '',\r\n 'kendo.pager.sortDescending': '',\r\n 'kendo.pager.sortedAscending': '',\r\n 'kendo.pager.sortedDescending': '',\r\n 'kendo.pager.sortedDefault': '',\r\n 'kendo.pager.columnsApply': '',\r\n 'kendo.pager.columnsReset': '',\r\n 'kendo.pager.firstPage': '',\r\n 'kendo.pager.lastPage': '',\r\n 'kendo.pager.previousPage': '',\r\n 'kendo.pager.nextPage': '',\r\n 'kendo.pager.page': '',\r\n 'kendo.pager.pageNumberInputTitle': '',\r\n 'kendo.pager.itemsPerPage': 'task.tasklist.pagerItemsPerPage',\r\n 'kendo.pager.of': '',\r\n 'kendo.pager.items': '',\r\n 'kendo.pager.selectPage': '',\r\n 'kendo.pager.inputLabel': ''\r\n }\r\n\r\n if (messages[key] === undefined) {\r\n console.warn(`Key ${key} not defined in LocalizationMessageService.`)\r\n return '';\r\n }\r\n\r\n const translationKey = messages[key];\r\n if (translationKey === '') {\r\n return '';\r\n }\r\n\r\n return this.blahService.blah(translationKey);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest } from '@angular/common/http';\r\n\r\nimport { Observable } from 'rxjs';\r\n\r\n/** Add ngsw-bypass to headers and pass request through to the next request handler. */\r\n@Injectable()\r\nexport class BypassServiceWorkerInterceptor implements HttpInterceptor {\r\n\r\n intercept(req: HttpRequest, next: HttpHandler): Observable> {\r\n\r\n // Clone the request and replace the original headers with\r\n // cloned headers, updated with ngsw-bypass.\r\n const bypassReq = req.clone({\r\n headers: req.headers.set('ngsw-bypass', '')\r\n });\r\n\r\n // send cloned request with header to the next handler.\r\n return next.handle(bypassReq);\r\n }\r\n\r\n}\r\n","import { HTTP_INTERCEPTORS, provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';\r\nimport { NgModule, Optional, SkipSelf } from '@angular/core';\r\nimport { AuthorizationInterceptor } from '@headpower/angular-oauth2-oidc-extensions';\r\nimport { BypassServiceWorkerInterceptor } from './bypass-service-worker.interceptor';\r\n\r\n@NgModule({\r\n imports: [],\r\n providers: [\r\n provideHttpClient(withInterceptorsFromDi()),\r\n { provide: HTTP_INTERCEPTORS, useClass: BypassServiceWorkerInterceptor, multi: true },\r\n { provide: HTTP_INTERCEPTORS, useClass: AuthorizationInterceptor, multi: true }\r\n ]\r\n})\r\nexport class CoreModule {\r\n constructor(@Optional() @SkipSelf() parentModule: CoreModule) {\r\n if (parentModule) {\r\n throw new Error('CoreModule has already been loaded. You should only import Core modules in the AppModule only.');\r\n }\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { BlahModule } from '@headpower/blah-ng';\r\n\r\nimport { AuthCallbackComponent } from './callback/callback.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n AuthCallbackComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n BlahModule\r\n ],\r\n exports: [\r\n AuthCallbackComponent\r\n ],\r\n providers: [\r\n ]\r\n})\r\nexport class AuthModule { }\r\n","import { enableProdMode } from '@angular/core';\r\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\n\r\nimport { AppModule } from './app/app.module';\r\nimport { environment } from './environments/environment';\r\n\r\nif (environment.production) {\r\n enableProdMode();\r\n}\r\n\r\nplatformBrowserDynamic().bootstrapModule(AppModule)\r\n .catch(err => console.error(err));\r\n"],"mappings":"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AAU,WACV,UAAW,WACX,UAAW,GACX,UAAW,OACX,UAAW,WACX,UAAW,WACX,UAAW,OACX,UAAW,OACX,UAAW,EACX,UAAW,MACX,UAAW,WACX,QAAS,WACT,SAAU,OACV,SAAU,GACV,SAAU,WACV,SAAU,WACV,SAAU,WACV,UAAW,OACX,UAAW,WACX,UAAW,OACX,UAAW,EACX,UAAW,MACX,UAAW,WACX,UAAW,WACX,UAAW,OACX,UAAW,WACX,UAAW,MACX,UAAW,EACX,UAAW,WACX,UAAW,WACX,UAAW,WACX,UAAW,WACX,UAAW,GACX,UAAW,OACX,UAAW,MACX,UAAW,MACX,UAAW,OACX,UAAW,OACX,UAAW,WACX,UAAW,OACX,UAAW,WACX,UAAW,WACX,UAAW,WACX,UAAW,OACX,UAAW,OACX,UAAW,WACX,UAAW,MACX,UAAW,WACX,UAAW,WACX,UAAW,GACX,UAAW,WACX,UAAW,WACX,UAAW,WACX,UAAW,WACX,UAAW,OACX,UAAW,EACX,UAAW,MACX,UAAW,WACX,UAAW,MACb,EAAG,CACD,EAAK,IACL,QAAS,EACT,QAAS,SACT,QAAS,MACT,QAAS,MACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,SAAU,MACV,SAAU,SACV,SAAU,SACV,SAAU,MACV,SAAU,EACV,SAAU,IACV,OAAQ,SACR,QAAS,SACT,QAAS,EACT,QAAS,SACT,QAAS,SACT,QAAS,MACT,QAAS,MACT,QAAS,IACT,QAAS,EACT,QAAS,IACT,SAAU,SACV,SAAU,MACV,SAAU,MACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,MACV,SAAU,MACV,SAAU,SACV,SAAU,IACV,SAAU,SACV,SAAU,SACV,SAAU,EACV,SAAU,SACV,SAAU,SACV,SAAU,EACV,SAAU,MACV,SAAU,SACV,SAAU,IACV,SAAU,MACV,SAAU,SACV,SAAU,SACV,SAAU,IACV,SAAU,SACV,SAAU,EACV,SAAU,MACV,SAAU,SACV,SAAU,IACV,SAAU,SACV,SAAU,MACV,SAAU,SACV,SAAU,MACV,SAAU,SACV,S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UAAU,EAAGA,EAAE,WAAY,UAAU,EAAGA,EAAE,WAAY,UAAU,EAAGA,EAAE,WAAY,UAAU,EAAGA,EAAE,WAAY,UAAU,EAAGA,EAAE,UAAW,UAAU,EAAGA,EAAE,UAAW,UAAU,EAAGA,EAAE,WAAY,UAAU,EAAGA,EAAE,WAAY,UAAU,EAAGA,EAAE,WAAY,SAAS,EAAGA,EAAE,WAAY,SAAS,EAAGA,EAAE,WAAY,UAAU,EAAGA,EAAE,WAAY,UAAU,EAAGA,EAAE,WAAY,SAAS,EAAGA,EAAE,UAAW,UAAU,EAAGA,EAAE,UAAW,UAAU,EAAGA,EAAE,UAAW,UAAU,EAAGA,EAAE,WAAY,UAAU,EAAGA,EAAE,WAAY,UAAU,EAAGA,EAAE,WAAY,UAAU,EAAGA,EAAE,WAAY,UAAU,EAAGA,EAAE,WAAY,SAAS,EAAGA,EAAE,WAAY,UAAU,EAAGA,EAAE,WAAY,UAAU,EAAGA,EAAE,WAAY,UAAU,EAAGA,EAAE,WAAY,UAAU,EAAGA,EAAE,UAAW,UAAU,EAAGA,EAAE,UAAW,SAAS,EAAGA,EAAE,UAAW,UAAU,EAAGA,EAAE,UAAW,UAAU,EAAGA,EAAE,WAAY,UAAU,EAAGA,EAAE,WAAY,UAAU,EAAGA,EAAE,WAAY,UAAU,EAAGA,EAAE,WAAY,UAAU,EAAGA,EAAE,WAAY,UAAU,EAAGA,EAAE,WAAY,SAAS,EAAGA,EAAE,WAAY,UAAU,EAAGA,EAAE,WAAY,UAAU,EAAGA,EAAE,WAAY,UAAU,EAAGA,EAAE,WAAY,SAAS,EAAGA,EAAE,WAAY,UAAU,EAAGA,EAAE,WAAY,UAAU,EAAGA,EAAE,WAAY,UAAU,EAAGA,EAAE,UAAW,SAAS,EAAGA,EAAE,UAAW,UAAU,EAAGA,EAAE,UAAW,UAAU,EAAGA,EAAE,UAAW,UAAU,EAAGA,EAAE,UAAW,UAAU,EAAGA,EAAE,UAAW,UAAU,EAAGA,EAAE,WAAY,UAAU,EAAGA,EAAE,WAAY,UAAU,EAAGA,EAAE,WAAY,UAAU,EAAGA,EAAE,WAAY,UAAU,EAAGA,EAAE,WAAY,UAAU,EAAGA,EAAE,WAAY,UAAU,EAAGA,EAAE,WAAY,SAAS,EAAGA,EAAE,WAAY,SAAS,EAAGA,EAAE,WAAY,UAA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","names":["require_jsrsasign","__commonJSMin","exports","navigator","window","VERSION","VERSION_FULL","CryptoJS","g","a","b","j","n","p","o","l","h","t","q","s","r","m","d","c","i","w","x","v","u","f","k","e","y","z","A","B","C","D","E","F","T","ea","G","H","I","J","X","K","Y","L","Z","M","$","N","aa","O","ba","P","ca","Q","U","R","S","V","W","fa","da","b64map","b64pad","hex2b64","b64tohex","int2char","b64toBA","dbits","canary","j_lm","BigInteger","nbi","am1","am2","am3","BI_FP","BI_RM","BI_RC","rr","vv","intAt","bnpCopyTo","bnpFromInt","nbv","bnpFromString","bnpClamp","bnToString","bnNegate","bnAbs","bnCompareTo","nbits","bnBitLength","bnpDLShiftTo","bnpDRShiftTo","bnpLShiftTo","bnpRShiftTo","bnpSubTo","bnpMultiplyTo","bnpSquareTo","bnpDivRemTo","bnMod","Classic","cConvert","cRevert","cReduce","cMulTo","cSqrTo","bnpInvDigit","Montgomery","montConvert","montRevert","montReduce","montSqrTo","montMulTo","bnpIsEven","bnpExp","bnModPowInt","bnClone","bnIntValue","bnByteValue","bnShortValue","bnpChunkSize","bnSigNum","bnpToRadix","bnpFromRadix","bnpFromNumber","op_or","bnToByteArray","bnEquals","bnMin","bnMax","bnpBitwiseTo","op_and","bnAnd","bnOr","op_xor","bnXor","op_andnot","bnAndNot","bnNot","bnShiftLeft","bnShiftRight","lbit","bnGetLowestSetBit","cbit","bnBitCount","bnTestBit","bnpChangeBit","bnSetBit","bnClearBit","bnFlipBit","bnpAddTo","bnAdd","bnSubtract","bnMultiply","bnSquare","bnDivide","bnRemainder","bnDivideAndRemainder","bnpDMultiply","bnpDAddOffset","NullExp","nNop","nMulTo","nSqrTo","bnPow","bnpMultiplyLowerTo","bnpMultiplyUpperTo","Barrett","barrettConvert","barrettRevert","barrettReduce","barrettSqrTo","barrettMulTo","bnModPow","bnGCD","bnpModInt","bnModInverse","lowprimes","lplim","bnIsProbablePrime","bnpMillerRabin","Arcfour","ARC4init","ARC4next","prng_newstate","rng_psize","rng_state","rng_pool","rng_pptr","rng_seed_int","rng_seed_time","crypto","ua","rng_get_byte","rng_get_bytes","SecureRandom","parseBigInt","RSAKey","RSASetPublic","RSADoPublic","RSASetPrivate","RSASetPrivateEx","RSAGenerate","RSADoPrivate","ECFieldElementFp","feFpEquals","feFpToBigInteger","feFpNegate","feFpAdd","feFpSubtract","feFpMultiply","feFpSquare","feFpDivide","ECPointFp","pointFpGetX","pointFpGetY","pointFpEquals","pointFpIsInfinity","pointFpNegate","pointFpAdd","pointFpTwice","pointFpMultiply","pointFpMultiplyTwo","ECCurveFp","curveFpGetQ","curveFpGetA","curveFpGetB","curveFpEquals","curveFpGetInfinity","curveFpFromBigInteger","curveFpDecodePointHex","jsonParse","KJUR","twoscompl","hextopem","utf8tohex","extendClass","oidtohex","stohex","ASN1HEX","bitstrtoint","hextooid","hextorstr","hextoutf8","ucs2hextoutf8","iso88591hextoutf8","bitstrtobinstr","KEYUTIL","namearraytobinstr","X509","pemtohex","iptohex","rstrtohex","stoBA","BAtos","BAtohex","stob64","stob64u","b64tob64u","b64utos","b64utob64","hextob64u","b64utohex","utf8tob64u","b64utoutf8","uricmptohex","encodeURIComponentAll","hextouricmp","utf8tob64","b64toutf8","iso88591hextoutf8hex","hextob64","hextob64nl","foldnl","b64nltohex","b64topem","pemtob64","hextoArrayBuffer","ArrayBuffertohex","zulutomsec","timetogen","msectozulu","zulutosec","zulutodate","datetozulu","ipv6tohex","hextoipv6","hextoip","ipprefixlen","ipnetmask","newline_toUnix","newline_toDos","ishex","isBase64URLDot","hextoposhex","intarystrtohex","strdiffidx","strpad","inttohex","inttobitstr","binstrtobitstr","aryval","_RE_HEXDECONLY","_zeroPaddingOfSignature","pss_mgf1_str","_rsasign_getAlgNameAndHashFromHexDisgestInfo","ac","ab","X509CRL","require_localeData","__commonJSMin","exports","module","n","e","r","o","u","t","i","a","s","d","require_customParseFormat","__commonJSMin","exports","module","t","n","r","i","o","a","e","f","h","u","d","c","l","s","m","M","Y","p","v","D","w","g","y","L","require_objectSupport","__commonJSMin","exports","module","t","n","e","i","r","o","u","a","c","s","d","f","b","h","y","require_localizedFormat","__commonJSMin","exports","module","t","o","n","r","i","e","require_utc","__commonJSMin","exports","module","t","e","s","f","n","u","i","o","r","a","h","l","c","require_isoWeek","__commonJSMin","exports","module","t","i","s","a","d","n","o","r","e","require_weekOfYear","__commonJSMin","exports","module","t","i","n","r","f","s","a","o","e","require_weekday","__commonJSMin","exports","module","t","e","i","n","require_fi","__commonJSMin","exports","module","u","e","n","t","i","a","s","_","require_sv","__commonJSMin","exports","module","t","e","a","d","init_core","init_core","init_progress_kendo_angular_intl","setData","setData","setData","PageNotFoundComponent","selectors","decls","vars","template","rf","ctx","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵpropertyInterpolate1","user_r1","Email","ɵɵsanitizeUrl","ɵɵadvance","ɵɵtextInterpolate","Phone","ɵɵtextInterpolate1","ɵɵtemplate","NoUsageRightComponent_div_4_div_6_a_4_Template","NoUsageRightComponent_div_4_div_6_mat_icon_5_Template","NoUsageRightComponent_div_4_div_6_a_6_Template","NoUsageRightComponent_div_4_div_6_mat_icon_7_Template","Name","ɵɵproperty","NoUsageRightComponent_div_4_div_6_Template","ctx_r1","mobile","ɵɵtextInterpolate2","ɵɵpipeBind1","portalUsers","NoUsageRightComponent","constructor","userService","userInterfaceService","cdRef","showAdmins","subscriptions","ngOnInit","push","mobile$","subscribe","state","detectChanges","getCompanyUsers","users","filter","user","Role","length","ngOnDestroy","forEach","subscription","unsubscribe","ɵɵdirectiveInject","UserService","UserInterfaceService","ChangeDetectorRef","selectors","decls","vars","consts","template","rf","ctx","NoUsageRightComponent_div_4_Template","NoUsageRightComponent_div_5_Template","NoAdminRightComponent","selectors","decls","vars","template","rf","ctx","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","AppLandingComponent","constructor","router","cdRef","ngOnInit","navigate","ɵɵdirectiveInject","Router","ChangeDetectorRef","selectors","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate","ɵɵpipeBind1","ForbiddenComponent","selectors","decls","vars","template","rf","ctx","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","init_esm","AppComponentService","constructor","http","config","iwmBackendUri","backendIwmUri","doesTaskExist","taskId","get","doesWomTaskExist","getTicket","backendPortalUri","ɵɵinject","HttpClient","AppConfig","factory","ɵfac","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate","ɵɵpipeBind1","OpenTargetComponent","constructor","router","route","roleService","appComponentService","worksiteBasicInfoService","planBasicInfoService","invoicingProposalBasicInfoService","endCustomerInvoiceService","collectionInvoicingProposalBasicInfoService","tenderingBasicInfoService","cdRef","searchId","searchReady","accessToInvoicingProposals","accessToEndCustomerInvoice","accessToCollectionInvoicingProposals","accessToTenderings","subscriptions","searchTarget","push","combineLatest","params","userHasRole","subscribe","results","openSpecificTarget","openTarget","ngOnInit","ngOnDestroy","forEach","x","unsubscribe","taskQuery","Subject","womTaskQuery","womInvoicingProposalQuery","worksiteQuery","invoicingProposalQuery","endCustomerInvoiceQuery","planQuery","tenderingQuery","collectionInvoicingProposalQuery","subjectsToWait","Array","forkJoin","url","resultUrl","navigate","replaceUrl","detectChanges","next","iwmId","parseInt","isNaN","complete","doesTaskExist","response","task","Id","doesWomTaskExist","TaskId","getWorksiteBasicInfoById","worksite","getPlanBasicInfoByIwmId","plan","getInvoicingProposalBasicInfoById","invoicingproposal","getWomInvoicingProposalById","getEndCustomerInvoiceById","endCustomerInvoice","getCollectionInvoicingProposalBasicInfoById","collectioninvoicingproposal","getTenderingBasicInfoByIwmId","tendering","ɵɵdirectiveInject","Router","ActivatedRoute","ProductRoleService","AppComponentService","WorksiteBasicinfoService","PlanBasicinfoService","InvoicingProposalBasicinfoService","EndCustomerInvoiceBasicInformationService","CollectionInvoicingProposalBasicinfoService","TenderingBasicinfoService","ChangeDetectorRef","selectors","decls","vars","consts","template","rf","ctx","ɵɵtemplate","OpenTargetComponent_div_1_Template","OpenTargetComponent_div_2_Template","ɵɵproperty","init_esm","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","error_r1","ɵɵelement","ɵɵtemplate","AuthCallbackComponent_div_0_div_11_Template","ɵɵtextInterpolate","ɵɵpipeBind1","ɵɵproperty","ctx_r1","errors","AuthCallbackComponent","constructor","oAuthService","oAuthStorage","router","route","destroy$","Subject","ngOnInit","hasAuthCode","snapshot","queryParamMap","has","hasValidIdToken","redirectUrl","getAppItem","navigateByUrl","replaceUrl","events","pipe","filter","event","type","take","takeUntil","subscribe","tryLogin","OAuthErrorEvent","reason","error","ngOnDestroy","next","complete","ɵɵdirectiveInject","OAuthService","AppOAuthStorage","Router","ActivatedRoute","selectors","decls","vars","consts","template","rf","ctx","AuthCallbackComponent_div_0_Template","length","appRoutes","path","loadChildren","then","m","ProductExtensionsModule","data","hybridMapHidden","instructionsHidden","SettingsModule","SatnetModule","HeadPowerSettingsModule","WorksitesModule","TasksModule","InvoicingProposalsModule","PlansModule","TenderingsModule","e","EndCustomerInvoicesModule","redirectTo","pathMatch","component","AppLandingComponent","canActivate","AuthGuard","OpenTargetComponent","StatusScreenComponent","NoUsageRightComponent","NoAdminRightComponent","title","ForbiddenComponent","PageNotFoundComponent","AuthCallbackComponent","AppRoutingModule","RouterModule","forRoot","scrollPositionRestoration","init_core","HpoErrorHandler","ErrorHandler","constructor","toaster","blahService","injector","handleError","error","Object","create","blah","HttpErrorResponse","navigator","onLine","console","status","message","errorMessage","toastDuration","ToastDuration","normal","persistent","options","duration","actionLabel","appInsightsService","get","ApplicationInsightsService","trackException","ɵɵinject","ToasterService","BlahService","Injector","factory","ɵfac","rs","JwksValidationHandler","AbstractValidationHandler","params","retry","kid","keys","key","alg","k","kty","matchingKeys","error","loadedKeys","_","keyObj","validationOptions","valueToHash","algorithm","result","byteArrayAsString","hexString","i","hexDigit","num","environment","production","version","init_esm","FloatingChatService","constructor","blahService","http","config","toaster","assistantApiUrl","backendAiUri","maxHistoryLengthSplice","maxMessageLength","defaultModel","itemName","window","addEventListener","sessionStorage","setItem","JSON","stringify","chatData","savedData","getItem","parse","getInitialChatData","localeChange$","subscribe","placeholder","blah","infoText","receivedMessageFooter","messageHistory","text","senderName","senderPicture","isOwn","messageMaxLength","loading","floatingButtonPosition","bottom","right","handleChatMessageSent","event","responseReceived","messageAdded","addMessage","push","postChatMessage","slice","next","o","response","error","create","setTimeout","handleChatReset","history","url","payload","message","model","post","ɵɵinject","BlahService","HttpClient","AppConfig","ToasterService","factory","ɵfac","init_core","init_esm","init_operators","_c0","_c1","_c2","a0","a1","a2","a3","a4","a5","SplitComponent_ng_template_1_div_0_ng_container_2_ng_container_1_ng_container_1_Template","rf","ctx","ɵɵelementContainer","SplitComponent_ng_template_1_div_0_ng_container_2_ng_container_1_Template","ɵɵelementContainerStart","ɵɵtemplate","ɵɵelementContainerEnd","injector_r4","ctx_r4","ɵɵnextContext","area_r6","index_r2","first_r7","ctx_r2","ɵɵadvance","ɵɵproperty","ɵɵpureFunction6","SplitComponent_ng_template_1_div_0_ng_container_2_Template","SplitComponent_ng_template_1_div_0_ng_template_3_Template","ɵɵelement","SplitComponent_ng_template_1_div_0_Template","_r1","ɵɵgetCurrentView","ɵɵelementStart","ɵɵlistener","$event","ɵɵrestoreView","ɵɵresetView","ɵɵtemplateRefExtractor","ɵɵelementEnd","defaultGutterTpl_r8","ɵɵreference","ɵɵstyleProp","ɵɵclassProp","ɵɵattribute","SplitComponent_ng_template_1_Template","last_r9","getPointFromEvent","event","gutterEl","pointDeltaEquals","lhs","rhs","deltaPx","getKeyboardEndpoint","direction","offset","offsetX","offsetY","getElementPixelSize","elRef","rect","getInputBoolean","v","getInputPositiveNumber","defaultValue","isUserSizesValid","unit","sizes","total","s","wildcardSizeAreas","size","getAreaMinSize","a","getAreaMaxSize","getGutterSideAbsorptionCapacity","sideAreas","pixels","allAreasSizePixel","acc","area","res","getAreaAbsorptionCapacity","areaSnapshot","getAreaAbsorptionCapacityPercent","getAreaAbsorptionCapacityPixel","tempPercentSize","maxSizePixel","minSizePixel","tempPixelSize","updateAreaSize","item","ANGULAR_SPLIT_DEFAULT_OPTIONS","InjectionToken","SplitGutterDirective","template","originElement","gutterNum","gutterExcludeElement","gutterHandleElement","map","elementRef","elements","dir","__ngFactoryType__","ɵɵdirectiveInject","TemplateRef","ɵɵdefineDirective","GUTTER_NUM_TOKEN","SplitGutterDynamicInjectorDirective","value","injector","Injector","vcr","templateRef","ViewContainerRef","SplitComponent","Observable","subscriber","debounceTime","ngZone","cdRef","renderer","globalConfig","EventEmitter","Subject","property","component","newArea","resetOrders","resetSizes","areas","comp","formattedSizes","i","b","useUserSizes","defaultSize","alreadyGotOne","sumGutterSize","tempPoint","gutterOrder","endPoint","areaSnapshotBefore","areaSnapshotAfter","notInvolvedAreasSizesPercent","accum","t","steppedOffset","areasBefore","areasAfter","all","areaToReset","fct","type","newSize","gutter","whichGutter","gtr","f","NgZone","ElementRef","ChangeDetectorRef","Renderer2","ɵɵdefineComponent","dirIndex","ɵɵcontentQuery","_t","ɵɵqueryRefresh","ɵɵloadQuery","ɵɵviewQuery","ɵɵprojectionDef","ɵɵprojection","NgForOf","NgIf","NgTemplateOutlet","SplitAreaDirective","split","iframeFixDiv","grow","shrink","basis","isMin","isMax","AngularSplitModule","__ngFactoryType__","ɵɵdefineNgModule","ɵɵdefineInjector","CommonModule","init_core","IframeComponent","constructor","sanitizer","closeFrame","EventEmitter","iframeSrc","ngOnInit","bypassSecurityTrustResourceUrl","targetUrl","onLoad","iframe","doc","contentWindow","goBack","history","back","close","emit","ɵɵdirectiveInject","DomSanitizer","selectors","inputs","outputs","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵlistener","i0","ɵɵrestoreView","_r1","ɵɵresetView","ɵɵtext","ɵɵelementEnd","iframeApp_r2","ɵɵreference","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","ɵɵproperty","ɵɵsanitizeResourceUrl","ɵɵelementContainerStart","ɵɵelementStart","ɵɵlistener","ɵɵrestoreView","_r4","ctx_r1","ɵɵnextContext","ɵɵresetView","toggleSplitView","showMap","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","ɵɵpureFunction1","_c4","ɵɵtextInterpolate1","ɵɵpipeBind1","_r5","showIwi","ɵɵtemplate","AppComponent_hpo_layout_0_ng_template_1_div_15_ng_container_1_Template","iwiVisibleInRoute","mobile","_r3","searchWithIwmId","ɵɵtwoWayListener","$event","i0","ɵɵtwoWayBindingSet","searchId","AppComponent_hpo_layout_0_ng_template_1_ng_container_14_Template","AppComponent_hpo_layout_0_ng_template_1_div_15_Template","ɵɵpureFunction2","_c3","ɵɵtextInterpolate","ɵɵtwoWayProperty","mapVisibleInRoute","ff_iwiSplitView","ɵɵelement","ɵɵstyleProp","mapHeight","mapWidth","mapItems","highlightItem","mapResized","_r7","iwiHeight","iwiWidth","iwiUrl","_r6","splitDragEnd","AppComponent_hpo_layout_0_ng_template_5_div_4_Template","AppComponent_hpo_layout_0_ng_template_5_div_6_Template","mapSplitWidth","iwiSplitWidth","openedSplitViewApp","_r1","logOut","sidenavToggleChanged","floatingChatService","handleChatMessageSent","handleChatReset","AppComponent_hpo_layout_0_ng_template_1_Template","ɵɵtemplateRefExtractor","AppComponent_hpo_layout_0_ng_template_3_Template","AppComponent_hpo_layout_0_ng_template_5_Template","ɵɵpropertyInterpolate","applicationPage","currentUser","productId","deputyFeatureProductId","claims","locationUri","applicationSearchContent_r8","floatingActionButtonContent_r9","mainContent_r10","menuItems","productionMode","environmentVariables","accountBaseUri","portalBaseUri","backendAccountUri","backendPortalUri","searchActive","appVersion","aiChatFeatureEnabled","chatData","AppComponent","isLoggedIn","_isLoggedIn","openedFromIwd","_openedFromIwd","openDialog","e","constructor","oAuthService","oAuthStorage","roleService","productService","companySettingsService","settingService","userService","router","route","titleService","appInsightsService","config","featureFlagService","contentLayoutService","fabService","userInterfaceService","iwmLocaleService","liveMessagingService","blahService","toaster","smoothness","uiMapService","iconRegistry","document","CurrentUser","environment","version","userHasIpRoleRights","undefined","Subject","initBaseProperties","initAuthentication","init","applicationInsightsInstrumentationKey","mobile$","subscribe","state","highlightItem$","res","items$","toggleMap$","setDefaultFontSetClass","ngOnInit","localeChange$","setLocale","refresh","events","pipe","filter","event","NavigationEnd","map","firstChild","outlet","mergeMap","data","resetState","fullTitle","translatedTitle","blah","setTitle","location","href","initIwiSplitView","ngAfterViewInit","setInterval","setMapSize","setIwiSize","getAll","production","clear","createAuthConfig","baseUri","baseURI","replace","authConfig","AuthConfig","issuer","responseType","dummyClientSecret","clientSecret","redirectUri","clientId","scope","sessionChecksEnabled","environmentName","sessionCheckIntervall","clockSkewInSec","showDebugInformation","configure","tokenValidationHandler","JwksValidationHandler","setupAutomaticSilentRefresh","loadDiscoveryDocument","type","loadUserProfile","handlePostTokenReceive","setAppItem","handleLoginSideEffects","handlePostLogin","console","log","OAuthErrorEvent","error","trackException","Error","reason","hasValidIdToken","getAppItem","setClaimProperties","forEach","k","sessionStorage","removeItem","redirectUrl","addUsageStatistics","freshLogin","initFeatureFlagsService","initSmoothness","initRoleService","initRequireService","initLiveMessagingService","handleMenuItems","setTimeout","body","classList","add","isFeatureAvailable","o","flagClaims","__spreadValues","filterClaims","armed","arm","appId","impactTreshold","impactOnNavigation","impactOnIdle","autoRelieve","AutoRelieveMode","OnNavigation","debug","backendPortalUsersUri","toString","loadAll","result","initialized","initializing","logLevel","backendLiveMsgUri","getAccessToken","listenProductWideLiveMessages","listenToSingleMessages","payload","Payload","message","messageParams","RequestState","RequestType","RequestStatusCode","translatedMessage","key","params","create","actionLabel","duration","ToastDuration","extra","color","__async","URL","window","origin","searchParams","has","component","firstValueFrom","snapshot","queryParamMap","setIwdMenuItems","setAppMenuItems","forkJoin","ipAccess","userHasRole","ipAsHandlerAccess","iwmAdmin","tenderingAccess","taxReportingProductAccess","companyHasLicenseToProduct","iwmTaxReportingId","taxReportingRoleAccess","iwmInventoryProductAccess","companyHasLicenseToInventory","satNetMonitorAccess","iwmSatNetProductId","satNetMonitorFlag","settingsPageFlag","hiddenMenus","getHiddenMenus","items","value","findIndex","t","TargetType","push","MenuItem","icon","translate","backgroundColor","textColor","splice","userHasRoleClaim","recordListUrl","iwdPortalEndpoint","defectListUrl","dashboardUrl","settingsUrl","getIdentityClaims","userId","givenName","familyName","email","picture","accessToken","companyName","setBlahLanguage","app","active","next","navigate","openWithIdField","nativeElement","blur","opened","showFabBtn","setVisibility","claimLocale","separatorIndex","indexOf","localeLanguage","substring","locale","availableLocales","find","l","startsWith","changeLocale","mapSplitDiv","newWidth","clientWidth","newHeight","clientHeight","iwiSplitDiv","sizes","ɵɵdirectiveInject","OAuthService","AppOAuthStorage","ProductRoleService","ProductService","CompanySettingsService","SettingsService","UserService","Router","ActivatedRoute","Title","ApplicationInsightsService","AppConfig","FeatureFlagService","ContentLayoutService","FloatingActionButtonService","UserInterfaceService","IwmLocaleService","LiveMessagingService","BlahService","ToasterService","SmoothnessEnforcer","HybridUiMapService","FloatingChatService","MatIconRegistry","DOCUMENT","selectors","viewQuery","rf","ctx","ɵɵresolveDocument","AppComponent_hpo_layout_0_Template","AppComponent_div_1_Template","__decorate","LocalStorage","SessionStorage","plural","val","n","i","v","fi_default","plural","val","n","i","v","sv_default","plural","val","n","i","v","en_default","init_esm","init_operators","BlahMatPaginatorIntl","MatPaginatorIntl","constructor","blahService","iwmLocaleService","destroy$","Subject","getRangeLabel","page","pageSize","length","Math","max","startIndex","endIndex","min","iwmLocale$","pipe","takeUntil","subscribe","value","updateTranslations","ngOnDestroy","next","complete","itemsPerPageLabel","blah","nextPageLabel","previousPageLabel","lastPageLabel","firstPageLabel","changes","ɵɵinject","BlahService","IwmLocaleService","factory","ɵfac","import_dayjs","import_localeData","import_customParseFormat","import_objectSupport","import_localizedFormat","import_utc","import_isoWeek","import_weekOfYear","import_weekday","import_fi","import_sv","dayjs","localeDataPlugin","customParseFormatPlugin","objectSupportPlugin","localizedFormatPlugin","utcPlugin","isoWeekPlugin","weekOfYearPlugin","weekdayPlugin","LocalizationMessageService","MessageService","constructor","blahService","get","key","messages","undefined","console","warn","translationKey","blah","ɵɵinject","BlahService","factory","ɵfac","BypassServiceWorkerInterceptor","intercept","req","next","bypassReq","clone","headers","set","handle","factory","ɵfac","CoreModule","constructor","parentModule","Error","ɵɵinject","provideHttpClient","withInterceptorsFromDi","provide","HTTP_INTERCEPTORS","useClass","BypassServiceWorkerInterceptor","multi","AuthorizationInterceptor","AuthModule","CommonModule","BlahModule","createOAuthStorage","AppOAuthStorage","initConfig","config","load","environment","version","initBlahFactory","blahService","init","appVersion","resourceNames","initTheme","themeService","registerLocaleData","localeFi","localeEn","localeSv","AppModule","bootstrap","AppComponent","AppComponentService","provide","ErrorHandler","useClass","HpoErrorHandler","LOCALE_ID","useValue","OAuthStorage","useFactory","APP_INITIALIZER","deps","AppConfig","multi","MAT_DIALOG_DEFAULT_OPTIONS","autoFocus","hasBackdrop","maxHeight","BlahService","ResizeService","HybridUiMapService","ContentLayoutService","FloatingActionButtonService","MessageService","LocalizationMessageService","MatPaginatorIntl","BlahMatPaginatorIntl","SinglePopupService","nativeElement","document","body","SmoothnessEnforcer","ThemeService","FloatingChatService","imports","BrowserModule","CoreModule","BrowserAnimationsModule","FloatingActionButtonModule","SpinnerModule","MatMenuModule","MatNativeDateModule","SharedModule","IntlModule","HpoLayoutModule","AppRoutingModule","FormsModule","MatFormFieldModule","MatButtonModule","MatInputModule","ServiceWorkerModule","register","enabled","production","OAuthModule","forRoot","BlahModule","HpoNumberModule","PopupModule","AngularSplitModule","GanttModule","PagerModule","MapModule","AuthModule","environment","production","enableProdMode","platformBrowser","bootstrapModule","AppModule","catch","err","console","error"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,12,13,14,29,34,37,38,39,41]}