UNPKG

stimulsoft-viewer-angular

Version:
155 lines 38.9 kB
import { Injectable } from '@angular/core'; import * as i0 from "@angular/core"; export class Md5Service { constructor() { this.hexcase = 0; } hex_md5(a) { return this.rstr2hex(this.rstr_md5(this.str2rstr_utf8(a))); } hex_hmac_md5(a, b) { return this.rstr2hex(this.rstr_hmac_md5(this.str2rstr_utf8(a), this.str2rstr_utf8(b))); } md5_vm_test() { return this.hex_md5('abc').toLowerCase() == '900150983cd24fb0d6963f7d28e17f72'; } rstr_md5(a) { return this.binl2rstr(this.binl_md5(this.rstr2binl(a), a.length * 8)); } rstr_hmac_md5(c, f) { let e = this.rstr2binl(c); if (e.length > 16) { e = this.binl_md5(e, c.length * 8); } let a = Array(16), d = Array(16); for (let b = 0; b < 16; b++) { a[b] = e[b] ^ 909522486; d[b] = e[b] ^ 1549556828; } let g = this.binl_md5(a.concat(this.rstr2binl(f)), 512 + f.length * 8); return this.binl2rstr(this.binl_md5(d.concat(g), 512 + 128)); } rstr2hex(c) { try { this.hexcase; } catch (g) { this.hexcase = 0; } let f = this.hexcase ? '0123456789ABCDEF' : '0123456789abcdef'; let b = ''; let a; for (let d = 0; d < c.length; d++) { a = c.charCodeAt(d); b += f.charAt((a >>> 4) & 15) + f.charAt(a & 15); } return b; } str2rstr_utf8(c) { let b = ''; let d = -1; let a, e; while (++d < c.length) { a = c.charCodeAt(d); e = d + 1 < c.length ? c.charCodeAt(d + 1) : 0; if (55296 <= a && a <= 56319 && 56320 <= e && e <= 57343) { a = 65536 + ((a & 1023) << 10) + (e & 1023); d++; } if (a <= 127) { b += String.fromCharCode(a); } else { if (a <= 2047) { b += String.fromCharCode(192 | ((a >>> 6) & 31), 128 | (a & 63)); } else { if (a <= 65535) { b += String.fromCharCode(224 | ((a >>> 12) & 15), 128 | ((a >>> 6) & 63), 128 | (a & 63)); } else { if (a <= 2097151) { b += String.fromCharCode(240 | ((a >>> 18) & 7), 128 | ((a >>> 12) & 63), 128 | ((a >>> 6) & 63), 128 | (a & 63)); } } } } } return b; } rstr2binl(b) { let a = Array(b.length >> 2); for (let c = 0; c < a.length; c++) { a[c] = 0; } for (let c = 0; c < b.length * 8; c += 8) { a[c >> 5] |= (b.charCodeAt(c / 8) & 255) << (c % 32); } return a; } binl2rstr(b) { let a = ''; for (let c = 0; c < b.length * 32; c += 8) { a += String.fromCharCode((b[c >> 5] >>> (c % 32)) & 255); } return a; } binl_md5(p, k) { p[k >> 5] |= 128 << ((k) % 32); p[(((k + 64) >>> 9) << 4) + 14] = k; let o = 1732584193; let n = -271733879; let m = -1732584194; let l = 271733878; for (let g = 0; g < p.length; g += 16) { let j = o; let h = n; let f = m; let e = l; o = this.md5_ff(o, n, m, l, p[g + 0], 7, -680876936); l = this.md5_ff(l, o, n, m, p[g + 1], 12, -389564586); m = this.md5_ff(m, l, o, n, p[g + 2], 17, 606105819); n = this.md5_ff(n, m, l, o, p[g + 3], 22, -1044525330); o = this.md5_ff(o, n, m, l, p[g + 4], 7, -176418897); l = this.md5_ff(l, o, n, m, p[g + 5], 12, 1200080426); m = this.md5_ff(m, l, o, n, p[g + 6], 17, -1473231341); n = this.md5_ff(n, m, l, o, p[g + 7], 22, -45705983); o = this.md5_ff(o, n, m, l, p[g + 8], 7, 1770035416); l = this.md5_ff(l, o, n, m, p[g + 9], 12, -1958414417); m = this.md5_ff(m, l, o, n, p[g + 10], 17, -42063); n = this.md5_ff(n, m, l, o, p[g + 11], 22, -1990404162); o = this.md5_ff(o, n, m, l, p[g + 12], 7, 1804603682); l = this.md5_ff(l, o, n, m, p[g + 13], 12, -40341101); m = this.md5_ff(m, l, o, n, p[g + 14], 17, -1502002290); n = this.md5_ff(n, m, l, o, p[g + 15], 22, 1236535329); o = this.md5_gg(o, n, m, l, p[g + 1], 5, -165796510); l = this.md5_gg(l, o, n, m, p[g + 6], 9, -1069501632); m = this.md5_gg(m, l, o, n, p[g + 11], 14, 643717713); n = this.md5_gg(n, m, l, o, p[g + 0], 20, -373897302); o = this.md5_gg(o, n, m, l, p[g + 5], 5, -701558691); l = this.md5_gg(l, o, n, m, p[g + 10], 9, 38016083); m = this.md5_gg(m, l, o, n, p[g + 15], 14, -660478335); n = this.md5_gg(n, m, l, o, p[g + 4], 20, -405537848); o = this.md5_gg(o, n, m, l, p[g + 9], 5, 568446438); l = this.md5_gg(l, o, n, m, p[g + 14], 9, -1019803690); m = this.md5_gg(m, l, o, n, p[g + 3], 14, -187363961); n = this.md5_gg(n, m, l, o, p[g + 8], 20, 1163531501); o = this.md5_gg(o, n, m, l, p[g + 13], 5, -1444681467); l = this.md5_gg(l, o, n, m, p[g + 2], 9, -51403784); m = this.md5_gg(m, l, o, n, p[g + 7], 14, 1735328473); n = this.md5_gg(n, m, l, o, p[g + 12], 20, -1926607734); o = this.md5_hh(o, n, m, l, p[g + 5], 4, -378558); l = this.md5_hh(l, o, n, m, p[g + 8], 11, -2022574463); m = this.md5_hh(m, l, o, n, p[g + 11], 16, 1839030562); n = this.md5_hh(n, m, l, o, p[g + 14], 23, -35309556); o = this.md5_hh(o, n, m, l, p[g + 1], 4, -1530992060); l = this.md5_hh(l, o, n, m, p[g + 4], 11, 1272893353); m = this.md5_hh(m, l, o, n, p[g + 7], 16, -155497632); n = this.md5_hh(n, m, l, o, p[g + 10], 23, -1094730640); o = this.md5_hh(o, n, m, l, p[g + 13], 4, 681279174); l = this.md5_hh(l, o, n, m, p[g + 0], 11, -358537222); m = this.md5_hh(m, l, o, n, p[g + 3], 16, -722521979); n = this.md5_hh(n, m, l, o, p[g + 6], 23, 76029189); o = this.md5_hh(o, n, m, l, p[g + 9], 4, -640364487); l = this.md5_hh(l, o, n, m, p[g + 12], 11, -421815835); m = this.md5_hh(m, l, o, n, p[g + 15], 16, 530742520); n = this.md5_hh(n, m, l, o, p[g + 2], 23, -995338651); o = this.md5_ii(o, n, m, l, p[g + 0], 6, -198630844); l = this.md5_ii(l, o, n, m, p[g + 7], 10, 1126891415); m = this.md5_ii(m, l, o, n, p[g + 14], 15, -1416354905); n = this.md5_ii(n, m, l, o, p[g + 5], 21, -57434055); o = this.md5_ii(o, n, m, l, p[g + 12], 6, 1700485571); l = this.md5_ii(l, o, n, m, p[g + 3], 10, -1894986606); m = this.md5_ii(m, l, o, n, p[g + 10], 15, -1051523); n = this.md5_ii(n, m, l, o, p[g + 1], 21, -2054922799); o = this.md5_ii(o, n, m, l, p[g + 8], 6, 1873313359); l = this.md5_ii(l, o, n, m, p[g + 15], 10, -30611744); m = this.md5_ii(m, l, o, n, p[g + 6], 15, -1560198380); n = this.md5_ii(n, m, l, o, p[g + 13], 21, 1309151649); o = this.md5_ii(o, n, m, l, p[g + 4], 6, -145523070); l = this.md5_ii(l, o, n, m, p[g + 11], 10, -1120210379); m = this.md5_ii(m, l, o, n, p[g + 2], 15, 718787259); n = this.md5_ii(n, m, l, o, p[g + 9], 21, -343485551); o = this.safe_add(o, j); n = this.safe_add(n, h); m = this.safe_add(m, f); l = this.safe_add(l, e); } return Array(o, n, m, l); } md5_cmn(h, e, d, c, g, f) { return this.safe_add(this.bit_rol(this.safe_add(this.safe_add(e, h), this.safe_add(c, f)), g), d); } md5_ff(g, f, k, j, e, i, h) { return this.md5_cmn((f & k) | ((~f) & j), g, f, e, i, h); } md5_gg(g, f, k, j, e, i, h) { return this.md5_cmn((f & j) | (k & (~j)), g, f, e, i, h); } md5_hh(g, f, k, j, e, i, h) { return this.md5_cmn(f ^ k ^ j, g, f, e, i, h); } md5_ii(g, f, k, j, e, i, h) { return this.md5_cmn(k ^ (f | (~j)), g, f, e, i, h); } safe_add(a, d) { let c = (a & 65535) + (d & 65535); let b = (a >> 16) + (d >> 16) + (c >> 16); return (b << 16) | (c & 65535); } bit_rol(a, b) { return (a << b) | (a >>> (32 - b)); } ; static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: Md5Service, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); } static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: Md5Service }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: Md5Service, decorators: [{ type: Injectable }], ctorParameters: () => [] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWQ1LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdGltdWxzb2Z0LXZpZXdlci1hbmd1bGFyL3NyYy9saWIvc2VydmljZXMvbWQ1LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFHM0MsTUFBTSxPQUFPLFVBQVU7SUFFckI7UUFEUSxZQUFPLEdBQUcsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVqQixPQUFPLENBQUMsQ0FBQyxJQUFJLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUN6RSxZQUFZLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUM3RyxXQUFXLEtBQUssT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsRUFBRSxJQUFJLGtDQUFrQyxDQUFBLENBQUMsQ0FBQztJQUNoRyxRQUFRLENBQUMsQ0FBQyxJQUFJLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUNyRixhQUFhLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sR0FBRyxFQUFFLEVBQUUsQ0FBQztZQUM3QyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQTtRQUNwQyxDQUFDO1FBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFBQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQztZQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFBO1FBQUMsQ0FBQztRQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDOUwsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQTtJQUM5RCxDQUFDO0lBQ0QsUUFBUSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUM7UUFBQyxJQUFJLENBQUMsT0FBTyxDQUFBO0lBQUMsQ0FBQztJQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFBQyxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQTtJQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFBO0lBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUM1USxhQUFhLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7UUFBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFBQyxJQUFJLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUFDLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztZQUFDLENBQUMsRUFBRSxDQUFBO1FBQUMsQ0FBQztRQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFBQyxDQUFDO2FBQU0sQ0FBQztZQUFDLElBQUksQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFBO1lBQUMsQ0FBQztpQkFBTSxDQUFDO2dCQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssRUFBRSxDQUFDO29CQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFBO2dCQUFDLENBQUM7cUJBQU0sQ0FBQztvQkFBQyxJQUFJLENBQUMsSUFBSSxPQUFPLEVBQUUsQ0FBQzt3QkFBQyxDQUFDLElBQUksTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQTtvQkFBQyxDQUFDO2dCQUFDLENBQUM7WUFBQyxDQUFDO1FBQUMsQ0FBQztJQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQSxDQUFDLENBQUM7SUFDanFCLFNBQVMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFBO0lBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUMxTSxTQUFTLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFBQyxDQUFDLElBQUksTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQTtJQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQSxDQUFDLENBQUM7SUFDN0ksUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1FBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7UUFBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7UUFBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUM7UUFBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7UUFBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUM7UUFBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7UUFBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7UUFBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUM7UUFBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7UUFBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUM7UUFBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7UUFBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7UUFBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUM7UUFBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7UUFBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUM7UUFBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUFDLENBQUMsQ0FBQyxPQUFPLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQSxDQUFDLENBQUM7SUFDdHpILE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUN4TixNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUN0SyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUNsTixPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBQUEsQ0FBQzsrR0F0QjFDLFVBQVU7bUhBQVYsVUFBVTs7NEZBQVYsVUFBVTtrQkFEdEIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIE1kNVNlcnZpY2Uge1xyXG4gIHByaXZhdGUgaGV4Y2FzZSA9IDA7XHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgaGV4X21kNShhKSB7IHJldHVybiB0aGlzLnJzdHIyaGV4KHRoaXMucnN0cl9tZDUodGhpcy5zdHIycnN0cl91dGY4KGEpKSkgfVxyXG4gIGhleF9obWFjX21kNShhLCBiKSB7IHJldHVybiB0aGlzLnJzdHIyaGV4KHRoaXMucnN0cl9obWFjX21kNSh0aGlzLnN0cjJyc3RyX3V0ZjgoYSksIHRoaXMuc3RyMnJzdHJfdXRmOChiKSkpIH1cclxuICBtZDVfdm1fdGVzdCgpIHsgcmV0dXJuIHRoaXMuaGV4X21kNSgnYWJjJykudG9Mb3dlckNhc2UoKSA9PSAnOTAwMTUwOTgzY2QyNGZiMGQ2OTYzZjdkMjhlMTdmNzInIH1cclxuICByc3RyX21kNShhKSB7IHJldHVybiB0aGlzLmJpbmwycnN0cih0aGlzLmJpbmxfbWQ1KHRoaXMucnN0cjJiaW5sKGEpLCBhLmxlbmd0aCAqIDgpKSB9XHJcbiAgcnN0cl9obWFjX21kNShjLCBmKSB7XHJcbiAgICBsZXQgZSA9IHRoaXMucnN0cjJiaW5sKGMpOyBpZiAoZS5sZW5ndGggPiAxNikge1xyXG4gICAgICBlID0gdGhpcy5iaW5sX21kNShlLCBjLmxlbmd0aCAqIDgpXHJcbiAgICB9IGxldCBhID0gQXJyYXkoMTYpLCBkID0gQXJyYXkoMTYpOyBmb3IgKGxldCBiID0gMDsgYiA8IDE2OyBiKyspIHsgYVtiXSA9IGVbYl0gXiA5MDk1MjI0ODY7IGRbYl0gPSBlW2JdIF4gMTU0OTU1NjgyOCB9IGxldCBnID0gdGhpcy5iaW5sX21kNShhLmNvbmNhdCh0aGlzLnJzdHIyYmlubChmKSksIDUxMiArIGYubGVuZ3RoICogOCk7XHJcbiAgICByZXR1cm4gdGhpcy5iaW5sMnJzdHIodGhpcy5iaW5sX21kNShkLmNvbmNhdChnKSwgNTEyICsgMTI4KSlcclxuICB9XHJcbiAgcnN0cjJoZXgoYykgeyB0cnkgeyB0aGlzLmhleGNhc2UgfSBjYXRjaCAoZykgeyB0aGlzLmhleGNhc2UgPSAwIH0gbGV0IGYgPSB0aGlzLmhleGNhc2UgPyAnMDEyMzQ1Njc4OUFCQ0RFRicgOiAnMDEyMzQ1Njc4OWFiY2RlZic7IGxldCBiID0gJyc7IGxldCBhOyBmb3IgKGxldCBkID0gMDsgZCA8IGMubGVuZ3RoOyBkKyspIHsgYSA9IGMuY2hhckNvZGVBdChkKTsgYiArPSBmLmNoYXJBdCgoYSA+Pj4gNCkgJiAxNSkgKyBmLmNoYXJBdChhICYgMTUpIH0gcmV0dXJuIGIgfVxyXG4gIHN0cjJyc3RyX3V0ZjgoYykgeyBsZXQgYiA9ICcnOyBsZXQgZCA9IC0xOyBsZXQgYSwgZTsgd2hpbGUgKCsrZCA8IGMubGVuZ3RoKSB7IGEgPSBjLmNoYXJDb2RlQXQoZCk7IGUgPSBkICsgMSA8IGMubGVuZ3RoID8gYy5jaGFyQ29kZUF0KGQgKyAxKSA6IDA7IGlmICg1NTI5NiA8PSBhICYmIGEgPD0gNTYzMTkgJiYgNTYzMjAgPD0gZSAmJiBlIDw9IDU3MzQzKSB7IGEgPSA2NTUzNiArICgoYSAmIDEwMjMpIDw8IDEwKSArIChlICYgMTAyMyk7IGQrKyB9IGlmIChhIDw9IDEyNykgeyBiICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYSkgfSBlbHNlIHsgaWYgKGEgPD0gMjA0NykgeyBiICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMTkyIHwgKChhID4+PiA2KSAmIDMxKSwgMTI4IHwgKGEgJiA2MykpIH0gZWxzZSB7IGlmIChhIDw9IDY1NTM1KSB7IGIgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgyMjQgfCAoKGEgPj4+IDEyKSAmIDE1KSwgMTI4IHwgKChhID4+PiA2KSAmIDYzKSwgMTI4IHwgKGEgJiA2MykpIH0gZWxzZSB7IGlmIChhIDw9IDIwOTcxNTEpIHsgYiArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDI0MCB8ICgoYSA+Pj4gMTgpICYgNyksIDEyOCB8ICgoYSA+Pj4gMTIpICYgNjMpLCAxMjggfCAoKGEgPj4+IDYpICYgNjMpLCAxMjggfCAoYSAmIDYzKSkgfSB9IH0gfSB9IHJldHVybiBiIH1cclxuICByc3RyMmJpbmwoYikgeyBsZXQgYSA9IEFycmF5KGIubGVuZ3RoID4+IDIpOyBmb3IgKGxldCBjID0gMDsgYyA8IGEubGVuZ3RoOyBjKyspIHsgYVtjXSA9IDAgfSBmb3IgKGxldCBjID0gMDsgYyA8IGIubGVuZ3RoICogODsgYyArPSA4KSB7IGFbYyA+PiA1XSB8PSAoYi5jaGFyQ29kZUF0KGMgLyA4KSAmIDI1NSkgPDwgKGMgJSAzMikgfSByZXR1cm4gYSB9XHJcbiAgYmlubDJyc3RyKGIpIHsgbGV0IGEgPSAnJzsgZm9yIChsZXQgYyA9IDA7IGMgPCBiLmxlbmd0aCAqIDMyOyBjICs9IDgpIHsgYSArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKChiW2MgPj4gNV0gPj4+IChjICUgMzIpKSAmIDI1NSkgfSByZXR1cm4gYSB9XHJcbiAgYmlubF9tZDUocCwgaykgeyBwW2sgPj4gNV0gfD0gMTI4IDw8ICgoaykgJSAzMik7IHBbKCgoayArIDY0KSA+Pj4gOSkgPDwgNCkgKyAxNF0gPSBrOyBsZXQgbyA9IDE3MzI1ODQxOTM7IGxldCBuID0gLTI3MTczMzg3OTsgbGV0IG0gPSAtMTczMjU4NDE5NDsgbGV0IGwgPSAyNzE3MzM4Nzg7IGZvciAobGV0IGcgPSAwOyBnIDwgcC5sZW5ndGg7IGcgKz0gMTYpIHsgbGV0IGogPSBvOyBsZXQgaCA9IG47IGxldCBmID0gbTsgbGV0IGUgPSBsOyBvID0gdGhpcy5tZDVfZmYobywgbiwgbSwgbCwgcFtnICsgMF0sIDcsIC02ODA4NzY5MzYpOyBsID0gdGhpcy5tZDVfZmYobCwgbywgbiwgbSwgcFtnICsgMV0sIDEyLCAtMzg5NTY0NTg2KTsgbSA9IHRoaXMubWQ1X2ZmKG0sIGwsIG8sIG4sIHBbZyArIDJdLCAxNywgNjA2MTA1ODE5KTsgbiA9IHRoaXMubWQ1X2ZmKG4sIG0sIGwsIG8sIHBbZyArIDNdLCAyMiwgLTEwNDQ1MjUzMzApOyBvID0gdGhpcy5tZDVfZmYobywgbiwgbSwgbCwgcFtnICsgNF0sIDcsIC0xNzY0MTg4OTcpOyBsID0gdGhpcy5tZDVfZmYobCwgbywgbiwgbSwgcFtnICsgNV0sIDEyLCAxMjAwMDgwNDI2KTsgbSA9IHRoaXMubWQ1X2ZmKG0sIGwsIG8sIG4sIHBbZyArIDZdLCAxNywgLTE0NzMyMzEzNDEpOyBuID0gdGhpcy5tZDVfZmYobiwgbSwgbCwgbywgcFtnICsgN10sIDIyLCAtNDU3MDU5ODMpOyBvID0gdGhpcy5tZDVfZmYobywgbiwgbSwgbCwgcFtnICsgOF0sIDcsIDE3NzAwMzU0MTYpOyBsID0gdGhpcy5tZDVfZmYobCwgbywgbiwgbSwgcFtnICsgOV0sIDEyLCAtMTk1ODQxNDQxNyk7IG0gPSB0aGlzLm1kNV9mZihtLCBsLCBvLCBuLCBwW2cgKyAxMF0sIDE3LCAtNDIwNjMpOyBuID0gdGhpcy5tZDVfZmYobiwgbSwgbCwgbywgcFtnICsgMTFdLCAyMiwgLTE5OTA0MDQxNjIpOyBvID0gdGhpcy5tZDVfZmYobywgbiwgbSwgbCwgcFtnICsgMTJdLCA3LCAxODA0NjAzNjgyKTsgbCA9IHRoaXMubWQ1X2ZmKGwsIG8sIG4sIG0sIHBbZyArIDEzXSwgMTIsIC00MDM0MTEwMSk7IG0gPSB0aGlzLm1kNV9mZihtLCBsLCBvLCBuLCBwW2cgKyAxNF0sIDE3LCAtMTUwMjAwMjI5MCk7IG4gPSB0aGlzLm1kNV9mZihuLCBtLCBsLCBvLCBwW2cgKyAxNV0sIDIyLCAxMjM2NTM1MzI5KTsgbyA9IHRoaXMubWQ1X2dnKG8sIG4sIG0sIGwsIHBbZyArIDFdLCA1LCAtMTY1Nzk2NTEwKTsgbCA9IHRoaXMubWQ1X2dnKGwsIG8sIG4sIG0sIHBbZyArIDZdLCA5LCAtMTA2OTUwMTYzMik7IG0gPSB0aGlzLm1kNV9nZyhtLCBsLCBvLCBuLCBwW2cgKyAxMV0sIDE0LCA2NDM3MTc3MTMpOyBuID0gdGhpcy5tZDVfZ2cobiwgbSwgbCwgbywgcFtnICsgMF0sIDIwLCAtMzczODk3MzAyKTsgbyA9IHRoaXMubWQ1X2dnKG8sIG4sIG0sIGwsIHBbZyArIDVdLCA1LCAtNzAxNTU4NjkxKTsgbCA9IHRoaXMubWQ1X2dnKGwsIG8sIG4sIG0sIHBbZyArIDEwXSwgOSwgMzgwMTYwODMpOyBtID0gdGhpcy5tZDVfZ2cobSwgbCwgbywgbiwgcFtnICsgMTVdLCAxNCwgLTY2MDQ3ODMzNSk7IG4gPSB0aGlzLm1kNV9nZyhuLCBtLCBsLCBvLCBwW2cgKyA0XSwgMjAsIC00MDU1Mzc4NDgpOyBvID0gdGhpcy5tZDVfZ2cobywgbiwgbSwgbCwgcFtnICsgOV0sIDUsIDU2ODQ0NjQzOCk7IGwgPSB0aGlzLm1kNV9nZyhsLCBvLCBuLCBtLCBwW2cgKyAxNF0sIDksIC0xMDE5ODAzNjkwKTsgbSA9IHRoaXMubWQ1X2dnKG0sIGwsIG8sIG4sIHBbZyArIDNdLCAxNCwgLTE4NzM2Mzk2MSk7IG4gPSB0aGlzLm1kNV9nZyhuLCBtLCBsLCBvLCBwW2cgKyA4XSwgMjAsIDExNjM1MzE1MDEpOyBvID0gdGhpcy5tZDVfZ2cobywgbiwgbSwgbCwgcFtnICsgMTNdLCA1LCAtMTQ0NDY4MTQ2Nyk7IGwgPSB0aGlzLm1kNV9nZyhsLCBvLCBuLCBtLCBwW2cgKyAyXSwgOSwgLTUxNDAzNzg0KTsgbSA9IHRoaXMubWQ1X2dnKG0sIGwsIG8sIG4sIHBbZyArIDddLCAxNCwgMTczNTMyODQ3Myk7IG4gPSB0aGlzLm1kNV9nZyhuLCBtLCBsLCBvLCBwW2cgKyAxMl0sIDIwLCAtMTkyNjYwNzczNCk7IG8gPSB0aGlzLm1kNV9oaChvLCBuLCBtLCBsLCBwW2cgKyA1XSwgNCwgLTM3ODU1OCk7IGwgPSB0aGlzLm1kNV9oaChsLCBvLCBuLCBtLCBwW2cgKyA4XSwgMTEsIC0yMDIyNTc0NDYzKTsgbSA9IHRoaXMubWQ1X2hoKG0sIGwsIG8sIG4sIHBbZyArIDExXSwgMTYsIDE4MzkwMzA1NjIpOyBuID0gdGhpcy5tZDVfaGgobiwgbSwgbCwgbywgcFtnICsgMTRdLCAyMywgLTM1MzA5NTU2KTsgbyA9IHRoaXMubWQ1X2hoKG8sIG4sIG0sIGwsIHBbZyArIDFdLCA0LCAtMTUzMDk5MjA2MCk7IGwgPSB0aGlzLm1kNV9oaChsLCBvLCBuLCBtLCBwW2cgKyA0XSwgMTEsIDEyNzI4OTMzNTMpOyBtID0gdGhpcy5tZDVfaGgobSwgbCwgbywgbiwgcFtnICsgN10sIDE2LCAtMTU1NDk3NjMyKTsgbiA9IHRoaXMubWQ1X2hoKG4sIG0sIGwsIG8sIHBbZyArIDEwXSwgMjMsIC0xMDk0NzMwNjQwKTsgbyA9IHRoaXMubWQ1X2hoKG8sIG4sIG0sIGwsIHBbZyArIDEzXSwgNCwgNjgxMjc5MTc0KTsgbCA9IHRoaXMubWQ1X2hoKGwsIG8sIG4sIG0sIHBbZyArIDBdLCAxMSwgLTM1ODUzNzIyMik7IG0gPSB0aGlzLm1kNV9oaChtLCBsLCBvLCBuLCBwW2cgKyAzXSwgMTYsIC03MjI1MjE5NzkpOyBuID0gdGhpcy5tZDVfaGgobiwgbSwgbCwgbywgcFtnICsgNl0sIDIzLCA3NjAyOTE4OSk7IG8gPSB0aGlzLm1kNV9oaChvLCBuLCBtLCBsLCBwW2cgKyA5XSwgNCwgLTY0MDM2NDQ4Nyk7IGwgPSB0aGlzLm1kNV9oaChsLCBvLCBuLCBtLCBwW2cgKyAxMl0sIDExLCAtNDIxODE1ODM1KTsgbSA9IHRoaXMubWQ1X2hoKG0sIGwsIG8sIG4sIHBbZyArIDE1XSwgMTYsIDUzMDc0MjUyMCk7IG4gPSB0aGlzLm1kNV9oaChuLCBtLCBsLCBvLCBwW2cgKyAyXSwgMjMsIC05OTUzMzg2NTEpOyBvID0gdGhpcy5tZDVfaWkobywgbiwgbSwgbCwgcFtnICsgMF0sIDYsIC0xOTg2MzA4NDQpOyBsID0gdGhpcy5tZDVfaWkobCwgbywgbiwgbSwgcFtnICsgN10sIDEwLCAxMTI2ODkxNDE1KTsgbSA9IHRoaXMubWQ1X2lpKG0sIGwsIG8sIG4sIHBbZyArIDE0XSwgMTUsIC0xNDE2MzU0OTA1KTsgbiA9IHRoaXMubWQ1X2lpKG4sIG0sIGwsIG8sIHBbZyArIDVdLCAyMSwgLTU3NDM0MDU1KTsgbyA9IHRoaXMubWQ1X2lpKG8sIG4sIG0sIGwsIHBbZyArIDEyXSwgNiwgMTcwMDQ4NTU3MSk7IGwgPSB0aGlzLm1kNV9paShsLCBvLCBuLCBtLCBwW2cgKyAzXSwgMTAsIC0xODk0OTg2NjA2KTsgbSA9IHRoaXMubWQ1X2lpKG0sIGwsIG8sIG4sIHBbZyArIDEwXSwgMTUsIC0xMDUxNTIzKTsgbiA9IHRoaXMubWQ1X2lpKG4sIG0sIGwsIG8sIHBbZyArIDFdLCAyMSwgLTIwNTQ5MjI3OTkpOyBvID0gdGhpcy5tZDVfaWkobywgbiwgbSwgbCwgcFtnICsgOF0sIDYsIDE4NzMzMTMzNTkpOyBsID0gdGhpcy5tZDVfaWkobCwgbywgbiwgbSwgcFtnICsgMTVdLCAxMCwgLTMwNjExNzQ0KTsgbSA9IHRoaXMubWQ1X2lpKG0sIGwsIG8sIG4sIHBbZyArIDZdLCAxNSwgLTE1NjAxOTgzODApOyBuID0gdGhpcy5tZDVfaWkobiwgbSwgbCwgbywgcFtnICsgMTNdLCAyMSwgMTMwOTE1MTY0OSk7IG8gPSB0aGlzLm1kNV9paShvLCBuLCBtLCBsLCBwW2cgKyA0XSwgNiwgLTE0NTUyMzA3MCk7IGwgPSB0aGlzLm1kNV9paShsLCBvLCBuLCBtLCBwW2cgKyAxMV0sIDEwLCAtMTEyMDIxMDM3OSk7IG0gPSB0aGlzLm1kNV9paShtLCBsLCBvLCBuLCBwW2cgKyAyXSwgMTUsIDcxODc4NzI1OSk7IG4gPSB0aGlzLm1kNV9paShuLCBtLCBsLCBvLCBwW2cgKyA5XSwgMjEsIC0zNDM0ODU1NTEpOyBvID0gdGhpcy5zYWZlX2FkZChvLCBqKTsgbiA9IHRoaXMuc2FmZV9hZGQobiwgaCk7IG0gPSB0aGlzLnNhZmVfYWRkKG0sIGYpOyBsID0gdGhpcy5zYWZlX2FkZChsLCBlKSB9IHJldHVybiBBcnJheShvLCBuLCBtLCBsKSB9XHJcbiAgbWQ1X2NtbihoLCBlLCBkLCBjLCBnLCBmKSB7IHJldHVybiB0aGlzLnNhZmVfYWRkKHRoaXMuYml0X3JvbCh0aGlzLnNhZmVfYWRkKHRoaXMuc2FmZV9hZGQoZSwgaCksIHRoaXMuc2FmZV9hZGQoYywgZikpLCBnKSwgZCkgfSBtZDVfZmYoZywgZiwgaywgaiwgZSwgaSwgaCkgeyByZXR1cm4gdGhpcy5tZDVfY21uKChmICYgaykgfCAoKH5mKSAmIGopLCBnLCBmLCBlLCBpLCBoKSB9XHJcbiAgbWQ1X2dnKGcsIGYsIGssIGosIGUsIGksIGgpIHsgcmV0dXJuIHRoaXMubWQ1X2NtbigoZiAmIGopIHwgKGsgJiAofmopKSwgZywgZiwgZSwgaSwgaCkgfSBtZDVfaGgoZywgZiwgaywgaiwgZSwgaSwgaCkgeyByZXR1cm4gdGhpcy5tZDVfY21uKGYgXiBrIF4gaiwgZywgZiwgZSwgaSwgaCkgfVxyXG4gIG1kNV9paShnLCBmLCBrLCBqLCBlLCBpLCBoKSB7IHJldHVybiB0aGlzLm1kNV9jbW4oayBeIChmIHwgKH5qKSksIGcsIGYsIGUsIGksIGgpIH0gc2FmZV9hZGQoYSwgZCkgeyBsZXQgYyA9IChhICYgNjU1MzUpICsgKGQgJiA2NTUzNSk7IGxldCBiID0gKGEgPj4gMTYpICsgKGQgPj4gMTYpICsgKGMgPj4gMTYpOyByZXR1cm4gKGIgPDwgMTYpIHwgKGMgJiA2NTUzNSkgfVxyXG4gIGJpdF9yb2woYSwgYikgeyByZXR1cm4gKGEgPDwgYikgfCAoYSA+Pj4gKDMyIC0gYikpIH07XHJcblxyXG59XHJcbiJdfQ==